You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
614 lines
22 KiB
614 lines
22 KiB
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
|
|
|
|
use app\core\utils\Response;
|
|
use app\core\auth\Page;
|
|
|
|
//require phpoffice library(Spreadsheet and Writer)
|
|
use PhpOffice\PhpSpreadsheet\Spreadsheet;
|
|
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
|
|
|
|
//require excel styles
|
|
use PhpOffice\PhpSpreadsheet\Style\Fill;
|
|
use PhpOffice\PhpSpreadsheet\Style\Border;
|
|
use PhpOffice\PhpSpreadsheet\Style\Color;
|
|
use PhpOffice\PhpSpreadsheet\Style\Alignment;
|
|
|
|
//require excel protection for lock/unlock
|
|
use PhpOffice\PhpSpreadsheet\Style\Protection;
|
|
|
|
//require excel contitions
|
|
use PhpOffice\PhpSpreadsheet\Style\Conditional;
|
|
|
|
//require excel datavalidations
|
|
use PhpOffice\PhpSpreadsheet\Cell\DataValidation;
|
|
|
|
class Subscribers extends MY_Controller {
|
|
/**
|
|
* php excel object instance variables
|
|
*
|
|
* @var string
|
|
*/
|
|
private $spreadsheet;
|
|
|
|
/**
|
|
* no show excel file tabs
|
|
*
|
|
* @var string
|
|
*/
|
|
private $reports;
|
|
|
|
/**
|
|
* instance variable for PhpOffice writer class
|
|
*
|
|
* @var string
|
|
*/
|
|
private $writer;
|
|
|
|
/**
|
|
* instance variable for activesheet
|
|
*
|
|
* @var string
|
|
*/
|
|
private $sheets;
|
|
|
|
/**
|
|
* variable for default background color
|
|
*
|
|
* @var string
|
|
*/
|
|
private $default_background_color;
|
|
|
|
/**
|
|
* Tab title
|
|
*
|
|
* @var string
|
|
*/
|
|
private $sheetTitle;
|
|
|
|
/**
|
|
* Holds default maximum row
|
|
*
|
|
* @var int
|
|
*/
|
|
private $defaultMaximumRow;
|
|
|
|
/**
|
|
* Holds default column headers
|
|
*
|
|
* @var array
|
|
*/
|
|
private $columnHeaders;
|
|
|
|
/**
|
|
* Cells Index Name
|
|
*
|
|
* @var array
|
|
*/
|
|
private $basicCells;
|
|
|
|
/**
|
|
* EXCEL PASSWORD PROTECTION THIS IS CONFIDENTIAL
|
|
*/
|
|
private const PASSWORD = '1@#]00YHkBlackHatzZ';
|
|
|
|
public function __construct() {
|
|
//parent::__construct();
|
|
$this->my_parent_controller();
|
|
$this->load->model("user_model");
|
|
$this->clear_cache();
|
|
|
|
$this->lang->load('backoffice/reports', 'fr');
|
|
|
|
// Create new PHPExcel object
|
|
$this->spreadsheet = new Spreadsheet();
|
|
|
|
//get active sheet
|
|
$this->sheets = $this->spreadsheet->getActiveSheet();
|
|
|
|
//create writer object
|
|
$this->writer = new Xlsx($this->spreadsheet);
|
|
|
|
// Set sheet name
|
|
$this->sheetTitle = $this->lang->line("reports")["client"]["client_file_name"];
|
|
|
|
//set default background color
|
|
$this->default_background_color = '428bcb';
|
|
|
|
$this->columnHeaders = array(
|
|
"civility",
|
|
"last_name",
|
|
"first_name",
|
|
"address",
|
|
"code_postal",
|
|
"city",
|
|
"telephone_number",
|
|
"email_address"
|
|
);
|
|
|
|
$this->basicCells = 'ABCDEFGH';
|
|
}
|
|
|
|
/**
|
|
* Set execution and memory limit
|
|
*
|
|
* @return void
|
|
* access public
|
|
*/
|
|
public function setMemoryLimit()
|
|
{
|
|
ini_set('memory_limit', '1024M');
|
|
ini_set('max_execution_time', (60*3));
|
|
}
|
|
|
|
/**
|
|
* Set document properties
|
|
*
|
|
* @return void
|
|
* access public
|
|
*/
|
|
public function setDocumentProperties()
|
|
{
|
|
return $this->spreadsheet->getProperties()->setCreator("Company For Madagascar Event Management System")
|
|
->setLastModifiedBy("Company For Madagascar Event Management System")
|
|
->setTitle("Office 2007 XLSX Document")
|
|
->setSubject("Office 2007 XLSX Document")
|
|
->setDescription("No show export import file")
|
|
->setKeywords("office 2007 openxml php")
|
|
->setCategory("Export file");
|
|
}
|
|
|
|
/**
|
|
* Set headers(pragma, cache control , cookies etc..)
|
|
*
|
|
* @param string $filename
|
|
* @return void
|
|
*/
|
|
public function setHeaders($filename)
|
|
{
|
|
// Redirect output to a client’s web browser (Excel2007)
|
|
header('Content-Type: application/vnd.ms-excel; charset=utf-8');
|
|
header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
|
|
header('Content-Disposition: attachment;filename="'.$filename.'.xlsx"');
|
|
header('Cache-Control: max-age=0');
|
|
// header('Content-Encoding: deflate, gzip');
|
|
header('Cache-Control: private');
|
|
|
|
// If you're serving to IE 9, then the following may be needed
|
|
header('Cache-Control: max-age=1');
|
|
|
|
// If you're serving to IE over SSL, then the following may be needed
|
|
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past
|
|
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT'); // always modified
|
|
header('Cache-Control: cache, must-revalidate'); // HTTP/1.1
|
|
header('Pragma: public'); // HTTP/1.0
|
|
|
|
$this->writer->save('php://output');
|
|
exit();
|
|
}
|
|
|
|
/**
|
|
* Auto size columns for each worksheet
|
|
*
|
|
* @return void
|
|
* access public
|
|
*/
|
|
public function setExcelAutoSize()
|
|
{
|
|
foreach ($this->spreadsheet->getWorksheetIterator() as $worksheet) {
|
|
$this->spreadsheet->setActiveSheetIndex($this->spreadsheet->getIndex($worksheet));
|
|
|
|
$sheet = $this->sheets;
|
|
$cellIterator = $sheet->getRowIterator()->current()->getCellIterator();
|
|
$cellIterator->setIterateOnlyExistingCells(true);
|
|
foreach ($cellIterator as $cell) {
|
|
$sheet->getColumnDimension($cell->getColumn())->setAutoSize(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Set excel main headers (first rows 1 - 2 with freeze pane)
|
|
*
|
|
* @param integer $eventID
|
|
* @param integer $eventScheduleID
|
|
* @param string $event_title
|
|
* @return void
|
|
* access private member
|
|
*/
|
|
private function setExcelHeaders()
|
|
{
|
|
$this->sheets->getRowDimension(1)->setRowHeight(-1);
|
|
|
|
foreach(range('A','H') as $columnID) {
|
|
$this->sheets->getColumnDimension($columnID)->setAutoSize(true);
|
|
}
|
|
// Merge and Set Header Cell values
|
|
$this->sheets->freezePane('D3')->setTitle($this->sheetTitle);
|
|
|
|
if(count($this->columnHeaders) > 0) {
|
|
$colCount = 0;
|
|
foreach($this->columnHeaders as $fcol => $name) {
|
|
$columnName = $this->basicCells{$colCount};
|
|
$this->sheets->setCellValue("{$columnName}1", mb_strtoupper($this->lang->line($name)));
|
|
$colCount++;
|
|
// if($name == "subscription_date_op" ) {
|
|
// $this->sheets->setCellValue('L2', mb_strtoupper('Date').' d\'inscription'); // L2
|
|
// $this->sheets->setCellValue('M2', mb_strtoupper('Heure').' d\'inscription'); // M2
|
|
// $colCount = 13;
|
|
// } else {
|
|
// if($colCount < 26) { // A1:A2 - Z1:Z2
|
|
// $columnName = $this->basicCells{$colCount};
|
|
// $this->sheets->setCellValue("{$columnName}1", mb_strtoupper($this->lang->line($name)))->mergeCells("{$columnName}1:{$columnName}2");
|
|
// $colCount++;
|
|
// }else { // AA1 AB1 AC1
|
|
// $columnName = substr($this->basicCells, $colCount, 2);
|
|
// $this->sheets->setCellValue("{$columnName}1", mb_strtoupper($this->lang->line($name)))->mergeCells("{$columnName}1:{$columnName}2");
|
|
// $colCount = $colCount + 2;
|
|
// }
|
|
// }
|
|
}
|
|
}
|
|
|
|
$generalStyleArray = [
|
|
'font' => [
|
|
'bold' => false,
|
|
],
|
|
'alignment' => [
|
|
'horizontal' => Alignment::HORIZONTAL_CENTER,
|
|
],
|
|
'fill' => [
|
|
'fillType' => Fill::FILL_SOLID,
|
|
'rotation' => 90,
|
|
'startColor' => [
|
|
'argb' => '428bca',
|
|
],
|
|
'endColor' => [
|
|
'argb' => '428bca',
|
|
],
|
|
],
|
|
];
|
|
|
|
$boderStyle = ['borderStyle' => Border::BORDER_THIN];
|
|
$boderStyleArray = [
|
|
'borders' => [
|
|
'top' => $boderStyle,
|
|
'right' => $boderStyle,
|
|
'left' => $boderStyle,
|
|
'bottom' => $boderStyle
|
|
]
|
|
];
|
|
// set style
|
|
$this->sheets->getStyle('A2:H2')->applyFromArray($generalStyleArray);
|
|
$this->sheets->getStyle('A1:H1')->applyFromArray($generalStyleArray);
|
|
// $this->sheets->getStyle('L2:M2')->applyFromArray($boderStyleArray);
|
|
}
|
|
|
|
public function reportData($queryData) {
|
|
|
|
$subscribers = $this->user_model->get_subscriber_information_list_export($this->data["logged_in"]["user_id"], $queryData, 4);
|
|
$intValueColumns = ['number_of_user_and_guest', 'avg_number_of_registration', 'number_of_registration', 'total_number_of_reservations_places_cancelled', 'number_of_places_reserved_on_wl'];
|
|
$active_sheet = $this->spreadsheet->setActiveSheetIndex(0);
|
|
|
|
// print_r($subscribers);
|
|
// exit;
|
|
|
|
if(count($subscribers) > 0)
|
|
{
|
|
// Row starts at 3
|
|
$cell_row_index = 3;
|
|
|
|
foreach($subscribers as $epd) {
|
|
|
|
$colCount = 0;
|
|
|
|
foreach($this->columnHeaders as $fcol => $name) {
|
|
|
|
// if ($name === "subscription_date_op") {
|
|
|
|
// $val = ($epd->{$name} != "") ? explode(" ", $epd->{$name}) : array();
|
|
// $date = (isset($val[0]))?$val[0]:"";
|
|
// $hour = (isset($val[1]))?$val[1]:"";
|
|
// $active_sheet->setCellValue("L{$cell_row_index}", $date); // L{$cell_row_index}
|
|
// $active_sheet->setCellValue("M{$cell_row_index}", $hour); // M{$cell_row_index}
|
|
// $colCount = 13;
|
|
|
|
// } else {
|
|
$value = "";
|
|
if (trim($name) != "" && isset($epd->{$name}) && !empty($epd->{$name})) {
|
|
$value = $epd->{$name};
|
|
}
|
|
|
|
// if($colCount < 26) { // A1:A2 - Z1:Z2
|
|
$columnName = $this->basicCells{$colCount};
|
|
$active_sheet->setCellValue("{$columnName}{$cell_row_index}", $value);
|
|
$colCount++;
|
|
// } else { // AA1 AB1 AC1
|
|
// $columnName = substr($this->basicCells, $colCount, 2);
|
|
// $active_sheet->setCellValue("{$columnName}{$cell_row_index}", $value);
|
|
// $colCount = $colCount + 2;
|
|
// }
|
|
// }
|
|
} // Enf of inner loop
|
|
|
|
$cell_row_index++;
|
|
} // End of outer loop
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Export no show file with title+date
|
|
*
|
|
* @param integer $eventID
|
|
* @param integer $eventScheduleID
|
|
* @return void
|
|
* access private member
|
|
*/
|
|
public function export_subscribers_list($queryString)
|
|
{
|
|
// Parse URL data
|
|
parse_str($queryString, $queryData);
|
|
|
|
//call memory limit
|
|
$this->setMemoryLimit();
|
|
|
|
//call document properties
|
|
$this->setDocumentProperties();
|
|
|
|
//set php excel first 5 row(s) with freeze header
|
|
$this->setExcelHeaders();
|
|
|
|
//get data for populate
|
|
$this->reportData($queryData);
|
|
|
|
//Call auto size function columns for active worksheet
|
|
$this->setExcelAutoSize();
|
|
|
|
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
|
|
$this->spreadsheet->setActiveSheetIndex(0);
|
|
|
|
// protect the workbok
|
|
$this->spreadsheet->getSecurity()->setLockWindows(true);
|
|
$this->spreadsheet->getSecurity()->setLockStructure(true);
|
|
|
|
$this->spreadsheet->getSecurity()->setWorkbookPassword('secret');
|
|
|
|
$this->setHeaders("La liste client (".date('d-m-Y H\hi').")");
|
|
}
|
|
|
|
public function get_subscribers_list()
|
|
{
|
|
Response::handleSessionTimeout("bo");
|
|
|
|
$this->load->model('event_registration_limit_model');
|
|
$this->load->model('user_registration_model');
|
|
$this->load->model('user_subscriber_model');
|
|
//$list = $this->user_subscriber_model->getSubscribers();
|
|
$list = $this->user_model->get_datatables($this->data["logged_in"]["user_id"], $this->input->post(), 3);
|
|
$login_by = $this->data["logged_in"]["user_id"];
|
|
$user_role = $this->data["logged_in"]["role_id"];
|
|
$style = ($user_role == '2') ? 'display:none;': '';
|
|
$roles = $this->user_registration_model->get_subscriber_roles();
|
|
$data = $row = array();
|
|
foreach ($list as $subscribers) {
|
|
$row["subscriber"] = "{$subscribers->first_name} {$subscribers->last_name}";
|
|
$row["email_address"] = $subscribers->email_address;
|
|
// $row["membership"] = $this->user_registration_model->get_membership_name($subscribers->subscription_id, $roles);
|
|
// $row["expiration_date"] = $subscribers->expiration_date;
|
|
// $row["birth_date"] = $subscribers->birth_date;
|
|
$row["telephone_number"] = (trim($subscribers->telephone_number) != "+[33] X XX XX XX XX" ? trim(remove_brackets(array( '[', ']' ), (strpos($subscribers->telephone_number, '+') !== false ? $subscribers->telephone_number : ( trim($subscribers->telephone_number) !="" ? "+".$subscribers->telephone_number : "" ) ) )) : "");
|
|
// $row["mobile_number"] =(trim($subscribers->mobile_number) != "+[33] X XX XX XX XX" ? trim(remove_brackets(array( '[', ']' ),(strpos($subscribers->mobile_number, '+') !== false ? $subscribers->mobile_number : ( trim($subscribers->mobile_number) !="" ? "+".$subscribers->mobile_number : "") ))) : "");
|
|
$row["address"] = $subscribers->address;
|
|
// $row["noshow_complete"] = $subscribers->noshow_complete;
|
|
// $row["noshow_partial"] = $subscribers->noshow_partial;
|
|
// $row["noshow_moderation"] = $subscribers->noshow_moderation;
|
|
// $row["status"] = $subscribers->status;
|
|
$row["actions"] = '';
|
|
|
|
// if (Page::authorize(PAGE_CODE['subscribers'], PRIVS[PAGE_CODE['subscribers']]['edit'], false)) {
|
|
// $row["actions"] .= "<button href='#' onclick='subscribers_list.edit_subscription_modal({$subscribers->sub_id})' class='action-btn' name='membership-{$subscribers->subscriber_id}' data-id='{$subscribers->sub_id}' ><i class='fa fa-euro' aria-hidden='true'></i></button>";
|
|
// }
|
|
|
|
if (Page::authorize(PAGE_CODE['subscribers'], PRIVS[PAGE_CODE['subscribers']]['edit'], false)) {
|
|
$row["actions"] .= "<button href='#' onclick='subscribers_list.edit_info_modal(this)' class='action-btn' name='{$subscribers->subscriber_id}' data-id='{$subscribers->sub_id}' ><i class='fa fa-pencil' aria-hidden='true'></i></button>";
|
|
}
|
|
|
|
if (Page::authorize(PAGE_CODE['subscribers'], PRIVS[PAGE_CODE['subscribers']]['delete'], false)) {
|
|
$row["actions"] .= "<button style='{$style}' href = '#' onclick = 'subscribers_list.delete(this)' class='action-btn' name = '{$row["subscriber"]}' data-id = '{$subscribers->sub_id}' ><i class='fa fa-trash' aria-hidden = 'true' ></i ></button>";
|
|
}
|
|
|
|
// if (Page::authorize(PAGE_CODE['subscribers'], PRIVS[PAGE_CODE['subscribers']]['login_as'], false)) {
|
|
// $row["actions"] .= "<button href='#' onclick='subscribers_list.token_modal(this)' id='$subscribers->sub_id' class='action-btn' name='{$row["subscriber"]}' data-id='auth_token/{$subscribers->sub_id}/{$login_by}'><i class='fa fa-sign-in' aria-hidden='true'></i></button>";
|
|
// }
|
|
// if (Page::authorize(PAGE_CODE['subscribers'], PRIVS[PAGE_CODE['subscribers']]['mod_toggle'], false)) {
|
|
// $row["actions"] .= "<button href='#' onclick='subscribers_list.disableEnableModeration(this)' data-name='{$row["subscriber"]}' class='action-btn disableEnableModeration' name='{$subscribers->subscriber_id}' data-id='{$subscribers->sub_id}' ><i class='fa fa-unlock-alt' aria-hidden='true'></i></button>";
|
|
// }
|
|
|
|
array_push($data, $row);
|
|
|
|
}
|
|
|
|
$output = array(
|
|
"draw" => $this->input->post('draw'),
|
|
"recordsTotal" => $this->user_model->count_all($this->data["logged_in"]["user_id"], $this->input->post(), 3),
|
|
"recordsFiltered" => $this->user_model->count_filtered($this->data["logged_in"]["user_id"], $this->input->post(), 3),
|
|
"data" => $data,
|
|
);
|
|
|
|
//output to json format
|
|
output_to_json($this, $output);
|
|
}
|
|
|
|
public function delete_subscriber()
|
|
{
|
|
Response::handleSessionTimeout("bo");
|
|
|
|
$deleted = $this->user_model->delete_subscribers( $this->input->post('user_id') , ["status" => 0]);
|
|
|
|
output_to_json($this,
|
|
array(
|
|
'is_success' => $deleted
|
|
)
|
|
);
|
|
}
|
|
|
|
public function get_subscriber()
|
|
{
|
|
Response::handleSessionTimeout("bo");
|
|
|
|
output_to_json($this, $this->user_model->get_subscribers( $this->input->post('s_id') ));
|
|
}
|
|
|
|
public function put_subscriber()
|
|
{
|
|
Response::handleSessionTimeout("bo");
|
|
|
|
// if(_empty_prefix($this->input->post("phone"))){
|
|
// output_to_json($this, array(
|
|
// "error" => true,
|
|
// "field" => "phone",
|
|
// "message" => "Entrez au moins 9 chiffres."
|
|
// ));
|
|
// }else if(_empty_prefix($this->input->post("mobile"))){
|
|
// output_to_json($this, array(
|
|
// "error" => true,
|
|
// "field" => "mobile",
|
|
// "message" => "Entrez au moins 9 chiffres."
|
|
// ));
|
|
//}else{
|
|
$this->user_model->put_subscribers($this->input->post('user_id'), $this->input->post());
|
|
output_to_json($this, array(
|
|
"success" => true
|
|
));
|
|
//}
|
|
}
|
|
|
|
public function enable_disable_user_moderation() {
|
|
Response::handleSessionTimeout("bo");
|
|
|
|
|
|
$this->load->model('user_subscriber_model');
|
|
output_to_json($this, array(
|
|
"success" => $this->user_subscriber_model->enable_disable_user_moderation( $this->input->post() )
|
|
));
|
|
}
|
|
|
|
public function get_user_moderation($subscriber_id) {
|
|
Response::handleSessionTimeout("bo");
|
|
|
|
|
|
$this->load->model('user_subscriber_model');
|
|
output_to_json($this, $this->user_subscriber_model->get_user_moderation( $subscriber_id ));
|
|
}
|
|
|
|
private function setSubscriberExcelHeaders()
|
|
{
|
|
$this->sheets->getRowDimension(1)->setRowHeight(-1);
|
|
|
|
foreach(range('A','B') as $columnID) {
|
|
$this->sheets->getColumnDimension($columnID)->setAutoSize(true);
|
|
}
|
|
// Merge and Set Header Cell values
|
|
$requiredCells = 'ABC';
|
|
$colCount = 0;
|
|
$columns =['#', 'EMAIL', 'DATE'];
|
|
foreach($columns as $fcol => $name) {
|
|
$columnName = substr($requiredCells, $colCount, 1);
|
|
$this->sheets->setCellValue("{$columnName}1", $name);
|
|
$colCount++;
|
|
|
|
}
|
|
|
|
$generalStyleArray = [
|
|
'font' => [
|
|
'bold' => false,
|
|
],
|
|
'alignment' => [
|
|
'horizontal' => Alignment::HORIZONTAL_CENTER,
|
|
],
|
|
'fill' => [
|
|
'fillType' => Fill::FILL_SOLID,
|
|
'rotation' => 90,
|
|
'startColor' => [
|
|
'argb' => '428bca',
|
|
],
|
|
'endColor' => [
|
|
'argb' => '428bca',
|
|
],
|
|
],
|
|
];
|
|
|
|
$boderStyle = ['borderStyle' => Border::BORDER_THIN];
|
|
$boderStyleArray = [
|
|
'borders' => [
|
|
'top' => $boderStyle,
|
|
'right' => $boderStyle,
|
|
'left' => $boderStyle,
|
|
'bottom' => $boderStyle
|
|
]
|
|
];
|
|
// set style
|
|
$this->sheets->getStyle('A2:C2')->applyFromArray($generalStyleArray);
|
|
$this->sheets->getStyle('A1:C1')->applyFromArray($generalStyleArray);
|
|
// $this->sheets->getStyle('L2:M2')->applyFromArray($boderStyleArray);
|
|
}
|
|
public function export_subscribers_info() {
|
|
Response::handleSessionTimeout("bo");
|
|
|
|
$event_id = $this->input->get('event_id');
|
|
if(!isset($event_id)) {
|
|
//
|
|
}
|
|
|
|
//call memory limit
|
|
$this->setMemoryLimit();
|
|
|
|
//call document properties
|
|
$this->setDocumentProperties();
|
|
|
|
//set php excel first 5 row(s) with freeze header
|
|
$this->setSubscriberExcelHeaders();
|
|
|
|
//get data for populate
|
|
$this->get_event_subscribers($event_id);
|
|
|
|
//Call auto size function columns for active worksheet
|
|
$this->setExcelAutoSize();
|
|
|
|
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
|
|
$this->spreadsheet->setActiveSheetIndex(0);
|
|
|
|
// protect the workbok
|
|
$this->spreadsheet->getSecurity()->setLockWindows(true);
|
|
$this->spreadsheet->getSecurity()->setLockStructure(true);
|
|
|
|
$this->spreadsheet->getSecurity()->setWorkbookPassword('secret');
|
|
|
|
$this->setHeaders("La liste client (".date('d-m-Y H\hi').")");
|
|
}
|
|
|
|
private function get_event_subscribers($event_id) {
|
|
$this->load->model('event_workshop_informer_model');
|
|
$subscribers = $this->event_workshop_informer_model->get_subscribers_by_event($event_id);
|
|
$active_sheet = $this->spreadsheet->setActiveSheetIndex(0);
|
|
$requiredCells = 'ABC';
|
|
if(count($subscribers) > 0)
|
|
{
|
|
// Row starts at 3
|
|
$cell_row_index = 3;
|
|
$columns = ['#', 'EMAIL', 'DATE'];
|
|
foreach($subscribers as $epd) {
|
|
|
|
$colCount = 0;
|
|
|
|
foreach($columns as $fcol => $name) {
|
|
$active_sheet->setCellValue("A{$cell_row_index}", $cell_row_index-2);
|
|
$active_sheet->setCellValue("B{$cell_row_index}", $epd->email_address); // L{$cell_row_index}
|
|
$active_sheet->setCellValue("C{$cell_row_index}", $epd->date_created);
|
|
|
|
} // Enf of inner loop
|
|
|
|
$cell_row_index++;
|
|
} // End of outer loop
|
|
}
|
|
}
|
|
}
|
|
|