Files
Hamza-AyedandClaude Opus 5 4d8414c96b feat: استيراد كود سيرو إلى تريبز (سيرو @ecfe7568) — بلا تعديل
قرار المالك 2026-07-27: باك إند سيرو PHP هو المعتمد، وتطبيقاته المجرّبة
ميدانياً تحل محل إعادة البناء المؤرشفة. سيرو نفسه لم يُمسّ.

الخريطة:
  backend · payment_server · loction_server · ride_server ·
  passenger_server · docker · dashboard · stress_test  → الجذر
  siro_rider  → apps/rider          siro_driver  → apps/driver
  siro_admin  → dashboards/admin    siro_service → dashboards/service
  android_bot → apps/android_bot    socialBot    → apps/socialBot

نُسخ المتعقَّب في git سيرو فقط عبر `git archive` (3,198 ملفاً / ~169 م.ب)
لا `cp -r` — فاستُثنيت مخلفات البناء تلقائياً. بلا أي تعديل محتوى عمداً:
كل ما يلي يصير فرقاً مقروءاً مقابل المصدر.

لم يُستورد وسببه: siromove.com (الموقع التسويقي يبقى marketing/ في تريبز،
سيرو فيه 8 ملفات) · docs و planning (تريبز له docs/ الخاص) · deploy.sh
(ليس نشراً على سيرفر بل `git add . && git push origin --all` — فخّ في
مستودع آخر) · transit_dashboard (بانتظار قرار مصير backend-transit و
dashboards/transit-web).

⚠️ لا يبني بعد — ثلاثة نواقص متوقعة ومقصودة:
1. `.env` و `lib/env/env.g.dart` غير متعقَّبين في سيرو (أسرار لكل مستأجر):
   كل تطبيق فلاتر يحتاج .env خاصاً ثم توليد env.g.dart بـ build_runner.
2. إعدادات Firebase (9 ملفات google-services.json و GoogleService-Info.plist)
   يستبعدها .gitignore تريبز — ولكل مستأجر مشروع Firebase خاص أصلاً.
3. apps/driver في سيرو يشير إلى `../../Intaleq/packages/get` خارج المستودع →
   يجب ضمّ الحزم داخله أسوة بـ apps/rider.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 05:14:13 +03:00

89 lines
2.7 KiB
PHP

<?php
require_once __DIR__ . '/../get_connect.php';
// اسم الملف النصي الذي سيتم حفظ البيانات فيه
$filename = "drivers_list.txt";
/*
المطلوب:
- جلب أرقام الهاتف من phone_verification غير الموجودة في driver
- فك تشفير الهاتف (والإيميل إن لزم)
- حفظ النتيجة في ملف نصي (رقم الهاتف والملاحظة)
*/
$sql = "
SELECT
pv.id,
pv.phone_number,
pv.email,
pv.token_code,
pv.created_at,
n.note
FROM
phone_verification pv
LEFT JOIN
driver d ON pv.phone_number = d.phone_key
LEFT JOIN
notesForDriverService n ON pv.phone_number = n.phone_key
WHERE
d.phone IS NULL
AND (n.note != 'delete' OR n.note IS NULL)
-- تمت إضافة هذا الشرط بناءً على طلبك (آخر 5 أيام)
-- AND pv.created_at >= DATE_SUB(NOW(), INTERVAL 5 DAY)
ORDER BY
pv.created_at DESC;
";
$stmt = $con->prepare($sql);
$stmt->execute();
if ($stmt->rowCount() > 0) {
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
// فتح الملف للكتابة (Mode 'w' يقوم بإنشاء الملف أو مسح محتواه السابق والكتابة من جديد)
$fileHandle = fopen($filename, 'w');
// التحقق من أن الملف فُتح بنجاح
if ($fileHandle) {
foreach ($rows as $r) {
$phone = "";
$note = "No Note"; // القيمة الافتراضية إذا لم توجد ملاحظة
// 1. فك تشفير رقم الهاتف
if (isset($r['phone_number']) && $r['phone_number'] != null) {
$phone = $encryptionHelper->decryptData($r['phone_number']);
}
// 2. تجهيز نص الملاحظة
if (isset($r['note']) && $r['note'] != null) {
$note = $r['note'];
}
// 3. تنسيق السطر الذي سيتم حفظه
// الشكل: Phone: 0123456789 | Note: مهتم بالتسجيل
$line = "Phone: " . $phone . " | Note: " . $note . PHP_EOL;
// 4. الكتابة داخل الملف
fwrite($fileHandle, $line);
}
// إغلاق الملف بعد الانتهاء
fclose($fileHandle);
// طباعة رسالة نجاح مع رابط للملف (اختياري)
echo json_encode([
"status" => "success",
"message" => "File created successfully",
"file" => $filename,
"count" => count($rows)
]);
} else {
jsonError("Unable to open file for writing.");
}
} else {
jsonError("No phone numbers found in the last 5 days");
}
?>