_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 '
';
}
}
/**
*
* @return multitype:string number |string
*/
public function get() {
/**
*
* @return multitype:string number
*/
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 [] = $record ['ma'];
$aryTmp [] = $record ['thue_bao_ngay'];
$aryTmp [] = $record ['thue_bao_thang'];
$aryTmp [] = $record ['thue_bao_nam'];
$aryTmp [] = $record ['doanh_thu_ngay'];
$aryTmp [] = $record ['doanh_thu_thang'];
$aryTmp [] = $record ['doanh_thu_nam'];
$aryResult [] = implode ( '|', $aryTmp );
$aryTmp = array ();
}
$message = implode ( "\n", $aryResult );
$success = 1;
}
}
return array (
$message,
$success,
date ( 'YmdHis' )
);
}
/**
*
* @return multitype:string number
*/
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;
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],
'date' => $from [2],
'to_year' => $to [0],
'to_month' => $to [1],
'to_date' => $to [2]
);
$result = $CI->objReportModel->exportPackage ( $input );
if (count ( $result ) > 0 && is_array ( $result )) {
$aryTmp = array ();
$aryResult = array ();
foreach ( $result as $provinceCode => $record ) {
$aryTmp [] = $record ['stt'];
$aryTmp [] = implode ( '', $to );
$aryTmp [] = $record ['ma'];
$aryTmp [] = $record ['tong_so_VIP 1'];
$aryTmp [] = $record ['ti_le_VIP 1'];
$aryTmp [] = $record ['tong_so_VIP 3'];
$aryTmp [] = $record ['ti_le_VIP 3'];
$aryTmp [] = $record ['tong_so_VIP 6'];
$aryTmp [] = $record ['ti_le_VIP 6'];
$aryTmp [] = $record ['tong_so_VIP 12'];
$aryTmp [] = $record ['ti_le_VIP 12'];
$aryTmp [] = $record ['tong_so_tb'];
$aryResult [] = implode ( '|', $aryTmp );
$aryTmp = array ();
}
$message = implode ( "\n", $aryResult );
$success = 1;
}
}
$CI->load->model ( 'Services_model' );
$CI->load->model ( 'admin/Reportmodel', 'objReportModel' );
return array (
$message,
$success,
date ( 'YmdHis' )
);
}
/**
*
* @param unknown $aryArgs
* @return string
*/
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 () );
}
}
}