db->query($sql, array($tgramID)); $verified = false; if($qry) { $rows = $qry->result_array(); if(count($rows) > 0 && $rows[0]["tGramReportIsVerified"] == "Y") { $verified = true; } } return $verified; } function get_branch($code) { $sql = "select * from m_branch where M_BranchCode = ?"; $qry = $this->db->query($sql, array($code)); $name = ""; $ip = ""; if($qry) { $rows = $qry->result_array(); if(count($rows) > 0 ) { $name = $rows[0]["M_BranchName"]; $ip= $rows[0]["M_BranchIPAddress"]; } } return array($name,$ip); } function clean_up_message($msg) { $msg = str_replace("-","\-",$msg); $msg = str_replace("(","\(",$msg); $msg = str_replace(")","\)",$msg); $msg = str_replace(".","\.",$msg); $msg = str_replace("[","\[",$msg); $msg = str_replace("]","\]",$msg); return $msg; } function list_send_message($id, $message) { $a_message = explode("\n\n",$message); foreach($a_message as $msg) { if(trim($msg) == "") continue; $this->send($id, $msg); } } function long_send_message($id, $message) { if (strlen($message) > 4096 ) { $p_message = substr($message,0,4000); $message = substr($message,4000); $this->send($id, p_message); $still_have_message = true; $counter = 1; while( $still_have_message ) { if (strlen($message) > 4096 ) { $p_message = substr($message,0,4000); $message = substr($message,4000); $this->send($id, p_message); $still_have_message = true; } else { $this->send($id ,$message); $still_have_message = false; } $counter++; if ($counter == 4 ) $still_have_message = false; } } else { $this->send($id, $message); } } function branch_hasil($ip,$date) { $url = "http://$ip/one-api/tgram/hasil/list"; $data = array ("date" => $date); $j_data = json_encode($data); $message = $this->post($url,$j_data); return $message; } function branch_download($ip,$noreg) { $url = "http://$ip/one-api/tgram/hasil/download"; $data = array ("noreg" => $noreg); $j_data = json_encode($data); $message = $this->post($url,$j_data); return $message; } function register() { $prm = $this->sys_input; switch($prm["cmd"]) { case "download": $id = $prm["tgramID"]; $noreg = $prm["noreg"]; // 006S6M63DA $kode_cabang= substr($noreg,8,2); list($branchName,$branchIP) = $this->get_branch($kode_cabang); if ($branchName == "" ) { $kode_cabang= substr($noreg,0,2); list($branchName,$branchIP) = $this->get_branch($kode_cabang); } $branchIP = "devone.aplikasi.web.id"; $hasil = $this->branch_download($branchIP,$noreg); $j_hasil = json_decode($hasil,true); if ($j_hasil) { if ($j_hasil["status"] == "OK" ) { $msg = $j_hasil["msg"]; foreach($j_hasil["reports"] as $r) { $fname = $r["fname"]; $text = $msg . "Hasil\t: " . $r["name"]; $text = $this->clean_up_message($text); $pdf_url = "http://" . $branchIP . $r["url"]; //echo "\nsenddoc\n$id\n$pdf_url\n$fname\n"; $this->senddoc($id,$text,$pdf_url, $fname); } } else { $this->send($id,$j_hasil["msg"]); } } break; case "hasil": $kode_cabang = $prm["branchCode"]; $tanggal = $prm["date"]; if(! $this->verifikasi($prm["tgramID"]) ) { echo json_encode( array("status"=>"ERR", "message" => "Not Verified") ); exit; } list($branchName,$branchIP) = $this->get_branch($kode_cabang); $branchIP = "devone.aplikasi.web.id"; $message = "Daftar Permintaan Hasil dikirim WA \n$branchName\nTanggal $tanggal\n"; $message .= $this->branch_hasil($branchIP,$tanggal); $message = $this->clean_up_message($message); $this->list_send_message($prm["tgramID"],$message); echo json_encode( array("status"=>"OK", "message" => "") ); break; case "register" : $sql = "insert into tgram_report(tGramReportTgramID, tGramReportName, tGramReportM_BranchCode) values(?,?,?)"; $qry = $this->db->query($sql, array($prm["tgramID"], $prm["name"], $prm["branchCode"])); if($qry) { $request_contact = "Konfirmasi Registrasi, dengan mengirimkan contact\."; $this->send($prm["tgramID"],$request_contact,true); echo json_encode( array("status"=>"OK", "message" => "") ); } else { echo json_encode( array("status"=>"ERR", "message" => print_r($this->db->error(),true) )); } break; case "register-contact": $sql = "update tgram_report set tGramReportHp=? where tGramReportTgramID = ? "; $qry = $this->db->query($sql, array($prm["hp"], $prm["tgramID"])); if($qry) { $request_contact = "Contact anda sudah di terima, menunggu verifikasi admin\."; $this->send($prm["tgramID"],$request_contact,true); echo json_encode( array("status"=>"OK", "message" => "") ); } else { echo json_encode( array("status"=>"ERR", "message" => print_r($this->db->error(),true) )); } break; } } function post($url,$data) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen($data)) ); $result = curl_exec($ch); return $result; } public function send($id,$text,$req_contact = false) { $prm = $this->sys_input; $url = "https://api.telegram.org/bot903313223:AAH26dxAjoOd3TcuLIJFPQ19wOzgF_ZRvkc/sendMessage"; $data = array ( "chat_id" => $id , "parse_mode" => "MarkdownV2", "text" => $text ); if ($req_contact === true ) { $data["reply_markup"] = array('keyboard' => array( array( array("text" => "Kirimkan contact saya", "request_contact" => true ) ))); } $j_data = json_encode($data); $result = $this->post($url,$j_data); //echo "\nResult tgram: " . $result . "\n"; } function build_data_files($boundary, $fields, $files){ $data = ''; $eol = "\r\n"; $delimiter = '-------------' . $boundary; foreach ($fields as $name => $content) { $data .= "--" . $delimiter . $eol . 'Content-Disposition: form-data; name="' . $name . "\"".$eol.$eol . $content . $eol; } foreach($files as $file) { $data .= "--" . $delimiter . $eol . 'Content-Disposition: form-data; name="' . $file["name"] . '"; filename="' . $file["fname"] . '"' . $eol //. 'Content-Type: image/png'.$eol . 'Content-Transfer-Encoding: binary'.$eol ; $data .= $eol; $data .= $file["content"] . $eol; $data .= "--" . $delimiter . "--".$eol; } return $data; } function senddoc($id, $text, $pdf_url, $name) { $url = "https://api.telegram.org/bot903313223:AAH26dxAjoOd3TcuLIJFPQ19wOzgF_ZRvkc/sendDocument"; $fields = array( "chat_id" => $id , "caption" => $text , "parse_mode" => "MarkdownV2"); $files[] = array( "name" => "document", "fname" => $name, "content" => file_get_contents($pdf_url) ); $boundary ="-myboundary-bizOneRpt-" . uniqid(); $delimiter = '-------------' . $boundary; $message = $this->build_data_files($boundary,$fields,$files); $result = $this->post_mf($url,$message,$delimiter); //echo "\ntgram senddoc :\n$result\n"; } function post_mf($url,$data,$delimiter) { $curl = curl_init(); curl_setopt_array($curl, array( CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => 1, CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_POST => 1, CURLOPT_POSTFIELDS => $data, CURLOPT_HTTPHEADER => array( "Content-Type: multipart/form-data; boundary=" . $delimiter, "Content-Length: " . strlen($data) ), )); $result_a = curl_exec($curl); $err = curl_error($curl); $result = $result_a; if ($err) { $result = $result_a . "\nERR : " . print_r($err,true) . "\n" ; } return $result; } } ?>