<?php
// filgoal_scraper.php (v4 - إضافة مفاتيح أحادية للفريق)

// (لا نحتاج simple_html_dom هنا)

// (سيتم استدعاء btolat_universal_normalize() من scraper.php)

/**
 * دالة مساعدة لعمل طلبات cURL
 * (لا تغيير هنا)
 */
function callFilGoalApi($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_TIMEOUT, 20);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36');
    curl_setopt($ch, CURLOPT_ENCODING, ''); 

    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    return ['http_code' => $httpCode, 'response' => $response];
}


/**
 * الدالة الرئيسية لجلب القنوات والملاعب من filgoal.com
 * @param string $date (بصيغة Y-m-d)
 * @return array (خريطة أو Map لسهولة البحث)
 */
function scrapeFilGoalData($date) {
    
    log_debug("[FilGoal] --- بدء عملية سحب FilGoal للتاريخ: {$date} (v3 - مفاتيح أحادية) ---");

    $apiUrl = "https://www.filgoal.com/matches/ajaxlist?date=" . $date;
    $dataMap = [];

    // --- (الخطوة 1: جلب JSON - لا تغيير) ---
    log_debug("[FilGoal] ... جارٍ طلب بيانات JSON من {$apiUrl}");
    $apiResult = callFilGoalApi($apiUrl);
    if ($apiResult['http_code'] != 200) { 
        log_debug("[FilGoal] [فشل فادح] فشل جلب API في الجول. كود HTTP: " . $apiResult['http_code']);
        return $dataMap;
    }
    $cleanResponse = $apiResult['response'];
    $cleanResponse = preg_replace('/^\\s*/', '', $cleanResponse);
    $matchesList = json_decode($cleanResponse, true);
    if ($matchesList === null || !is_array($matchesList)) { 
        log_debug("[FilGoal] [فشل فادح] تم جلب البيانات، ولكن صيغة JSON غير صالحة.");
        return $dataMap;
    }
    $totalMatches = count($matchesList);
    log_debug("[FilGoal] [الخطوة 1] نجح. تم العثور على {$totalMatches} مباراة في JSON.");
    if ($totalMatches == 0) return $dataMap; 

    // --- ★★★ الخطوة 2: استخراج البيانات وإنشاء الخريطة (معدل) ★★★ ---
    $firstMatchLogged = false;

    foreach ($matchesList as $match) {
        
        $team1_raw = $match['HomeTeamName'] ?? null;
        $team2_raw = $match['AwayTeamName'] ?? null;
        $stadium = $match['StadiumName'] ?? null;
        $league_raw = $match['ChampionshipName'] ?? 'unknown';

        if (!$team1_raw || !$team2_raw) {
            continue;
        }

        // (استخراج القنوات - لا تغيير)
        $channels_list = [];
        if (isset($match['TvCoverage']) && is_array($match['TvCoverage'])) {
            foreach ($match['TvCoverage'] as $channel) {
                $channelName = $channel['TvChannelName'] ?? 'قناة غير معروفة';
                $commentator = $channel['CommenterName'] ?? null; 
                if ($commentator) {
                    $channels_list[] = $channelName . " (" . $commentator . ")";
                } else {
                    $channels_list[] = $channelName;
                }
            }
        }
        
        // (إنشاء المفاتيح باستخدام الدالة المعرفة في scraper.php)
        $league_key = btolat_universal_normalize($league_raw);
        $team1_key = btolat_universal_normalize($team1_raw);
        $team2_key = btolat_universal_normalize($team2_raw);

        // (تسجيل أول عينة ناجحة - لا تغيير)
        if (!$firstMatchLogged) {
            log_debug("[FilGoal] [الخطوة 2: استخراج] (عينة أولى ناجحة)");
            log_debug("  > الدوري (خام): '{$league_raw}' -> (مفتاح): '{$league_key}'");
            log_debug("  > الفريق 1 (خام): '{$team1_raw}' -> (مفتاح): '{$team1_key}'");
            log_debug("  > الفريق 2 (خام): '{$team2_raw}' -> (مفتاح): '{$team2_key}'");
            $firstMatchLogged = true;
        }

        // (البيانات التي سيتم تخزينها - لا تغيير)
        $matchData = [
            'channels' => $channels_list, 
            'stadium'  => $stadium
        ];
        
        // --- ★★★ بداية التعديل: إضافة المفاتيح الاحتياطية (بما في ذلك طلبك) ★★★
        
        // (الأولوية القصوى: المفاتيح الكاملة)
        $key1 = $league_key . '-' . $team1_key . '-' . $team2_key;
        $key2 = $league_key . '-' . $team2_key . '-' . $team1_key;
        $dataMap[$key1] = $matchData;
        $dataMap[$key2] = $matchData;

        // (الأولوية 2: المفاتيح بدون الدوري)
        $key3_no_league = $team1_key . '-' . $team2_key;
        $key4_no_league_rev = $team2_key . '-' . $team1_key;
        if (!isset($dataMap[$key3_no_league])) {
             $dataMap[$key3_no_league] = $matchData;
        }
         if (!isset($dataMap[$key4_no_league_rev])) {
            $dataMap[$key4_no_league_rev] = $matchData;
         }

        // (الأولوية 3: المفاتيح الاحتياطية (الدوري + فريق واحد) - بناءً على طلبك)
        // (هذه المفاتيح خطيرة وقد يتم الكتابة فوقها إذا كان للفريق مباراتان، لكننا نضيفها كآخر احتمال)
        $key5_league_team1 = $league_key . '-' . $team1_key;
        $key6_league_team2 = $league_key . '-' . $team2_key;
        if (!isset($dataMap[$key5_league_team1])) {
             $dataMap[$key5_league_team1] = $matchData;
        }
         if (!isset($dataMap[$key6_league_team2])) {
            $dataMap[$key6_league_team2] = $matchData;
         }
        // --- ★★★ نهاية التعديل ★★★ ---
    }

    $finalMapCount = count($dataMap);
    log_debug("[FilGoal] [الخطوة 3: النتيجة] اكتمل سحب FilGoal. تم إنشاء {$finalMapCount} مفتاح.");
    
    log_debug("--- نهاية عملية سحب FilGoal للتاريخ: {$date} ---\n");
    return $dataMap;
}
?>