174 lines
8.2 KiB
PHP
174 lines
8.2 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
require_once __DIR__ . '/includes/app.php';
|
|
|
|
$flash = consume_flash();
|
|
$applicationId = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT) ?: 0;
|
|
$application = $applicationId > 0 ? get_application($applicationId) : null;
|
|
|
|
if (!$application) {
|
|
http_response_code(404);
|
|
render_page_start('ملف المركز غير موجود', 'approved', 'تعذر العثور على المركز.');
|
|
render_flash($flash);
|
|
?>
|
|
<section class="py-5">
|
|
<div class="container-xxl">
|
|
<div class="admin-layout row g-4 align-items-start">
|
|
<div class="col-lg-3 layout-sidebar-column">
|
|
<?php if ($application) { require __DIR__ . '/includes/center_sidebar.php'; } else { require __DIR__ . '/includes/sidebar.php'; } ?>
|
|
</div>
|
|
<div class="col-lg-9 layout-content-column">
|
|
<div class="app-card text-center py-5">
|
|
<div class="empty-title mb-2">المركز غير موجود</div>
|
|
<a class="btn btn-primary" href="applications.php?status=approved">العودة</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
<?php
|
|
render_page_end();
|
|
exit;
|
|
}
|
|
|
|
$isApproved = (string) $application['status'] === 'approved';
|
|
if (!$isApproved) {
|
|
set_flash('error', 'هذه الصفحة متاحة فقط للمراكز المعتمدة.');
|
|
header('Location: application_detail.php?id=' . $applicationId);
|
|
exit;
|
|
}
|
|
|
|
$errors = [];
|
|
$values = [
|
|
'center_name' => $application['center_name'],
|
|
'email' => $application['email'],
|
|
'phone' => $application['phone'],
|
|
];
|
|
|
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|
$values['center_name'] = clean_text($_POST['center_name'] ?? '', 190);
|
|
$values['email'] = clean_text($_POST['email'] ?? '', 190);
|
|
$values['phone'] = clean_text($_POST['phone'] ?? '', 60);
|
|
|
|
if ($values['center_name'] === '') $errors['center_name'] = 'مطلوب';
|
|
if ($values['email'] === '') $errors['email'] = 'مطلوب';
|
|
if ($values['phone'] === '') $errors['phone'] = 'مطلوب';
|
|
|
|
$logoPath = $application['logo'];
|
|
$faviconPath = $application['favicon'];
|
|
|
|
// Handle Uploads
|
|
$uploadDir = __DIR__ . '/assets/images/uploads/';
|
|
|
|
if (isset($_FILES['logo']) && $_FILES['logo']['error'] === UPLOAD_ERR_OK) {
|
|
$logoExt = strtolower(pathinfo($_FILES['logo']['name'], PATHINFO_EXTENSION));
|
|
if (in_array($logoExt, ['png', 'jpg', 'jpeg', 'svg', 'gif'])) {
|
|
$logoName = 'logo_' . $applicationId . '_' . time() . '.' . $logoExt;
|
|
if (move_uploaded_file($_FILES['logo']['tmp_name'], $uploadDir . $logoName)) {
|
|
$logoPath = 'assets/images/uploads/' . $logoName;
|
|
}
|
|
} else {
|
|
$errors['logo'] = 'صيغة غير مدعومة';
|
|
}
|
|
}
|
|
|
|
if (isset($_FILES['favicon']) && $_FILES['favicon']['error'] === UPLOAD_ERR_OK) {
|
|
$faviconExt = strtolower(pathinfo($_FILES['favicon']['name'], PATHINFO_EXTENSION));
|
|
if (in_array($faviconExt, ['png', 'ico', 'svg'])) {
|
|
$faviconName = 'favicon_' . $applicationId . '_' . time() . '.' . $faviconExt;
|
|
if (move_uploaded_file($_FILES['favicon']['tmp_name'], $uploadDir . $faviconName)) {
|
|
$faviconPath = 'assets/images/uploads/' . $faviconName;
|
|
}
|
|
} else {
|
|
$errors['favicon'] = 'صيغة غير مدعومة';
|
|
}
|
|
}
|
|
|
|
if (empty($errors)) {
|
|
try {
|
|
$stmt = db()->prepare('UPDATE center_applications SET center_name = ?, email = ?, phone = ?, logo = ?, favicon = ?, updated_at = NOW() WHERE id = ?');
|
|
$stmt->execute([
|
|
$values['center_name'],
|
|
$values['email'],
|
|
$values['phone'],
|
|
$logoPath,
|
|
$faviconPath,
|
|
$applicationId
|
|
]);
|
|
set_flash('success', 'تم تحديث بيانات المركز بنجاح.');
|
|
header('Location: center_profile.php?id=' . $applicationId);
|
|
exit;
|
|
} catch (Throwable $e) {
|
|
$errors['form'] = 'تعذر الحفظ.';
|
|
}
|
|
}
|
|
}
|
|
|
|
render_page_start('إعدادات المركز', 'approved', 'تعديل بيانات وهوية المركز.', (string) ($application['favicon'] ?? ''));
|
|
render_flash($flash);
|
|
?>
|
|
<section class="py-4 py-lg-5">
|
|
<div class="container-xxl">
|
|
<div class="admin-layout row g-4 align-items-start">
|
|
<div class="col-lg-3 layout-sidebar-column">
|
|
<?php if ($application) { require __DIR__ . '/includes/center_sidebar.php'; } else { require __DIR__ . '/includes/sidebar.php'; } ?>
|
|
</div>
|
|
<div class="col-lg-9 layout-content-column">
|
|
<div class="page-banner mb-4">
|
|
<h1 class="page-title mb-2">إعدادات وهوية المركز</h1>
|
|
<p class="page-copy mb-0">تعديل اسم المركز، الشعار (Logo)، الأيقونة (Favicon)، وبيانات التواصل.</p>
|
|
</div>
|
|
|
|
<div class="app-card form-card">
|
|
<?php if (!empty($errors['form'])): ?>
|
|
<div class="alert alert-danger mb-4"><?= e($errors['form']) ?></div>
|
|
<?php endif; ?>
|
|
|
|
<form method="post" enctype="multipart/form-data" novalidate>
|
|
<div class="row g-4">
|
|
<div class="col-md-12">
|
|
<label class="form-label">اسم المركز</label>
|
|
<input class="form-control <?= isset($errors['center_name']) ? 'is-invalid' : '' ?>" name="center_name" value="<?= e($values['center_name']) ?>">
|
|
<?php if (isset($errors['center_name'])): ?><div class="invalid-feedback"><?= e($errors['center_name']) ?></div><?php endif; ?>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label class="form-label">البريد الإلكتروني</label>
|
|
<input type="email" class="form-control <?= isset($errors['email']) ? 'is-invalid' : '' ?>" name="email" value="<?= e($values['email']) ?>">
|
|
<?php if (isset($errors['email'])): ?><div class="invalid-feedback"><?= e($errors['email']) ?></div><?php endif; ?>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label class="form-label">رقم الهاتف</label>
|
|
<input class="form-control <?= isset($errors['phone']) ? 'is-invalid' : '' ?>" name="phone" value="<?= e($values['phone']) ?>">
|
|
<?php if (isset($errors['phone'])): ?><div class="invalid-feedback"><?= e($errors['phone']) ?></div><?php endif; ?>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label class="form-label">الشعار (Logo)</label>
|
|
<?php if ($application['logo']): ?>
|
|
<div class="mb-2"><img src="<?= e((string)$application['logo']) ?>" alt="Logo" style="max-height: 80px; max-width: 100%; border-radius: 8px;"></div>
|
|
<?php endif; ?>
|
|
<input type="file" class="form-control <?= isset($errors['logo']) ? 'is-invalid' : '' ?>" name="logo" accept="image/*">
|
|
<?php if (isset($errors['logo'])): ?><div class="invalid-feedback"><?= e($errors['logo']) ?></div><?php endif; ?>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<label class="form-label">الأيقونة (Favicon)</label>
|
|
<?php if ($application['favicon']): ?>
|
|
<div class="mb-2"><img src="<?= e((string)$application['favicon']) ?>" alt="Favicon" style="max-height: 40px; max-width: 100%; border-radius: 4px;"></div>
|
|
<?php endif; ?>
|
|
<input type="file" class="form-control <?= isset($errors['favicon']) ? 'is-invalid' : '' ?>" name="favicon" accept=".ico,.png,.svg">
|
|
<?php if (isset($errors['favicon'])): ?><div class="invalid-feedback"><?= e($errors['favicon']) ?></div><?php endif; ?>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="form-actions mt-4">
|
|
<button class="btn btn-primary px-4" type="submit">حفظ التغييرات</button>
|
|
<a class="btn btn-outline-secondary px-4" href="approved_school.php?id=<?= e((string)$applicationId) ?>">إلغاء</a>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
<?php render_page_end(); ?>
|