diff --git a/charity-settings.php b/charity-settings.php index 63c0164..351824f 100644 --- a/charity-settings.php +++ b/charity-settings.php @@ -1,20 +1,31 @@ query("UPDATE smtp_settings SET is_enabled = 1, consecutive_failures = 0 WHERE id = 1"); + $success_msg = 'تم إعادة تفعيل SMTP وتصفير عداد الأخطاء'; +} + // Fetch charity settings $stmt = db()->query("SELECT * FROM charity_settings WHERE id = 1"); $charity = $stmt->fetch(); -if ($_SERVER['REQUEST_METHOD'] === 'POST') { +// Fetch SMTP settings +$stmt = db()->query("SELECT * FROM smtp_settings WHERE id = 1"); +$smtp = $stmt->fetch(); + +// Handle Charity Settings Update +if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['update_charity'])) { $charity_name = $_POST['charity_name']; $charity_email = $_POST['charity_email']; $charity_phone = $_POST['charity_phone']; @@ -25,7 +36,6 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $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; @@ -34,7 +44,6 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { } } - // 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; @@ -46,72 +55,343 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { $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(); } + +// Handle SMTP Settings Update +if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['update_smtp'])) { + $stmt = db()->prepare("UPDATE smtp_settings SET smtp_host = ?, smtp_port = ?, smtp_secure = ?, smtp_user = ?, smtp_pass = ?, from_email = ?, from_name = ?, reply_to = ?, max_failures = ? WHERE id = 1"); + $stmt->execute([ + $_POST['smtp_host'], + (int)$_POST['smtp_port'], + $_POST['smtp_secure'], + $_POST['smtp_user'], + $_POST['smtp_pass'], + $_POST['from_email'], + $_POST['from_name'], + $_POST['reply_to'], + (int)$_POST['max_failures'] + ]); + $success_msg = 'تم تحديث إعدادات البريد (SMTP) بنجاح'; + $stmt = db()->query("SELECT * FROM smtp_settings WHERE id = 1"); + $smtp = $stmt->fetch(); +} + +// Handle Test Email +if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['test_email_addr'])) { + $to = $_POST['test_email_addr']; + $res = MailService::sendMail($to, "رسالة تجريبية - Test Email", "
إذا كنت ترى هذه الرسالة، فإن إعدادات SMTP تعمل بشكل صحيح.
"); + if ($res['success']) { + $success_msg = "تم إرسال الرسالة التجريبية بنجاح إلى $to"; + } else { + $error_msg = "فشل إرسال الرسالة التجريبية: " . $res['error']; + } +} + +// Handle Status Operations +if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['add_status'])) { + $name = $_POST['status_name']; + $color = $_POST['status_color']; + $is_default = isset($_POST['is_default']) ? 1 : 0; + if ($is_default) db()->query("UPDATE mailbox_statuses SET is_default = 0"); + $stmt = db()->prepare("INSERT INTO mailbox_statuses (name, color, is_default) VALUES (?, ?, ?)"); + $stmt->execute([$name, $color, $is_default]); + $success_msg = 'تم إضافة نوع الحالة بنجاح'; +} + +if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['update_status'])) { + $id = $_POST['status_id']; + $name = $_POST['status_name']; + $color = $_POST['status_color']; + $is_default = isset($_POST['is_default']) ? 1 : 0; + if ($is_default) db()->query("UPDATE mailbox_statuses SET is_default = 0"); + $stmt = db()->prepare("UPDATE mailbox_statuses SET name = ?, color = ?, is_default = ? WHERE id = ?"); + $stmt->execute([$name, $color, $is_default, $id]); + $success_msg = 'تم تحديث نوع الحالة بنجاح'; +} + +if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['delete_status'])) { + $id = $_POST['status_id']; + $count = db()->prepare("SELECT COUNT(*) FROM mailbox WHERE status_id = ?"); + $count->execute([$id]); + if ($count->fetchColumn() > 0) { + $error_msg = 'لا يمكن حذف هذه الحالة لأنها مستخدمة في بعض السجلات'; + } else { + db()->prepare("DELETE FROM mailbox_statuses WHERE id = ?")->execute([$id]); + $success_msg = 'تم حذف نوع الحالة بنجاح'; + } +} + +$statuses = db()->query("SELECT * FROM mailbox_statuses ORDER BY id ASC")->fetchAll(); +$email_logs = db()->query("SELECT * FROM email_logs ORDER BY id DESC LIMIT 50")->fetchAll(); ?>