221 lines
8.2 KiB
PHP
221 lines
8.2 KiB
PHP
<?php
|
|
|
|
/*******************************************************************
|
|
|
|
App. Name : SISTEM INFORMASI MONITORING DAN EVALUASI
|
|
Module : /apps/php/func/emonev.php
|
|
Desc. : PHP - Fungsi SiMONEv
|
|
Created By : Siau Pheng ([email protected]).
|
|
Created Date : May 15th, 2012.
|
|
Last Modified : February 3rd, 2026.
|
|
|
|
(c) 2012 - 2026, 3FONIA Software; WWW.3FONIA.COM.
|
|
|
|
*******************************************************************/
|
|
|
|
require_once(__DIR__."/../../../../../vendor/autoload.php");
|
|
|
|
use siaupheng\fonia3\DB\MySQL;
|
|
use siaupheng\fonia3\DB\SQL;
|
|
|
|
$fdb = new MySQL();
|
|
|
|
function tahun_ang($t_extra = "") {//oke
|
|
global $fdb;
|
|
$atahun = [];
|
|
$fdb->Query("SELECT Tahun FROM para_periode WHERE Tahun IN (SELECT Tahun FROM dpa_prog) ORDER BY Tahun");
|
|
while ($fdb->Next()){
|
|
$atahun[$fdb->Row("Tahun")] = $t_extra . $fdb->Row("Tahun");
|
|
}
|
|
return $atahun;
|
|
}
|
|
|
|
function map_tahun_submap($thn_map = 0) {//oke
|
|
$amap = [2021 => 2022, 2024 => 2025];
|
|
return $amap[$thn_map] ?? $thn_map;
|
|
}
|
|
|
|
function map_tahun_akun($thn_map = 0) {//oke
|
|
if ($thn_map < 2025) $thn_map = 2025;
|
|
$amap = [2025 => 2025];
|
|
return $amap[$thn_map] ?? $thn_map;
|
|
}
|
|
|
|
function Kendali_ID($tahun = 0) {
|
|
global $fdb;
|
|
$ino = 0;
|
|
$fdb->Query("SELECT MAX(ID) Nomor FROM kendali_detail WHERE Tahun='".$tahun."'");
|
|
if ($fdb->Next()) $ino = $fdb->Row("Nomor", 0);
|
|
return ($ino+1);
|
|
}
|
|
|
|
function RKA_Baru($k_tahun = "", $k_upt="", $tipe = "renja_usul") {
|
|
global $fdb;
|
|
$tno = $k_tahun . "-" . $k_upt . "-";
|
|
$ino = 0;
|
|
$fdb->Query("SELECT MAX(RIGHT(K_RKA,6)) Nomor FROM ".$tipe."_detail WHERE LEFT(K_RKA,".strlen($tno).")='".$tno."'");
|
|
if ($fdb->Next()) $ino = $fdb->Row("Nomor", 0);
|
|
$tno .= isi_nol($ino+1, 6);
|
|
return $tno;
|
|
}
|
|
|
|
function Kode_Keg_Baru($k_tahun = "", $id_upt=0, $id_prog=0) {
|
|
global $fdb;
|
|
$ino = 0;
|
|
$fdb->Query("SELECT MAX(K_Keg) Nomor FROM sippd_kalbar.renja_detail WHERE Tahun='".$k_tahun."' AND UPTID='".$id_upt."' AND ProgID='".$id_prog."'");
|
|
if ($fdb->Next()) $ino = $fdb->Row("Nomor", 0);
|
|
return isi_nol($ino+1, 2);
|
|
}
|
|
|
|
function Renstra_KegID($id_rpjmd = 0) {
|
|
global $fdb;
|
|
$ino = 0;
|
|
$fdb->Query("SELECT MAX(RKegID) Nomor FROM sippd_kalbar.renstra_detail WHERE RPJMDID='".$id_rpjmd."'");
|
|
if ($fdb->Next()) $ino = $fdb->Row("Nomor", 0);
|
|
return ($ino+1);
|
|
}
|
|
|
|
/*************** TIPE DATA INDIKATOR ***************/
|
|
// 0 : numeric / 1 : range / 2 : rasio / * : enum_v2
|
|
|
|
function tipedata_query() {
|
|
return "SELECT TipeDataID,CONCAT(N_Tipe,IF(TipeDataID<3,'',CONCAT(' - ',JSON_UNQUOTE(JSON_EXTRACT(P_Input,'$.*'))))) Nama_Tipe FROM para_tipedata WHERE Aktif=1 ORDER BY TipeDataID";
|
|
}
|
|
|
|
function tipedata_select($id_target = "Target_Indi", $id_tipe = 0, $val_target = "", $bol_en = false, $a_input = [], $tcss = "") {
|
|
$ttarget = '<input type="double" class="form-control double" id="'.$id_target.'" value="'.floatval($val_target).'"'.($bol_en?'':' readonly').' required="true" />';
|
|
if ($id_tipe == 2) { // rasio
|
|
$atarget = ($val_target == "") ? [0,0] : explode(":", $val_target);
|
|
for ($i = 0; $i < 10; $i++) $vtarget .= array_merge(range('a','z'),range('A','Z'))[rand(0,51)];
|
|
$ttarget = '<div class="input-group '.$tcss.'"><input type="number" class="form-control" id="'.$vtarget.'_b" value="'.$atarget[0].'"'.($bol_en?'':' readonly').' required=true onchange="$(\'#'.$id_target.'\').val(($(\'#'.$vtarget.'_b\').val()||\'0\')+\':\'+($(\'#'.$vtarget.'_a\').val()||\'0\'));" /><span class="input-group-text">:<input type="hidden" id="'.$id_target.'" value="'.$val_target.'"></span><input type="number" class="form-control" id="'.$vtarget.'_a" value="'.$atarget[1].'"'.($bol_en?'':' readonly').' required=true onchange="$(\'#'.$id_target.'\').val(($(\'#'.$vtarget.'_b\').val()||\'0\')+\':\'+($(\'#'.$vtarget.'_a\').val()||\'0\'));" /></div>';
|
|
} else if ($id_tipe > 2) { // enum_v2
|
|
$ttarget = '<select class="form-select" id="'.$id_target.'" name="'.$id_target.'"'.($bol_en?'':' disabled=true').'>';
|
|
//$ttarget .= '<option value="">-</option>'; option-tags
|
|
foreach($a_input as $_key => $_val) {
|
|
$ttarget .= '<option value="'.$_key.'"'.($_key==$val_target?' selected="selected"':'').'>'.$_val.'</option>';
|
|
}
|
|
$ttarget .= '</select>';
|
|
}
|
|
return $ttarget;
|
|
}
|
|
|
|
function tipedata_status($id_target = "Status_Indi", $id_tipe = 0, $val_target = "", $bol_en = false) {
|
|
$astatus = ['komulatif' => "Komulatif", 'positif' => "Positif", 'negatif' => "Negatif", 'rata-rata' => "Rata-rata"];
|
|
if ($id_tipe >= 2) { // rasio + enum_v2
|
|
array_shift($astatus);
|
|
array_pop($astatus);
|
|
}
|
|
$ttarget = '<select class="form-select" id="'.$id_target.'" name="'.$id_target.'"'.($bol_en?'':' disabled=true').'>';
|
|
foreach($astatus as $_key => $_val) {
|
|
$ttarget .= '<option value="'.$_key.'"'.($_key==$val_target?' selected="selected"':'').'>'.$_val.'</option>';
|
|
}
|
|
$ttarget .= '</select>';
|
|
return $ttarget;
|
|
}
|
|
|
|
function tipedata_poin($val_target = "") {
|
|
$thasil = $val_target;
|
|
if (strpos($val_target, ":") !== false) { // rasio
|
|
$atmp = explode(":", $val_target);
|
|
$thasil = (in_array(0, $atmp)) ? "" : $atmp[0] / $atmp[1];
|
|
}
|
|
return $thasil;
|
|
}
|
|
|
|
/*function tipedata_poin($id_tipe = 0, $val_target = "") {
|
|
$thasil = $val_target;
|
|
if ($id_tipe == 2) { // rasio
|
|
if (strpos($val_target, ":") !== false) {
|
|
$atmp = explode(":", $val_target);
|
|
$thasil = (in_array(0, $atmp, true)) ? "" : $atmp[0] / $atmp[1];
|
|
} else $thasil = "";
|
|
}
|
|
return $thasil;
|
|
}*/
|
|
|
|
function tipedata_tipe($id_tipe = 0) {
|
|
$atipe = [ 0 => "Numeric", 1 => "Range", 2 => "Rasio" ];
|
|
if ($atipe[$id_tipe]) return $atipe[$id_tipe];
|
|
return "Enum_v2";
|
|
}
|
|
|
|
/*************** RENJA ***************/
|
|
|
|
function Keg_Baru($id_prog = 0) {
|
|
global $fdb;
|
|
$ino = 0;
|
|
$fdb->Query("SELECT MAX(K_Keg) Nomor FROM para_kegiatan WHERE ProgID='".$id_prog."'");
|
|
if ($fdb->Next()) $ino = $fdb->Row("Nomor", 0);
|
|
$tno = isi_nol($ino+1, 2);
|
|
return $tno;
|
|
}
|
|
|
|
/*************** USULAN KAB/KOTA ***************/
|
|
|
|
function Kode_Keg_Kab_Baru($k_tahun = "", $id_kab=0, $id_prog=0) {
|
|
global $fdb;
|
|
$ino = 0;
|
|
$fdb->Query("SELECT MAX(K_Keg) Nomor FROM renja_kab_detail WHERE Tahun='".$k_tahun."' AND KabID='".$id_kab."' AND ProgID='".$id_prog."'");
|
|
if ($fdb->Next()) $ino = $fdb->Row("Nomor", 0);
|
|
return isi_nol($ino+1, 2);
|
|
}
|
|
|
|
/*************** USULAN DPRD ***************/
|
|
|
|
function Kode_Keg_DPRD_Baru($k_tahun = "", $id_dprd=0, $id_prog=0) {
|
|
global $fdb;
|
|
$ino = 0;
|
|
$fdb->Query("SELECT MAX(K_Keg) Nomor FROM renja_dprd_detail WHERE Tahun='".$k_tahun."' AND DPRDID='".$id_dprd."' AND ProgID='".$id_prog."'");
|
|
if ($fdb->Next()) $ino = $fdb->Row("Nomor", 0);
|
|
return isi_nol($ino+1, 2);
|
|
}
|
|
|
|
/*************** API ***************/
|
|
|
|
function API_Request($url = "", $apost = array()) {
|
|
$curl_array = array(
|
|
CURLOPT_URL => $url ."?". http_build_query($apost),
|
|
CURLOPT_RETURNTRANSFER => true,
|
|
CURLOPT_ENCODING => "",
|
|
CURLOPT_MAXREDIRS => 10,
|
|
CURLOPT_TIMEOUT => 0,
|
|
CURLOPT_FOLLOWLOCATION => true,
|
|
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
|
|
CURLOPT_HTTPHEADER => array(
|
|
"Accept: application/json"
|
|
),
|
|
CURLOPT_SSL_VERIFYHOST => false,
|
|
CURLOPT_SSL_VERIFYPEER => false
|
|
);
|
|
|
|
$curl = curl_init();
|
|
curl_setopt_array($curl, $curl_array);
|
|
$response = curl_exec($curl);
|
|
$err = curl_error($curl);
|
|
curl_close($curl);
|
|
if ($err) {
|
|
$aresult[] = $err;
|
|
} else {
|
|
$aresult = json_decode($response, true);
|
|
}
|
|
return $aresult;
|
|
}
|
|
|
|
/*************** REPORT ***************/
|
|
|
|
function Report_Empty($ltabel = "") {
|
|
global $fdb;
|
|
if ($ltabel == "") return false;
|
|
$fdb->Query("DELETE FROM rep_".$ltabel." WHERE (Unix='".user_unix()."' OR Unix<'".(user_unix()-604800)."') AND UserID='".user_id()."'");
|
|
}
|
|
|
|
function Report_Header($tlapor="", $tperiod="") {
|
|
$thasil = '<div style="text-align:center;font-size:12pt;"><b>'.strtoupper($_SESSION['__WEB_APP']['REG_NAME']);
|
|
$thasil .= (($tlapor=="") ? "" : '<br>'.$tlapor) . '</b>';
|
|
$thasil .= ($tperiod=="") ? "" : '<br><span style="font-size:11pt;">'.$tperiod.'</span>';
|
|
$thasil .= '</div><br>';
|
|
echo $thasil;
|
|
}
|
|
|
|
?>
|