/*======================================================================== 1️⃣ النظام الذكي لإدارة المباريات (نسخة المحرك المطور - متزامن مع الموبايل 📱🔄) ========================================================================*/ if (!function_exists('sabri_add_smart_match_stats_box')) { function sabri_add_smart_match_stats_box() { add_meta_box('sabri_smart_match_stats', '📋 إدارة المباراة المتكاملة (النظام الذكي ⚡) - 🟢 متصل بالموبايل', 'sabri_smart_match_stats_callback', 'sp_event', 'normal', 'high'); } add_action('add_meta_boxes', 'sabri_add_smart_match_stats_box'); } if (!function_exists('sabri_smart_match_stats_callback')) { function sabri_smart_match_stats_callback($post) { wp_nonce_field('sabri_save_match_stats', 'sabri_match_stats_nonce'); $team_ids = get_post_meta($post->ID, 'sp_team', false); $match_seasons = wp_get_post_terms($post->ID, 'sp_season', ['fields' => 'ids']); $match_leagues = wp_get_post_terms($post->ID, 'sp_league', ['fields' => 'ids']); $match_season_id = (!empty($match_seasons) && !is_wp_error($match_seasons)) ? $match_seasons[0] : 0; $match_league_id = (!empty($match_leagues) && !is_wp_error($match_leagues)) ? $match_leagues[0] : 0; if (empty($team_ids) || count($team_ids) < 2 || empty($match_season_id) || empty($match_league_id)) { echo '

⚠️ يرجى اختيار أندية المباراة، الموسم، والبطولة من الجانب أولاً ثم الضغط على "حفظ مسودة".

'; return; } $all_stats = get_post_meta($post->ID, '_sabri_match_stats', true) ?: []; $saved_coaches = get_post_meta($post->ID, '_ss_event_manual_coach_map', true) ?: []; $app_data = ['teams' => [], 'players' => [], 'events' => []]; foreach ($team_ids as $team_id) { $app_data['teams'][$team_id] = [ 'name' => get_the_title($team_id), 'coach' => $saved_coaches[$team_id] ?? 0, 'coaches' => [] ]; $coaches = get_posts(['post_type' => 'sp_staff', 'posts_per_page' => -1, 'meta_query' => [['key' => 'sp_current_team', 'value' => $team_id]]]); foreach ($coaches as $c) { $app_data['teams'][$team_id]['coaches'][] = ['id' => $c->ID, 'name' => $c->post_title]; } $potential_players = get_posts([ 'post_type' => 'sp_player', 'posts_per_page' => -1, 'orderby' => 'title', 'order' => 'ASC', 'meta_query' => ['relation' => 'OR', ['key' => 'sp_current_team', 'value' => $team_id], ['key' => 'sp_team', 'value' => '"'.$team_id.'"', 'compare' => 'LIKE'], ['key' => 'sp_team', 'value' => $team_id]] ]); foreach ($potential_players as $p) { $is_valid = false; $p_leagues = get_post_meta($p->ID, 'sp_leagues', true); if (is_array($p_leagues) && isset($p_leagues[$match_league_id][$match_season_id])) { $t_id_matrix = $p_leagues[$match_league_id][$match_season_id]; if (is_array($t_id_matrix) && in_array($team_id, $t_id_matrix)) $is_valid = true; elseif ($t_id_matrix == $team_id) $is_valid = true; } if (!$is_valid) { $current_team = get_post_meta($p->ID, 'sp_current_team', true); if ($current_team == $team_id && has_term($match_season_id, 'sp_season', $p->ID)) $is_valid = true; } foreach ($all_stats as $stat) { if ($stat['team_id'] == $team_id && $stat['player_id'] == $p->ID) $is_valid = true; } if ($is_valid) { $shirt = get_post_meta($p->ID, 'sp_number', true) ?: '-'; $app_data['players'][$team_id][$p->ID] = ['id' => $p->ID, 'name' => $p->post_title, 'num' => $shirt, 'status' => 'none', 'is_captain' => 0]; } } $app_data['events'][$team_id] = []; } foreach ($all_stats as $stat) { $t = $stat['team_id']; $p = $stat['player_id']; if (isset($app_data['players'][$t][$p])) { $app_data['players'][$t][$p]['status'] = $stat['status'] ?? 'none'; $app_data['players'][$t][$p]['is_captain'] = intval($stat['is_captain'] ?? 0); if(!empty($stat['goals_mins'])) foreach($stat['goals_mins'] as $m) $app_data['events'][$t][] = ['id'=>uniqid(), 'type'=>'goals_mins', 'player'=>$p, 'min'=>$m, 'assist'=>0, 'linked_player'=>0]; if(!empty($stat['pen_goals_mins'])) foreach($stat['pen_goals_mins'] as $m) $app_data['events'][$t][] = ['id'=>uniqid(), 'type'=>'pen_goals_mins', 'player'=>$p, 'min'=>$m, 'assist'=>0, 'linked_player'=>0]; if(!empty($stat['assists_mins'])) foreach($stat['assists_mins'] as $m) $app_data['events'][$t][] = ['id'=>uniqid(), 'type'=>'assists_mins', 'player'=>$p, 'min'=>$m, 'assist'=>0, 'linked_player'=>0]; if(!empty($stat['yellow_mins'])) foreach($stat['yellow_mins'] as $m) $app_data['events'][$t][] = ['id'=>uniqid(), 'type'=>'yellow_mins', 'player'=>$p, 'min'=>$m, 'assist'=>0, 'linked_player'=>0]; if(!empty($stat['red_mins'])) foreach($stat['red_mins'] as $m) $app_data['events'][$t][] = ['id'=>uniqid(), 'type'=>'red_mins', 'player'=>$p, 'min'=>$m, 'assist'=>0, 'linked_player'=>0]; if(!empty($stat['pen_missed_mins'])) foreach($stat['pen_missed_mins'] as $m) $app_data['events'][$t][] = ['id'=>uniqid(), 'type'=>'pen_missed_mins', 'player'=>$p, 'min'=>$m, 'assist'=>0, 'linked_player'=>0]; if(!empty($stat['own_goals_mins'])) foreach($stat['own_goals_mins'] as $m) $app_data['events'][$t][] = ['id'=>uniqid(), 'type'=>'own_goals_mins', 'player'=>$p, 'min'=>$m, 'assist'=>0, 'linked_player'=>0]; if(!empty($stat['sub_in'])) $app_data['events'][$t][] = ['id'=>uniqid(), 'type'=>'sub_in', 'player'=>$p, 'min'=>$stat['sub_in'], 'assist'=>0, 'linked_player'=>0]; if(!empty($stat['sub_out'])) $app_data['events'][$t][] = ['id'=>uniqid(), 'type'=>'sub_out', 'player'=>$p, 'min'=>$stat['sub_out'], 'assist'=>0, 'linked_player'=>0]; } } echo ''; echo '
'; echo ''; // استخدام NOWDOC لمنع خطأ محرر ووردبريس الوهمي نهائياً echo <<< 'SABRI_JS' SABRI_JS; } } if (!function_exists('sabri_save_smart_match_stats')) { function sabri_save_smart_match_stats($post_id) { if (!isset($_POST['sabri_match_stats_nonce']) || !wp_verify_nonce($_POST['sabri_match_stats_nonce'], 'sabri_save_match_stats')) return; if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return; if (!current_user_can('edit_post', $post_id)) return; if (isset($_POST['sabri_coaches']) && is_array($_POST['sabri_coaches'])) { $coaches = []; foreach ($_POST['sabri_coaches'] as $t => $c) $coaches[intval($t)] = intval($c); update_post_meta($post_id, '_ss_event_manual_coach_map', $coaches); } if (isset($_POST['sabri_stats']) && is_array($_POST['sabri_stats'])) { $clean_stats = []; foreach ($_POST['sabri_stats'] as $team_id => $players) { foreach ($players as $p_id => $stat) { if (!empty($stat['player_id'])) { $clean_stats[] = [ 'team_id' => intval($team_id), 'player_id' => intval($stat['player_id']), 'status' => sanitize_text_field($stat['status']), 'is_captain' => intval($stat['is_captain'] ?? 0), 'sub_in' => intval($stat['sub_in'] ?? 0), 'sub_out' => intval($stat['sub_out'] ?? 0), 'goals' => intval($stat['goals'] ?? 0), 'goals_mins' => isset($stat['goals_mins']) ? array_map('intval', $stat['goals_mins']) : [], 'assists' => intval($stat['assists'] ?? 0), 'assists_mins' => isset($stat['assists_mins']) ? array_map('intval', $stat['assists_mins']) : [], 'yellow' => intval($stat['yellow'] ?? 0), 'yellow_mins' => isset($stat['yellow_mins']) ? array_map('intval', $stat['yellow_mins']) : [], 'red' => intval($stat['red'] ?? 0), 'red_mins' => isset($stat['red_mins']) ? array_map('intval', $stat['red_mins']) : [], 'pen_goals' => intval($stat['pen_goals'] ?? 0), 'pen_goals_mins' => isset($stat['pen_goals_mins']) ? array_map('intval', $stat['pen_goals_mins']) : [], 'pen_missed' => intval($stat['pen_missed'] ?? 0), 'pen_missed_mins' => isset($stat['pen_missed_mins']) ? array_map('intval', $stat['pen_missed_mins']) : [], 'own_goals' => intval($stat['own_goals'] ?? 0), 'own_goals_mins' => isset($stat['own_goals_mins']) ? array_map('intval', $stat['own_goals_mins']) : [], ]; } } } update_post_meta($post_id, '_sabri_match_stats', $clean_stats); } } add_action('save_post_sp_event', 'sabri_save_smart_match_stats'); } Lo3btna https://validator.w3.org/feed/docs/rss2.html home منتصر طالب الزدجالي خليفة بطي المزروعي جيرين شيكول جاكي فنجاء ظفار تطبيق الهاتف محمد سعيد الحبسي حمد سعيد الحبسي فايز الرشيدي محسن جوهر الخالدي فهمي سعيدظف الدوربين أحمد فرج الرواحي سعيد سالم الرزيقي ابراهيم صالح المخيني محمد مخلف بيت مستهيل حسن راشد البريكي المعتصم محمد النوبي محمود مبروك المشيفري صلاح خميس الدوحاني عبدالرحمن سمير الغساني جمعة مرهون الحبسي مروان تعيب اولاد ثاني يزن سالم بيت براكه سليم راشد الشبيبي محمد ذاكر عيد عبيدان اشهاد عبيد سلطان سعيد بيت بخيت محمد غانم السمين عمر محمد المالكي غانم رمضان الحبشي اسامة مجدي شعبان بيت سمير أحمد خلفان السيابي عمر عادل أحمد يحيي حمود الهديفي نصيب ناصر الغيلاني مروان طلال بيت عرفه عوض محمد الشحري حسين سعيد الشحري البراء خالد المعولي عيسي خلفان الناعبي محمد سعيد السيم يزيد سالم المعشني جاسم محمد النوبي انور مبارك فرج زياد طارق الراسبي مانع سبيت المخيني محمد عبدالحكيم بيت سبيع فهد عادل عيد يوسف سعيد الخليلي