<?php
/**
 * Plugin Name: Bebas Pustaka Multi-Perpustakaan
 * Plugin URI: https://github.com/ariskurniawan/slims-bebas-pustaka
 * Description: Plugin untuk pengajuan dan cetak surat keterangan bebas pustaka dengan dukungan Multi-Perpustakaan (Mode B: Per Perpustakaan) + Redaksi Dinamis
 * Version: 3.1.0
 * Author: Aris Kurniawan (Modified)
 * Author URI: https://github.com/ariskurniawan
 */

use SLiMS\Plugins;
use SLiMS\DB;

require_once __DIR__ . '/vendor/autoload.php';

// ============================================================
// FUNGSI UNTUK BUAT TABEL SAAT PLUGIN DIAKTIFKAN
// ============================================================
function createBebasPustakaTables()
{
    $db = DB::getInstance();
    
    $check = $db->query("SHOW TABLES LIKE 'bebas_pustaka_settings'");
    if ($check->rowCount() > 0) {
        return;
    }
    
    $db->exec("
        CREATE TABLE IF NOT EXISTS `bebas_pustaka_settings` (
          `id` int(11) NOT NULL AUTO_INCREMENT,
          `library_id` int(11) DEFAULT NULL,
          `letter_format` varchar(100) DEFAULT '{code}/BEBAS/{no}/{y}',
          `open_state_default` text DEFAULT NULL,
          `close_state_default` text DEFAULT NULL,
          `city` varchar(100) DEFAULT NULL,
          `librarian_position` varchar(100) DEFAULT NULL,
          `created_at` datetime DEFAULT NULL,
          `updated_at` datetime DEFAULT NULL,
          PRIMARY KEY (`id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
    ");
    
    $db->exec("
        CREATE TABLE IF NOT EXISTS `bebas_pustaka_keperluan` (
          `id` int(11) NOT NULL AUTO_INCREMENT,
          `library_id` int(11) DEFAULT NULL,
          `keperluan` varchar(100) NOT NULL,
          `open_state` text DEFAULT NULL,
          `close_state` text DEFAULT NULL,
          `sort_order` int(11) DEFAULT 0,
          `is_active` tinyint(1) DEFAULT 1,
          `created_at` datetime DEFAULT NULL,
          `updated_at` datetime DEFAULT NULL,
          PRIMARY KEY (`id`),
          KEY `library_id` (`library_id`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
    ");
    
    $db->exec("
        CREATE TABLE IF NOT EXISTS `bebas_pustaka_history` (
          `id` int(11) NOT NULL AUTO_INCREMENT,
          `member_id` varchar(20) NOT NULL,
          `library_id` int(11) DEFAULT NULL,
          `surat_no` varchar(50) DEFAULT NULL,
          `file_path` varchar(255) DEFAULT NULL,
          `keperluan` varchar(100) DEFAULT NULL,
          `keterangan` varchar(255) DEFAULT NULL,
          `mode` char(1) DEFAULT 'B',
          `status` varchar(20) DEFAULT 'pending',
          `verified_by` int(11) DEFAULT NULL,
          `verified_at` datetime DEFAULT NULL,
          `approved_by` int(11) DEFAULT NULL,
          `approved_at` datetime DEFAULT NULL,
          `printed_by` int(11) DEFAULT NULL,
          `printed_at` datetime DEFAULT NULL,
          `rejected_reason` text DEFAULT NULL,
          `is_onspot` tinyint(1) DEFAULT 0,
          `uid` int(11) DEFAULT NULL,
          `created_at` datetime DEFAULT NULL,
          `updated_at` datetime DEFAULT NULL,
          PRIMARY KEY (`id`),
          KEY `member_id` (`member_id`),
          KEY `library_id` (`library_id`),
          KEY `status` (`status`)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
    ");
    
    $checkSetting = $db->query("SELECT COUNT(*) FROM bebas_pustaka_settings WHERE library_id IS NULL");
    if ($checkSetting->fetchColumn() == 0) {
        $db->exec("
            INSERT INTO bebas_pustaka_settings 
            (library_id, letter_format, open_state_default, close_state_default, city, librarian_position, created_at, updated_at) 
            VALUES 
            (NULL, '{code}/BEBAS/{no}/{y}', 
             'Yang bertanda tangan di bawah ini, Kepala Perpustakaan, menerangkan bahwa:', 
             'Demikian surat ini dibuat untuk digunakan sebagaimana mestinya.', 
             'Purwokerto', 'Kepala Perpustakaan', NOW(), NOW())
        ");
    }
    
    $checkKeperluan = $db->query("SELECT COUNT(*) FROM bebas_pustaka_keperluan WHERE library_id IS NULL");
    if ($checkKeperluan->fetchColumn() == 0) {
        $db->exec("
            INSERT INTO bebas_pustaka_keperluan (library_id, keperluan, open_state, close_state, sort_order, created_at, updated_at) VALUES
            (NULL, 'Wisuda', 'Yang bertanda tangan di bawah ini, Kepala Perpustakaan, menerangkan bahwa mahasiswa tersebut telah menyelesaikan studi dan bebas dari tanggungan perpustakaan.', 'Demikian surat ini dibuat untuk digunakan sebagaimana mestinya.', 1, NOW(), NOW()),
            (NULL, 'Yudisium', 'Yang bertanda tangan di bawah ini, Kepala Perpustakaan, menerangkan bahwa mahasiswa tersebut telah mengikuti yudisium dan bebas dari tanggungan perpustakaan.', 'Demikian surat ini dibuat untuk digunakan sebagaimana mestinya.', 2, NOW(), NOW()),
            (NULL, 'Pindah', 'Yang bertanda tangan di bawah ini, Kepala Perpustakaan, menerangkan bahwa mahasiswa tersebut pindah dari institusi ini dan bebas dari tanggungan perpustakaan.', 'Surat ini diterbitkan sebagai bukti bebas pustaka.', 3, NOW(), NOW()),
            (NULL, 'Lainnya', 'Yang bertanda tangan di bawah ini, Kepala Perpustakaan, menerangkan bahwa mahasiswa tersebut bebas dari tanggungan perpustakaan.', 'Demikian surat ini dibuat untuk digunakan sebagaimana mestinya.', 4, NOW(), NOW())
        ");
    }
}

// ============================================================
// FUNGSI UNTUK COPY FILE DOWNLOAD
// ============================================================
function copyDownloadFile()
{
    $source = __DIR__ . '/download_bebas_pustaka.php';
    $target = dirname(__DIR__, 2) . '/download_bebas_pustaka.php';
    
    // Debug
    error_log("📂 Source: " . $source);
    error_log("📂 Target: " . $target);
    
    if (file_exists($source)) {
        if (!file_exists($target)) {
            if (copy($source, $target)) {
                chmod($target, 0644);
                error_log("✅ download_bebas_pustaka.php copied to: " . $target);
            } else {
                error_log("❌ Gagal copy ke: " . $target);
            }
        } else {
            error_log("ℹ️ File sudah ada di: " . $target);
        }
    } else {
        error_log("❌ Source tidak ditemukan: " . $source);
    }
}

// ============================================================
// BUAT TABEL & COPY FILE SAAT PLUGIN DI-LOAD
// ============================================================
createBebasPustakaTables();
copyDownloadFile();

// ============================================================
// MENU ADMIN
// ============================================================
Plugins::menu('circulation', 'Bebas Pustaka', __DIR__ . '/pages/bebas_pustaka.php');
Plugins::menu('system', 'Settings Bebas Pustaka', __DIR__ . '/pages/settings.php');

// ============================================================
// DAFTARKAN HALAMAN OPAC UNTUK MEMBER
// ============================================================
$plugins = Plugins::getInstance();

// Ganti dengan handler khusus
$plugins->registerMenu('opac', 'bebas_pustaka', __DIR__ . '/opac_handler.php');

// ============================================================
// HOOK: TAMBAHKAN MENU BEBAS PUSTAKA DI MEMBER AREA
// ============================================================
\SLiMS\Plugins::getInstance()->register('member_menu', function($menu) {
    if (isset($_SESSION['m_id']) || isset($_SESSION['mid'])) {
        $lib_slug = $_GET['lib'] ?? $_SESSION['multi_opac']['last_library_slug'] ?? '';
        
        // ðŸ”¥ PERUBAHAN: Gunakan format URL Multi OPAC!
        $menu[] = [
            'title' => 'Bebas Pustaka',
            'url' => 'index.php?p=member&lib=' . urlencode($lib_slug) . '&sec=bebaspustaka',
            'icon' => 'fa-file-text',
            'class' => 'bebas-pustaka-menu',
            'description' => 'Ajukan surat keterangan bebas pustaka'
        ];
    }
    return $menu;
});

error_log("âœ… Bebas Pustaka: Plugin dimuat!");
?>