prepare("SELECT setting_value FROM settings WHERE setting_key = 'is_locked'"); $stmt->execute(); $isLocked = $stmt->fetchColumn(); if ($isLocked === '1') { echo json_encode(['success' => false, 'error' => 'Settings are locked.']); exit; } } if ($action === 'upload_bg_image') { if (isset($_FILES['image']) && $_FILES['image']['error'] === UPLOAD_ERR_OK) { $uploadDir = __DIR__ . '/../assets/images/uploads/'; if (!is_dir($uploadDir)) { mkdir($uploadDir, 0775, true); } $fileName = 'bg_' . time() . '_' . basename($_FILES['image']['name']); $targetPath = $uploadDir . $fileName; if (move_uploaded_file($_FILES['image']['tmp_name'], $targetPath)) { $webPath = 'assets/images/uploads/' . $fileName; $stmt = db()->prepare("UPDATE settings SET setting_value = ? WHERE setting_key = 'bg_image'"); $stmt->execute([$webPath]); echo json_encode(['success' => true, 'path' => $webPath]); } else { echo json_encode(['success' => false, 'error' => 'Failed to move uploaded file.']); } } else { echo json_encode(['success' => false, 'error' => 'No file uploaded or upload error.']); } } elseif ($action === 'update_bg_color') { $color = $_POST['color'] ?? ''; if (preg_match('/^#[a-f0-9]{6}$/i', $color)) { $stmt = db()->prepare("UPDATE settings SET setting_value = ? WHERE setting_key = 'bg_color'"); $stmt->execute([$color]); echo json_encode(['success' => true]); } else { echo json_encode(['success' => false, 'error' => 'Invalid color format.']); } } elseif ($action === 'update_popup_color') { $color = $_POST['color'] ?? ''; if (preg_match('/^#[a-f0-9]{6}$/i', $color)) { $stmt = db()->prepare("UPDATE settings SET setting_value = ? WHERE setting_key = 'popup_color'"); $stmt->execute([$color]); echo json_encode(['success' => true]); } else { echo json_encode(['success' => false, 'error' => 'Invalid color format.']); } } elseif ($action === 'update_second_page_text_color') { $color = $_POST['color'] ?? ''; if (preg_match('/^#[a-f0-9]{6}$/i', $color)) { $stmt = db()->prepare("UPDATE settings SET setting_value = ? WHERE setting_key = 'second_page_text_color'"); $stmt->execute([$color]); echo json_encode(['success' => true]); } else { echo json_encode(['success' => false, 'error' => 'Invalid color format.']); } } elseif ($action === 'update_proposal_text_color') { $color = $_POST['color'] ?? ''; if (preg_match('/^#[a-f0-9]{6}$/i', $color)) { $stmt = db()->prepare("UPDATE settings SET setting_value = ? WHERE setting_key = 'proposal_text_color'"); $stmt->execute([$color]); echo json_encode(['success' => true]); } else { echo json_encode(['success' => false, 'error' => 'Invalid color format.']); } } elseif ($action === 'update_font_family') { $font = $_POST['font'] ?? ''; $stmt = db()->prepare("UPDATE settings SET setting_value = ? WHERE setting_key = 'font_family'"); $stmt->execute([$font]); echo json_encode(['success' => true]); } elseif ($action === 'update_second_page_box_pos_y') { $pos = $_POST['pos'] ?? '0'; $stmt = db()->prepare("UPDATE settings SET setting_value = ? WHERE setting_key = 'second_page_box_pos_y'"); $stmt->execute([$pos]); echo json_encode(['success' => true]); } elseif ($action === 'update_image_border_radius') { $radius = $_POST['radius'] ?? '12'; $stmt = db()->prepare("UPDATE settings SET setting_value = ? WHERE setting_key = 'image_border_radius'"); $stmt->execute([$radius]); echo json_encode(['success' => true]); } elseif ($action === 'update_proposal_text') { $text = $_POST['text'] ?? ''; $stmt = db()->prepare("UPDATE settings SET setting_value = ? WHERE setting_key = 'proposal_text'"); $stmt->execute([$text]); echo json_encode(['success' => true]); } elseif ($action === 'update_success_text_1') { $text = $_POST['text'] ?? ''; $stmt = db()->prepare("UPDATE settings SET setting_value = ? WHERE setting_key = 'success_text_1'"); $stmt->execute([$text]); echo json_encode(['success' => true]); } elseif ($action === 'update_success_text_2') { $text = $_POST['text'] ?? ''; $stmt = db()->prepare("UPDATE settings SET setting_value = ? WHERE setting_key = 'success_text_2'"); $stmt->execute([$text]); echo json_encode(['success' => true]); } elseif ($action === 'update_proposal_text_size') { $size = $_POST['size'] ?? '2'; $stmt = db()->prepare("UPDATE settings SET setting_value = ? WHERE setting_key = 'proposal_text_size'"); $stmt->execute([$size]); echo json_encode(['success' => true]); } elseif ($action === 'update_success_text_1_size') { $size = $_POST['size'] ?? '1.5'; $stmt = db()->prepare("UPDATE settings SET setting_value = ? WHERE setting_key = 'success_text_1_size'"); $stmt->execute([$size]); echo json_encode(['success' => true]); } elseif ($action === 'update_success_text_2_size') { $size = $_POST['size'] ?? '0.9'; $stmt = db()->prepare("UPDATE settings SET setting_value = ? WHERE setting_key = 'success_text_2_size'"); $stmt->execute([$size]); echo json_encode(['success' => true]); } elseif ($action === 'remove_bg_image') { $stmt = db()->prepare("UPDATE settings SET setting_value = '' WHERE setting_key = 'bg_image'"); $stmt->execute(); echo json_encode(['success' => true]); } elseif ($action === 'toggle_lock') { $lockValue = $_POST['lock'] === 'true' ? '1' : '0'; $stmt = db()->prepare("UPDATE settings SET setting_value = ? WHERE setting_key = 'is_locked'"); $stmt->execute([$lockValue]); echo json_encode(['success' => true, 'locked' => $lockValue === '1']); } elseif ($action === 'reset') { $defaults = [ 'valentine_image' => 'assets/pasted-20260206-164030-456a591e.jpg', 'is_locked' => '0', 'bg_color' => '#ffe4e6', 'bg_image' => '', 'popup_color' => '#ffccd5', 'font_family' => "'Inter', sans-serif", 'second_page_text_color' => '#e63946', 'second_page_box_pos_y' => '0', 'image_border_radius' => '12', 'proposal_text' => 'Gvantsa, would you be my valentine?', 'success_text_1' => "Congratulations, you are now Sam's Valentine! ❤️", 'success_text_2' => 'He is so incredibly lucky to have someone in his life who would click yes.', 'proposal_text_color' => '#e63946', 'proposal_text_size' => '2', 'success_text_1_size' => '1.5', 'success_text_2_size' => '0.9' ]; foreach ($defaults as $key => $value) { $stmt = db()->prepare("UPDATE settings SET setting_value = ? WHERE setting_key = ?"); $stmt->execute([$value, $key]); } echo json_encode(['success' => true]); } else { echo json_encode(['success' => false, 'error' => 'Invalid action.']); }