_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 '
';
}
}
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 () );
}
}
}