Autosave: 20260227-174549
This commit is contained in:
parent
fc07d00bbb
commit
6d5518a7b7
117
charity-settings.php
Normal file
117
charity-settings.php
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
<?php
|
||||||
|
require_once __DIR__ . '/includes/header.php';
|
||||||
|
|
||||||
|
// Only admins can access this page
|
||||||
|
if (!isAdmin()) {
|
||||||
|
header("Location: index.php");
|
||||||
|
exit;
|
||||||
|
}
|
||||||
|
|
||||||
|
$success_msg = '';
|
||||||
|
$error_msg = '';
|
||||||
|
|
||||||
|
// Fetch charity settings
|
||||||
|
$stmt = db()->query("SELECT * FROM charity_settings WHERE id = 1");
|
||||||
|
$charity = $stmt->fetch();
|
||||||
|
|
||||||
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||||
|
$charity_name = $_POST['charity_name'];
|
||||||
|
$charity_email = $_POST['charity_email'];
|
||||||
|
$charity_phone = $_POST['charity_phone'];
|
||||||
|
$charity_address = $_POST['charity_address'];
|
||||||
|
$charity_logo = $charity['charity_logo'];
|
||||||
|
$charity_favicon = $charity['charity_favicon'];
|
||||||
|
|
||||||
|
$upload_dir = 'uploads/charity/';
|
||||||
|
if (!is_dir($upload_dir)) mkdir($upload_dir, 0775, true);
|
||||||
|
|
||||||
|
// Handle Logo Upload
|
||||||
|
if (isset($_FILES['charity_logo']) && $_FILES['charity_logo']['error'] === UPLOAD_ERR_OK) {
|
||||||
|
$file_ext = pathinfo($_FILES['charity_logo']['name'], PATHINFO_EXTENSION);
|
||||||
|
$new_logo = 'logo_' . time() . '.' . $file_ext;
|
||||||
|
if (move_uploaded_file($_FILES['charity_logo']['tmp_name'], $upload_dir . $new_logo)) {
|
||||||
|
$charity_logo = $upload_dir . $new_logo;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle Favicon Upload
|
||||||
|
if (isset($_FILES['charity_favicon']) && $_FILES['charity_favicon']['error'] === UPLOAD_ERR_OK) {
|
||||||
|
$file_ext = pathinfo($_FILES['charity_favicon']['name'], PATHINFO_EXTENSION);
|
||||||
|
$new_favicon = 'favicon_' . time() . '.' . $file_ext;
|
||||||
|
if (move_uploaded_file($_FILES['charity_favicon']['tmp_name'], $upload_dir . $new_favicon)) {
|
||||||
|
$charity_favicon = $upload_dir . $new_favicon;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$stmt = db()->prepare("UPDATE charity_settings SET charity_name = ?, charity_email = ?, charity_phone = ?, charity_address = ?, charity_logo = ?, charity_favicon = ? WHERE id = 1");
|
||||||
|
$stmt->execute([$charity_name, $charity_email, $charity_phone, $charity_address, $charity_logo, $charity_favicon]);
|
||||||
|
$success_msg = 'تم تحديث إعدادات الجمعية بنجاح';
|
||||||
|
|
||||||
|
// Refresh charity data
|
||||||
|
$stmt = db()->query("SELECT * FROM charity_settings WHERE id = 1");
|
||||||
|
$charity = $stmt->fetch();
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-12 mb-4">
|
||||||
|
<h2 class="fw-bold"><i class="fas fa-cog me-2"></i> إعدادات الجمعية</h2>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<?php if ($success_msg): ?>
|
||||||
|
<div class="alert alert-success"><?= $success_msg ?></div>
|
||||||
|
<?php endif; ?>
|
||||||
|
|
||||||
|
<div class="col-md-8 mx-auto">
|
||||||
|
<div class="card p-4">
|
||||||
|
<h4 class="mb-4">بيانات الجمعية</h4>
|
||||||
|
<form method="POST" enctype="multipart/form-data">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-6 mb-3">
|
||||||
|
<label class="form-label">اسم الجمعية</label>
|
||||||
|
<input type="text" name="charity_name" class="form-control" value="<?= htmlspecialchars($charity['charity_name'] ?? '') ?>" required>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6 mb-3">
|
||||||
|
<label class="form-label">البريد الإلكتروني للجمعية</label>
|
||||||
|
<input type="email" name="charity_email" class="form-control" value="<?= htmlspecialchars($charity['charity_email'] ?? '') ?>">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label">رقم الهاتف</label>
|
||||||
|
<input type="text" name="charity_phone" class="form-control" value="<?= htmlspecialchars($charity['charity_phone'] ?? '') ?>">
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label">العنوان</label>
|
||||||
|
<textarea name="charity_address" class="form-control" rows="3"><?= htmlspecialchars($charity['charity_address'] ?? '') ?></textarea>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-md-6 mb-3">
|
||||||
|
<label class="form-label">شعار الجمعية</label>
|
||||||
|
<input type="file" name="charity_logo" class="form-control" accept="image/*">
|
||||||
|
<?php if ($charity['charity_logo']): ?>
|
||||||
|
<div class="mt-2 text-center">
|
||||||
|
<img src="<?= $charity['charity_logo'] ?>" alt="Logo" style="max-height: 80px; border: 1px solid #ddd; padding: 5px;">
|
||||||
|
</div>
|
||||||
|
<?php endif; ?>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6 mb-3">
|
||||||
|
<label class="form-label">أيقونة الموقع (Favicon)</label>
|
||||||
|
<input type="file" name="charity_favicon" class="form-control" accept="image/x-icon,image/png">
|
||||||
|
<?php if ($charity['charity_favicon']): ?>
|
||||||
|
<div class="mt-2 text-center">
|
||||||
|
<img src="<?= $charity['charity_favicon'] ?>" alt="Favicon" style="max-height: 32px;">
|
||||||
|
</div>
|
||||||
|
<?php endif; ?>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn-dark w-100 mt-4">تحديث إعدادات الجمعية</button>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<?php require_once __DIR__ . '/includes/footer.php'; ?>
|
||||||
10
db/migrations/003_add_fields_to_profiles.sql
Normal file
10
db/migrations/003_add_fields_to_profiles.sql
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
-- Migration: Add extra fields to User and Charity Profiles
|
||||||
|
ALTER TABLE users
|
||||||
|
ADD COLUMN email VARCHAR(255) DEFAULT NULL AFTER full_name,
|
||||||
|
ADD COLUMN phone VARCHAR(50) DEFAULT NULL AFTER email,
|
||||||
|
ADD COLUMN address TEXT DEFAULT NULL AFTER phone;
|
||||||
|
|
||||||
|
ALTER TABLE charity_settings
|
||||||
|
ADD COLUMN charity_email VARCHAR(255) DEFAULT NULL AFTER charity_name,
|
||||||
|
ADD COLUMN charity_phone VARCHAR(50) DEFAULT NULL AFTER charity_email,
|
||||||
|
ADD COLUMN charity_address TEXT DEFAULT NULL AFTER charity_phone;
|
||||||
@ -156,6 +156,11 @@ if (isLoggedIn()) {
|
|||||||
<i class="fas fa-users me-2"></i> إدارة المستخدمين
|
<i class="fas fa-users me-2"></i> إدارة المستخدمين
|
||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link <?= basename($_SERVER['PHP_SELF']) == 'charity-settings.php' ? 'active' : '' ?>" href="charity-settings.php">
|
||||||
|
<i class="fas fa-cog me-2"></i> إعدادات الجمعية
|
||||||
|
</a>
|
||||||
|
</li>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link <?= basename($_SERVER['PHP_SELF']) == 'profile.php' ? 'active' : '' ?>" href="profile.php">
|
<a class="nav-link <?= basename($_SERVER['PHP_SELF']) == 'profile.php' ? 'active' : '' ?>" href="profile.php">
|
||||||
@ -172,4 +177,4 @@ if (isLoggedIn()) {
|
|||||||
</nav>
|
</nav>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
|
|
||||||
<main class="<?= isLoggedIn() ? 'col-md-9 ms-sm-auto col-lg-10' : 'col-12' ?> px-md-4 py-4">
|
<main class="<?= isLoggedIn() ? 'col-md-9 ms-sm-auto col-lg-10' : 'col-12' ?> px-md-4 py-4">
|
||||||
129
profile.php
129
profile.php
@ -10,13 +10,12 @@ $stmt = db()->prepare("SELECT * FROM users WHERE id = ?");
|
|||||||
$stmt->execute([$user_id]);
|
$stmt->execute([$user_id]);
|
||||||
$user = $stmt->fetch();
|
$user = $stmt->fetch();
|
||||||
|
|
||||||
// Fetch charity settings
|
|
||||||
$stmt = db()->query("SELECT * FROM charity_settings WHERE id = 1");
|
|
||||||
$charity = $stmt->fetch();
|
|
||||||
|
|
||||||
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||||
if (isset($_POST['update_profile'])) {
|
if (isset($_POST['update_profile'])) {
|
||||||
$full_name = $_POST['full_name'];
|
$full_name = $_POST['full_name'];
|
||||||
|
$email = $_POST['email'];
|
||||||
|
$phone = $_POST['phone'];
|
||||||
|
$address = $_POST['address'];
|
||||||
$password = $_POST['password'];
|
$password = $_POST['password'];
|
||||||
$profile_image = $user['profile_image'];
|
$profile_image = $user['profile_image'];
|
||||||
|
|
||||||
@ -36,11 +35,11 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
|
|
||||||
if (!empty($password)) {
|
if (!empty($password)) {
|
||||||
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
|
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
|
||||||
$stmt = db()->prepare("UPDATE users SET full_name = ?, password = ?, profile_image = ? WHERE id = ?");
|
$stmt = db()->prepare("UPDATE users SET full_name = ?, email = ?, phone = ?, address = ?, password = ?, profile_image = ? WHERE id = ?");
|
||||||
$stmt->execute([$full_name, $hashed_password, $profile_image, $user_id]);
|
$stmt->execute([$full_name, $email, $phone, $address, $hashed_password, $profile_image, $user_id]);
|
||||||
} else {
|
} else {
|
||||||
$stmt = db()->prepare("UPDATE users SET full_name = ?, profile_image = ? WHERE id = ?");
|
$stmt = db()->prepare("UPDATE users SET full_name = ?, email = ?, phone = ?, address = ?, profile_image = ? WHERE id = ?");
|
||||||
$stmt->execute([$full_name, $profile_image, $user_id]);
|
$stmt->execute([$full_name, $email, $phone, $address, $profile_image, $user_id]);
|
||||||
}
|
}
|
||||||
$success_msg = 'تم تحديث الملف الشخصي بنجاح';
|
$success_msg = 'تم تحديث الملف الشخصي بنجاح';
|
||||||
// Refresh user data
|
// Refresh user data
|
||||||
@ -48,118 +47,68 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
$stmt->execute([$user_id]);
|
$stmt->execute([$user_id]);
|
||||||
$user = $stmt->fetch();
|
$user = $stmt->fetch();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($_POST['update_charity']) && isAdmin()) {
|
|
||||||
$charity_name = $_POST['charity_name'];
|
|
||||||
$charity_logo = $charity['charity_logo'];
|
|
||||||
$charity_favicon = $charity['charity_favicon'];
|
|
||||||
|
|
||||||
$upload_dir = 'uploads/charity/';
|
|
||||||
if (!is_dir($upload_dir)) mkdir($upload_dir, 0775, true);
|
|
||||||
|
|
||||||
// Handle Logo Upload
|
|
||||||
if (isset($_FILES['charity_logo']) && $_FILES['charity_logo']['error'] === UPLOAD_ERR_OK) {
|
|
||||||
$file_ext = pathinfo($_FILES['charity_logo']['name'], PATHINFO_EXTENSION);
|
|
||||||
$new_logo = 'logo_' . time() . '.' . $file_ext;
|
|
||||||
if (move_uploaded_file($_FILES['charity_logo']['tmp_name'], $upload_dir . $new_logo)) {
|
|
||||||
$charity_logo = $upload_dir . $new_logo;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Handle Favicon Upload
|
|
||||||
if (isset($_FILES['charity_favicon']) && $_FILES['charity_favicon']['error'] === UPLOAD_ERR_OK) {
|
|
||||||
$file_ext = pathinfo($_FILES['charity_favicon']['name'], PATHINFO_EXTENSION);
|
|
||||||
$new_favicon = 'favicon_' . time() . '.' . $file_ext;
|
|
||||||
if (move_uploaded_file($_FILES['charity_favicon']['tmp_name'], $upload_dir . $new_favicon)) {
|
|
||||||
$charity_favicon = $upload_dir . $new_favicon;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$stmt = db()->prepare("UPDATE charity_settings SET charity_name = ?, charity_logo = ?, charity_favicon = ? WHERE id = 1");
|
|
||||||
$stmt->execute([$charity_name, $charity_logo, $charity_favicon]);
|
|
||||||
$success_msg = 'تم تحديث إعدادات الجمعية بنجاح';
|
|
||||||
|
|
||||||
// Refresh charity data
|
|
||||||
$stmt = db()->query("SELECT * FROM charity_settings WHERE id = 1");
|
|
||||||
$charity = $stmt->fetch();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12 mb-4">
|
<div class="col-md-12 mb-4">
|
||||||
<h2 class="fw-bold"><i class="fas fa-user-circle me-2"></i> الملف الشخصي والإعدادات</h2>
|
<h2 class="fw-bold"><i class="fas fa-user-circle me-2"></i> الملف الشخصي</h2>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?php if ($success_msg): ?>
|
<?php if ($success_msg): ?>
|
||||||
<div class="alert alert-success"><?= $success_msg ?></div>
|
<div class="alert alert-success"><?= $success_msg ?></div>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
<?php if ($error_msg): ?>
|
|
||||||
<div class="alert alert-danger"><?= $error_msg ?></div>
|
|
||||||
<?php endif; ?>
|
|
||||||
|
|
||||||
<div class="col-md-6">
|
<div class="col-md-8 mx-auto">
|
||||||
<div class="card p-4">
|
<div class="card p-4">
|
||||||
<h4 class="mb-4">تعديل الملف الشخصي</h4>
|
<h4 class="mb-4">تعديل الملف الشخصي</h4>
|
||||||
<form method="POST" enctype="multipart/form-data">
|
<form method="POST" enctype="multipart/form-data">
|
||||||
<div class="text-center mb-4">
|
<div class="text-center mb-4">
|
||||||
<?php if ($user['profile_image']): ?>
|
<?php if ($user['profile_image']): ?>
|
||||||
<img src="<?= $user['profile_image'] ?>" alt="Profile" class="rounded-circle" style="width: 150px; height: 150px; object-fit: cover; border: 3px solid #0d6efd;">
|
<img src="<?= $user['profile_image'] ?>" alt="Profile" class="rounded-circle shadow" style="width: 150px; height: 150px; object-fit: cover; border: 3px solid #0d6efd;">
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
<div class="rounded-circle bg-light d-inline-flex align-items-center justify-content-center" style="width: 150px; height: 150px; border: 3px solid #ddd;">
|
<div class="rounded-circle bg-light d-inline-flex align-items-center justify-content-center shadow" style="width: 150px; height: 150px; border: 3px solid #ddd;">
|
||||||
<i class="fas fa-user fa-5x text-secondary"></i>
|
<i class="fas fa-user fa-5x text-secondary"></i>
|
||||||
</div>
|
</div>
|
||||||
<?php endif; ?>
|
<?php endif; ?>
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
|
||||||
<label class="form-label">الصورة الشخصية</label>
|
<div class="row">
|
||||||
<input type="file" name="profile_image" class="form-control" accept="image/*">
|
<div class="col-md-6 mb-3">
|
||||||
|
<label class="form-label">الاسم الكامل</label>
|
||||||
|
<input type="text" name="full_name" class="form-control" value="<?= htmlspecialchars($user['full_name'] ?? '') ?>" required>
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6 mb-3">
|
||||||
|
<label class="form-label">البريد الإلكتروني</label>
|
||||||
|
<input type="email" name="email" class="form-control" value="<?= htmlspecialchars($user['email'] ?? '') ?>">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-3">
|
|
||||||
<label class="form-label">الاسم الكامل</label>
|
<div class="row">
|
||||||
<input type="text" name="full_name" class="form-control" value="<?= htmlspecialchars($user['full_name']) ?>" required>
|
<div class="col-md-6 mb-3">
|
||||||
|
<label class="form-label">رقم الهاتف</label>
|
||||||
|
<input type="text" name="phone" class="form-control" value="<?= htmlspecialchars($user['phone'] ?? '') ?>">
|
||||||
|
</div>
|
||||||
|
<div class="col-md-6 mb-3">
|
||||||
|
<label class="form-label">الصورة الشخصية</label>
|
||||||
|
<input type="file" name="profile_image" class="form-control" accept="image/*">
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="mb-3">
|
||||||
|
<label class="form-label">العنوان</label>
|
||||||
|
<textarea name="address" class="form-control" rows="3"><?= htmlspecialchars($user['address'] ?? '') ?></textarea>
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="mb-3">
|
<div class="mb-3">
|
||||||
<label class="form-label">كلمة المرور الجديدة (اتركها فارغة إذا لم ترغب في التغيير)</label>
|
<label class="form-label">كلمة المرور الجديدة (اتركها فارغة إذا لم ترغب في التغيير)</label>
|
||||||
<input type="password" name="password" class="form-control">
|
<input type="password" name="password" class="form-control">
|
||||||
</div>
|
</div>
|
||||||
<button type="submit" name="update_profile" class="btn btn-primary w-100">حفظ التغييرات</button>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<?php if (isAdmin()): ?>
|
<button type="submit" name="update_profile" class="btn btn-primary w-100 mt-3">حفظ التغييرات</button>
|
||||||
<div class="col-md-6">
|
|
||||||
<div class="card p-4">
|
|
||||||
<h4 class="mb-4">إعدادات الجمعية</h4>
|
|
||||||
<form method="POST" enctype="multipart/form-data">
|
|
||||||
<div class="mb-3">
|
|
||||||
<label class="form-label">اسم الجمعية</label>
|
|
||||||
<input type="text" name="charity_name" class="form-control" value="<?= htmlspecialchars($charity['charity_name']) ?>" required>
|
|
||||||
</div>
|
|
||||||
<div class="mb-3">
|
|
||||||
<label class="form-label">شعار الجمعية</label>
|
|
||||||
<input type="file" name="charity_logo" class="form-control" accept="image/*">
|
|
||||||
<?php if ($charity['charity_logo']): ?>
|
|
||||||
<div class="mt-2">
|
|
||||||
<img src="<?= $charity['charity_logo'] ?>" alt="Logo" style="max-height: 50px;">
|
|
||||||
</div>
|
|
||||||
<?php endif; ?>
|
|
||||||
</div>
|
|
||||||
<div class="mb-3">
|
|
||||||
<label class="form-label">أيقونة الموقع (Favicon)</label>
|
|
||||||
<input type="file" name="charity_favicon" class="form-control" accept="image/x-icon,image/png">
|
|
||||||
<?php if ($charity['charity_favicon']): ?>
|
|
||||||
<div class="mt-2">
|
|
||||||
<img src="<?= $charity['charity_favicon'] ?>" alt="Favicon" style="max-height: 32px;">
|
|
||||||
</div>
|
|
||||||
<?php endif; ?>
|
|
||||||
</div>
|
|
||||||
<button type="submit" name="update_charity" class="btn btn-dark w-100">تحديث إعدادات الجمعية</button>
|
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<?php endif; ?>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<?php require_once __DIR__ . '/includes/footer.php'; ?>
|
<?php require_once __DIR__ . '/includes/footer.php'; ?>
|
||||||
BIN
uploads/charity/favicon_1772214262.jpg
Normal file
BIN
uploads/charity/favicon_1772214262.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
BIN
uploads/charity/favicon_1772214275.jpg
Normal file
BIN
uploads/charity/favicon_1772214275.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
BIN
uploads/charity/logo_1772214243.jpg
Normal file
BIN
uploads/charity/logo_1772214243.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 24 KiB |
Loading…
x
Reference in New Issue
Block a user