<?php
// lineups.php (v2 - Fetches BOTH text list AND formation data)

require_once __DIR__ . '/simple_html_dom.php';

/**
 * دالة مساعدة لجلب المحتوى باستخدام cURL (تدعم GET و POST)
 * @param string $url الرابط
 * @param bool $is_post هل هو طلب POST؟
 * @return string|null المحتوى أو null عند الفشل
 */
function fetch_html_curl_lineups($url, $is_post = false) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36');
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_TIMEOUT, 20);
    // ضبط كوكيز لتجاوز بعض الحمايات (اختياري)
    curl_setopt($ch, CURLOPT_COOKIE, "cookie_name=cookie_value;"); // يمكنك تعديل هذا إذا لزم الأمر

    if ($is_post) {
        curl_setopt($ch, CURLOPT_POST, true);
        curl_setopt($ch, CURLOPT_POSTFIELDS, ""); // إرسال جسم فارغ كما يفعل formation.js
        // إضافة هيدر AJAX ضروري لـ GetLinup
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
            'X-Requested-With: XMLHttpRequest',
            'Content-Type: application/json; charset=utf-8'
        ]);
    }

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

    if ($httpCode != 200 || !$content) {
        // error_log("[lineups.php] Failed to retrieve content from {$url}. HTTP Code: {$httpCode}");
        return null;
    }
    return $content;
}

/**
 * دالة جلب التشكيلات (النصية والرسومية)
 * @param int $matchId
 * @return array|null
 */
function scrapeLineups($matchId) {
    
    // --- 1. جلب التشكيلة النصية (الكود القديم) ---
    $lineup_text_url = "https://www.btolat.com/matches/lineup/{$matchId}";
    $html_content = fetch_html_curl_lineups($lineup_text_url, false); // GET request
    
    $lineups_data = [
        'team1' => ['starting' => [], 'substitutes' => []],
        'team2' => ['starting' => [], 'substitutes' => []],
    ];

    if ($html_content) {
        $html = str_get_html($html_content);
        if ($html) {
            // الفريق الأول
            $team1StartingPlayers = $html->find('.teamHome .palyersBasic a.player');
            $team1Substitutes = $html->find('.teamHome .playersAdditional a.player');
            // الفريق الثاني
            $team2StartingPlayers = $html->find('.teamAway .palyersBasic a.player');
            $team2Substitutes = $html->find('.teamAway .playersAdditional a.player');

            // استخراج بيانات التشكيلة الأساسية للفريق الأول
            foreach ($team1StartingPlayers as $player) {
                $lineups_data['team1']['starting'][] = [
                    // ★ استخدام دالة التنظيف بدلاً من trim فقط
                    'name' => clean_scraped_text($player->find('.playerName', 0)->plaintext),
                    'number' => clean_scraped_text($player->find('.playerNumber', 0)->plaintext),
                    'image' => $player->find('.playerImage img', 0)->src,
                    'link' => $player->href
                ];
            }

            // استخراج بيانات البدلاء للفريق الأول
            foreach ($team1Substitutes as $player) {
                $lineups_data['team1']['substitutes'][] = [
                    // ★ استخدام دالة التنظيف
                    'name' => clean_scraped_text($player->find('.playerName', 0)->plaintext),
                    'number' => clean_scraped_text($player->find('.playerNumber', 0)->plaintext),
                    'image' => $player->find('.playerImage img', 0)->src,
                    'link' => $player->href
                ];
            }

            // استخراج بيانات التشكيلة الأساسية للفريق الثاني
            foreach ($team2StartingPlayers as $player) {
                $lineups_data['team2']['starting'][] = [
                    // ★ استخدام دالة التنظيف
                    'name' => clean_scraped_text($player->find('.playerName', 0)->plaintext),
                    'number' => clean_scraped_text($player->find('.playerNumber', 0)->plaintext),
                    'image' => $player->find('.playerImage img', 0)->src,
                    'link' => $player->href
                ];
            }

            // استخراج بيانات البدلاء للفريق الثاني
            foreach ($team2Substitutes as $player) {
                $lineups_data['team2']['substitutes'][] = [
                    // ★ استخدام دالة التنظيف
                    'name' => clean_scraped_text($player->find('.playerName', 0)->plaintext),
                    'number' => clean_scraped_text($player->find('.playerNumber', 0)->plaintext),
                    'image' => $player->find('.playerImage img', 0)->src,
                    'link' => $player->href
                ];
            }

            $html->clear(); 
            unset($html);
        } else {
            // error_log("[lineups.php] Failed to parse HTML from text lineup URL.");
        }
    }

    // --- 2. جلب بيانات التشكيلة الرسومية (الكود الجديد) ---
    $formation_url = "https://www.btolat.com/matches/GetLinup/{$matchId}";
    $json_content = fetch_html_curl_lineups($formation_url, true); // POST request
    
    $formation_data = null;
    if ($json_content) {
        $formation_data = json_decode($json_content, true);
        if (json_last_error() !== JSON_ERROR_NONE) {
            // error_log("[lineups.php] Failed to decode JSON from GetLinup: " . json_last_error_msg() . " - Response: " . $json_content);
            $formation_data = null; // فشل التحليل
        } else {
            // error_log("[lineups.php] Successfully fetched formation data from GetLinup for match {$matchId}.");
        }
    } else {
         // error_log("[lineups.php] Failed to fetch any content from GetLinup URL: " . $formation_url);
    }

    // --- 3. دمج البيانات ---
    // دمج بيانات JSON الرسومية (localteam, vistorteam) مع مصفوفة التشكيلات النصية
    if (is_array($formation_data) && !empty($formation_data)) {
        // إضافة بيانات GetLinup إلى المصفوفة الرئيسية
        $lineups_data['localteam'] = $formation_data['localteam'] ?? null;
        $lineups_data['vistorteam'] = $formation_data['vistorteam'] ?? null;
        
        // (اختياري) إذا كانت القوائم النصية فارغة، حاول ملأها من lstlinup
        if (empty($lineups_data['team1']['starting']) && isset($formation_data['localteam']['lstlinup'])) {
             foreach($formation_data['localteam']['lstlinup'] as $player) {
                  $lineups_data['team1']['starting'][] = [
                      // استخدام دالة التنظيف هنا أيضاً احتياطاً
                      'name' => clean_scraped_text($player['Name'] ?? '?'),
                      'number' => clean_scraped_text($player['Number'] ?? '-'),
                      'image' => $player['Img'] ?? '',
                      'link' => ''
                  ];
             }
        }
         if (empty($lineups_data['team2']['starting']) && isset($formation_data['vistorteam']['lstlinup'])) {
             foreach($formation_data['vistorteam']['lstlinup'] as $player) {
                  $lineups_data['team2']['starting'][] = [
                      // استخدام دالة التنظيف هنا أيضاً احتياطاً
                      'name' => clean_scraped_text($player['Name'] ?? '?'),
                      'number' => clean_scraped_text($player['Number'] ?? '-'),
                      'image' => $player['Img'] ?? '',
                      'link' => ''
                  ];
             }
        }
        
    } else {
        // error_log("[lineups.php] No formation data (localteam/vistorteam) was added for match {$matchId}.");
    }

    return $lineups_data; // إرجاع المصفوفة المدمجة
}
?>