<?php
session_start();

// Lokasi file config database
require_once __DIR__ . '/../config/database.php';

/**
 * Fungsi untuk memeriksa apakah pengguna sudah login
 */
function is_logged_in() {
    return isset($_SESSION['id_pengguna']);
}

/**
 * Fungsi untuk memeriksa hak akses pengguna (tidak memblokir, hanya memberi peringatan)
 */
// function check_access() {
//     if (!is_logged_in()) {
//         $_SESSION['warning'] = 'Anda belum login, beberapa fitur mungkin terbatas';
//     }
// }

/**
 * Fungsi untuk mendapatkan data pengguna yang sedang login
 */
function current_user() {
    if (!is_logged_in()) {
        return null;
    }

    global $conn;
    $user_id = $_SESSION['id_pengguna'];
    
    $stmt = $conn->prepare("SELECT * FROM pdta_pengguna WHERE id_pengguna = ?");
    $stmt->bind_param("i", $user_id);
    $stmt->execute();
    
    $result = $stmt->get_result();
    return $result->fetch_assoc();
}

/**
 * Fungsi untuk memeriksa apakah request adalah AJAX
 */
function is_ajax_request() {
    return !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && 
           strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest';
}

/**
 * Fungsi untuk redirect dengan pesan flash
 */
function redirect_with_message($url, $type, $message) {
    $_SESSION[$type] = $message;
    header("Location: $url");
    exit();
}

/**
 * Fungsi untuk menampilkan pesan flash
 */
function display_flash_message() {
    if (isset($_SESSION['success'])) {
        echo '<div class="alert alert-success alert-dismissible fade show" role="alert">
                ' . $_SESSION['success'] . '
                <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
              </div>';
        unset($_SESSION['success']);
    }

    if (isset($_SESSION['error'])) {
        echo '<div class="alert alert-danger alert-dismissible fade show" role="alert">
                ' . $_SESSION['error'] . '
                <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
              </div>';
        unset($_SESSION['error']);
    }

    if (isset($_SESSION['warning'])) {
        echo '<div class="alert alert-warning alert-dismissible fade show" role="alert">
                ' . $_SESSION['warning'] . '
                <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
              </div>';
        unset($_SESSION['warning']);
    }
}

/**
 * Fungsi untuk memeriksa CSRF token
 */
function check_csrf_token() {
    if (empty($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
        if (is_ajax_request()) {
            http_response_code(403);
            echo json_encode(['error' => 'Invalid CSRF token']);
            exit();
        } else {
            $_SESSION['error'] = 'Invalid CSRF token';
            header('Location: ' . $_SERVER['HTTP_REFERER']);
            exit();
        }
    }
}

/**
 * Generate CSRF token
 */
function generate_csrf_token() {
    if (empty($_SESSION['csrf_token'])) {
        $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
    }
    return $_SESSION['csrf_token'];
}

/**
 * Fungsi untuk sanitasi input
 */
function sanitize_input($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}

// Generate CSRF token untuk setiap request
generate_csrf_token();
?>