<?php
// modules/sistem-ayarlari.php
session_start();
require_once '../config/db.php';
require_once '../config/functions.php';
// Yetki Kontrolü: Yalnızca Root erişebilir
yetkiKontrol(['root']);
// Hata gösterimlerini kapatıyoruz
error_reporting(0);
ini_set('display_errors', 0);
include '../includes/header.php';
include '../includes/menu.php';
$mesaj = '';
// Ayarları Kaydet
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['onaylandi'])) {
csrfKontrol($_POST['csrf_token']);
foreach ($_POST as $key => $val) {
if ($key != 'csrf_token' && $key != 'onaylandi') {
// Varsa güncelle, yoksa ekle (site_ayarlari tablosu)
$sql = "INSERT INTO site_ayarlari (ayar_anahtari, ayar_degeri) VALUES (?, ?)
ON DUPLICATE KEY UPDATE ayar_degeri = ?";
// Güvenlik: Sadece izin verilen ayarları temizleyip kaydedelim
$temiz_val = guvenlik($val);
$pdo->prepare($sql)->execute([$key, $temiz_val, $temiz_val]);
}
}
// Log Kaydı
logKaydet($pdo, $_SESSION['kullanici_id'], 'guncelleme', "Sistem ayarları güncellendi.", 'site_ayarlari', 0);
$mesaj = '<div class="alert alert-success shadow-sm"><i class="fas fa-check-circle me-2"></i> Ayarlar başarıyla güncellendi.</div>';
}
// Mevcut Ayarları Çek
// Veritabanından verileri çekme (Hata yakalama kaldırıldı, çünkü loglamayla çözüldü)
$ayarlar_db = $pdo->query("SELECT ayar_anahtari, ayar_degeri FROM site_ayarlari")->fetchAll(PDO::FETCH_KEY_PAIR);
?>
<div class="container-fluid">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card border-0 shadow-sm mt-4">
<div class="card-header bg-white py-3 border-bottom">
<h5 class="mb-0 fw-bold text-primary"><i class="fas fa-cogs me-2"></i> Sistem Yapılandırması</h5>
</div>
<div class="card-body p-4">
<?php echo $mesaj; ?>
<div class="alert alert-info border-start border-info border-4 small">
<i class="fas fa-info-circle me-2"></i> Bu ayarlar tüm sistem genelinde puantaj hesaplamalarını ve mesai kurallarını etkiler.
</div>
<form method="POST" id="ayarFormu">
<input type="hidden" name="csrf_token" value="<?php echo csrfTokenOlustur(); ?>">
<div class="mb-4">
<label class="form-label fw-bold">Haftalık Çalışma Günü</label>
<select name="haftalik_calisma_gunu" class="form-select bg-light">
<option value="5" <?php echo ($ayarlar_db['haftalik_calisma_gunu'] ?? '5') == '5' ? 'selected' : ''; ?>>5 Gün (Pazartesi - Cuma)</option>
<option value="6" <?php echo ($ayarlar_db['haftalik_calisma_gunu'] ?? '5') == '6' ? 'selected' : ''; ?>>6 Gün (Pazartesi - Cumartesi)</option>
</select>
<div class="form-text">Puantaj hesaplanırken hafta tatili buna göre belirlenir.</div>
</div>
<div class="mb-4">
<label class="form-label fw-bold">Günlük Standart Mesai</label>
<div class="input-group">
<input type="number" name="gunluk_mesai_saati" class="form-control bg-light" step="0.5" value="<?php echo $ayarlar_db['gunluk_mesai_saati'] ?? '9'; ?>">
<span class="input-group-text">Saat</span>
</div>
<div class="form-text">Standart bir iş gününün kaç saat olduğu (Örn: 9 veya 7.5).</div>
</div>
<div class="d-grid">
<button type="button" class="btn btn-primary btn-lg shadow-sm" data-bs-toggle="modal" data-bs-target="#onayModal">
<i class="fas fa-save me-2"></i> Ayarları Güncelle
</button>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
<div class="modal fade" id="onayModal" tabindex="-1" aria-labelledby="onayModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header bg-warning text-dark">
<h5 class="modal-title" id="onayModalLabel"><i class="fas fa-exclamation-triangle me-2"></i> Onay Gerekiyor</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Kapat"></button>
</div>
<div class="modal-body">
<p><strong>DİKKAT:</strong> Sistem ayarlarını değiştirmek tüm bordro ve puantaj hesaplamalarını etkileyecektir.</p>
<p>Bu ayarları kaydetmek istediğinizden **Emin misiniz**?</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">İptal Et</button>
<button type="button" class="btn btn-warning text-dark fw-bold" onclick="onaylaVeGonder()">
<i class="fas fa-check me-1"></i> Evet, Eminim (Güncelle)
</button>
</div>
</div>
</div>
</div>
<script>
function onaylaVeGonder() {
// Hidden input'u forma ekle
const form = document.getElementById('ayarFormu');
const input = document.createElement('input');
input.type = 'hidden';
input.name = 'onaylandi';
input.value = '1';
form.appendChild(input);
// Modalı kapat (isteğe bağlı)
const modalElement = document.getElementById('onayModal');
const modalInstance = bootstrap.Modal.getInstance(modalElement);
modalInstance.hide();
// Formu gönder
form.submit();
}
// Bootstrap 5 modal'ı kullanabilmek için Footer'daki Bootstrap JS'nin yüklendiğinden emin olun.
</script>
<?php include '../includes/footer.php'; ?>