HEX
Server: LiteSpeed
System:
User: ()
PHP: 7.4.33
Disabled: sendmail,mail,exec,shell_exec,dl,system,passthru,pclose,proc_open,proc_nice,proc_terminate,proc_get_status,proc_close,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,escapeshellcmd,escapeshellarg shell-exec,fpassthru,crack_check,crack_closedict,crack_getlastmessage,crack_opendict,psockopen,php_uname,symlink,ini_restore,posix_getpwuid,posix_getegid,posix_getcwd,posix_geteuid,posix_getgroups,posix_uname,posix_setuid,eval,show_source,passthru,popen,allow_url_fopen,get_current_user,getmyuid,getmygid,entre2v2,index_changer_wp,index_changer_joomla,exec_mode_1,exec_mode_2,exec_mode_3,wsoFooter,wsoEx,wsoViewSize,wsoPerms,wsoPermsColor,ukuran,tulis,ambil,tukar,entre2v2,rapih,magicboom,goaction,scookie,showstat,index_changer
Upload Files
File: /home/muratemr/theotto.tr/admin/settings.php
<?php
/**
 * admin/settings.php
 * Site Ayarları
 */

declare(strict_types=1);

require_once __DIR__ . '/../includes/db.php';
require_once __DIR__ . '/../includes/auth.php';
require_once __DIR__ . '/../includes/csrf.php';
require_once __DIR__ . '/../includes/functions.php';

require_permission('settings');

$page_title  = 'Site Ayarları';
$active_menu = 'settings';

$settings = [];
$rows = db_rows("SELECT `key`, `value` FROM site_settings");
foreach ($rows as $r) {
    $settings[$r['key']] = $r['value'];
}

require_once __DIR__ . '/../includes/admin_layout.php';
?>

<div class="d-flex justify-content-between align-items-center mb-4">
    <h4 class="mb-0"><i class="bi bi-gear-fill me-2 text-warning"></i>Site Ayarları</h4>
</div>

<div class="row g-4">
    <!-- Genel Bilgiler -->
    <div class="col-md-6">
        <div class="card h-100">
            <div class="card-header">
                <i class="bi bi-image me-2"></i>Site Logosu
            </div>
            <div class="card-body">
                <?php
                $logo_url = $settings['site_logo'] ?? '';
                ?>
                <?php if ($logo_url): ?>
                <div class="mb-3 text-center p-3" style="background:rgba(0,0,0,0.3);border-radius:8px">
                    <img src="<?= e($logo_url) ?>" alt="Logo"
                         style="max-height:80px;max-width:100%;object-fit:contain">
                    <div class="mt-2">
                        <button type="button" class="btn btn-outline-danger btn-sm" onclick="removeLogo()">
                            <i class="bi bi-trash me-1"></i>Logoyu Kaldır
                        </button>
                    </div>
                </div>
                <?php else: ?>
                <div class="mb-3 text-center p-3" style="background:rgba(0,0,0,0.2);border-radius:8px;border:2px dashed rgba(255,255,255,0.15)">
                    <i class="bi bi-image text-muted d-block mb-1" style="font-size:32px"></i>
                    <span class="text-muted small">Logo yüklenmemiş — site adı gösteriliyor</span>
                </div>
                <?php endif; ?>

                <div class="mb-3">
                    <label class="form-label">Logo Yükle</label>
                    <input type="file" id="logoFile" accept="image/*" class="form-control">
                    <div class="form-text" style="color:rgba(255,255,255,0.5)">
                        PNG, JPG, SVG, WEBP — Önerilen: şeffaf arka planlı PNG, maks 2MB
                    </div>
                </div>

                <div id="logoPreviewWrap" style="display:none" class="mb-3 text-center p-3" style="background:rgba(0,0,0,0.3);border-radius:8px">
                    <div class="text-muted small mb-1">Önizleme:</div>
                    <img id="logoPreview" src="" alt="Önizleme"
                         style="max-height:80px;max-width:100%;object-fit:contain">
                </div>

                <button type="button" class="btn btn-warning w-100" onclick="uploadLogo()">
                    <i class="bi bi-upload me-1"></i>Logo Yükle & Kaydet
                </button>
                <div id="logoStatus" class="mt-2" style="font-size:12px"></div>
            </div>
        </div>
    </div>

    <!-- Genel Bilgiler (ayrı col) -->
    <div class="col-12 col-md-8">
        <div class="card h-100">
            <div class="card-header">
                <i class="bi bi-info-circle me-2"></i>Genel Bilgiler
            </div>
            <div class="card-body">
                <div class="mb-3">
                    <label class="form-label">Restoran Adı</label>
                    <input type="text" class="form-control" id="restaurant_name"
                        value="<?= e($settings['restaurant_name'] ?? '') ?>">
                </div>
                <div class="mb-3">
                    <label class="form-label">Adres</label>
                    <textarea class="form-control" id="address" rows="2"><?= e($settings['address'] ?? '') ?></textarea>
                </div>
                <div class="mb-3">
                    <label class="form-label">Telefon</label>
                    <input type="text" class="form-control" id="phone"
                        value="<?= e($settings['phone'] ?? '') ?>">
                </div>
                <div class="mb-3">
                    <label class="form-label">WhatsApp Numarası</label>
                    <input type="text" class="form-control" id="whatsapp"
                        value="<?= e($settings['whatsapp'] ?? '') ?>"
                        placeholder="905320000000">
                    <div class="form-text">Başında 90 ile, rakam olarak girin.</div>
                </div>
                <div class="mb-3">
                    <label class="form-label">Menü Linki</label>
                    <input type="text" class="form-control" id="menu_link"
                        value="<?= e($settings['menu_link'] ?? '') ?>"
                        placeholder="https://... veya #menu">
                </div>
            </div>
        </div>
    </div>

    <!-- Hero & Sosyal Medya -->
    <div class="col-md-6">
        <div class="card h-100">
            <div class="card-header">
                <i class="bi bi-layout-text-window me-2"></i>Hero & Sosyal Medya
            </div>
            <div class="card-body">
                <div class="mb-3">
                    <label class="form-label">Hero Başlık</label>
                    <input type="text" class="form-control" id="hero_title"
                        value="<?= e($settings['hero_title'] ?? '') ?>">
                </div>
                <div class="mb-3">
                    <label class="form-label">Hero Alt Başlık</label>
                    <input type="text" class="form-control" id="hero_subtitle"
                        value="<?= e($settings['hero_subtitle'] ?? '') ?>">
                </div>
                <div class="mb-3">
                    <label class="form-label">Hakkımızda Metni</label>
                    <textarea class="form-control" id="about_text" rows="3"><?= e($settings['about_text'] ?? '') ?></textarea>
                </div>
                <hr class="border-secondary">
                <div class="mb-3">
                    <label class="form-label"><i class="bi bi-facebook me-1 text-primary"></i>Facebook URL</label>
                    <input type="url" class="form-control" id="facebook"
                        value="<?= e($settings['facebook'] ?? '') ?>">
                </div>
                <div class="mb-3">
                    <label class="form-label"><i class="bi bi-instagram me-1 text-danger"></i>Instagram URL</label>
                    <input type="url" class="form-control" id="instagram"
                        value="<?= e($settings['instagram'] ?? '') ?>">
                </div>
                <div class="mb-3">
                    <label class="form-label"><i class="bi bi-twitter-x me-1"></i>Twitter/X URL</label>
                    <input type="url" class="form-control" id="twitter"
                        value="<?= e($settings['twitter'] ?? '') ?>">
                </div>
            </div>
        </div>
    </div>
</div>

<div class="mt-4 text-end">
    <button class="btn btn-warning btn-lg px-5" onclick="saveSettings()">
        <i class="bi bi-check-lg me-2"></i>Ayarları Kaydet
    </button>
</div>

<script>
function saveSettings() {
    const keys = [
        'restaurant_name','address','phone','whatsapp','menu_link',
        'hero_title','hero_subtitle','about_text','facebook','instagram','twitter'
    ];
    const data = { action: 'save' };
    keys.forEach(k => {
        const el = document.getElementById(k);
        if (el) data[k] = el.value.trim();
    });

    apiPost('/api/admin/settings.php', data).then(r => {
        if (r.success) showToast(r.message, 'success');
        else showToast(r.message, 'error');
    });
}
</script>

<?php require_once __DIR__ . '/../includes/admin_layout_end.php'; ?>
<script>
// Logo önizleme
document.getElementById('logoFile').addEventListener('change', function() {
    var file = this.files[0];
    if (!file) return;
    var reader = new FileReader();
    reader.onload = function(e) {
        document.getElementById('logoPreview').src = e.target.result;
        document.getElementById('logoPreviewWrap').style.display = '';
    };
    reader.readAsDataURL(file);
});

async function uploadLogo() {
    var file = document.getElementById('logoFile').files[0];
    if (!file) { showToast('Önce bir dosya seçin.', 'error'); return; }

    var formData = new FormData();
    formData.append('logo', file);
    formData.append('action', 'upload');

    var status = document.getElementById('logoStatus');
    status.textContent = 'Yükleniyor...';
    status.style.color = 'rgba(255,255,255,0.6)';

    try {
        var res = await fetch('/api/admin/logo_upload.php', {
            method: 'POST',
            headers: { 'X-CSRF-Token': CSRF_TOKEN, 'X-Requested-With': 'XMLHttpRequest' },
            body: formData
        });
        var data = await res.json();
        if (data.success) {
            showToast('Logo yüklendi.', 'success');
            setTimeout(function() { location.reload(); }, 800);
        } else {
            status.textContent = 'Hata: ' + data.message;
            status.style.color = '#dc3545';
        }
    } catch(e) {
        status.textContent = 'Bağlantı hatası.';
        status.style.color = '#dc3545';
    }
}

async function removeLogo() {
    confirmAction('Logo kaldırılsın mı? Site adı gösterilmeye başlanır.', async function() {
        var res = await apiPost('/api/admin/logo_upload.php', { action: 'remove' });
        if (res.success) {
            showToast('Logo kaldırıldı.', 'success');
            setTimeout(function() { location.reload(); }, 700);
        } else {
            showToast(res.message, 'error');
        }
    });
}
</script>