Add SPOTA core PHP application

Add the main admin, dosen, mahasiswa, API, and service code needed to run the core legacy application with configurable upload storage.
This commit is contained in:
Power BI Dev
2026-05-02 10:08:52 +07:00
parent 874dbbe8e8
commit efdb11db3f
221 changed files with 43273 additions and 0 deletions

View File

@@ -0,0 +1,279 @@
<?php
session_start();
$idprodi = $_SESSION['login-dosen']['prodi'];
$iddosen = $_SESSION['login-dosen']['id'];
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* Easy set variables
*/
/* Array of database columns which should be read and sent back to DataTables. Use a space where
* you want to insert a non-database field (for example a counter or static image)
*/
$aColumns = ['tp.judul', 'tp.nim', 'tm.nmLengkap'];
/* Indexed column (used for fast and accurate table cardinality) */
$sIndexColumn = 'tp.id';
/* DB table to use */
$sTable = 'tbpraoutline tp';
//rev1$sTable .= ' LEFT JOIN tbreview tr ON (tp.id=tr.idpraoutline) ';
$sTable .= ' LEFT JOIN tbmhs tm ON (tm.nim=tp.nim) ';
$sTable .= ' LEFT JOIN tbrekaphasil trh ON (trh.idpraoutline=tp.id) ';
/* Database connection information */
include '../../../inc/helper.php';
include '../../../inc/konfigurasi.php';
include '../../../inc/db.pdo.class.php';
$db = new dB($dbsetting);
/*
* Paging
*/
$sLimit = '';
if (isset($_GET['iDisplayStart']) && $_GET['iDisplayLength'] != '-1') {
$sLimit = 'LIMIT '.intval($_GET['iDisplayStart']).', '.
intval($_GET['iDisplayLength']);
}
/*
* Ordering
*/
//$sOrder = 'ORDER BY tp.tgl_upload DESC, tp.judul ASC';
$sOrder = 'ORDER BY t.tgl_upload DESC, t.judul ASC';
/*
* Filtering
*/
$sWhere = '';
if (isset($_GET['sSearch']) && $_GET['sSearch'] != '') {
$sWhere = 'WHERE (';
for ($i = 0; $i < count($aColumns); ++$i) {
if (isset($_GET['bSearchable_'.$i]) && $_GET['bSearchable_'.$i] == 'true') {
$sWhere .= ''.$aColumns[$i]." LIKE '%".$_GET['sSearch']."%' OR ";
}
}
$sWhere = substr_replace($sWhere, '', -3);
$sWhere .= ')';
}
/* Individual column filtering */
for ($i = 0; $i < count($aColumns); ++$i) {
if (isset($_GET['bSearchable_'.$i]) && $_GET['bSearchable_'.$i] == 'true' && $_GET['sSearch_'.$i] != '') {
if ($sWhere == '') {
$sWhere = 'WHERE ';
} else {
$sWhere .= ' AND ';
}
$sWhere .= ''.$aColumns[$i]." LIKE '%".$_GET['sSearch_'.$i]."%' ";
}
}
$where2 = '';
if ($sWhere != '') {
$where2 = " AND tp.idProdi='$idprodi' ";
} else {
$where2 = " WHERE tp.idProdi='$idprodi' ";
}
/*
* SQL queries
* Get data to display
*/
$sqlKK = 'SELECT * FROM tb_kelompok_keahlian';
$db->runQuery($sqlKK);
$dataKK = [];
while ($kk = $db->dbFetch()) {
$idKK = $kk['idKK'];
$namaKK = $kk['namaKK'];
$warnaLabel = $kk['warnaLabel'];
$dataKK[$idKK] = ['nama' => $namaKK, 'label' => $warnaLabel];
}
$whereJenis = '';
if (isset($_GET['jenis'])) {
$jenis = $_GET['jenis'];
if ($jenis != 'Semua') {
switch ($jenis) {
case 'Belum Disetujui': $whereJenis = ' AND found = 0 '; break;
case 'Sudah Disetujui': $whereJenis = ' AND found > 0 '; break;
}
}
}
$whereStatusDosen = '';
$cekAdaJadwalSeminarHasil = false;
if (isset($_GET['status'])) {
$statusDosen = $_GET['status'];
if ($statusDosen != 'Semua') {
switch ($statusDosen) {
case 'pembimbingKosong': $whereStatusDosen = " AND (pemb1 IS NULL OR pemb1 = '' OR pemb2 IS NULL OR pemb2 = '') AND status_usulan = '1' "; break;
case 'pengujiKosong': $limitYear = date('Y') - 3; $cekAdaJadwalSeminarHasil = true; $whereStatusDosen = " AND pemb1 IS NOT NULL AND pemb1 != '' AND (peng1 IS NULL OR peng1 = '' OR peng2 IS NULL OR peng2 = '') AND status_usulan = '1' AND tgl_kep >= '$limitYear-01-01'"; break;
}
}
}
/**rev1
$sQuery0 = "
SELECT * FROM (SELECT tp.*,
COUNT(tr.id) as jlhreview,
COUNT(if(tr.jenis_review='0',1,null)) as komentar,
COUNT(if(tr.jenis_review='1',1,null)) as putusan,
COUNT(if(tr.putusan='1',1,null)) as setuju,
count(if(tr.putusan='0',1,null)) as tdk_setuju,
COUNT(trh.id) as found,
tm.idmhs,
tm.nmLengkap as nm_mhs,
pemb1, pemb2, peng1, peng2,
tgl_kep,
wkt_kep
FROM $sTable
$sWhere
$where2
GROUP BY tp.id
) t WHERE 1 = 1 $whereJenis $whereStatusDosen $sOrder
";
*/
$sQuery0 = "
SELECT * FROM (SELECT tp.*,
tm.idmhs,
tm.nmLengkap as nm_mhs,
pemb1, pemb2, peng1, peng2,
tgl_kep,
(SELECT COUNT(id) as found FROM tbrekaphasil WHERE idpraoutline = tp.id) as found,
wkt_kep
FROM $sTable
$sWhere
$where2
) t WHERE 1 = 1 $whereJenis $whereStatusDosen $sOrder
";
//echo $sQuery0;
$db->runQuery($sQuery0);
$iFilteredTotal = $db->dbRows();
$result = $db->runQuery($sQuery0.$sLimit);
/* Total data set length */
$sQuery2 = "
SELECT COUNT(tp.id) as total FROM $sTable $sWhere $where2 GROUP BY tp.id
";
//echo $sQuery2;
$db->runQuery($sQuery2);
$aResultTotal = $db->dbFetch();
$iTotal = $aResultTotal['total'];
/*$rResultTotal = mysql_query( $sQuery, $gaSql['link'] ) or fatal_error( 'MySQL Error: ' . mysql_errno() );
$aResultTotal = mysql_fetch_array($rResultTotal);
$iTotal = $aResultTotal[0];*/
/*
* Output
*/
$output = [
'sEcho' => intval($_GET['sEcho']),
'iTotalRecords' => $iTotal,
'iTotalDisplayRecords' => $iFilteredTotal,
'aaData' => [],
];
while ($aRow = $db->dbFetch($result)) {
/**
if($cekAdaJadwalSeminarHasil){
$sql = "SELECT * FROM tbjadwal WHERE idMhs = '".$aRow['idmhs']."' AND jenis = 'SidHas'";
$resultJadwal = $db->runQuery($sql);
$adaData = false;
while ($aJadwal = $db->dbFetch($resultJadwal)) {
$adaData = true;
}
if(!$aData){
continue;
}
}
*/
$idPraoutline = $aRow['id'];
$sql = "SELECT * FROM tbreview WHERE idpraoutline = '$idPraoutline'";
$resultReview = $db->runQuery($sql);
$banyakReview = 0;
$banyakKomentar = 0;
$banyakPutusan = 0;
$banyakSetuju = 0;
$banyakTidakSetuju = 0;
while ($aRowReview = $db->dbFetch($resultReview)) {
$jenisReview = $aRowReview['jenis_review'];
$banyakReview++;
switch($jenisReview){
case 0 : $banyakKomentar++; break;
case 1 : $banyakPutusan++;
if($aRowReview['putusan'] == '1'){
$banyakSetuju++;
}
if($aRowReview['putusan'] == '0'){
$banyakTidakSetuju++;
}
break;
}
}
$kelompokKeahlian = ' - <span class="label label-success" style="background-color:#A9A9A9">Tidak Ada Kelompok Keahlian</span>';
$idKelompokKeahlian = $aRow['kelompokKeahlian'];
if (isset($dataKK[$idKelompokKeahlian])) {
$kelompokKeahlian = ' - <span class="label label-'.$dataKK[$idKelompokKeahlian]['label'].'">'.$dataKK[$idKelompokKeahlian]['nama'].'</span>';
}
//print_r($aRow);
$row = [];
if ($aRow['status_usulan'] == 0) {
$statusPraoutline = '';
} elseif ($aRow['status_usulan'] == 1) {
$statusPraoutline = '| <span class="label label-success">Judul Diterima</span>';
} elseif ($aRow['status_usulan'] == 2) {
$statusPraoutline = '| <span class="label label-danger">Judul Ditolak</span>';
} elseif ($aRow['status_usulan'] == 3) {
$statusPraoutline = '| <span class="label label-danger">Judul Gugur</span>';
}
$row[0] = $aRow['nm_mhs'].'<br/>NIM: '.$aRow['nim'];
$row[1] = '<a target="_blank" href="?page=praoutline&menu=review&prid='.$aRow['id'].'">'.$aRow['judul'].'</a>'.$kelompokKeahlian;
$row[1] .= '<p style="margin-top:1rem">Jumlah Review : <span class="badge badge-info">'.$banyakReview.'</span> | Setuju : <span class="badge badge-success"> '.$banyakSetuju.'</span> | Tidak Setuju : <span class="badge badge-danger">'.$banyakTidakSetuju.'</span> '.$statusPraoutline.'</p>';
$row[2] = $aRow['thn_ajaran'].' - '.$aRow['semester'];
$row[3] = tanggalIndo($aRow['tgl_upload'], 'j F Y').' '.$aRow['wkt_upload'];
$row[4] = tanggalIndo($aRow['tgl_kep'], 'j F Y').' '.$aRow['wkt_kep'];
if ($aRow['found'] == 0) {
$act_p = 'Putusan';
} else {
$act_p = 'Edit Putusan';
}
$aksi = '<div class="btn-group">
<a class="btn btn-primary dropdown-toggle btn-sm" data-toggle="dropdown" href="#">
<i class="icon-cog"></i> <span class="caret"></span>
</a>
<ul role="menu" class="dropdown-menu pull-right">
<li role="presentation">
<a role="menuitem" tabindex="-1" href="?page=praoutline&menu=kep-draft-praoutline&prid='.$aRow['id'].'">
<i class="icon-edit"></i> '.$act_p.'
</a>
</li>
</ul>
</div>';
$row[5] = $aksi;
$output['aaData'][] = $row;
// print_r($row);
}
echo json_encode($output);