38230-vm/api/save_settings.php
2026-02-06 18:51:55 +00:00

160 lines
7.2 KiB
PHP

<?php
require_once __DIR__ . '/../db/config.php';
header('Content-Type: application/json');
$action = $_POST['action'] ?? '';
// Check if locked for all modifying actions except toggle_lock
if ($action !== 'toggle_lock' && $action !== '') {
$stmt = db()->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.']);
}