"XX",30=>"XXX",40=>"XL",50=>"L",60=>"LX",70=>"LXX",80=>"LXXX",90=>"XC",100=>"C",200=>"CC",300=>"CCC",400=>"CD",500=>"D",600=>"DC",700=>"DCC",800=>"DCCC",900=>"CM",1000=>"M",2000=>"MM",3000=>"MMM"]; if (array_key_exists($n, $iromawi)) { $hasil = $iromawi[$n]; } else if ($n >= 11 && $n <= 99) { $i = $n % 10; $hasil = $iromawi[$n-$i] . Romawi($n % 10); } else if ($n >= 101 && $n <= 999) { $i = $n % 100; $hasil = $iromawi[$n-$i] . Romawi($n % 100); } else { $i = $n % 1000; $hasil = $iromawi[$n-$i] . Romawi($n % 1000); } return $hasil; } } if (!function_exists('abjad')) { function abjad(int $n): string { $_str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; return substr($_str, ($n-1), 1); } } /*************************** FORM CONTROL *****************************/ if (!function_exists('checkbox')) { function checkbox(mixed $nilai): string { $thasil = (empty($nilai) or (is_string($nilai) && ($nilai=="N" || $nilai=="0")) or (is_numeric($nilai) && $nilai==0) or (is_bool($nilai) && $nilai==false)) ? "circle text-secondary" : "check-circle text-info"; return ''; } } /*************************** FORMAT TANGGAL / KALENDER *****************************/ if (!function_exists('sqltgl')) { function sqltgl(string $waktu): string { return tgl_sql2str($waktu); } } if (!function_exists('sqltgls')) { function sqltgls(string $waktu): string { return tgl_sql2str($waktu, false, true); } } if (!function_exists('sqljam')) { function sqljam(string $waktu): string { return tgl_sql2str($waktu, true); } } if (!function_exists('sqljams')) { function sqljams(string $waktu): string { return tgl_sql2str($waktu, true, true); } } if (!function_exists('tgl_sql2str')) { function tgl_sql2str(string $waktu, bool $jam = false, bool $short = false): string { if (empty($waktu)) return ''; $atgl = explode(" ", $waktu); $sjam = ($jam) ? ((empty($atgl[1])) ? date("H:i:s") : $atgl[1]) : ""; $atgl = explode("-", $atgl[0]); $stgl = $atgl[2]."-".$atgl[1]."-".$atgl[0]; if ($short) $stgl = $atgl[2].".".$atgl[1].".".substr($atgl[0],2); return $stgl.(($jam)?" ".$sjam:""); } } if (!function_exists('tgl_ymd')) { function tgl_ymd(bool $jam = false): string { return (($jam) ? date("Y-m-d H:i:s") : date("Y-m-d")); } } if (!function_exists('tgl_dmy')) { function tgl_dmy(bool $jam = false): string { return (($jam) ? date("d-m-Y H:i:s") : date("d-m-Y")); } } if (!function_exists('tgl_operasi')) { function tgl_operasi(string $tgl, int $hari = 0, int $bln = 0, int $thn = 0): string { $atgl = explode("-", $tgl); return date("d-m-Y", mktime(0,0,0, (int) $atgl[1]+$bln, (int) $atgl[0]+$hari, (int) $atgl[2]+$thn)); } } if (!function_exists('tgl_range_hari')) { function tgl_range_hari(string $tgl_from, string $tgl_to, bool $hitung_awal = false): float { if (empty($tgl_to) or empty($tgl_from)) return 0; $_start = strtotime(tgl_sql2str($tgl_from)); $_end = strtotime(tgl_sql2str($tgl_to)); return ceil(abs($_end - $_start) / 86400) + (($hitung_awal)?1:0); } } if (!function_exists('tgl_akhbln')) { function tgl_akhbln(string $tgl): string { if (empty($tgl)) return ''; $atgl = explode("-", $tgl); $ablna = ['31','28','31','30','31','30','31','31','30','31','30','31']; // jika tahun masehi dan bulan 2 if ((round((int) $atgl[2]/4) === ((int) $atgl[2]/4)) && (int) $atgl[1] === 2) return "29-02-".$atgl[2]; return $ablna[(int) $atgl[1]-1]."-".isi_nol($atgl[1],2)."-".$atgl[2]; } } if (!function_exists('tgl_panjang')) { function tgl_panjang(string $tgl): string { if (empty($tgl)) $tgl = tgl_dmy(); $atgl = explode("-", $tgl); $abulan = bulan_array(); return $atgl[0]." ".$abulan[$atgl[1]]." ".$atgl[2]; } } if (!function_exists('tgl_hari')) { function tgl_hari(string $tgl): string { $nhari = date("w"); if (!empty($tgl)) { $nhari = date("w", strtotime(tgl_sql2str($tgl))); } $ahari = ["0"=>"Minggu","1"=>"Senin","2"=>"Selasa","3"=>"Rabu","4"=>"Kamis","5"=>"Jum'at","6"=>"Sabtu"]; return $ahari[$nhari]; } } if (!function_exists('tgl_triwulan')) { function tgl_triwulan(string $tgl): int { if (empty($tgl)) { $dtgl = date("m"); } else { $atgl = explode("-", $tgl); $dtgl = $atgl[1]; } $hasil = 0; if ($dtgl >= 1 && $dtgl <= 3) $hasil = 1; if ($dtgl >= 4 && $dtgl <= 6) $hasil = 2; if ($dtgl >= 7 && $dtgl <= 9) $hasil = 3; if ($dtgl >= 10 && $dtgl <= 12) $hasil = 4; return $hasil; } } if (!function_exists('bulan_array')) { function bulan_array(): array { 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('triwulan_array')) { function triwulan_array(): array { return ["1"=>"Triwulan 1","2"=>"Triwulan 2","3"=>"Triwulan 3","4"=>"Triwulan 4"]; } } /*************************** FORMAT TAMPILAN & ERROR *****************************/ if (!function_exists('subjudul')) { function subjudul(string $judul): string { return '

  '.$judul.'  
'; } } /* todo: deprecated if (!function_exists('showerror')) { function showerror(string $error): void { echo ''; } }*/ if (!function_exists('br2nl')) { function br2nl(string $string): string { return preg_replace('/\/i', "\n\r", $string); } } if (!function_exists('isi_nol')) { function isi_nol(string|int $nilai = 0, int $panjang = 1): string { $nilai = (string)$nilai; return ($panjang>strlen($nilai) ? str_repeat("0", $panjang-strlen($nilai)):'').$nilai; } } if (!function_exists('isMobile')) { function isMobile(): bool { $agen = $_SERVER['HTTP_USER_AGENT']; $amobile = ['Android', 'webOS', 'iPhone', 'iPad', 'iPod', 'BlackBerry', 'Windows Phone', 'Mobile']; foreach ($amobile as $keyword) { if (stripos($agen,$keyword) !== false) return true; } return false; } } if (!function_exists('isLinux')) { function isLinux(): bool { $agen = $_SERVER['HTTP_USER_AGENT']; if (stripos($agen, 'linux') !== false) return true; return false; } } if (!function_exists('isIE')) { function isIE(): bool { $agen = $_SERVER['HTTP_USER_AGENT']; if (stripos($agen, 'msie') !== false) return true; return false; } } if (!function_exists('isChrome')) { function isChrome(): bool { $agen = $_SERVER['HTTP_USER_AGENT']; if (stripos($agen, 'chrome') !== false) return true; return false; } } if (!function_exists('isFirefox')) { function isFirefox(): bool { $agen = $_SERVER['HTTP_USER_AGENT']; if (stripos($agen, 'firefox') !== false) return true; return false; } } /* todo: deprecated if (!function_exists('potong')) { function potong($nilai) {//utk rkpd return substr($nilai, 0, 60); } }*/ if (!function_exists('format_bytes')) { function format_bytes(int $bytes): string { if ($bytes < 1024) return (string) $bytes.' B'; elseif ($bytes < 1048576) return uang2($bytes / 1024).' KB'; elseif ($bytes < 1073741824) return uang2($bytes / 1048576).' MB'; elseif ($bytes < 1099511627776) return uang2($bytes / 1073741824).' GB'; else return uang2($bytes / 1099511627776).' TB'; } } if (!function_exists('random_color')) { function random_color(string $trans = "0.6"): string { $col_r = (string) mt_rand( 0, 255 ); $col_g = (string) mt_rand( 0, 255 ); $col_b = (string) mt_rand( 0, 255 ); return "rgba(".$col_r.",".$col_g.",".$col_b.",".$trans.")"; } } if (!function_exists('gen_uuidv4')) { function gen_uuidv4(): string { $data = random_bytes(16); // Set version to 0100 (UUID v4) $data[6] = chr(ord($data[6]) & 0x0f | 0x40); // Set bits 6-7 to 10 $data[8] = chr(ord($data[8]) & 0x3f | 0x80); return vsprintf('%s%s-%s-%s-%s-%s%s%s', str_split(bin2hex($data), 4)); } } if (!function_exists('gen_uuidv7')) { function gen_uuidv7(int $time=0): string { // Get timestamp in milliseconds (48 bits) if (empty($time)) $time = (int) floor(microtime(true) * 1000); // Generate 16 bytes of random data $randomBytes = random_bytes(16); // Pack the 48-bit timestamp into the first 6 bytes $timeHex = str_pad(dechex($time), 12, '0', STR_PAD_LEFT); $bytes = hex2bin($timeHex); // Append 10 bytes of randomness (we need 16 total bytes) $bytes .= substr($randomBytes, 0, 10); // Apply the version bits (Version 7 -> 0b0111) onto byte 6 $bytes[6] = chr((ord($bytes[6]) & 0x0f) | 0x70); // Apply the variant bits (Variant 1 -> 0b10xx) onto byte 8 $bytes[8] = chr((ord($bytes[8]) & 0x3f) | 0x80); // Unpack to hex string and format with hyphens $hex = bin2hex($bytes); return sprintf('%08s-%04s-%04s-%04s-%012s', substr($hex, 0, 8), substr($hex, 8, 4), substr($hex, 12, 4), substr($hex, 16, 4), substr($hex, 20, 12) ); } }