sanitizeInput($_POST['site_name']), 'site_description' => sanitizeInput($_POST['site_description']), 'contact_email' => sanitizeInput($_POST['contact_email']), 'contact_phone' => sanitizeInput($_POST['contact_phone']), 'address' => sanitizeInput($_POST['address']), 'facebook_url' => sanitizeInput($_POST['facebook_url']), 'twitter_url' => sanitizeInput($_POST['twitter_url']), 'instagram_url' => sanitizeInput($_POST['instagram_url']), 'youtube_url' => sanitizeInput($_POST['youtube_url']), 'membership_price_active' => sanitizeInput($_POST['membership_price_active']), 'membership_price_gram_panchayat' => sanitizeInput($_POST['membership_price_gram_panchayat']), 'membership_price_block' => sanitizeInput($_POST['membership_price_block']), 'membership_price_tehsil' => sanitizeInput($_POST['membership_price_tehsil']), 'membership_price_district' => sanitizeInput($_POST['membership_price_district']), 'membership_price_mandal' => sanitizeInput($_POST['membership_price_mandal']), 'membership_price_state' => sanitizeInput($_POST['membership_price_state']), 'membership_price_national' => sanitizeInput($_POST['membership_price_national']), 'auto_approve_members' => isset($_POST['auto_approve_members']) ? 1 : 0, 'email_notifications' => isset($_POST['email_notifications']) ? 1 : 0, 'maintenance_mode' => isset($_POST['maintenance_mode']) ? 1 : 0, ]; // Validate membership prices foreach (['active', 'gram_panchayat', 'block', 'tehsil', 'district', 'mandal', 'state', 'national'] as $type) { $key = "membership_price_$type"; if (!is_numeric($settings[$key]) || $settings[$key] < 0) { throw new Exception("सदस्यता शुल्क के लिए मान्य गैर-नकारात्मक संख्या दर्ज करें: " . getMembershipTypeName($type)); } } // Validate email if (!filter_var($settings['contact_email'], FILTER_VALIDATE_EMAIL)) { throw new Exception("अमान्य संपर्क ईमेल पता।"); } // Handle logo upload if (!empty($_FILES['site_logo']['name'])) { $upload_dir = '../img/'; if (!file_exists($upload_dir)) { mkdir($upload_dir, 0755, true); } $file_ext = strtolower(pathinfo($_FILES['site_logo']['name'], PATHINFO_EXTENSION)); $allowed_ext = ['jpg', 'jpeg', 'png', 'gif']; if (in_array($file_ext, $allowed_ext)) { $logo_name = 'logo.' . $file_ext; if (move_uploaded_file($_FILES['site_logo']['tmp_name'], $upload_dir . $logo_name)) { $settings['site_logo'] = $logo_name; } else { throw new Exception("लोगो अपलोड करने में विफल।"); } } else { throw new Exception("अनुमति नहीं है फ़ाइल प्रकार। केवल jpg, jpeg, png, gif अनुमत हैं।"); } } // Update settings in database foreach ($settings as $key => $value) { if ($key === 'site_logo' && empty($value)) continue; $stmt = $db->prepare("INSERT INTO settings (setting_key, setting_value) VALUES (?, ?) ON DUPLICATE KEY UPDATE setting_value = ?"); $stmt->execute([$key, $value, $value]); } // Update membership_config.php $success = updateMembershipPrices( $settings['membership_price_active'], $settings['membership_price_gram_panchayat'], $settings['membership_price_block'], $settings['membership_price_tehsil'], $settings['membership_price_district'], $settings['membership_price_mandal'], $settings['membership_price_state'], $settings['membership_price_national'] ); if (!$success) { throw new Exception("सदस्यता कॉन्फिगरेशन फ़ाइल अपडेट करने में विफल।"); } $message = 'सेटिंग्स और सदस्यता शुल्क सफलतापूर्वक अपडेट किए गए!'; } catch (Exception $e) { $error = 'सेटिंग्स अपडेट करने में त्रुटि: ' . htmlspecialchars($e->getMessage()); logError($error); } } } // Get current settings $current_settings = []; try { $stmt = $db->query("SELECT setting_key, setting_value FROM settings"); while ($row = $stmt->fetch()) { $current_settings[$row['setting_key']] = $row['setting_value']; } } catch (Exception $e) { $error = 'सेटिंग्स लोड करने में त्रुटि: ' . htmlspecialchars($e->getMessage()); logError($error); } include 'includes/header.php'; ?>