Update: 2026-08-03 13:37:04
This commit is contained in:
@@ -10,7 +10,15 @@ if ($role !== 'admin' && $role !== 'super_admin') {
|
|||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
$driverId = filterRequest("id");
|
// filterRequest() تقرأ من POST أو JSON body فقط ولا تلمس $_GET
|
||||||
|
// (core/helpers.php). شاشة مراجعة الوثائق تنادي هذه النقطة بـ
|
||||||
|
// ?id=... في الـ query string، فكانت تُرجع "driver_id is required"
|
||||||
|
// دائماً رغم إرسال المعرّف. نقبل الشكلين، ونقبل driver_id أيضاً
|
||||||
|
// لأن رسالة الخطأ نفسها تسمّيه هكذا.
|
||||||
|
$driverId = filterRequest("id")
|
||||||
|
?: filterRequest("driver_id")
|
||||||
|
?: (isset($_GET['id']) ? trim((string) $_GET['id']) : null)
|
||||||
|
?: (isset($_GET['driver_id']) ? trim((string) $_GET['driver_id']) : null);
|
||||||
|
|
||||||
if (empty($driverId)) {
|
if (empty($driverId)) {
|
||||||
jsonError("driver_id is required.");
|
jsonError("driver_id is required.");
|
||||||
|
|||||||
@@ -44,6 +44,12 @@ if (!$key) {
|
|||||||
$iv = getenv('initializationVector'); // 16 bytes
|
$iv = getenv('initializationVector'); // 16 bytes
|
||||||
|
|
||||||
|
|
||||||
|
// الصنف نفسه معرَّف أيضاً في core/Security/EncryptionHelper.php، وأي ملف
|
||||||
|
// يحمّل bootstrap.php ثم يصل إلى هنا كان ينهار بـ "Cannot declare class
|
||||||
|
// EncryptionHelper, because the name is already in use" — وهو ما أسقط
|
||||||
|
// blacklist_manager.php. نُبقي أول تعريف محمَّل (النسخة الحديثة في core)
|
||||||
|
// ونتخطّى هذه النسخة القديمة المتروكة للتوافقية.
|
||||||
|
if (!class_exists('EncryptionHelper', false)) {
|
||||||
class EncryptionHelper {
|
class EncryptionHelper {
|
||||||
private $key;
|
private $key;
|
||||||
private $iv;
|
private $iv;
|
||||||
@@ -160,6 +166,7 @@ class EncryptionHelper {
|
|||||||
return $decrypted;
|
return $decrypted;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} // نهاية حارس class_exists
|
||||||
// ✅ Load the key and IV from .env or use default values
|
// ✅ Load the key and IV from .env or use default values
|
||||||
|
|
||||||
// ✅ Ensure the lengths are correct
|
// ✅ Ensure the lengths are correct
|
||||||
|
|||||||
@@ -540,16 +540,24 @@ class _AdminHomePageState extends State<AdminHomePage>
|
|||||||
children: [
|
children: [
|
||||||
Icon(Icons.schedule_rounded, color: cs.primary, size: 18),
|
Icon(Icons.schedule_rounded, color: cs.primary, size: 18),
|
||||||
const SizedBox(width: 8),
|
const SizedBox(width: 8),
|
||||||
Text('توزيع الرحلات حسب الوقت',
|
// العنوان مرن والعدد ثابت: بدون Expanded كان مجموع
|
||||||
style: TextStyle(
|
// العرضين يتجاوز الحاوية بكسور البكسل في العربية
|
||||||
color: cs.onSurface,
|
// (فاض 0.313 بكسل عند 1742 رحلة).
|
||||||
fontSize: 13,
|
Expanded(
|
||||||
fontWeight: FontWeight.w600)),
|
child: Text('توزيع الرحلات حسب الوقت',
|
||||||
const Spacer(),
|
maxLines: 1,
|
||||||
if (total > 0)
|
overflow: TextOverflow.ellipsis,
|
||||||
|
style: TextStyle(
|
||||||
|
color: cs.onSurface,
|
||||||
|
fontSize: 13,
|
||||||
|
fontWeight: FontWeight.w600)),
|
||||||
|
),
|
||||||
|
if (total > 0) ...[
|
||||||
|
const SizedBox(width: 8),
|
||||||
Text('${total.toInt()} رحلة',
|
Text('${total.toInt()} رحلة',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
color: cs.onSurfaceVariant, fontSize: 11)),
|
color: cs.onSurfaceVariant, fontSize: 11)),
|
||||||
|
],
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
const SizedBox(height: 16),
|
const SizedBox(height: 16),
|
||||||
|
|||||||
Reference in New Issue
Block a user