<?php
require_once __DIR__ . '/../includes/auth.php';
require_login();
$pageTitle = 'General Settings';
if ($_SERVER['REQUEST_METHOD'] === 'POST' && csrf_verify()) {
$action = $_POST['action'] ?? 'save_settings';
if ($action === 'save_settings') {
$fields = ['site_name','tagline','address','phone','whatsapp_number','email','facebook_url','instagram_url',
'youtube_url','linkedin_url','google_map_embed','footer_text','copyright_text',
'meta_title','meta_description','meta_keywords'];
$values = [];
foreach ($fields as $f) $values[$f] = trim($_POST[$f] ?? '');
$s = get_settings();
$values['logo_full'] = handle_image_upload('logo_full', 'general', $s['logo_full'] ?? null);
$values['logo_icon'] = handle_image_upload('logo_icon', 'general', $s['logo_icon'] ?? null);
$values['favicon'] = handle_image_upload('favicon', 'general', $s['favicon'] ?? null);
$values['og_image'] = handle_image_upload('og_image', 'general', $s['og_image'] ?? null);
$set = implode(', ', array_map(fn($f) => "$f = :$f", array_keys($values)));
$stmt = db()->prepare("UPDATE settings SET $set WHERE id = 1");
$stmt->execute($values);
flash_set('success', 'Settings updated successfully.');
redirect('settings.php');
}
if ($action === 'add_branch') {
$stmt = db()->prepare('INSERT INTO branch_offices (label, address, sort_order) VALUES (?, ?, (SELECT n FROM (SELECT COALESCE(MAX(sort_order),0)+1 n FROM branch_offices) t))');
$stmt->execute([trim($_POST['label'] ?? ''), trim($_POST['branch_address'] ?? '')]);
flash_set('success', 'Branch office added.');
redirect('settings.php');
}
if ($action === 'delete_branch') {
$stmt = db()->prepare('DELETE FROM branch_offices WHERE id = ?');
$stmt->execute([(int) ($_POST['id'] ?? 0)]);
flash_set('success', 'Branch office removed.');
redirect('settings.php');
}
}
$s = get_settings();
$branches = db()->query('SELECT * FROM branch_offices ORDER BY sort_order')->fetchAll();
require __DIR__ . '/partials/header.php';
require __DIR__ . '/partials/sidebar.php';
require __DIR__ . '/partials/topbar.php';
?>
<form method="post" enctype="multipart/form-data" class="space-y-6">
<?= csrf_field() ?>
<input type="hidden" name="action" value="save_settings">
<div class="bg-white rounded-2xl shadow-sm p-6">
<h2 class="font-heading font-bold text-lg mb-5"><i class="fa-solid fa-building text-brand-red mr-2"></i>Company Info</h2>
<div class="grid md:grid-cols-2 gap-5">
<div>
<label class="block text-sm font-medium mb-1.5">Site / Company Name</label>
<input type="text" name="site_name" value="<?= e($s['site_name'] ?? '') ?>" class="w-full rounded-xl border border-gray-300 px-4 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-brand-green">
</div>
<div>
<label class="block text-sm font-medium mb-1.5">Tagline</label>
<input type="text" name="tagline" value="<?= e($s['tagline'] ?? '') ?>" class="w-full rounded-xl border border-gray-300 px-4 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-brand-green">
</div>
<div class="md:col-span-2">
<label class="block text-sm font-medium mb-1.5">Address (Head Office)</label>
<input type="text" name="address" value="<?= e($s['address'] ?? '') ?>" class="w-full rounded-xl border border-gray-300 px-4 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-brand-green">
</div>
<div>
<label class="block text-sm font-medium mb-1.5">Phone</label>
<input type="text" name="phone" value="<?= e($s['phone'] ?? '') ?>" class="w-full rounded-xl border border-gray-300 px-4 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-brand-green">
</div>
<div>
<label class="block text-sm font-medium mb-1.5">WhatsApp Number (digits only, with country code)</label>
<input type="text" name="whatsapp_number" value="<?= e($s['whatsapp_number'] ?? '') ?>" placeholder="9779800000000" class="w-full rounded-xl border border-gray-300 px-4 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-brand-green">
</div>
<div class="md:col-span-2">
<label class="block text-sm font-medium mb-1.5">Email</label>
<input type="email" name="email" value="<?= e($s['email'] ?? '') ?>" class="w-full rounded-xl border border-gray-300 px-4 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-brand-green">
</div>
</div>
</div>
<div class="bg-white rounded-2xl shadow-sm p-6">
<h2 class="font-heading font-bold text-lg mb-5"><i class="fa-solid fa-share-nodes text-brand-green mr-2"></i>Social Media Links</h2>
<div class="grid md:grid-cols-2 gap-5">
<div><label class="block text-sm font-medium mb-1.5"><i class="fa-brands fa-facebook mr-1"></i> Facebook URL</label>
<input type="text" name="facebook_url" value="<?= e($s['facebook_url'] ?? '') ?>" class="w-full rounded-xl border border-gray-300 px-4 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-brand-green"></div>
<div><label class="block text-sm font-medium mb-1.5"><i class="fa-brands fa-instagram mr-1"></i> Instagram URL</label>
<input type="text" name="instagram_url" value="<?= e($s['instagram_url'] ?? '') ?>" class="w-full rounded-xl border border-gray-300 px-4 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-brand-green"></div>
<div><label class="block text-sm font-medium mb-1.5"><i class="fa-brands fa-youtube mr-1"></i> YouTube URL</label>
<input type="text" name="youtube_url" value="<?= e($s['youtube_url'] ?? '') ?>" class="w-full rounded-xl border border-gray-300 px-4 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-brand-green"></div>
<div><label class="block text-sm font-medium mb-1.5"><i class="fa-brands fa-linkedin mr-1"></i> LinkedIn URL</label>
<input type="text" name="linkedin_url" value="<?= e($s['linkedin_url'] ?? '') ?>" class="w-full rounded-xl border border-gray-300 px-4 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-brand-green"></div>
</div>
</div>
<div class="bg-white rounded-2xl shadow-sm p-6">
<h2 class="font-heading font-bold text-lg mb-5"><i class="fa-solid fa-map-location-dot text-brand-gold mr-2"></i>Google Map</h2>
<label class="block text-sm font-medium mb-1.5">Google Map Embed URL (from Google Maps → Share → Embed a map → copy the src="..." URL)</label>
<textarea name="google_map_embed" rows="2" class="w-full rounded-xl border border-gray-300 px-4 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-brand-green" placeholder="https://www.google.com/maps?q=...&output=embed"><?= e($s['google_map_embed'] ?? '') ?></textarea>
</div>
<div class="bg-white rounded-2xl shadow-sm p-6">
<h2 class="font-heading font-bold text-lg mb-5"><i class="fa-solid fa-image text-brand-red mr-2"></i>Logo & Favicon</h2>
<div class="grid md:grid-cols-3 gap-5">
<div>
<label class="block text-sm font-medium mb-1.5">Full Logo (with text)</label>
<img src="<?= e(resolve_image($s['logo_full'] ?? '')) ?>" class="h-12 mb-2 bg-gray-100 rounded p-1">
<input type="file" name="logo_full" accept="image/*" class="w-full text-sm">
</div>
<div>
<label class="block text-sm font-medium mb-1.5">Icon Logo (mark only)</label>
<img src="<?= e(resolve_image($s['logo_icon'] ?? '')) ?>" class="h-12 mb-2 bg-gray-100 rounded p-1">
<input type="file" name="logo_icon" accept="image/*" class="w-full text-sm">
</div>
<div>
<label class="block text-sm font-medium mb-1.5">Favicon</label>
<img src="<?= e(resolve_image($s['favicon'] ?? '')) ?>" class="h-12 w-12 object-cover mb-2 bg-gray-100 rounded p-1">
<input type="file" name="favicon" accept="image/*" class="w-full text-sm">
</div>
</div>
</div>
<div class="bg-white rounded-2xl shadow-sm p-6">
<h2 class="font-heading font-bold text-lg mb-5"><i class="fa-solid fa-shoe-prints text-brand-green mr-2"></i>Footer</h2>
<div class="grid gap-5">
<div>
<label class="block text-sm font-medium mb-1.5">Footer Description</label>
<textarea name="footer_text" rows="2" class="w-full rounded-xl border border-gray-300 px-4 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-brand-green"><?= e($s['footer_text'] ?? '') ?></textarea>
</div>
<div>
<label class="block text-sm font-medium mb-1.5">Copyright Text</label>
<input type="text" name="copyright_text" value="<?= e($s['copyright_text'] ?? '') ?>" class="w-full rounded-xl border border-gray-300 px-4 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-brand-green">
</div>
</div>
</div>
<div class="bg-white rounded-2xl shadow-sm p-6">
<h2 class="font-heading font-bold text-lg mb-5"><i class="fa-solid fa-magnifying-glass text-brand-gold mr-2"></i>Default SEO</h2>
<div class="grid gap-5">
<div>
<label class="block text-sm font-medium mb-1.5">Default Meta Title</label>
<input type="text" name="meta_title" value="<?= e($s['meta_title'] ?? '') ?>" class="w-full rounded-xl border border-gray-300 px-4 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-brand-green">
</div>
<div>
<label class="block text-sm font-medium mb-1.5">Default Meta Description</label>
<textarea name="meta_description" rows="2" class="w-full rounded-xl border border-gray-300 px-4 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-brand-green"><?= e($s['meta_description'] ?? '') ?></textarea>
</div>
<div>
<label class="block text-sm font-medium mb-1.5">Default Meta Keywords (comma separated)</label>
<input type="text" name="meta_keywords" value="<?= e($s['meta_keywords'] ?? '') ?>" class="w-full rounded-xl border border-gray-300 px-4 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-brand-green">
</div>
<div>
<label class="block text-sm font-medium mb-1.5">Default Social Share Image (OG Image)</label>
<img src="<?= e(resolve_image($s['og_image'] ?? '')) ?>" class="h-16 mb-2 bg-gray-100 rounded p-1">
<input type="file" name="og_image" accept="image/*" class="w-full text-sm">
</div>
</div>
</div>
<button type="submit" class="bg-gradient-to-r from-brand-red to-brand-green text-white font-semibold px-8 py-3 rounded-xl hover:brightness-110 transition">
<i class="fa-solid fa-floppy-disk mr-2"></i>Save All Settings
</button>
</form>
<div class="bg-white rounded-2xl shadow-sm p-6 mt-8">
<h2 class="font-heading font-bold text-lg mb-5"><i class="fa-solid fa-code-branch text-brand-red mr-2"></i>Branch Offices</h2>
<div class="space-y-3 mb-6">
<?php foreach ($branches as $b): ?>
<div class="flex items-center justify-between bg-gray-50 rounded-xl px-4 py-3">
<div><p class="font-semibold text-sm"><?= e($b['label']) ?></p><p class="text-xs text-gray-500"><?= e($b['address']) ?></p></div>
<form method="post" onsubmit="return confirm('Remove this branch office?');">
<?= csrf_field() ?>
<input type="hidden" name="action" value="delete_branch">
<input type="hidden" name="id" value="<?= (int) $b['id'] ?>">
<button type="submit" class="text-brand-red hover:text-red-700"><i class="fa-solid fa-trash"></i></button>
</form>
</div>
<?php endforeach; ?>
<?php if (!$branches): ?><p class="text-gray-400 text-sm">No branch offices added yet.</p><?php endif; ?>
</div>
<form method="post" class="grid sm:grid-cols-3 gap-3">
<?= csrf_field() ?>
<input type="hidden" name="action" value="add_branch">
<input type="text" name="label" placeholder="Branch Label (e.g. Pokhara)" required class="rounded-xl border border-gray-300 px-4 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-brand-green">
<input type="text" name="branch_address" placeholder="Full Address" required class="rounded-xl border border-gray-300 px-4 py-2.5 text-sm focus:outline-none focus:ring-2 focus:ring-brand-green sm:col-span-1">
<button type="submit" class="bg-brand-black text-white text-sm font-semibold rounded-xl hover:brightness-110">Add Branch Office</button>
</form>
</div>
<?php require __DIR__ . '/partials/footer.php'; ?>