$pdo->query("SELECT COUNT(DISTINCT province) FROM learning_resources WHERE status = 'approved'")->fetchColumn() ?: 77, 'districts' => $pdo->query("SELECT COUNT(DISTINCT district) FROM learning_resources WHERE status = 'approved'")->fetchColumn() ?: 928, 'subdistricts' => $pdo->query("SELECT COUNT(DISTINCT sub_district) FROM learning_resources WHERE status = 'approved'")->fetchColumn() ?: 7255, 'resources' => $pdo->query("SELECT COUNT(*) FROM learning_resources WHERE status = 'approved'")->fetchColumn(), 'activities' => $pdo->query("SELECT COUNT(*) FROM featured_activities")->fetchColumn(), 'visitors' => isset($visitor_count) ? number_format($visitor_count) : '0' ]; // ตัด "สาขา" นำหน้าออกเพื่อรวม group ที่เก็บข้อมูลต่างรูปแบบกัน function dashNormWisdom(string $s): string { $s = trim($s); return (mb_substr($s, 0, 4, 'UTF-8') === 'สาขา') ? trim(mb_substr($s, 4, null, 'UTF-8')) : $s; } // Query chart details $wisdom_query = $pdo->query("SELECT wisdom_branch, COUNT(*) as count FROM learning_resources WHERE status = 'approved' AND wisdom_branch IS NOT NULL AND wisdom_branch != '' GROUP BY wisdom_branch ORDER BY count DESC")->fetchAll(); // Merge สาขาที่ซ้ำกันเนื่องจากมี/ไม่มีคำว่า "สาขา" นำหน้า $wisdom_merged = []; foreach ($wisdom_query as $row) { $label = dashNormWisdom($row['wisdom_branch']); $wisdom_merged[$label] = ($wisdom_merged[$label] ?? 0) + (int)$row['count']; } arsort($wisdom_merged); $wisdom_labels = array_keys($wisdom_merged); $wisdom_values = array_values($wisdom_merged); $type_query = $pdo->query("SELECT type, COUNT(*) as count FROM learning_resources WHERE status = 'approved' AND type IS NOT NULL AND type != '' GROUP BY type ORDER BY count DESC")->fetchAll(); $type_labels = array_column($type_query, 'type'); $type_values = array_map('intval', array_column($type_query, 'count')); $subject_query = $pdo->query("SELECT subject, COUNT(*) as count FROM learning_resources WHERE status = 'approved' AND subject IS NOT NULL AND subject != '' GROUP BY subject ORDER BY count DESC")->fetchAll(); $subject_labels = array_column($subject_query, 'subject'); $subject_values = array_map('intval', array_column($subject_query, 'count')); // Query region statistics $geo_names = [ 1 => 'ภาคเหนือ', 2 => 'ภาคตะวันออกเฉียงเหนือ', 3 => 'ภาคตะวันออก', 4 => 'ภาคกลาง', 5 => 'ภาคใต้' ]; $regions_data = array_fill_keys(array_values($geo_names), 0); $geo_query = $pdo->query("SELECT geo, COUNT(*) as count FROM learning_resources WHERE status = 'approved' GROUP BY geo")->fetchAll(); foreach ($geo_query as $row) { $g_val = $row['geo'] !== null ? (int)$row['geo'] : 0; if (isset($geo_names[$g_val])) { $regions_data[$geo_names[$g_val]] = (int)$row['count']; } } $grand_total_resources = $stats['resources']; // Query homepage activities — ใช้รายการที่แอดมินเลือกไว้ใน system_settings.homepage_activity_ids // ถ้ายังไม่ได้เลือกหรือลบไปจนหมด ให้ fallback เป็น 9 รายการล่าสุดที่อนุมัติแล้ว $homepage_ids_csv = $settings['homepage_activity_ids'] ?? ''; $homepage_ids = array_filter(array_map('intval', explode(',', $homepage_ids_csv))); if (!empty($homepage_ids)) { $place = implode(',', array_fill(0, count($homepage_ids), '?')); $stmt = $pdo->prepare(" SELECT * FROM featured_activities WHERE id IN ($place) AND status = 'approved' ORDER BY id DESC LIMIT 12 "); $stmt->execute($homepage_ids); $activities = $stmt->fetchAll(); } else { // ไม่มีรายการเด่นที่แอดมินเลือกไว้ → แสดงกิจกรรมที่เพิ่มเข้าระบบล่าสุด $activities = $pdo->query(" SELECT * FROM featured_activities WHERE status = 'approved' ORDER BY id DESC LIMIT 12 ")->fetchAll(); } ?>
ขณะนี้ยังไม่มีข้อมูลกิจกรรมที่น่าสนใจในระบบ