Model:
// insert method to your model
function getReports( $sDateStart, $sDateEnd ) {
$csv_terminated = "\n";
$csv_separator = ";";
$csv_enclosed = '"';
$csv_escaped = "\"";
$schema_insert = "";
$out = '';
if ( !is_int( $sDateStart ) ) {
$sDateStart = strtotime( $sDateStart );
}
if ( !is_int( $sDateEnd ) ) {
$sDateEnd = strtotime( $sDateEnd );
}
$aResults = $this->db
->select('FROM_UNIXTIME(time) as date, internal_id as cc_name, fullname as client_name, qualification, politeness')
->from( 'wl_support.support_ratings' )
->where( 'time >=', $sDateStart )
->where( 'time <=', $sDateEnd )
->get();
$aFields = $aResults->list_fields();
foreach ( $aFields as $sField ) {
$l = $csv_enclosed . str_replace( $csv_enclosed, $csv_escaped . $csv_enclosed, stripslashes( $sField ) ) . $csv_enclosed;
$schema_insert .= $l;
$schema_insert .= $csv_separator;
}
$out .= $schema_insert . $csv_terminated;
// Format the data
foreach ( $aResults->result_array() as $aResult ) {
$schema_insert = '';
foreach ( $aFields as $sField ) {
if ( $aResult[$sField] == '0' || $aResult[$sField] != '' ) {
if ( $csv_enclosed == '' ) {
$schema_insert .= $aResult[$sField];
}
else {
$schema_insert .= $csv_enclosed . str_replace( $csv_enclosed, $csv_escaped . $csv_enclosed, $aResult[$sField] ) . $csv_enclosed . $csv_separator;
}
}
else {
$schema_insert .= '';
}
}
$out .= $schema_insert;
$out .= $csv_terminated;
}
return $out;
}
?>
Controller:
public function ratings($sPrevStart = null, $sPrevEnd = null) {
// Load your model - rename the "your_model_name"
$this->load->model('your_model_name','chat');
// If undefined - get previews month report
if ( !isset($sPrevStart ) ) {
$sPrevStart = date( 'Y-m-01', strtotime( '-1 month' ) );
}
if ( !isset( $sPrevEnd ) ) {
$sPrevEnd = date('Y-m-01');
}
$output = $this->chat->getReports( $sPrevStart . ' 00:00:00', $sPrevEnd . ' 00:00:00' );
$filename = $sPrevStart . '_' . $sPrevEnd . ' chat_ratings.csv';
header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
header( "Content-Length: " . strlen( $output ) );
header( "Content-type: text/x-csv" );
//header( "Content-type: text/csv" );
//header( "Content-type: application/csv" );
header( 'Content-Disposition: attachment; filename="' . $filename . '"' );
echo $output;
return;
}