39669-vm/center_profile.php
2026-04-17 03:38:41 +00:00

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(); ?>