Update: 2026-07-04 04:05:08

This commit is contained in:
Hamza-Ayed
2026-07-04 04:05:08 +03:00
parent e4ba962ab6
commit c7bd644b88
14 changed files with 807 additions and 26 deletions
+42 -14
View File
@@ -20,7 +20,8 @@ require_once __DIR__ . '/../core/Security/EncryptionHelper.php';
set_time_limit(0);
try {
$con = Database::get('main');
$con = Database::get('main');
$redis = getRedisConnection();
} catch (Exception $e) {
die("Database connection failed: " . $e->getMessage() . "\n");
}
@@ -101,22 +102,49 @@ foreach ($passengersByCountry as $countryCode => $passengers) {
// 4. إرسال الـ Push Notification لكل راكب
foreach ($passengers as $p) {
$passengerId = $p['passenger_id'];
$encryptedToken = $p['token'];
$decryptedToken = $encryptionHelper->decryptData($encryptedToken);
if ($decryptedToken) {
$dataPayload = [
'type' => 'marketing_promo',
'promo_code' => $promoCode
];
// استدعاء دالة الإرسال (يفترض وجودها في نظام FCM الخاص بك، مثل sendFCM)
// sendFCM($decryptedToken, $title, $body, $dataPayload);
// سنطبع للـ Log فقط في هذا السكربت لتجنب إرسال رسائل حقيقية دون تفعيل FCM الفعلي
error_log("Sending Push to passenger {$p['passenger_id']}: $title");
$totalPushes++;
if (!$decryptedToken) continue;
// ── Anti-spam: لا يُرسَل لنفس الراكب أكثر من مرة/24 ساعة ──
$redisKey = "marketing_push:sent:{$passengerId}";
if ($redis && $redis->exists($redisKey)) {
continue;
}
$dataPayload = [
'type' => 'marketing_promo',
'promo_code' => $promoCode,
'screen' => 'home',
];
// ── إرسال FCM الفعلي ──────────────────────────────────────
sendFCM_Internal(
$decryptedToken,
$title,
$body,
$dataPayload,
'Marketing',
false,
'ding'
);
// ── تسجيل anti-spam في Redis (TTL 24 ساعة) ───────────────
if ($redis) {
$redis->setex($redisKey, 86400, '1');
}
// ── حفظ في جدول notifications الداخلي ────────────────────
try {
$ins = $con->prepare(
"INSERT INTO notifications (title, body, passenger_id) VALUES (:t, :b, :pid)"
);
$ins->execute([':t' => $title, ':b' => $body, ':pid' => $passengerId]);
} catch (Exception $ignored) {}
$totalPushes++;
}
}