2296 lines
64 KiB
PHP
2296 lines
64 KiB
PHP
<?php
|
|
ini_set('date.timezone','Asia/Jakarta');
|
|
$path = realpath(dirname(__FILE__));
|
|
if (!function_exists('makeDir')) {
|
|
function makeDir($new_path, $mode) {
|
|
return is_dir($new_path) || mkdir($new_path, $mode, true);
|
|
}
|
|
}
|
|
require_once (_DOCROOT_.'vendor/autoload.php');
|
|
|
|
use Monolog\Logger;
|
|
use Monolog\Handler\StreamHandler;
|
|
use Monolog\Handler\FirePHPHandler;
|
|
|
|
// create a log channel
|
|
$logger = new Logger('simrs');
|
|
$daily_log = date('d-m-Y').'.log';
|
|
|
|
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') {
|
|
$logdir = 'C:/Users/Public/simrs-logs/';
|
|
} else {
|
|
$logdir = $_SERVER['DOCUMENT_ROOT'].'/logs/';
|
|
}
|
|
|
|
$year_dir = makeDir($logdir.'activity/'.date('Y'),0777);
|
|
$month_dir = makeDir($logdir.'activity/'.date('Y').'/'.date('m'),0777);
|
|
|
|
$dir_log = $logdir.'activity/'.date('Y').'/'.date('m').'/'.$daily_log;
|
|
$logger->pushHandler(new StreamHandler($dir_log, Logger::DEBUG));
|
|
$logger->pushHandler(new FirePHPHandler());
|
|
|
|
// NUMBER FORMATTING
|
|
if (!function_exists('tsen')) {
|
|
function tsen($x){
|
|
if(preg_match("/\./", $x)){
|
|
$str = stristr($x,".");
|
|
$ex = explode('.',$x);
|
|
|
|
$a = $ex[1];
|
|
if(($ex[1]/10) >= 1){
|
|
$a = abs($ex[1]);
|
|
}
|
|
|
|
$string = array("nol", "satu", "dua", "tiga", "empat", "lima", "enam", "tujuh", "delapan", "sembilan","sepuluh", "sebelas");
|
|
$string_nol = array("nol", "satu", "dua", "tiga", "empat", "lima", "enam", "tujuh", "delapan", "sembilan");
|
|
$temp = "";
|
|
|
|
$a2 = $ex[1]/10;
|
|
$pjg = strlen($str);
|
|
$i =1;
|
|
|
|
|
|
if($a >= 1 && $a < 12){
|
|
if(substr($a, 0, 1) == "0")
|
|
{
|
|
$last_digit = substr($a, 1,1);
|
|
$temp .= $string_nol[$last_digit];
|
|
}
|
|
else {
|
|
$temp .= " ".$string[$a];
|
|
}
|
|
}else if($a >= 12 && $a < 20){
|
|
$temp .= bilang($a - 10)." belas";
|
|
}else if ($a >= 20 && $a < 100){
|
|
$temp .= bilang($a / 10)." puluh". bilang($a % 10);
|
|
}
|
|
else{
|
|
if($a2<1){
|
|
|
|
while ($i<$pjg){
|
|
$char = substr($str,$i,1);
|
|
$i++;
|
|
$temp .= " ".$string[$char];
|
|
}
|
|
}
|
|
}
|
|
return $temp;
|
|
}
|
|
else return false;
|
|
}
|
|
}
|
|
if (!function_exists('bilang')) {
|
|
function bilang($x)
|
|
{
|
|
$x = abs($x);
|
|
$angka = array("", "satu", "dua", "tiga", "empat", "lima",
|
|
"enam", "tujuh", "delapan", "sembilan", "sepuluh", "sebelas");
|
|
$result = "";
|
|
if ($x <12) {
|
|
$result = " ". $angka[$x];
|
|
} else if ($x <20) {
|
|
$result = bilang($x - 10). " belas";
|
|
} else if ($x <100) {
|
|
$result = bilang($x/10)." puluh". bilang($x % 10);
|
|
} else if ($x <200) {
|
|
$result = " seratus" . bilang($x - 100);
|
|
} else if ($x <1000) {
|
|
$result = bilang($x/100) . " ratus" . bilang($x % 100);
|
|
} else if ($x <2000) {
|
|
$result = " seribu" . bilang($x - 1000);
|
|
} else if ($x <1000000) {
|
|
$result = bilang($x/1000) . " ribu" . bilang($x % 1000);
|
|
} else if ($x <1000000000) {
|
|
$result = bilang($x/1000000) . " juta" . bilang($x % 1000000);
|
|
} else if ($x <1000000000000) {
|
|
$result = bilang($x/1000000000) . " milyar" . bilang(fmod($x,1000000000));
|
|
} else if ($x <1000000000000000) {
|
|
$result = bilang($x/1000000000000) . " trilyun" . bilang(fmod($x,1000000000000));
|
|
}
|
|
return $result;
|
|
}
|
|
}
|
|
if (!function_exists('app_terbilang')) {
|
|
function app_terbilang($x, $style = 'ucwords')
|
|
{
|
|
if(is_numeric($x))
|
|
{
|
|
$poin = 0;
|
|
if($x<0){
|
|
$hasil = "minus ". trim(bilang($x));
|
|
}
|
|
else{
|
|
$poin = trim(tsen($x));
|
|
$hasil = trim(bilang($x));
|
|
}
|
|
|
|
if($poin){
|
|
$hasil .= " rupiah ".$poin." sen ";
|
|
}else{
|
|
$hasil .= " rupiah";
|
|
}
|
|
// $hasil.= " rupiah";
|
|
|
|
switch ($style){
|
|
case 'upper': $hasil = strtoupper($hasil);break;
|
|
case 'lower':$hasil = strtolower($hasil);break;
|
|
case 'ucwords':$hasil = ucwords(strtolower($hasil));break;
|
|
default:$hasil = ucfirst(strtolower($hasil));break;
|
|
}
|
|
|
|
return $hasil;
|
|
}
|
|
else{
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
if (!function_exists('app_pembulatan')) {
|
|
function app_pembulatan($nilai) {
|
|
return round($nilai,0);
|
|
}
|
|
}
|
|
|
|
|
|
if (!function_exists('round_up')) {
|
|
function round_up($number, $precision = 2)
|
|
{
|
|
$fig = (int) str_pad('1', $precision, '0');
|
|
return (ceil($number * $fig) / $fig);
|
|
}
|
|
}
|
|
|
|
if (!function_exists('round_down')) {
|
|
function round_down($number, $precision = 2)
|
|
{
|
|
$fig = (int) str_pad('1', $precision, '0');
|
|
return (floor($number * $fig) / $fig);
|
|
}
|
|
}
|
|
if (!function_exists('bulat_puluhan')) {
|
|
function bulat_puluhan($nilai,$aturan_farmasi = false) {
|
|
$r1 = round($nilai,0);
|
|
|
|
$ratusan = substr($r1,-3);
|
|
$puluhan = substr($r1,-2);
|
|
$bilangan1 = $r1 - $puluhan;
|
|
|
|
$desimal = '0,'.$puluhan;
|
|
$nilai_bulat = str_pad(str_replace("0,", "", round_up($desimal,2) ), 2, '0', STR_PAD_RIGHT);
|
|
|
|
if($aturan_farmasi == true) {
|
|
$desimal = '0.'.$puluhan;
|
|
$nilai_bulat = str_pad(str_replace("0.", "", round_up($desimal,2) ), 2, '0', STR_PAD_RIGHT);
|
|
$nilai_bulat = ($nilai_bulat > 0 && $nilai_bulat <= 50) ? 50 : ( ($nilai_bulat > 50) ? 100 : 0);
|
|
}
|
|
$hasil = $bilangan1 + $nilai_bulat;
|
|
|
|
return $hasil;
|
|
}
|
|
}
|
|
if (!function_exists('bulat_ratusan')) {
|
|
function bulat_ratusan($nilai) {
|
|
$r1 = round($nilai,0);
|
|
|
|
$ratusan = substr($r1,-3);
|
|
$puluhan = substr($r1,-2);
|
|
$bilangan1 = $r1 - $ratusan;
|
|
|
|
$desimal = '0,'.$ratusan;
|
|
$nilai_bulat = str_pad(str_replace("0,", "", round_up($desimal,2) ), 3, '0', STR_PAD_RIGHT);
|
|
|
|
$hasil = $bilangan1 + $nilai_bulat;
|
|
|
|
return $hasil;
|
|
}
|
|
}
|
|
|
|
if (!function_exists('Terbilang')) {
|
|
function Terbilang($x)
|
|
{
|
|
return bilang($x);
|
|
}
|
|
}
|
|
|
|
if(!function_exists('app_trim')) {
|
|
function app_trim(&$value, $arr_search = array(), $arr_replace = array())
|
|
{
|
|
if(is_array($value)){
|
|
app_trimInput($value);
|
|
}
|
|
else
|
|
{
|
|
$value = trim($value);
|
|
// $value = strip_slashes($value);
|
|
$arr_search = array("\n\n", '<p class="full">');
|
|
$arr_replace = array("\n", '<p style="text-align:justify">');
|
|
$value = str_replace($arr_search, $arr_replace, $value);
|
|
}
|
|
}
|
|
}
|
|
|
|
if(!function_exists('app_trimInput')) {
|
|
function app_trimInput(array $arr=array())
|
|
{
|
|
if(!is_array($arr)){
|
|
die("Inputan Bukan Array");
|
|
}
|
|
array_walk($arr,"app_trim");
|
|
return $arr;
|
|
}
|
|
}
|
|
// DATE FORMATTING
|
|
if (!function_exists('date_to_db')) {
|
|
// Function to convert from d-m-y to y-m-d
|
|
function date_to_db($tanggal){
|
|
if($tanggal != '') {
|
|
$x_tanggal = explode("-", $tanggal);
|
|
$d = $x_tanggal[0];
|
|
$m = $x_tanggal[1];
|
|
$y = $x_tanggal[2];
|
|
$date = $y."-".$m."-".$d;
|
|
return $date;
|
|
}
|
|
else return $tanggal;
|
|
}
|
|
}
|
|
if (!function_exists('datetime_to_id')) {
|
|
// Function to convert from y-m-d h:i:s to d-m-y h:i:s
|
|
function datetime_to_id($datetime){
|
|
$x_datetime = explode(" ", $datetime);
|
|
$date = $x_datetime[0];
|
|
$time = $x_datetime[1];
|
|
$dateid = date_to_id($date);
|
|
$new_datetime = $dateid." ".$time;
|
|
return $new_datetime;
|
|
}
|
|
}
|
|
if (!function_exists('datetime_to_date_en')) {
|
|
// convert datetime to date
|
|
function datetime_to_date_en($datetime){
|
|
$x_datetime = explode(" ", $datetime);
|
|
$date = $x_datetime[0];
|
|
|
|
return $date;
|
|
}
|
|
}
|
|
if (!function_exists('date_to_id')) {
|
|
// convert y-m-d --> d-m-y
|
|
function date_to_id($tanggal){
|
|
if(strpos($tanggal,'-')) {
|
|
list($y,$m,$d) = explode("-", $tanggal);
|
|
}
|
|
elseif(strpos($tanggal,'/')){
|
|
list($m,$d,$y) = explode("/", $tanggal);
|
|
}
|
|
else {
|
|
$d = $m = $y = '';
|
|
}
|
|
$date = $d."-".$m."-".$y;
|
|
return $date;
|
|
}
|
|
}
|
|
if (!function_exists('datetime_to_dateid')) {
|
|
// convert y-m-d h:i:s --> d-m-y
|
|
function datetime_to_dateid($datetime){
|
|
$x_datetime = explode(" ", $datetime);
|
|
$date = $x_datetime[0];
|
|
$time = $x_datetime[1];
|
|
$dateid = date_to_id($date);
|
|
return $dateid;
|
|
}
|
|
}
|
|
if (!function_exists('datetime_to_time')) {
|
|
// convert y-m-d h:i:s --> d-m-y
|
|
function datetime_to_time($datetime){
|
|
$x_datetime = explode(" ", $datetime);
|
|
$date = $x_datetime[0];
|
|
$time = $x_datetime[1];
|
|
$dateid = date_to_id($date);
|
|
return $time;
|
|
}
|
|
}
|
|
if (!function_exists('date_full_id')) {
|
|
// convert y-m-d h:i:s --> d M y
|
|
function date_full_id($tanggal){
|
|
$x_datetime = explode(" ", $tanggal);
|
|
$date = $x_datetime[0];
|
|
|
|
$x_tanggal = explode("-", $date);
|
|
$d = $x_tanggal[2];
|
|
$m = $x_tanggal[1];
|
|
$y = $x_tanggal[0];
|
|
|
|
switch($m){
|
|
case 1 : $m_id = 'Januari'; break;
|
|
case 2 : $m_id = 'Februari'; break;
|
|
case 3 : $m_id = 'Maret'; break;
|
|
case 4 : $m_id = 'April'; break;
|
|
case 5 : $m_id = 'Mei'; break;
|
|
case 6 : $m_id = 'Juni'; break;
|
|
case 7 : $m_id = 'Juli'; break;
|
|
case 8 : $m_id = 'Agustus'; break;
|
|
case 9 : $m_id = 'September'; break;
|
|
case 10: $m_id = 'Oktober'; break;
|
|
case 11: $m_id = 'Nopember'; break;
|
|
case 12: $m_id = 'Desember'; break;
|
|
}
|
|
return $d.' '.$m_id.' '.$y;
|
|
}
|
|
}
|
|
if (!function_exists('date_to_id_mm')) {
|
|
// convert y-m-d --> d M y
|
|
function date_to_id_mm($tanggal){
|
|
$x_tanggal = explode("-", $tanggal);
|
|
$d = $x_tanggal[2];
|
|
$m = $x_tanggal[1];
|
|
$y = $x_tanggal[0];
|
|
|
|
switch($m){
|
|
case 1 : $m_id = 'Januari'; break;
|
|
case 2 : $m_id = 'Februari'; break;
|
|
case 3 : $m_id = 'Maret'; break;
|
|
case 4 : $m_id = 'April'; break;
|
|
case 5 : $m_id = 'Mei'; break;
|
|
case 6 : $m_id = 'Juni'; break;
|
|
case 7 : $m_id = 'Juli'; break;
|
|
case 8 : $m_id = 'Agustus'; break;
|
|
case 9 : $m_id = 'September'; break;
|
|
case 10: $m_id = 'Oktober'; break;
|
|
case 11: $m_id = 'Nopember'; break;
|
|
case 12: $m_id = 'Desember'; break;
|
|
}
|
|
return $d.' '.$m_id.' '.$y;
|
|
}
|
|
}
|
|
if (!function_exists('day_to_id')) {
|
|
// convert international day to indonesian day
|
|
function day_to_id($day){
|
|
switch(strtolower($day)){
|
|
case 'sunday': $hr = 'Minggu'; break;
|
|
case 'monday': $hr = 'Senin'; break;
|
|
case 'wednesday': $hr = 'Rabu'; break;
|
|
case 'tuesday': $hr = 'Selasa'; break;
|
|
case 'thursday': $hr = 'Kamis'; break;
|
|
case 'friday': $hr = 'Jumat'; break;
|
|
case 'saturday': $hr = 'Sabtu'; break;
|
|
}
|
|
return $hr;
|
|
}
|
|
}
|
|
if (!function_exists('m_to_id')) {
|
|
// convert month to indonesian month
|
|
function m_to_id($m){
|
|
switch($m){
|
|
case 1 : return 'Januari'; break;
|
|
case 2 : return 'Februari'; break;
|
|
case 3 : return 'Maret'; break;
|
|
case 4 : return 'April'; break;
|
|
case 5 : return 'Mei'; break;
|
|
case 6 : return 'Juni'; break;
|
|
case 7 : return 'Juli'; break;
|
|
case 8 : return 'Agustus'; break;
|
|
case 9 : return 'September'; break;
|
|
case 10 : return 'Oktober'; break;
|
|
case 11 : return 'November'; break;
|
|
case 12 : return 'Desember'; break;
|
|
}
|
|
}
|
|
}
|
|
if (!function_exists('get_dbdate_by')) {
|
|
// get date part from y-m-d format
|
|
function get_dbdate_by($by,$tanggal){
|
|
$x_tanggal = explode("-", $tanggal);
|
|
$d = $x_tanggal[2];
|
|
$m = $x_tanggal[1];
|
|
$y = $x_tanggal[0];
|
|
if($by == 'month') return $m;
|
|
elseif($by == 'year') return $y;
|
|
elseif($by == 'day') return $d;
|
|
}
|
|
}
|
|
if (!function_exists('datetimepart')) {
|
|
// get date part from datetime format
|
|
function datetimepart($by,$date){
|
|
list($date,$time) = explode(" ",$date);
|
|
$ex_date = explode('-', $date);
|
|
$ex_time = explode(':', $time);
|
|
|
|
if($by == 'day' || $by == 'd')
|
|
return $ex_date[0];
|
|
elseif($by == 'month' || $by == 'm')
|
|
return $ex_date[1];
|
|
elseif($by = 'year' || $by == 'y')
|
|
return $ex_date[2];
|
|
elseif($by = 'hour' || $by == 'h')
|
|
return $ex_time[0];
|
|
elseif($by = 'minute' || $by == 'i')
|
|
return $ex_time[1];
|
|
elseif($by = 'second' || $by == 's')
|
|
return $ex_time[2];
|
|
}
|
|
}
|
|
if (!function_exists('datepart')) {
|
|
// get date part from date format
|
|
function datepart($by,$date){
|
|
|
|
$date = date_to_id($date);
|
|
$ex_date = explode('-', $date);
|
|
|
|
|
|
if($by == 'day' || $by == 'd')
|
|
return $ex_date[0];
|
|
elseif($by == 'month' || $by == 'm')
|
|
return $ex_date[1];
|
|
elseif($by = 'year' || $by == 'y')
|
|
return $ex_date[2];
|
|
}
|
|
}
|
|
if (!function_exists('sql_to_id')) {
|
|
// convert sql date to indonesian date
|
|
function sql_to_id($tanggal){
|
|
$x_tanggal = explode("/", $tanggal);
|
|
$d = $x_tanggal[1];
|
|
$m = $x_tanggal[0];
|
|
$y = $x_tanggal[2];
|
|
$date = $d."-".$m."-".$y;
|
|
return $date;
|
|
}
|
|
}
|
|
if (!function_exists('thisday')) {
|
|
//get N day in date >> 12-12-2012 -> should returning 3
|
|
function thisday($date,$separator = '/',$format = 'd/m/y'){
|
|
$date = explode($separator, $date);
|
|
if($format == 'd/m/y' || $format == 'd-m-y'){
|
|
$d = $date[0]; $m = $date[1]; $y = $date[2];
|
|
}
|
|
elseif($format== 'm/d/y' || $format == 'm-d-y'){
|
|
$d = $date[1]; $m = $date[0]; $y = $date[2];
|
|
}
|
|
elseif($format == 'y-m-d' || $format == 'y/m/d'){
|
|
$d = $date[2]; $m = $date[1]; $y = $date[0];
|
|
}
|
|
|
|
return date('N',mktime(0,0,0,$m,$d,$y));
|
|
}
|
|
}
|
|
if (!function_exists('conv_date')) {
|
|
/* For Postgre */
|
|
// Convert MM/DD/YYYY H:i To YYYY-MM-DD H:i
|
|
function conv_date($param = array()){
|
|
if(isset($param['date_separator'])){
|
|
$exp_datetime = explode(' ',$param['datetime']);
|
|
$exp_date = explode($param['date_separator'], $exp_datetime[0]);
|
|
$res_date = $exp_date[2].$param['new_separator'].$exp_date[0].$param['new_separator'].$exp_date[1];
|
|
|
|
$result = $res_date.' '.$exp_datetime[1];
|
|
}
|
|
return $result;
|
|
}
|
|
}
|
|
if (!function_exists('excel5_to_db')) {
|
|
// convert 1-Jan-13 00:00:00 to 2013-01-01
|
|
function excel5_to_db($excel5date){
|
|
$date = explode(' ',$excel5date);
|
|
|
|
$ex_date = explode('-', $date[0]);
|
|
$tgl = $ex_date[0];
|
|
$bln = $ex_date[1];
|
|
$thn = $ex_date[2];
|
|
|
|
switch ($bln) {
|
|
case 'jan' || 'Jan':
|
|
$bulan = '01';
|
|
break;
|
|
case 'feb' || 'Feb':
|
|
$bulan = '02';
|
|
break;
|
|
case 'mar' || 'Mar':
|
|
$bulan = '03';
|
|
break;
|
|
case 'apr' || 'Apr':
|
|
$bulan = '04';
|
|
break;
|
|
case 'may' || 'May':
|
|
$bulan = '05';
|
|
break;
|
|
case 'jun' || 'Jun':
|
|
$bulan = '06';
|
|
break;
|
|
case 'jul' || 'Jul':
|
|
$bulan = '07';
|
|
break;
|
|
case 'aug' || 'Aug':
|
|
$bulan = '08';
|
|
break;
|
|
case 'sep' || 'Sep':
|
|
$bulan = '09';
|
|
break;
|
|
case 'oct' || 'Oct':
|
|
$bulan = '10';
|
|
break;
|
|
case 'nov' || 'Nov':
|
|
$bulan = '11';
|
|
break;
|
|
case 'dec' || 'Dec':
|
|
$bulan = '12';
|
|
break;
|
|
}
|
|
|
|
$tahun = (strftime('%C') == true) ? strftime('%C').$thn : '20'.$thn;
|
|
|
|
return $tahun.'-'.$bulan.'-'.$tgl;
|
|
}
|
|
}
|
|
if (!function_exists('local_standard')) {
|
|
// convert standard date Mon, 17 Nov 14 07:00:00 +0700 to Mon, 17 Nov 14 07:00 (WIB)
|
|
function local_standard($standard_date, $format = 'd D M Y H:i') {
|
|
list($day,$d,$m,$y,$t,$gmt) = explode(" ", $standard_date);
|
|
|
|
list($h,$i) = explode(":",$t);
|
|
|
|
$id_time = ($gmt == '+0700') ? 'WIB' : '';
|
|
$str_date= '';
|
|
for($x=0;$x<strlen($format);$x++){
|
|
$f = substr($format, $x, 1);
|
|
if($f == 'd') $str_date .= $day;
|
|
elseif($f == 'D') $str_date .= $d;
|
|
elseif($f == 'M') $str_date .= $m;
|
|
elseif($f == 'Y') $str_date .= $y;
|
|
elseif($f == 'H') $str_date .= $h;
|
|
elseif($f == 'i') $str_date .= $i;
|
|
else $str_date .= $f;
|
|
}
|
|
return $str_date;
|
|
}
|
|
}
|
|
if(!function_exists('get_icd')) {
|
|
function get_icd() {
|
|
return [10=>'10',9=>'9 cm'];
|
|
}
|
|
}
|
|
if(!function_exists('get_rawat')) {
|
|
function get_rawat() {
|
|
return ['rajal'=>'RAJAL','ranap'=>'RANAP'];
|
|
}
|
|
}
|
|
if(!function_exists('arr_year')) {
|
|
function arr_year() {
|
|
$tahun = [];
|
|
for($i = 2019; $i <= date('Y'); $i++){
|
|
$tahun[$i] = $i;
|
|
}
|
|
return $tahun;
|
|
}
|
|
}
|
|
if(!function_exists('arr_month')) {
|
|
function arr_month() {
|
|
return [1=>'Januari',2=>'Februari',3=>'Maret',4=>'April',5=>'Mei',6=>'Juni',
|
|
7=>'Juli',8=>'Agustus',9=>'September',10=>'Oktober',11=>'November',12=>'Desember'];
|
|
}
|
|
}
|
|
if (!function_exists('date_parse_from_format')) {
|
|
|
|
function date_parse_from_format($format, $date) {
|
|
// reverse engineer date formats
|
|
$keys = array(
|
|
'Y' => array('year', '\d{4}'),
|
|
'y' => array('year', '\d{2}'),
|
|
'm' => array('month', '\d{2}'),
|
|
'n' => array('month', '\d{1,2}'),
|
|
'M' => array('month', '[A-Z][a-z]{3}'),
|
|
'F' => array('month', '[A-Z][a-z]{2,8}'),
|
|
'd' => array('day', '\d{2}'),
|
|
'j' => array('day', '\d{1,2}'),
|
|
'D' => array('day', '[A-Z][a-z]{2}'),
|
|
'l' => array('day', '[A-Z][a-z]{6,9}'),
|
|
'u' => array('hour', '\d{1,6}'),
|
|
'h' => array('hour', '\d{2}'),
|
|
'H' => array('hour', '\d{2}'),
|
|
'g' => array('hour', '\d{1,2}'),
|
|
'G' => array('hour', '\d{1,2}'),
|
|
'i' => array('minute', '\d{2}'),
|
|
's' => array('second', '\d{2}')
|
|
);
|
|
|
|
// convert format string to regex
|
|
$regex = '';
|
|
$chars = str_split($format);
|
|
foreach ($chars AS $n => $char) {
|
|
$lastChar = isset($chars[$n - 1]) ? $chars[$n - 1] : '';
|
|
$skipCurrent = '\\' == $lastChar;
|
|
if (!$skipCurrent && isset($keys[$char])) {
|
|
$regex .= '(?P<' . $keys[$char][0] . '>' . $keys[$char][1] . ')';
|
|
} else if ('\\' == $char) {
|
|
$regex .= $char;
|
|
} else {
|
|
$regex .= preg_quote($char);
|
|
}
|
|
}
|
|
|
|
$dt = array();
|
|
$dt['error_count'] = 0;
|
|
// now try to match it
|
|
if (preg_match('#^' . $regex . '$#', $date, $dt)) {
|
|
foreach ($dt AS $k => $v) {
|
|
if (is_int($k)) {
|
|
unset($dt[$k]);
|
|
}
|
|
}
|
|
if (!checkdate($dt['month'], $dt['day'], $dt['year'])) {
|
|
$dt['error_count'] = 1;
|
|
}
|
|
} else {
|
|
$dt['error_count'] = 1;
|
|
}
|
|
$dt['errors'] = array();
|
|
$dt['fraction'] = '';
|
|
$dt['warning_count'] = 0;
|
|
$dt['warnings'] = array();
|
|
$dt['is_localtime'] = 0;
|
|
$dt['zone_type'] = 0;
|
|
$dt['zone'] = 0;
|
|
$dt['is_dst'] = '';
|
|
return $dt;
|
|
}
|
|
|
|
}
|
|
if(!function_exists('date_conv_eklaim')) {
|
|
function date_conv_eklaim($dt) {
|
|
$date_full = date_full_id($dt);
|
|
$time = datetime_to_time($dt);
|
|
|
|
return $date_full.' '.$time;
|
|
}
|
|
}
|
|
// SIMGOS SNIPPET
|
|
if (!function_exists('getLastMR')) {
|
|
function getLastMR($p=0){
|
|
$sql="select last1 as nomor from m_maxnomr where status=1";
|
|
$query = $db->query($sql);
|
|
$data = $query->fetchAll()[0];
|
|
$v = $data['nomor'];
|
|
$vl=strlen($v);
|
|
if($v < 10){ $value = '0'.$v;
|
|
}else if($v < 100){ $value =$v;
|
|
|
|
}
|
|
return $value;
|
|
}
|
|
}
|
|
if (!function_exists('datediff')) {
|
|
function datediff($d1, $d2){
|
|
if($d1 == null) {
|
|
$a['years'] = 0;
|
|
$a['months'] = 0;
|
|
$a['days'] = 0;
|
|
}
|
|
else {
|
|
$d1 = new Datetime($d1);
|
|
$d2 = new Datetime($d2);
|
|
|
|
$a = array();
|
|
$diff = $d2->diff($d1);
|
|
|
|
$a['years'] = $diff->format('%y');
|
|
$a['months'] = $diff->format('%m');
|
|
$a['days'] = $diff->format('%d');
|
|
}
|
|
return $a;
|
|
}
|
|
}
|
|
if (!function_exists('CurFormat')) {
|
|
function CurFormat($value,$dec=0){
|
|
$res = number_format ($value,$dec,",",".");
|
|
return $res;
|
|
}
|
|
}
|
|
if(!function_exists('format_uang')){
|
|
function format_uang($amount)
|
|
{
|
|
if($amount == ''){
|
|
return '0,00';
|
|
}
|
|
// log_message('error','Before Format '.$amount);
|
|
$amount = preg_replace('/,/', '.', $amount);
|
|
$result = number_format($amount, 2, ',','.');
|
|
return $result;
|
|
}
|
|
}
|
|
if (!function_exists('getRealIpAddr')) {
|
|
function getRealIpAddr() {
|
|
if(!empty($_SERVER['HTTP_CLIENT_IP'])) {
|
|
$ip=$_SERVER['HTTP_CLIENT_IP']; // share internet
|
|
} elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
|
|
$ip=$_SERVER['HTTP_X_FORWARDED_FOR']; // pass from proxy
|
|
} else {
|
|
$ip=$_SERVER['REMOTE_ADDR'];
|
|
}
|
|
return $ip;
|
|
}
|
|
}
|
|
if (!function_exists('jeniskelamin')) {
|
|
function jeniskelamin($P){
|
|
if($P == 'P'){
|
|
$v = "Perempuan (P)";
|
|
}elseif($P == 'L'){
|
|
$v = "Laki - Laki (L)";
|
|
}
|
|
else {
|
|
$v = '';
|
|
}
|
|
return $v;
|
|
}
|
|
}
|
|
if (!function_exists('getDokterName')) {
|
|
function getDokterName($kddokter){
|
|
global $db;
|
|
$sql = $db->query('SELECT NAMADOKTER from m_dokter where KDDOKTER = '.$kddokter);
|
|
if($sql->numRows() > 0){
|
|
$data = $sql->fetchAll();
|
|
$val = $data[0]['NAMADOKTER'];
|
|
}else{
|
|
$val = '';
|
|
}
|
|
return $val;
|
|
}
|
|
}
|
|
if (!function_exists('getJenisPoly')) {
|
|
function getJenisPoly($kdpoly){
|
|
global $db;
|
|
$sql = $db->query('SELECT no as kode,nama,jenispoly from m_ruang where kelompok = \'IRJA\' and no = '.$kdpoly);
|
|
if($sql->numRows() > 0){
|
|
$data = $sql->fetchAll();
|
|
$val = $data[0]['jenispoly'];
|
|
}else{
|
|
$val = '';
|
|
}
|
|
return $val;
|
|
}
|
|
}
|
|
if (!function_exists('getProfesiDoktor')) {
|
|
function getProfesiDoktor($kddokter){
|
|
global $db;
|
|
$sql = $db->query('SELECT * from m_dokter where KDDOKTER = '.$kddokter);
|
|
if($sql->numRows() > 0){
|
|
$data = $sql->fetchAll();
|
|
$val = $data[0]['KDPROFESI'];
|
|
}else{
|
|
$val = '';
|
|
}
|
|
return $val;
|
|
}
|
|
}
|
|
if (!function_exists('getKodePendaftaran')) {
|
|
function getKodePendaftaran(){
|
|
global $db;
|
|
$sql = $db->query('SELECT * from global_var where var_name = \'tarif_daftar\'');
|
|
if($sql->numRows() > 0){
|
|
$data = $sql->fetchAll();
|
|
$val = $data[0]['var_value'];
|
|
}else{
|
|
$val = '';
|
|
}
|
|
return $val;
|
|
}
|
|
}
|
|
if (!function_exists('getKodeKonsul')) {
|
|
function getKodeKonsul(){
|
|
global $db;
|
|
$sql = $db->query('SELECT * from global_var where var_name = \'tarif_konsul\'');
|
|
if($sql->numRows() > 0){
|
|
$data = $sql->fetchAll();
|
|
$val = $data[0]['var_value'];
|
|
}else{
|
|
$val = '';
|
|
}
|
|
return $val;
|
|
}
|
|
}
|
|
if (!function_exists('getTarifPendaftaran')) {
|
|
function getTarifPendaftaran($kodetarif, $poli = null, $kelas = 3){
|
|
global $db;
|
|
$sql = "SELECT *,(select nilai from m_tarifdetil where komponen like '%SARANA%' and kode_tarif = a.kode_tarif) as jasa_sarana, (select nilai from m_tarifdetil where komponen like '%LAYANAN%' and kode_tarif = a.kode_tarif) as jasa_pelayanan from m_tarif_rs a
|
|
left join m_tarifkelas k on a.kelas_tarif = k.kelas
|
|
left join m_tarifpengguna p on a.kode_tarif = p.kode_tarif
|
|
left join m_unit u on p.pengguna = u.smf
|
|
where a.kode_tarif = '$kodetarif' and a.aktif = 1";
|
|
if($poli != '' || $poli != null) {
|
|
$sql .= " and u.kode_unit = $poli ";
|
|
}
|
|
if($kelas != '' || $poli != null) {
|
|
$sql .= " and k.kokel = $kelas ";
|
|
|
|
}
|
|
$sql .= " limit 1";
|
|
$tarif = $db->query($sql);
|
|
if($tarif->numRows() > 0){
|
|
$data = $tarif->fetchAll();
|
|
$val['kode_tarif'] = $data[0]['kode_tarif'];
|
|
$val['jumlah'] = $data[0]['jumlah'];
|
|
$val['jasa_sarana'] = ($data[0]['jasa_sarana'] == '' || $data[0]['jasa_sarana'] == null) ? 0 : $data[0]['jasa_sarana'];
|
|
$val['jasa_pelayanan'] = ($data[0]['jasa_pelayanan'] == '' || $data[0]['jasa_pelayanan'] == null) ? 0 : $data[0]['jasa_pelayanan'];
|
|
}else{
|
|
$val[] = '';
|
|
}
|
|
return $val;
|
|
}
|
|
}
|
|
if (!function_exists('getLastNoBILL')) {
|
|
function getLastNoBILL($p=0){
|
|
global $db;
|
|
$PRE_NO = $LASTNOBILL = $xLASTNOBILL = null;
|
|
$PRE_NO = date('y');
|
|
$sql = $db->query('SELECT nomor FROM M_MAXNOBILL where type = \'bill_pasien\' and SUBSTRING(nomor::varchar(10),1,2) = \''.$PRE_NO.'\'');
|
|
if($sql->numRows() > 0){
|
|
$row = $sql->fetchAll();
|
|
$LASTNOBILL = $row[0]['nomor']; // 18000002
|
|
|
|
if(substr($LASTNOBILL, 2) == '999999') {
|
|
$xLASTNOBILL = '1'.str_pad('0', 6, '0', STR_PAD_LEFT);
|
|
}
|
|
else {
|
|
if(strlen(substr($LASTNOBILL,2)) < 6) {
|
|
$xLASTNOBILL = str_pad( (substr($LASTNOBILL,2)+$p), 6, '0', STR_PAD_LEFT);
|
|
}
|
|
else {
|
|
$xLASTNOBILL = str_pad( (substr($LASTNOBILL,2)+$p), strlen(substr($LASTNOBILL,2)), '0', STR_PAD_LEFT);
|
|
|
|
}
|
|
}
|
|
|
|
return $PRE_NO.$xLASTNOBILL;
|
|
}
|
|
else {
|
|
return $PRE_NO.'000001';
|
|
}
|
|
}
|
|
}
|
|
if(!function_exists('duplikasi_bill')) {
|
|
function duplikasi_bill($nobill) {
|
|
global $db;
|
|
|
|
$nobill_top = $db->query("SELECT nobill from temp_nobill where nobill = '".$nobill."'");
|
|
if($nobill_top->numRows() > 0) {
|
|
log_message('error','Terdapat nobill yang sama, proses pencarian bill baru...');
|
|
return true;
|
|
}
|
|
else {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
if (!function_exists('getLastNobillNonreg')) {
|
|
function getLastNobillNonreg($p=0){
|
|
global $db;
|
|
$PRE_NO = $LASTNOBILL = $xLASTNOBILL = null;
|
|
$PRE_NO = date('y');
|
|
$sql = $db->query('SELECT nomor FROM M_MAXNOBILL where type = \'bill_nonreg\' and substring(nomor::varchar,1,2) = \''.$PRE_NO.'\'');
|
|
|
|
if($sql->numRows() > 0){
|
|
$row = $sql->fetchAll();
|
|
$LASTNOBILL = $row[0]['nomor']; // 18000002
|
|
|
|
if(substr($LASTNOBILL, 2) == '999999') {
|
|
$xLASTNOBILL = '1'.str_pad('0', 6, '0', STR_PAD_LEFT);
|
|
}
|
|
else {
|
|
if(strlen(substr($LASTNOBILL,2)) < 6) {
|
|
$xLASTNOBILL = str_pad( (substr($LASTNOBILL,2)+$p), 6, '0', STR_PAD_LEFT);
|
|
}
|
|
else {
|
|
$xLASTNOBILL = str_pad( (substr($LASTNOBILL,2)+$p), strlen(substr($LASTNOBILL,2)), '0', STR_PAD_LEFT);
|
|
|
|
}
|
|
}
|
|
|
|
return $PRE_NO.$xLASTNOBILL;
|
|
}
|
|
else {
|
|
return $PRE_NO.'000001';
|
|
}
|
|
}
|
|
}
|
|
if(!function_exists('duplikasi_bill_nonreg')) {
|
|
function duplikasi_bill_nonreg($nobill) {
|
|
global $db;
|
|
|
|
$nobill_top = $db->query("SELECT nobill from temp_nobill_nonreg where nobill = '".$nobill."'");
|
|
if($nobill_top->numRows() > 0) {
|
|
log_message('error','Terdapat nobill yang sama, proses pencarian bill baru...');
|
|
return true;
|
|
}
|
|
else {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
if (!function_exists('getLastIDXDAFTAR')) {
|
|
function getLastIDXDAFTAR($p=0){
|
|
global $db;
|
|
$sql = $db->query('SELECT idxdaftar from t_pendaftaran order by IDXDAFTAR desc limit 1');
|
|
if($sql->numRows() > 0){
|
|
$data = $sql->fetchFirst();
|
|
$no = $data['idxdaftar'] + $p;
|
|
}else{
|
|
$no = 1;
|
|
}
|
|
return $no;
|
|
}
|
|
}
|
|
if (!function_exists('getLastIDXOBATtmp')) {
|
|
function getLastIDXOBATtmp($p=0){
|
|
global $db;
|
|
$sql = $db->query('SELECT IDXOBAT from tmp_cartresep order by IDXOBAT desc limit 1');
|
|
if($sql->numRows() > 0){
|
|
$data = $sql->fetchAll();
|
|
$no = $data[0]['IDXOBAT'] + $p;
|
|
}else{
|
|
$no = 1;
|
|
}
|
|
return $no;
|
|
}
|
|
}
|
|
if (!function_exists('getNamaSMF')) {
|
|
function getNamaSMF($kdpoly = null,$subspesialis = null){
|
|
global $db;
|
|
if($kdpoly != null){
|
|
$tmp_ruang = $db->query("SELECT kdunit from m_ruang where no = ".$kdpoly);
|
|
$unit_klinik = $tmp_ruang->fetchFirst()['kdunit'];
|
|
}
|
|
else {
|
|
$unit_klinik = $subspesialis;
|
|
}
|
|
$sql = $db->query('SELECT nama_unit from m_unit where kode_unit = '.$unit_klinik);
|
|
if($sql->numRows() > 0){
|
|
$data = $sql->fetchAll();
|
|
$v = 'Daftar Tindakan Poliklinik '.$data[0]['nama_unit'];
|
|
}else{
|
|
$v = 'Daftar Tindakan Lain Lain';
|
|
}
|
|
return $v;
|
|
}
|
|
}
|
|
if (!function_exists('getGroupUnit')) {
|
|
function getGroupUnit($val){
|
|
global $db;
|
|
$sql = $db->query('SELECT * from m_unit where kode_unit = '.$val);
|
|
if($sql->numRows() > 0){
|
|
$data = $sql->fetchAll();
|
|
$v = $data[0]['grup_unit'];
|
|
}else{
|
|
$v = 1;
|
|
}
|
|
return $v;
|
|
}
|
|
}
|
|
if (!function_exists('check_t_bayarrajal')) {
|
|
function check_t_bayarrajal($nomr,$idxdaftar){
|
|
global $db;
|
|
$sql = $db->query('SELECT * from t_bayarrajal where IDXDAFTAR = "'.$idxdaftar.'" and NOMR = "'.$nomr.'" ORDER BY NOBILL DESC LIMIT 1');
|
|
$data = $sql->fetchAll();
|
|
return $data[0];
|
|
}
|
|
}
|
|
if (!function_exists('check_t_bayarranap')) {
|
|
function check_t_bayarranap($nomr,$idxdaftar){
|
|
global $db;
|
|
$sql = $db->query('SELECT * from t_bayarranap where IDXDAFTAR = "'.$idxdaftar.'" and NOMR = "'.$nomr.'"');
|
|
$data = $sql->fetchAll();
|
|
return $data[0];
|
|
}
|
|
}
|
|
if (!function_exists('check_rajal_ranap_status_operasi')) {
|
|
function check_rajal_ranap_status_operasi($select="*",$id){
|
|
global $db;
|
|
$sql = $db->query('SELECT '.$select.' from t_operasi where id_operasi = '.$id);
|
|
$data = $sql->fetchAll();
|
|
return $data[0];
|
|
}
|
|
}
|
|
if (!function_exists('getNamaDokter')) {
|
|
function getNamaDokter($kddokter){
|
|
global $db;
|
|
$sql = $db->query('SELECT * from m_dokter where KDDOKTER = '.$kddokter);
|
|
$data = $sql->fetchAll();
|
|
return $data[0];
|
|
}
|
|
}
|
|
if (!function_exists('getTarif')) {
|
|
function getTarif($kode){
|
|
global $db;
|
|
$sql = $db->query("SELECT *,(select nilai from m_tarifdetil where komponen like '%SARANA%' and kode_tarif = a.kode_tarif) as jasa_sarana, (select nilai from m_tarifdetil where komponen like '%LAYANAN%' and kode_tarif = a.kode_tarif) as jasa_pelayanan, (select nilai from m_tarifdetil where komponen like '%ANASTESI%' and kode_tarif = a.kode_tarif) as jasa_anastesi from m_tarif_rs a
|
|
join m_tarifkelas k on a.kelas_tarif = k.kelas
|
|
left join m_tarifpengguna p on a.kode_tarif = p.kode_tarif
|
|
left join m_unit u on p.pengguna = u.smf
|
|
where a.kode_tarif = '$kode' and a.aktif = 1");
|
|
$data = $sql->fetchAll()[0];
|
|
return $data;
|
|
}
|
|
}
|
|
if (!function_exists('TrimArray')) {
|
|
function TrimArray($Input){
|
|
if (!is_array($Input))
|
|
return trim($Input);
|
|
return array_map('TrimArray', $Input);
|
|
}
|
|
}
|
|
if (!function_exists('getKecamatanName')) {
|
|
function getKecamatanName($id){
|
|
global $db;
|
|
$sql = $db->query('SELECT * from m_kecamatan where idkecamatan = '.$id);
|
|
if($sql->numRows() > 0){
|
|
$data = $sql->fetchAll();
|
|
$val = $data[0]['namakecamatan'];
|
|
}else{
|
|
$val = '';
|
|
}
|
|
return $val;
|
|
}
|
|
}
|
|
if (!function_exists('getdaftar')) {
|
|
function getdaftar($nomr){
|
|
global $db;
|
|
$sql = $db->query('SELECT idxdaftar from t_pendaftaran where KDPOLY ="10" and NOMR = "'.$nomr.'" order by IDXDAFTAR desc limit 1');
|
|
$data2 = $sql->fetchAll();
|
|
$data = $data2[0]['idxdaftar'];
|
|
return $data;
|
|
}
|
|
}
|
|
if (!function_exists('no_rm_billing')) {
|
|
function no_rm_billing($no_terakhir)
|
|
{
|
|
$xLastno = $no_terakhir;
|
|
$xLastnoreg = '';
|
|
|
|
if($xLastno == NULL)
|
|
{
|
|
$xLastnoreg = 1;
|
|
}
|
|
else {
|
|
$xLastnoreg = $xLastno + 1;
|
|
}
|
|
|
|
$xPanjange = strlen(ltrim($xLastnoreg));
|
|
|
|
$xNOLkiup = (8-$xPanjange > 0) ? str_repeat('0', 8 - $xPanjange) : '';
|
|
|
|
if($xPanjange < 8)
|
|
{
|
|
$xLastnoreg = $xNOLkiup . ltrim($xLastnoreg);
|
|
}
|
|
else {
|
|
$xLastnoreg = ltrim($xLastnoreg);
|
|
}
|
|
|
|
return $xLastnoreg;
|
|
}
|
|
}
|
|
if (!function_exists("GetSQLValueString")) {
|
|
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
|
|
{
|
|
global $db;
|
|
global $logger;
|
|
|
|
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
|
|
$theValue = $db->escape($theValue);
|
|
|
|
switch ($theType) {
|
|
case "text":
|
|
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
|
|
break;
|
|
case "long":
|
|
case "int":
|
|
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
|
|
break;
|
|
case "double":
|
|
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
|
|
break;
|
|
case "date":
|
|
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
|
|
break;
|
|
case "defined":
|
|
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
|
|
break;
|
|
}
|
|
return $theValue;
|
|
}
|
|
}
|
|
if(!function_exists('get_antrian_poli')) {
|
|
function get_antrian_poli($poli) {
|
|
global $db;
|
|
$count = 'SELECT count(IDXDAFTAR) as antrian FROM t_pendaftaran where KDPOLY = '.$poli.' and TGLREG = \''.date('Y-m-d').'\'';
|
|
$dt_antri = $db->query($count)->fetchFirst();
|
|
$no_antri = '';
|
|
if(!empty($dt_antri)) {
|
|
$no_antri = $dt_antri['antrian']+1;
|
|
}
|
|
else {
|
|
$no_antri = 1;
|
|
}
|
|
return str_pad($no_antri, 3, '0', STR_PAD_LEFT);
|
|
}
|
|
}
|
|
|
|
if(!function_exists('get_no_kunjungan')) {
|
|
function get_no_kunjungan() {
|
|
global $db;
|
|
$count = 'SELECT count(IDXDAFTAR) as no FROM t_pendaftaran where tglreg = \''.date('Y-m-d').'\'';
|
|
$dt_kunjungan = $db->query($count)->fetchFirst();
|
|
$no_kunjungan = '';
|
|
if(!empty($dt_kunjungan)) {
|
|
$no_kunjungan = $dt_kunjungan['no']+1;
|
|
}
|
|
else {
|
|
$no_kunjungan = 1;
|
|
}
|
|
return $no_kunjungan;
|
|
}
|
|
}
|
|
// DATABASE HELPER
|
|
if (!function_exists('execute')) {
|
|
function execute($sql_queries,$enable_log = TRUE, $use_multiquery = FALSE)
|
|
{
|
|
global $db;
|
|
global $logger;
|
|
// include 'connect.php';
|
|
|
|
try {
|
|
|
|
$str_query = $sql_queries;
|
|
|
|
if($use_multiquery == TRUE)
|
|
{
|
|
/*
|
|
$uri = $_SERVER['REQUEST_URI'];
|
|
|
|
$protocol = ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
|
|
|
|
$url = $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
|
|
|
|
$query = $_SERVER['QUERY_STRING'];
|
|
|
|
if(!empty($_SERVER['HTTP_CLIENT_IP'])) {
|
|
$ip=$_SERVER['HTTP_CLIENT_IP']; // share internet
|
|
} elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
|
|
$ip=$_SERVER['HTTP_X_FORWARDED_FOR']; // pass from proxy
|
|
} else {
|
|
$ip=$_SERVER['REMOTE_ADDR'];
|
|
}
|
|
if($enable_log == TRUE){
|
|
$logger->addInfo($str_query,[$_SESSION['NAMA_PEGAWAI'],$url,$query,$ip]);
|
|
}
|
|
*/
|
|
$result_set = array();
|
|
/*
|
|
// execute multi query with mysqli_multi_query
|
|
if (mysqli_multi_query($connect, $str_query)) {
|
|
$i = 0;
|
|
do {
|
|
if ($result[$i] = mysqli_store_result($connect)) {
|
|
$j = 0;
|
|
while($result_set[$i][$j] = mysqli_fetch_array($result[$i])) {
|
|
$j++;
|
|
}
|
|
mysqli_free_result($result[$i]);
|
|
}
|
|
mysqli_more_results($connect);
|
|
$i++;
|
|
} while (mysqli_more_results($connect) && mysqli_next_result($connect));
|
|
}
|
|
*/
|
|
// get all query
|
|
$multi_query = explode(";", $str_query);
|
|
$i = 0;
|
|
foreach($multi_query as $single)
|
|
{
|
|
if(preg_match("/^SELECT/", trim($single)) ) {
|
|
$result_set[$i] = $db->query(trim($single))->fetchAll();
|
|
}
|
|
else {
|
|
$db->debugging = TRUE;
|
|
$result_set[$i] = $db->query(trim($single));
|
|
$db->debugging = FALSE;
|
|
}
|
|
}
|
|
$execute = $result_set;
|
|
}
|
|
else {
|
|
$db->debugging = TRUE;
|
|
$execute = $db->query($str_query);
|
|
$db->debugging = FALSE;
|
|
}
|
|
return $execute;
|
|
}
|
|
catch(Exception $e) {
|
|
return $e->getMessage();
|
|
}
|
|
}
|
|
}
|
|
|
|
// FORM HELPER
|
|
/**
|
|
* Drop-down Menu
|
|
*
|
|
* @access public
|
|
* @param string
|
|
* @param array
|
|
* @param string
|
|
* @param string
|
|
* @return string
|
|
*/
|
|
if ( ! function_exists('form_dropdown'))
|
|
{
|
|
function form_dropdown($name = '', $options = array(), $selected = array(), $extra = '', $callback = null)
|
|
{
|
|
if ( ! is_array($selected))
|
|
{
|
|
$selected = array($selected);
|
|
}
|
|
// If no selected state was submitted we will attempt to set it automatically
|
|
if (count($selected) === 0)
|
|
{
|
|
// If the form name appears in the $_POST array we have a winner!
|
|
if (isset($_POST[$name]))
|
|
{
|
|
$selected = array($_POST[$name]);
|
|
}
|
|
}
|
|
if ($extra != '') $extra = ' '.$extra;
|
|
$multiple = (count($selected) > 1 && strpos($extra, 'multiple') === FALSE) ? ' multiple="multiple"' : '';
|
|
$form = '<select name="'.$name.'"'.$extra.$multiple.">\n";
|
|
foreach ($options as $key => $val)
|
|
{
|
|
$key = (string) $key;
|
|
if (is_array($val) && ! empty($val))
|
|
{
|
|
$form .= '<optgroup label="'.$key.'">'."\n";
|
|
foreach ($val as $optgroup_key => $optgroup_val)
|
|
{
|
|
$sel = (in_array($optgroup_key, $selected)) ? ' selected="selected"' : '';
|
|
$form .= '<option value="'.$optgroup_key.'"'.$sel.'>'.(string) $optgroup_val."</option>\n";
|
|
}
|
|
$form .= '</optgroup>'."\n";
|
|
}
|
|
else
|
|
{
|
|
$val = ($callback != '') ? $callback($val) : $val;
|
|
$sel = (in_array($key, $selected)) ? ' selected="selected"' : '';
|
|
$form .= '<option value="'.$key.'"'.$sel.'>'.(string) $val."</option>\n";
|
|
}
|
|
}
|
|
$form .= '</select>';
|
|
return $form;
|
|
}
|
|
}
|
|
if ( ! function_exists('form_input_radio'))
|
|
{
|
|
function form_input_radio($name = '', $options = array(), $selected = array(), $extra = '', $wrapper_class = 'form-check form-check-inline', $callback = null)
|
|
{
|
|
if ( ! is_array($selected))
|
|
{
|
|
$selected = array($selected);
|
|
}
|
|
// If no selected state was submitted we will attempt to set it automatically
|
|
if (count($selected) === 0)
|
|
{
|
|
// If the form name appears in the $_POST array we have a winner!
|
|
if (isset($_POST[$name]))
|
|
{
|
|
$selected = array($_POST[$name]);
|
|
}
|
|
}
|
|
// if ($extra != '') $extra = ' '.$extra;
|
|
$multiple = (count($selected) > 1 && strpos($extra, 'multiple') === FALSE) ? ' multiple="multiple"' : '';
|
|
$form = '';
|
|
foreach ($options as $key => $val)
|
|
{
|
|
$key = (string) $key;
|
|
if (is_array($val) && ! empty($val))
|
|
{
|
|
$form .= '<optgroup label="'.$key.'">'."\n";
|
|
foreach ($val as $optgroup_key => $optgroup_val)
|
|
{
|
|
$sel = (in_array($optgroup_key, $selected)) ? ' selected="selected"' : '';
|
|
$form .= '<option value="'.$optgroup_key.'"'.$sel.'>'.(string) $optgroup_val."</option>\n";
|
|
}
|
|
$form .= '</optgroup>'."\n";
|
|
}
|
|
else
|
|
{
|
|
$sel = (in_array($key, $selected)) ? ' checked="checked"' : '';
|
|
$id = preg_replace("/[ ]/", '', $val);
|
|
$val = ($callback != '') ? $callback($val) : $val;
|
|
$form .= '<div class="'.$wrapper_class.'">';
|
|
$form .= '<input type="radio" name="'.$name.'" id="'.$extra.'_'.$id.'" class="form-check-input" '.$sel.' value="'.$val.'">
|
|
<label class="form-check-label" for="'.$extra.'_'.$id.'">
|
|
'.$val.'
|
|
</label>';
|
|
$form .= '</div>';
|
|
}
|
|
}
|
|
return $form;
|
|
}
|
|
}
|
|
if ( ! function_exists('form_input'))
|
|
{
|
|
function form_input($name = '', $value = '', $extra = '')
|
|
{
|
|
$form = '<input type="text" name="'.$name.'" value="'.$value.'" '.$extra.'>';
|
|
return $form;
|
|
}
|
|
}
|
|
if ( ! function_exists('form_number'))
|
|
{
|
|
function form_number($name = '', $value = '', $extra = '')
|
|
{
|
|
$form = '<input type="number" name="'.$name.'" value="'.$value.'" '.$extra.'>';
|
|
return $form;
|
|
}
|
|
}
|
|
if ( ! function_exists('form_textarea'))
|
|
{
|
|
function form_textarea($name = '', $value = '', $extra = '')
|
|
{
|
|
$form = '<textarea name="'.$name.'" '.$extra.'>'.$value.'</textarea>';
|
|
return $form;
|
|
}
|
|
}
|
|
if ( ! function_exists('form_file'))
|
|
{
|
|
function form_file($name = '', $value = '', $extra = '')
|
|
{
|
|
$form = '<input type="file" name="'.$name.'" value="'.$value.'" '.$extra.'>';
|
|
return $form;
|
|
}
|
|
}
|
|
if ( ! function_exists('form_input_checkbox'))
|
|
{
|
|
function form_input_checkbox($name = '', $options = array(), $selected = array(), $extra = '',$wrapper_class = 'form-check form-check-inline')
|
|
{
|
|
if ( ! is_array($selected))
|
|
{
|
|
$selected = array($selected);
|
|
}
|
|
// If no selected state was submitted we will attempt to set it automatically
|
|
if (count($selected) === 0)
|
|
{
|
|
// If the form name appears in the $_POST array we have a winner!
|
|
if (isset($_POST[$name]))
|
|
{
|
|
$selected = array($_POST[$name]);
|
|
}
|
|
}
|
|
// if ($extra != '') $extra = ' '.$extra;
|
|
$multiple = (count($selected) > 1 && strpos($extra, 'multiple') === FALSE) ? ' multiple="multiple"' : '';
|
|
$form = '';
|
|
foreach ($options as $key => $val)
|
|
{
|
|
$key = (string) $key;
|
|
if (is_array($val) && ! empty($val))
|
|
{
|
|
$form .= '<optgroup label="'.$key.'">'."\n";
|
|
foreach ($val as $optgroup_key => $optgroup_val)
|
|
{
|
|
$sel = (in_array($optgroup_key, $selected)) ? ' selected="selected"' : '';
|
|
$form .= '<option value="'.$optgroup_key.'"'.$sel.'>'.(string) $optgroup_val."</option>\n";
|
|
}
|
|
$form .= '</optgroup>'."\n";
|
|
}
|
|
else
|
|
{
|
|
$sel = (in_array($val, $selected)) ? ' checked="checked"' : '';
|
|
$id = preg_replace("/[ ]/", '', $val);
|
|
$form .= '<div class="'.$wrapper_class .'">';
|
|
$form .= '<input type="checkbox" name="'.$name.'" id="'.$extra.'_'.$id.'" class="form-check-input" '.$sel.' value="'.$val.'">
|
|
<label class="form-check-label" for="'.$extra.'_'.$id.'">
|
|
'.$val.'
|
|
</label>';
|
|
$form .= '</div>';
|
|
}
|
|
}
|
|
return $form;
|
|
}
|
|
}
|
|
// FILE HELPER
|
|
/**
|
|
* Read File
|
|
*
|
|
* Opens the file specfied in the path and returns it as a string.
|
|
*
|
|
* @access public
|
|
* @param string path to file
|
|
* @return string
|
|
*/
|
|
if ( ! function_exists('read_file'))
|
|
{
|
|
function read_file($file)
|
|
{
|
|
if ( ! file_exists($file))
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
if (function_exists('file_get_contents'))
|
|
{
|
|
return file_get_contents($file);
|
|
}
|
|
|
|
if ( ! $fp = @fopen($file, FOPEN_READ))
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
flock($fp, LOCK_SH);
|
|
|
|
$data = '';
|
|
if (filesize($file) > 0)
|
|
{
|
|
$data =& fread($fp, filesize($file));
|
|
}
|
|
|
|
flock($fp, LOCK_UN);
|
|
fclose($fp);
|
|
|
|
return $data;
|
|
}
|
|
}
|
|
|
|
// SIMRS SNIPPET
|
|
if (!function_exists('last_nolab')) {
|
|
function last_nolab($lab_code){
|
|
global $db;
|
|
if($lab_code == $_SESSION['kd_unit_lab_pk'])
|
|
{
|
|
$sql = "SELECT distinct nolab FROM t_orderlabpk_main WHERE nolab LIKE '".$lab_code.date('ym')."%' ORDER BY nolab DESC LIMIT 1";
|
|
}
|
|
elseif($lab_code == $_SESSION['kd_unit_lab_mikro'])
|
|
{
|
|
$sql = "SELECT distinct nolab FROM t_orderlabmikro_main WHERE nolab LIKE '".$lab_code.date('ym')."%' ORDER BY nolab DESC LIMIT 1";
|
|
}
|
|
elseif($lab_code == $_SESSION['kd_unit_lab_pa'])
|
|
{
|
|
$sql = "SELECT distinct noreglab FROM t_orderlabpa_main WHERE noreglab LIKE '".$lab_code.date('ym')."%' ORDER BY noreglab DESC LIMIT 1";
|
|
}
|
|
elseif($lab_code == $_SESSION['kd_unit_rtindakan'])
|
|
{
|
|
$sql = "SELECT distinct noorder FROM t_ordertindakan_main WHERE noorder LIKE '".$lab_code.date('ym')."%' ORDER BY noorder DESC LIMIT 1";
|
|
}
|
|
elseif($lab_code == $_SESSION['kd_unit_lab_darah'])
|
|
{
|
|
$sql = "SELECT distinct no_form FROM t_orderlabdarah_main WHERE no_form LIKE '".$lab_code.date('ym')."%' ORDER BY no_form DESC LIMIT 1";
|
|
}
|
|
elseif($lab_code == $_SESSION['kd_unit_kendaraan'])
|
|
{
|
|
$sql = "SELECT distinct noorder FROM t_orderambulance_main WHERE noorder LIKE '".$lab_code.date('ym')."%' ORDER BY noorder DESC LIMIT 1";
|
|
}
|
|
elseif($lab_code == $_SESSION['kd_unit_forensik'])
|
|
{
|
|
$sql = "SELECT distinct noorder FROM t_orderrjenazah_main WHERE noorder LIKE '".$lab_code.date('ym')."%' ORDER BY noorder DESC LIMIT 1";
|
|
}
|
|
elseif($lab_code == $_SESSION['kd_unit_rehabmedik'])
|
|
{
|
|
$sql = "SELECT distinct nolab FROM t_orderrehabmedik_main WHERE nolab LIKE '".$lab_code.date('ym')."%' ORDER BY nolab DESC LIMIT 1";
|
|
}
|
|
elseif($lab_code == 15) // kamar operasi
|
|
{
|
|
$sql = "SELECT distinct kode_booking FROM t_kamar_operasi WHERE kode_booking LIKE '".$lab_code.date('ym')."%' ORDER BY kode_booking DESC LIMIT 1";
|
|
}
|
|
$sql = $db->query($sql);
|
|
$PRE_NO = $LASTNOLAB = $xLASTNOLAB = null;
|
|
$PRE_NO = $lab_code.date('ym');
|
|
if($sql->numRows() > 0)
|
|
{
|
|
$row = $sql->fetchAll();
|
|
if($lab_code == $_SESSION['kd_unit_lab_pa']){
|
|
$LASTNOLAB = $row[0]['noreglab'];
|
|
}
|
|
elseif($lab_code == $_SESSION['kd_unit_rtindakan']) {
|
|
$LASTNOLAB = $row[0]['noorder'];
|
|
}
|
|
elseif($lab_code == $_SESSION['kd_unit_lab_darah']) {
|
|
$LASTNOLAB = $row[0]['no_form'];
|
|
}
|
|
elseif($lab_code == $_SESSION['kd_unit_kendaraan']) {
|
|
$LASTNOLAB = $row[0]['noorder'];
|
|
}
|
|
elseif($lab_code == $_SESSION['kd_unit_forensik']) {
|
|
$LASTNOLAB = $row[0]['noorder'];
|
|
}
|
|
elseif($lab_code == 15) {
|
|
$LASTNOLAB = $row[0]['kode_booking'];
|
|
}
|
|
else {
|
|
$LASTNOLAB = $row[0]['nolab']; // 1618000001
|
|
}
|
|
|
|
if(substr($LASTNOLAB, 6) == '999999') {
|
|
$xLASTNOLAB = '1'.str_pad('0', 6, '0', STR_PAD_LEFT);
|
|
}
|
|
else {
|
|
if(strlen(substr($LASTNOLAB,6)) < 6) {
|
|
$xLASTNOLAB = str_pad( (substr($LASTNOLAB,6)+1), 6, '0', STR_PAD_LEFT);
|
|
}
|
|
else {
|
|
$xLASTNOLAB = str_pad( (substr($LASTNOLAB,6)+1), strlen(substr($LASTNOLAB,6)), '0', STR_PAD_LEFT);
|
|
|
|
}
|
|
}
|
|
|
|
return $PRE_NO.$xLASTNOLAB;
|
|
}
|
|
else {
|
|
return $PRE_NO.'000001';
|
|
}
|
|
}
|
|
}
|
|
if (!function_exists('last_noFilmRadiologi')) {
|
|
function last_noFilmRadiologi(){
|
|
global $db;
|
|
|
|
$sql = $db->query("SELECT nofilm FROM t_orderradiologi_main WHERE nofilm LIKE '".date('ym')."%' ORDER BY IDXPKRAD DESC LIMIT 1");
|
|
|
|
$PRE_NO = $LASTNOLAB = $xLASTNOLAB = null;
|
|
$PRE_NO = date('ym');
|
|
if($sql->numRows() > 0)
|
|
{
|
|
$row = $sql->fetchAll();
|
|
$LASTNOLAB = $row[0]['nofilm']; // 1904000001
|
|
|
|
if(substr($LASTNOLAB, 4) == '999999') {
|
|
$xLASTNOLAB = '1'.str_pad('0', 6, '0', STR_PAD_LEFT);
|
|
}
|
|
else {
|
|
if(strlen(substr($LASTNOLAB,4)) < 6) {
|
|
$xLASTNOLAB = str_pad( (substr($LASTNOLAB,4)+1), 6, '0', STR_PAD_LEFT);
|
|
}
|
|
else {
|
|
$xLASTNOLAB = str_pad( (substr($LASTNOLAB,4)+1), strlen(substr($LASTNOLAB,4)), '0', STR_PAD_LEFT);
|
|
|
|
}
|
|
}
|
|
|
|
return $PRE_NO.$xLASTNOLAB;
|
|
}
|
|
else {
|
|
return $PRE_NO.'000001';
|
|
}
|
|
}
|
|
}
|
|
if(!function_exists('preview_lap'))
|
|
{
|
|
function preview_lap($args,$temp_file = NULL,$is_pdf = FALSE)
|
|
{
|
|
if($temp_file == NULL) {
|
|
$temp_file = 'laporan_temp.php';
|
|
}
|
|
$report_template = read_file($temp_file);
|
|
$image_path = ($is_pdf) ? _BASE_.'assets/images/kop_header.jpeg' : _BASE_.'assets/images/kop_header.jpeg';
|
|
$args['title'] = array_key_exists('title', $args) ? $args['title'] : 'Laporan';
|
|
$args['style'] = array_key_exists('style', $args) ? $args['style'] : '';
|
|
$args['header'] = array_key_exists('header', $args) ? '<img src="'.$image_path.'"><br>'.$args['header'] : '<img src="'.$image_path.'">';
|
|
$args['subheader'] = array_key_exists('subheader', $args) ? $args['subheader'] : '';
|
|
$args['headertambahan'] = array_key_exists('headertambahan', $args) ? $args['headertambahan'] : '';
|
|
$args['table_list1'] = array_key_exists('table_list1', $args) ? $args['table_list1'] : '<!--';
|
|
$args['table_list2'] = array_key_exists('table_list2', $args) ? $args['table_list2'] : '-->';
|
|
$args['html_list'] = array_key_exists('html_list', $args) ? $args['html_list'] : 'Test';
|
|
|
|
$html = preg_replace("/\{\{title\}\}/", $args['title'], $report_template);
|
|
$html = preg_replace("/\{\{style\}\}/", $args['style'], $html);
|
|
$html = preg_replace("/\{\{header\}\}/", $args['header'], $html);
|
|
$html = preg_replace("/\{\{subheader\}\}/", $args['subheader'], $html);
|
|
$html = preg_replace("/\{\{headertambahan\}\}/", $args['headertambahan'], $html);
|
|
$html = preg_replace("/\{\{table_list1\}\}/", $args['table_list1'], $html);
|
|
$html = preg_replace("/\{\{table_list2\}\}/", $args['table_list2'], $html);
|
|
$html = preg_replace("/\{\{html_list\}\}/", $args['html_list'], $html);
|
|
|
|
|
|
return $html;
|
|
}
|
|
}
|
|
if(!function_exists('getSMF'))
|
|
{
|
|
function getSMF($kode_unit)
|
|
{
|
|
global $db;
|
|
$get_subs = $db->query("SELECT nama_unit,have_subspesialis from m_unit where kode_unit = ".$kode_unit);
|
|
if($get_subs->numRows() > 0) {
|
|
$first_row = $get_subs->fetchFirst();
|
|
if($first_row['have_subspesialis'] == 1) {
|
|
$tmp_smf = $db->query("SELECT * from m_unit where pendapatan_unit like '%{$first_row['nama_unit']}%' and smf is not null;");
|
|
}
|
|
else {
|
|
$tmp_smf = $db->query("SELECT * from m_unit where kode_unit = ".$kode_unit);
|
|
}
|
|
}
|
|
|
|
if($tmp_smf->numRows() > 0)
|
|
{
|
|
$arr_result = [];
|
|
foreach($tmp_smf->fetchAll() as $data){
|
|
$arr_result[] = $data['smf'];
|
|
$arr_result[] = $data['kel_smf_tarif'];
|
|
}
|
|
return implode('\',\'', $arr_result);
|
|
}
|
|
else {
|
|
return false;
|
|
}
|
|
}
|
|
}
|
|
if (!function_exists('getTarifById')) {
|
|
function getTarifById($id){
|
|
global $db;
|
|
$sql = $db->query("SELECT *,(select nilai from m_tarifdetil where komponen like '%SARANA%' and kode_tarif = a.kode_tarif) as jasa_sarana, (select nilai from m_tarifdetil where komponen like '%LAYANAN%' and kode_tarif = a.kode_tarif) as jasa_pelayanan, (select nilai from m_tarifdetil where komponen like '%ANASTESI%' and kode_tarif = a.kode_tarif) as jasa_anastesi from m_tarif_rs a
|
|
where a.id_tarif = $id and a.aktif = 1");
|
|
|
|
if($sql->numRows() > 0){
|
|
$data = $sql->fetchAll();
|
|
return $data[0];
|
|
}else{
|
|
$val = false;
|
|
}
|
|
return $val;
|
|
}
|
|
}
|
|
if(!function_exists('get_data_table')) {
|
|
function get_data_table($param = array())
|
|
{
|
|
global $db;
|
|
global $logger;
|
|
|
|
$limit = ""; // Paging
|
|
if ( isset( $param['get']['start'] ) && $param['get']['length'] != '-1' ){
|
|
$limit = "LIMIT ".$param['get']['length']." OFFSET ".$param['get']['start'];
|
|
}
|
|
|
|
// Ordering
|
|
$sOrder = "";
|
|
if($param['order'] == '') {
|
|
if ( isset( $param['get']['order'][0]['column'] ) ){
|
|
$sOrder = "ORDER BY ";
|
|
for ( $i=0 ; $i < count( $param['get']['columns'] ) ; $i++ ) {
|
|
if ( $param['get']['columns'][$i]['orderable'] == TRUE ) {
|
|
$sOrder .= $param['get']['columns'][$i]['name'].", ";
|
|
}
|
|
}
|
|
|
|
$sOrder = substr_replace( $sOrder, "", -2 );
|
|
if ( $sOrder == "ORDER BY" ) {
|
|
$sOrder = "";
|
|
}
|
|
}
|
|
}
|
|
else {
|
|
$sOrder = $param['order'];
|
|
}
|
|
|
|
/*
|
|
* Filtering
|
|
* NOTE this does not match the built-in DataTables filtering which does it
|
|
* word by word on any field. It's possible to do here, but concerned about efficiency
|
|
* on very large tables, and MySQL's regex functionality is very limited
|
|
*/
|
|
$sWhere = "";
|
|
if ( isset($param['get']['search']['value']) && $param['get']['search']['value'] != "" )
|
|
{
|
|
$sWhere = "WHERE (";
|
|
for ( $i=0 ; $i<count($param['get']['columns']) ; $i++ )
|
|
{
|
|
// $logger->addInfo("searchable col $i = ".$param['get']['columns'][$i]['searchable']);
|
|
if ($param['get']['columns'][$i]['searchable'] == "true") {
|
|
if(_DBTYPE_ == 'mysqli') {
|
|
$col_name = change_where_column($param['aColumns'][$i]);
|
|
$operator = 'LIKE';
|
|
}
|
|
else {
|
|
$col_name = change_where_column($param['aColumns'][$i]);
|
|
$col_name = ($param['column_type'][$i] == 1) ? $col_name.'::text' : $col_name;
|
|
$operator = 'ILIKE';
|
|
}
|
|
$sWhere .= $col_name." $operator '%".$param['get']['search']['value']."%' OR ";
|
|
}
|
|
}
|
|
$sWhere = substr_replace( $sWhere, "", -3 );
|
|
$sWhere .= ')';
|
|
}
|
|
|
|
// Individual column filtering
|
|
for ( $i=0 ; $i<count($param['get']['columns']) ; $i++ )
|
|
{
|
|
if ( isset($param['get']['columns'][$i]['searchable']) && $param['get']['columns'][$i]['searchable'] == "true" && $param['get']['columns'][$i]['search']['value'] != '' )
|
|
{
|
|
$sWhere = ($sWhere == "") ? "WHERE " : $sWhere." AND ";
|
|
if(preg_match("/tgl/", $param['get']['columns'][$i]['name'])) {
|
|
$sWhere .= $param['get']['columns'][$i]['name']."::varchar(16) ILIKE '%".$param['get']['columns'][$i]['search']['value']."%' ";
|
|
}
|
|
else {
|
|
$sWhere .= $param['get']['columns'][$i]['name']." ILIKE '%".$param['get']['columns'][$i]['search']['value']."%' ";
|
|
}
|
|
}
|
|
}
|
|
|
|
// filter manual
|
|
if ($param["filter"] != ""){
|
|
$sWhere .= ($sWhere == "") ? "WHERE " : " AND ";
|
|
$sWhere .= $param["filter"];
|
|
}
|
|
else {
|
|
// $fields = $this->db->list_fields($param['table_name']);
|
|
// if (in_array('is_deleted', $fields)){
|
|
// $sWhere .= ($sWhere == "") ? "WHERE " : " AND ";
|
|
// $sWhere .= " ".$param['table_name'].".is_deleted = 0";
|
|
// }
|
|
}
|
|
|
|
// SQL queries Get data to display
|
|
// ditambah distinct karena ada data yang double setelah dilakukan join
|
|
$sJoin = (array_key_exists("sJoin", $param) && $param["sJoin"] != '') ? $param["sJoin"] : "";
|
|
$sQuery = "SELECT ".str_replace(" , ", " ", implode(", ", $param['aColumns']))."
|
|
FROM ".$param['table_name']."
|
|
$sJoin
|
|
$sWhere
|
|
$sOrder
|
|
$limit";
|
|
|
|
$sQuery2 = "SELECT count(".$param['sIndexColumn'].") as rows
|
|
FROM ".$param['table_name']."
|
|
$sJoin
|
|
$sWhere
|
|
";
|
|
|
|
$sQuery3 = "SELECT COUNT(".$param['sIndexColumn'].") as jmlrow
|
|
FROM ".$param['table_name']."
|
|
$sJoin
|
|
";
|
|
|
|
$rResult = $db->query($sQuery)->fetchAll();
|
|
|
|
/* Data set length after filtering */
|
|
|
|
$rResultFilterTotal = $db->query($sQuery2);
|
|
$arrFilteredTotal = $rResultFilterTotal->fetchAll()[0];
|
|
$iFilteredTotal = $arrFilteredTotal['rows'];
|
|
|
|
/* Total data set length */
|
|
|
|
$rResultTotal = $db->query($sQuery3);
|
|
$arrTotal = $rResultTotal->fetchAll()[0];
|
|
$iTotal = $arrTotal['jmlrow'];
|
|
|
|
return array(
|
|
"data" => $rResult,
|
|
"recordsTotal" => $iTotal,
|
|
"recordsFiltered" => $iFilteredTotal
|
|
);
|
|
}
|
|
|
|
function change_column($column_name)
|
|
{
|
|
// Spesial treatment to show row data
|
|
if (preg_match("/\./", $column_name))
|
|
{
|
|
$exp_column_name = explode(".",$column_name);
|
|
$column_name = end($exp_column_name);
|
|
}
|
|
if (preg_match("/ as /i", $column_name))
|
|
{
|
|
$exp_column_name = explode(" as ",$column_name);
|
|
$column_name = end($exp_column_name);
|
|
}
|
|
return $column_name;
|
|
}
|
|
|
|
function change_where_column($column_name)
|
|
{
|
|
// Spesial treatment to show row data
|
|
if (preg_match("/ as /i", $column_name))
|
|
{
|
|
$exp_column_name = explode(" as ",$column_name);
|
|
$column_name = end($exp_column_name);
|
|
}
|
|
elseif(preg_match("/tgl/", $column_name)) {
|
|
$column_name = $column_name.'::varchar(10)';
|
|
}
|
|
return $column_name;
|
|
}
|
|
|
|
function change_value($column_name, $column_value)
|
|
{
|
|
$column_value = preg_replace('/[\x00-\x08\x10\x0B\x0C\x0E-\x19\x7F]'.
|
|
'|[\x00-\x7F][\x80-\xBF]+'.
|
|
'|([\xC0\xC1]|[\xF0-\xFF])[\x80-\xBF]*'.
|
|
'|[\xC2-\xDF]((?![\x80-\xBF])|[\x80-\xBF]{2,})'.
|
|
'|[\xE0-\xEF](([\x80-\xBF](?![\x80-\xBF]))|(?![\x80-\xBF]{2})|[\x80-\xBF]{3,})/S',
|
|
'?', $column_value );
|
|
if ($column_name == 'icon') $result = '<span class="'.$column_value.'" style="font-size:12pt;"></span>';
|
|
elseif (preg_match("/(biaya)|(total)|(bayar)|debet|kredit|saldo|db|cr|profit/", $column_name)) {
|
|
$column_value = floatval($column_value);
|
|
$result = curformat($column_value);
|
|
}
|
|
elseif (preg_match("/_availability/", $column_name)) $result = ($column_value == 1) ? '<span class="label label-success">Ya</span>' : '<span class="label label-danger">Tidak</span>';
|
|
else $result = $column_value;
|
|
return $result;
|
|
}
|
|
}
|
|
|
|
if (!function_exists('valid_nip')) {
|
|
function valid_nip($args)
|
|
{
|
|
global $db;
|
|
|
|
$ip = getRealIpAddr();
|
|
$db->query("DELETE from tmp_cartbayar where IP = '$ip'");
|
|
$db->query("DELETE from tmp_orderpenunjang where ip = '$ip'");
|
|
$db->query("DELETE from tmp_cartresep where IP = '$ip'");
|
|
|
|
$sql = "SELECT * FROM m_login WHERE NIP = '$args' and aktif = 1";
|
|
$query = $db->query($sql)->fetchAll();
|
|
$data = $query[0];
|
|
$NIP = $data['nip'];
|
|
$KDUNIT = $data['kdunit'];
|
|
if($args == $NIP){
|
|
$_SESSION['NIP'] = $NIP;
|
|
$_SESSION['KDUNIT'] = $KDUNIT;
|
|
$status_sistem = '';
|
|
if($data['kddokter'] != 0 && $data['roles'] == 10) {
|
|
$status_login = 'dokter';
|
|
}
|
|
elseif($data['kdperawat'] != 0) {
|
|
$status_login = 'perawat';
|
|
if(in_array($data['kdunit'],[19,20,21,22,23,26])) {
|
|
$status_sistem = 'ranap';
|
|
}
|
|
else {
|
|
$status_sistem = 'rajal';
|
|
}
|
|
// sleect login akses
|
|
$tmp_akses = $db->query("SELECT * from m_login_akses where nip ='$NIP' and roles = 28");
|
|
if($tmp_akses->numRows() > 0) {
|
|
$status_tindakan = 'tindakan';
|
|
}
|
|
else {
|
|
$status_tindakan = '';
|
|
}
|
|
}
|
|
elseif($KDUNIT == 14) {
|
|
$stutus_login = 'farmasi';
|
|
}
|
|
else {
|
|
$status_login = 'umum';
|
|
}
|
|
// $status_login = ($data['kddokter'] != 0 && $data['roles'] == 10) ? 'dokter' : (($data['kdperawat'] != 0) ? 'perawat' : (($KDUNIT == 14) ? 'farmasi' : 'umum'));
|
|
$hidden_form = '<input type="hidden" id="status_login" name="status_login" value="'.$status_login.'">';
|
|
$hidden_form .= '<input type="hidden" id="kddokter" value="'.$data['kddokter'].'">';
|
|
$hidden_form .= '<input type="hidden" id="status_sistem" value="'.$status_sistem.'">';
|
|
$hidden_form .= '<input type="hidden" id="status_tindakan" value="'.$status_tindakan.'">';
|
|
$hidden_form .= '<input type="hidden" id="urlfinger" value="'.base64_encode(_BASE_.'flexcode/model.php?action=user_login&user_kode='.$data['kddokter']).'">';
|
|
if($status_login == 'dokter') {
|
|
$_SESSION['KDDOKTER'] = $data['kddokter'];
|
|
}
|
|
|
|
if($KDUNIT == 14){
|
|
// $hidden_form .= '<input type="hidden" id="subdepo" value="'.$subdepo.'">';
|
|
}
|
|
return "<font color='green'> USERNAME Valid</font>".$hidden_form;
|
|
}else{
|
|
return "<font color='red'> USERNAME Tidak Valid</font>";
|
|
}
|
|
}
|
|
}
|
|
if (!function_exists('lastNoBayar')) {
|
|
function lastNoBayar($petugas = '', $tanggal = '', $shift = ''){
|
|
global $db;
|
|
$tanggal = ($tanggal != '') ? $tanggal : date('Y-m-d');
|
|
$shift = ($shift != '') ? $shift : $_SESSION['SHIFT'];
|
|
|
|
$sql = $db->query("SELECT nomor FROM m_maxnobyr where type='kuitansi' and petugas = '$petugas' and tanggal = '$tanggal' and shift = '$shift'");
|
|
$PRE_NO = $LASTNOBAYAR = $xLASTNOBAYAR = null;
|
|
$PRE_NO = date('y');
|
|
$jml_no = $sql->numRows();
|
|
if($jml_no > 0){
|
|
$row = $sql->fetchFirst();
|
|
$LASTNOBAYAR = ((int) $row['nomor'])+1; // 0000002
|
|
|
|
$xLASTNOBAYAR = str_pad($LASTNOBAYAR, 7, '0', STR_PAD_LEFT);
|
|
|
|
return $xLASTNOBAYAR;
|
|
}
|
|
else {
|
|
$new_nobayar = '0000001';
|
|
execute("INSERT into m_maxnobyr values ('$new_nobayar','kuitansi','$petugas','$tanggal','$shift')");
|
|
return $new_nobayar;
|
|
}
|
|
}
|
|
}
|
|
if (!function_exists('lastNoNota')) {
|
|
function lastNoNota(){
|
|
global $db;
|
|
$sql = $db->query('SELECT nomor FROM m_maxnobyr where type=\'nota\'');
|
|
$PRE_NO = $LASTNOBAYAR = $xLASTNOBAYAR = null;
|
|
$PRE_NO = date('y');
|
|
$nonota = null;
|
|
if($sql->numRows() > 0){
|
|
$row = $sql->fetchAll();
|
|
$LASTNOBAYAR = $row[0]['nomor']; // 18000002
|
|
|
|
if(substr($LASTNOBAYAR, 2) == '999999') {
|
|
$xLASTNOBAYAR = '1'.str_pad('0', 6, '0', STR_PAD_LEFT);
|
|
}
|
|
else {
|
|
if(strlen(substr($LASTNOBAYAR, 2)) < 6) {
|
|
$xLASTNOBAYAR = str_pad( (substr($LASTNOBAYAR, 2)+1), 6, '0', STR_PAD_LEFT);
|
|
}
|
|
else {
|
|
$xLASTNOBAYAR = str_pad( (substr($LASTNOBAYAR, 2)+1), strlen(substr($LASTNOBAYAR, 2)), '0', STR_PAD_LEFT);
|
|
|
|
}
|
|
}
|
|
|
|
$nonota = $PRE_NO.$xLASTNOBAYAR;
|
|
}
|
|
else {
|
|
$nonota = $PRE_NO.'000001';
|
|
}
|
|
$update = $db->query("UPDATE m_maxnobyr set nomor = $nonota where type='nota'");
|
|
return $nonota;
|
|
}
|
|
}
|
|
if (!function_exists('last_nononreg')) {
|
|
function last_nononreg($prefix){
|
|
global $db;
|
|
|
|
$sql = "SELECT distinct no_nonreg FROM m_nonreg WHERE no_nonreg LIKE '".$prefix.date('ymd')."%' ORDER BY no_nonreg DESC LIMIT 1";
|
|
|
|
$sql = $db->query($sql);
|
|
$PRE_NO = $LASTNOLAB = $xLASTNOLAB = null;
|
|
$PRE_NO = $prefix.date('ymd');
|
|
if($sql->numRows() > 0)
|
|
{
|
|
$row = $sql->fetchAll();
|
|
|
|
$LASTNOLAB = $row[0]['no_nonreg'];
|
|
|
|
if(substr($LASTNOLAB, 8) == '9999') {
|
|
$xLASTNOLAB = '1'.str_pad('0', 4, '0', STR_PAD_LEFT);
|
|
}
|
|
else {
|
|
if(strlen(substr($LASTNOLAB,8)) < 4) {
|
|
$xLASTNOLAB = str_pad( (substr($LASTNOLAB,8)+1), 4, '0', STR_PAD_LEFT);
|
|
}
|
|
else {
|
|
$xLASTNOLAB = str_pad( (substr($LASTNOLAB,8)+1), strlen(substr($LASTNOLAB,8)), '0', STR_PAD_LEFT);
|
|
|
|
}
|
|
}
|
|
|
|
return $PRE_NO.$xLASTNOLAB;
|
|
}
|
|
else {
|
|
return $PRE_NO.'0001';
|
|
}
|
|
}
|
|
}
|
|
if (!function_exists('last_noresep')) {
|
|
function last_noresep($prefix,$rajal_status){
|
|
global $db;
|
|
if($rajal_status == 1) {
|
|
$table = 't_permintaan_apotek_rajal';
|
|
}
|
|
else {
|
|
$table = 't_permintaan_apotek_ranap';
|
|
}
|
|
$sql = "SELECT distinct no,idxpesanobat FROM $table WHERE no LIKE '".$prefix.date('ym')."%' ORDER BY idxpesanobat DESC LIMIT 1";
|
|
|
|
$sql = $db->query($sql);
|
|
$PRE_NO = $LASTNOLAB = $xLASTNOLAB = null;
|
|
$PRE_NO = $prefix.date('ym');
|
|
if($sql->numRows() > 0)
|
|
{
|
|
$row = $sql->fetchAll();
|
|
|
|
$LASTNOLAB = $row[0]['no'];
|
|
|
|
if(substr($LASTNOLAB, 6) == '999999') {
|
|
$xLASTNOLAB = '1'.str_pad('0', 6, '0', STR_PAD_LEFT);
|
|
}
|
|
else {
|
|
if(strlen(substr($LASTNOLAB,6)) < 6) {
|
|
$xLASTNOLAB = str_pad( (substr($LASTNOLAB,6)+1), 6, '0', STR_PAD_LEFT);
|
|
}
|
|
else {
|
|
$xLASTNOLAB = str_pad( (substr($LASTNOLAB,6)+1), strlen(substr($LASTNOLAB,6)), '0', STR_PAD_LEFT);
|
|
|
|
}
|
|
}
|
|
|
|
return $PRE_NO.$xLASTNOLAB;
|
|
}
|
|
else {
|
|
return $PRE_NO.'000001';
|
|
}
|
|
$db->close();
|
|
}
|
|
}
|
|
|
|
if (!function_exists('last_nonota_by_bill')) {
|
|
function last_nonota_by_bill($prefix,$rajal_status){
|
|
global $db;
|
|
if($rajal_status == 1) {
|
|
$table = 't_billrajal';
|
|
}
|
|
elseif($rajal_status == 0) {
|
|
$table = 't_billranap';
|
|
}
|
|
elseif ($rajal_status == 2) {
|
|
$table = 't_billnonreg';
|
|
}
|
|
$sql = "SELECT distinct nonota FROM $table WHERE nonota::varchar(50) LIKE '".$prefix."%' ORDER BY nonota DESC LIMIT 1";
|
|
|
|
$sql = $db->query($sql);
|
|
$PRE_NO = $LASTNOLAB = $xLASTNOLAB = null;
|
|
$PRE_NO = $prefix;
|
|
if($sql->numRows() > 0)
|
|
{
|
|
$row = $sql->fetchAll();
|
|
|
|
$LASTNOLAB = $row[0]['nonota'];
|
|
|
|
if(substr($LASTNOLAB, 8) == '999') {
|
|
$xLASTNOLAB = '1'.str_pad('0', 3, '0', STR_PAD_LEFT);
|
|
}
|
|
else {
|
|
if(strlen(substr($LASTNOLAB,8)) < 3) {
|
|
$xLASTNOLAB = str_pad( (substr($LASTNOLAB,8)+1), 3, '0', STR_PAD_LEFT);
|
|
}
|
|
else {
|
|
$xLASTNOLAB = str_pad( (substr($LASTNOLAB,8)+1), strlen(substr($LASTNOLAB,8)), '0', STR_PAD_LEFT);
|
|
|
|
}
|
|
}
|
|
|
|
return $PRE_NO.$xLASTNOLAB;
|
|
}
|
|
else {
|
|
return $PRE_NO.'001';
|
|
}
|
|
$db->close();
|
|
}
|
|
}
|
|
if(!function_exists('arr_dokter')) {
|
|
function arr_dokter() {
|
|
global $db;
|
|
|
|
$dokter = 'SELECT distinct b.kddokter, b.namadokter, b.tgl_akhir_sip,b.kdpoly, b.kdsmf, b.kdprofesi
|
|
FROM m_dokter b
|
|
WHERE b.aktif = 1';
|
|
|
|
$tmp_dokter = $db->query($dokter);
|
|
$arr_dokter = $arr_dokter_ppds = [];
|
|
if($tmp_dokter->numRows() > 0){
|
|
foreach($tmp_dokter->fetchAll() as $d){
|
|
$tgl_SIP = new Datetime($d['tgl_akhir_sip']);
|
|
$tgl_sekarang = new Datetime(date('Y-m-d'));
|
|
|
|
if($d['tgl_akhir_sip'] > '0000-00-00' || $d['tgl_akhir_sip'] > '0001-01-01'){
|
|
if($tgl_sekarang <= $tgl_SIP) {
|
|
$arr_dokter[$d['kddokter']] = $d['namadokter'];
|
|
}
|
|
}
|
|
|
|
if($d['kdprofesi'] == 0) {
|
|
$arr_dokter_ppds[$d['namadokter']] = $d['namadokter'];
|
|
}
|
|
}
|
|
}
|
|
|
|
return $arr_dokter;
|
|
}
|
|
}
|
|
|
|
if(!function_exists('arr_dokter_klinik')) {
|
|
function arr_dokter_klinik($kode_klinik = '') {
|
|
global $db;
|
|
|
|
$where = ($kode_klinik == '') ? ' and a.kdpoly = '.$kode_klinik : '';
|
|
|
|
$dokter = 'SELECT distinct b.kddokter, b.namadokter, b.tgl_akhir_sip,b.kdpoly, b.kdsmf, b.kdprofesi
|
|
FROM m_dokter b
|
|
join m_dokter_jaga a on a.kddokter = b.kddokter
|
|
WHERE b.aktif = 1 '.$where;
|
|
|
|
$tmp_dokter = $db->query($dokter);
|
|
$arr_dokter = $arr_dokter_ppds = [];
|
|
if($tmp_dokter->numRows() > 0){
|
|
foreach($tmp_dokter->fetchAll() as $d){
|
|
$tgl_SIP = new Datetime($d['tgl_akhir_sip']);
|
|
$tgl_sekarang = new Datetime(date('Y-m-d'));
|
|
|
|
if($d['tgl_akhir_sip'] > '0000-00-00' || $d['tgl_akhir_sip'] > '0001-01-01'){
|
|
if($tgl_sekarang <= $tgl_SIP) {
|
|
$arr_dokter[$d['kddokter']] = $d['namadokter'];
|
|
}
|
|
}
|
|
|
|
if($d['kdprofesi'] == 0) {
|
|
$arr_dokter_ppds[$d['namadokter']] = $d['namadokter'];
|
|
}
|
|
}
|
|
}
|
|
|
|
return $arr_dokter;
|
|
}
|
|
}
|
|
// DEBUGGING HELPER
|
|
if(!function_exists('dd')){
|
|
function dd($str_debug) {
|
|
return '<pre>'.print_r($str_debug).'</pre>';
|
|
}
|
|
}
|
|
if(!function_exists('log_message'))
|
|
{
|
|
function log_message($type, $message) {
|
|
global $logger;
|
|
|
|
$uri = $_SERVER['REQUEST_URI'];
|
|
|
|
$protocol = ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off') || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
|
|
|
|
$url = $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
|
|
|
|
$query = $_SERVER['QUERY_STRING'];
|
|
|
|
if(!empty($_SERVER['HTTP_CLIENT_IP'])) {
|
|
$ip=$_SERVER['HTTP_CLIENT_IP']; // share internet
|
|
} elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
|
|
$ip=$_SERVER['HTTP_X_FORWARDED_FOR']; // pass from proxy
|
|
} else {
|
|
$ip=$_SERVER['REMOTE_ADDR'];
|
|
}
|
|
|
|
if($type == 'error') {
|
|
$logger->addError($message,[$_SESSION['NAMA_PEGAWAI'],$url,$query,$ip]);
|
|
}
|
|
else {
|
|
$logger->addDebug($message,[$_SESSION['NAMA_PEGAWAI'],$url,$query,$ip]);
|
|
}
|
|
}
|
|
}
|
|
|
|
if(!function_exists('column_num')){
|
|
function column_num($d,$is_reverse = false){
|
|
$abjad = array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z",
|
|
"AA","AB","AC","AD","AE","AF","AG","AH","AI","AJ","AK","AL","AM","AN","AO","AP","AQ","AR","AS","AT","AU","AV","AW","AX","AY","AZ",
|
|
"BA","BB","BC","BD","BE","BF","BG","BH","BI","BJ","BK","BL","BM","BN","BO","BP","BQ","BR","BS","BT","BU","BV","BW","BX","BY","BZ",
|
|
"CA","CB","CC","CD","CE","CF","CG","CH","CI","CJ","CK","CL","CM","CN","CO","CP","CQ","CR","CS","CT","CU","CV","CW","CX","CY","CZ",
|
|
"DA","DB","DC","DD","DE","DF","DG","DH","DI","DJ","DK","DL","DM","DN","DO","DP","DQ","DR","DS","DT","DU","DV","DW","DX","DY","DZ",
|
|
"EA","EB","EC","ED","EE","EF","EG","EH","EI","EJ","EK","EL","EM","EN","EO","EP","EQ","ER","ES","ET","EU","EV","EW","EX","EY","EZ",
|
|
);
|
|
if($is_reverse)
|
|
{
|
|
return array_keys($abjad,$d);
|
|
}
|
|
else{
|
|
return $abjad[$d];
|
|
}
|
|
}
|
|
}
|
|
|
|
/* SECURITY HELPER */
|
|
if ( ! function_exists('remove_invisible_characters'))
|
|
{
|
|
/**
|
|
* Remove Invisible Characters
|
|
*
|
|
* This prevents sandwiching null characters
|
|
* between ascii characters, like Java\0script.
|
|
*
|
|
* @param string
|
|
* @param bool
|
|
* @return string
|
|
*/
|
|
function remove_invisible_characters($str, $url_encoded = TRUE)
|
|
{
|
|
$non_displayables = array();
|
|
|
|
// every control character except newline (dec 10),
|
|
// carriage return (dec 13) and horizontal tab (dec 09)
|
|
if ($url_encoded)
|
|
{
|
|
$non_displayables[] = '/%0[0-8bcef]/'; // url encoded 00-08, 11, 12, 14, 15
|
|
$non_displayables[] = '/%1[0-9a-f]/'; // url encoded 16-31
|
|
}
|
|
|
|
$non_displayables[] = '/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]+/S'; // 00-08, 11, 12, 14-31, 127
|
|
|
|
do
|
|
{
|
|
$str = preg_replace($non_displayables, '', $str, -1, $count);
|
|
}
|
|
while ($count);
|
|
|
|
return $str;
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists('xss_hash'))
|
|
{
|
|
/**
|
|
* Random Hash for protecting URLs
|
|
*
|
|
* @return string
|
|
*/
|
|
function xss_hash()
|
|
{
|
|
mt_srand();
|
|
$xss_hash = md5(time() + mt_rand(0, 1999999999));
|
|
|
|
return $xss_hash;
|
|
}
|
|
}
|
|
|
|
if ( ! function_exists('_validate_entities'))
|
|
{
|
|
/**
|
|
* Validate URL entities
|
|
*
|
|
* Called by xss_clean()
|
|
*
|
|
* @param string
|
|
* @return string
|
|
*/
|
|
function _validate_entities($str)
|
|
{
|
|
/*
|
|
* Protect GET variables in URLs
|
|
*/
|
|
|
|
// 901119URL5918AMP18930PROTECT8198
|
|
|
|
$str = preg_replace('|\&([a-z\_0-9\-]+)\=([a-z\_0-9\-]+)|i', xss_hash()."\\1=\\2", $str);
|
|
|
|
/*
|
|
* Validate standard character entities
|
|
*
|
|
* Add a semicolon if missing. We do this to enable
|
|
* the conversion of entities to ASCII later.
|
|
*
|
|
*/
|
|
$str = preg_replace('#(&\#?[0-9a-z]{2,})([\x00-\x20])*;?#i', "\\1;\\2", $str);
|
|
|
|
/*
|
|
* Validate UTF16 two byte encoding (x00)
|
|
*
|
|
* Just as above, adds a semicolon if missing.
|
|
*
|
|
*/
|
|
$str = preg_replace('#(&\#x?)([0-9A-F]+);?#i',"\\1\\2;",$str);
|
|
|
|
/*
|
|
* Un-Protect GET variables in URLs
|
|
*/
|
|
$str = str_replace(xss_hash(), '&', $str);
|
|
|
|
return $str;
|
|
}
|
|
} |