61 lines
2.6 KiB
PHP
61 lines
2.6 KiB
PHP
<?php
|
|
// ============================================================
|
|
// Admin/marketing/get_social_reports.php
|
|
// تقارير الذكاء الاجتماعي للوحة التحكم
|
|
// ============================================================
|
|
//
|
|
// لماذا نقطة جديدة بدل استعمال marketing_engine/index.php?action=get_reports:
|
|
//
|
|
// • تلك نقطة **البوت** لا نقطة إدارية: تُصادَق بترويسة X-Bot-Token
|
|
// المخبوزة في APK، وتخدم طابور المهام. استعمالها من اللوحة يعني إما
|
|
// تسريب توكن البوت إلى المتصفح، أو إبقاء النقطة مفتوحة للجميع —
|
|
// وقد كانت مفتوحة فعلاً حتى فُعّلت المصادقة، فصارت تُرجع 401 للّوحة.
|
|
//
|
|
// • الشاشة كانت تستدعيها بـ http.get الخام بلا JWT ولا X-Device-FP،
|
|
// فلا تظهر في سجل CRUD ولا تخضع لأي تحقّق صلاحيات.
|
|
//
|
|
// هذه النقطة تحت /Admin فتغطّيها البوّابة الافتراضية في connect.php.
|
|
// ============================================================
|
|
|
|
require_once __DIR__ . '/../../connect.php';
|
|
|
|
try {
|
|
$limit = (int) (filterRequest('limit', 'int') ?? 50);
|
|
$limit = max(1, min(200, $limit));
|
|
|
|
// is_weekly=1 لتقارير الأسبوع فقط، أو 0 للحظية، أو تُترك فارغة للكل
|
|
$weeklyOnly = filterRequest('weekly');
|
|
|
|
$where = '';
|
|
$params = [];
|
|
if ($weeklyOnly !== null && $weeklyOnly !== '') {
|
|
$where = 'WHERE is_weekly = :weekly';
|
|
$params[':weekly'] = ((string) $weeklyOnly === '1') ? 1 : 0;
|
|
}
|
|
|
|
$stmt = $con->prepare("
|
|
SELECT id, platform, report_html, is_weekly, created_at
|
|
FROM marketing_reports
|
|
$where
|
|
ORDER BY created_at DESC
|
|
LIMIT $limit
|
|
");
|
|
$stmt->execute($params);
|
|
$reports = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
foreach ($reports as &$r) {
|
|
$r['id'] = (int) $r['id'];
|
|
$r['is_weekly'] = (int) $r['is_weekly'] === 1;
|
|
}
|
|
unset($r);
|
|
|
|
jsonSuccess($reports);
|
|
|
|
} catch (Throwable $e) {
|
|
// الجدول قد يكون غير موجود على نشر لم يُطبَّق عليه الترحيل
|
|
// 2026_08_03_create_marketing_engine_tables.sql — نُبلغ بوضوح بدل
|
|
// إرجاع خطأ عام يُقرأ كـ "لا بيانات".
|
|
error_log('[get_social_reports] ' . $e->getMessage());
|
|
jsonError('تعذّر جلب تقارير الذكاء الاجتماعي. راجع سجل الخادم.', 500);
|
|
}
|