_server = new SoapServer ( NULL, array ( 'soap_version' => SOAP_1_2, 'encoding' => 'UTF-8', 'uri' => 'http://tempuri.org/' ) ); } function __destruct() { ini_set ( "soap.wsdl_cache_enabled", "0" ); } public function index() { if ($this->uri->segment ( 3 ) == "wsdl") { header ( 'Content-Type: text/xml; charset: utf-8' ); $this->load->view ( 'reportwsdl' ); return; } else { header ( 'Content-Type: text/html; charset: utf-8' ); echo '
See Report service WSDL page
'; } } public function get() { function revenueReport () { $aryArgs = func_get_args (); list ( $username, $password, $fromDate, $toDate) = $aryArgs; $CI = & get_instance (); if (!$toDate) $toDate = date('Y-m-d'); $message = validate ($aryArgs); $success = $message == '' ? 1 : 0;// 0:error; 1:Success; if ($success == 1) { $CI->load->model ( 'Services_model' ); $CI->load->model ( 'admin/Reportmodel', 'objReportModel' ); $from = explode('-', $fromDate); $to = explode('-', $toDate); $input = array('year' => $from[0], 'month' => $from[1], 'to_year' => $to[0], 'to_month' => $to[1], 'to_date' => $to[2]); $result = $CI->objReportModel->exportProvince( $input ); if (count($result) > 0 && is_array($result)) { //1|20140915|A076|0|0|0|100000|0|0 $aryTmp = array(); $aryResult = array(); foreach ($result as $provinceCode => $record) { //No|toDate|ProvCode|TBngay|LKTBThang|TongTBNam|DTngay|LuyKeTBThang|TongDTNam $aryTmp[] = $record['stt']; $aryTmp[] = implode('', $to); $aryTmp[] = $provinceCode; $aryTmp[] = $record['tbng']; $aryTmp[] = $record['tbt']; $aryTmp[] = $record['tbn']; $aryTmp[] = $record['dtng']; $aryTmp[] = $record['dtt']; $aryTmp[] = $record['dtn']; $aryResult[] = implode('|', $aryTmp); $aryTmp = array(); } $message = implode("\n", $aryResult); $success = 1; } } return array($message, $success, date('YmdHis')); } function subscribersReport () { $aryArgs = func_get_args (); list ( $username, $password, $fromDate, $toDate) = $aryArgs; $CI = & get_instance (); $message = validate ($aryArgs); $success = $message == '' ? 1 : 0;// 0:error; 1:Success; $message = $message == '' ? 'subscribersReport' : $message; $CI->load->model ( 'Services_model' ); $CI->load->model ( 'admin/Reportmodel', 'objReportModel' ); return array($message, $success, date('YmdHis')); } function validate ($aryArgs) { list ( $username, $password, $fromDate, $toDate) = $aryArgs; $CI = & get_instance (); $predefUsername = $CI->config->item ( 'report_username' ); $predefPassword = $CI->config->item ( 'report_password' ); $message = ''; if (! $username) { $message = 'Username is required!'; }else if (! $password) { $message = 'Password is required!'; }else if ($username != $predefUsername) { $message = 'Username is not corrected!'; }else if ($password != $predefPassword) { $message = 'Password is not corrected!'; }else if (! $fromDate) { $message = 'fromDate is required!'; }else if (!preg_match('/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/', $fromDate)) { $message = 'fromDate is not corrected!'; }else if ($toDate && !preg_match('/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/', $toDate)) { $message = 'toDate is not corrected!'; } return $message; } $this->_server->addFunction ( array('revenueReport', 'subscribersReport')); try { ob_start (); $soapOutput = ''; $request = ''; $this->_server->handle (); if (ob_get_length () > 0) { $soapOutput = ob_get_clean (); } if ($soapOutput != '') { error_log(var_export($soapOutput, true) . "\n\n\n", 3, '/srv/www/sbg/log/reportservicexml.log'); $response = preg_match('/revenueReportResponse/', $soapOutput) ? 'revenueReportResponse' : (preg_match('/subscribersReportResponse/', $soapOutput) ? 'subscribersReportResponse':''); $pattern = '/<[^>]*[^\/]>/i'; $aryOutput = preg_split ( $pattern, $soapOutput, - 1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE ); error_log(var_export($aryOutput, true) . "\n\n\n", 3, '/srv/www/sbg/log/reportservice.log'); $aryData = array (); $aryData ['message'] = $aryOutput [1]; $aryData ['success'] = $aryOutput [2]; $aryData ['receiveTime'] = $aryOutput [3]; $aryData ['response'] = $response; $xml = $this->load->view ( 'report', $aryData, TRUE ); header ( 'Content-Type: text/xml; charset: utf-8' ); echo $xml; } else { header ( 'Content-Type: text/html; charset: utf-8' ); echo 'See service WSDL page'; } } catch ( Exception $e ) { $this->_server->fault ( 'Sender', $e->getMessage () ); } } }