'desc'); // default order public function __construct() { parent::__construct(); } private function _get_datatables_query($data_source){ $_query = ""; $_search = ""; $_ordey_by = ""; $data = array(); $select = ""; $_query ="SELECT eet.email_tpl_id, eett.email_type, eett.email_type_subject, eet.email_type_id, eet.email_tpl_name, eet.email_tpl_subject, eet.email_tpl_surheader, eet.email_tpl_creation_status AS email_tpl_creation_status, eet.email_tpl_status AS email_tpl_status_, (CASE WHEN eet.email_tpl_status = 1 THEN 'En cours de création' WHEN eet.email_tpl_status = 2 THEN 'Publié' ELSE 'Email n\'est pas encore créé' END) AS email_tpl_status, (CASE WHEN eet.email_tpl_status = 2 AND eett.sort_order=1 AND eet.email_tpl_creation_status = 'DEFAULT' THEN CONCAT('j - ',eet.email_tpl_date_created) WHEN eet.email_tpl_status = 2 AND eett.sort_order=2 AND eet.email_tpl_creation_status = 'DEFAULT' THEN CONCAT('i - ',eet.email_tpl_date_created) WHEN eet.email_tpl_status = 2 AND eett.sort_order=3 AND eet.email_tpl_creation_status = 'DEFAULT' THEN CONCAT('h - ',eet.email_tpl_date_created) WHEN eet.email_tpl_status = 2 AND eett.sort_order=4 AND eet.email_tpl_creation_status = 'DEFAULT' THEN CONCAT('g - ',eet.email_tpl_date_created) WHEN eet.email_tpl_status = 2 AND eett.sort_order=5 AND eet.email_tpl_creation_status = 'DEFAULT' THEN CONCAT('f - ',eet.email_tpl_date_created) WHEN eet.email_tpl_status = 2 AND eett.sort_order=6 AND eet.email_tpl_creation_status = 'DEFAULT' THEN CONCAT('e - ',eet.email_tpl_date_created) WHEN eet.email_tpl_status = 2 AND eett.sort_order=7 AND eet.email_tpl_creation_status = 'DEFAULT' THEN CONCAT('c - ',eet.email_tpl_date_created) WHEN eet.email_tpl_status = 2 AND eett.sort_order=8 AND eet.email_tpl_creation_status = 'DEFAULT' THEN CONCAT('b - ',eet.email_tpl_date_created) ELSE CONCAT('a - ',eet.email_tpl_date_created) END) AS custom_order, CONCAT(u.first_name, ' ', u.last_name) as email_tpl_author, DATE_FORMAT(eet.email_tpl_date_created, '%d/%m/%Y %Hh%i') AS email_tpl_date_created FROM event_email_template eet LEFT JOIN event_email_template_type eett ON eett.email_type_id = eet.email_type_id LEFT JOIN user u ON u.user_id = eet.email_tpl_author WHERE eet.email_tpl_status IN(1,2) "; if(isset($data_source['order']) && !empty($data_source['order'])) { // here order processing if(isset($data_source['order']['0']['dir']) && !empty($data_source['order']['0']['dir'])) { if(isset($this->column_order[$data_source['order']['0']['column']])) $_ordey_by .= " ORDER BY ".$this->column_order[$data_source['order']['0']['column']]." ".$data_source['order']['0']['dir']; } else { $_ordey_by .= " ORDER BY ".key($this->order)." ".$this->order[key($this->order)]; } } else if(isset($this->order) && !empty($this->order)) { $_ordey_by .= " ORDER BY ".key($this->order)." ".$this->order[key($this->order)]; } $_ordey_by .= ($_ordey_by!="")?", ":" ORDER BY "; $_ordey_by .= " custom_order DESC"; return array("query"=>$_query.$_search.$_ordey_by, "data" =>$data); } public function get_datatables($data_source){ $_query = $this->_get_datatables_query($data_source); if($data_source['length'] != -1){ $_query["query"] .= " LIMIT ".$data_source['start'].", ".$data_source['length']; } return $this->db->query($_query["query"], $_query["data"])->result(); } public function count_filtered($data_source){ $_query = $this->_get_datatables_query($data_source); return $this->db->query($_query["query"], $_query["data"])->num_rows(); } public function count_all($data_source){ $_query = $this->_get_datatables_query($data_source); return $this->db->query($_query["query"], $_query["data"])->num_rows(); } public function create_email_template($data){ //unset default template if the template to be added is also a default one if($data["email_tpl_creation_status"] === "DEFAULT" && $data["email_tpl_status"] == 2) { $this->db->where("email_tpl_creation_status", $data["email_tpl_creation_status"]); $this->db->where("email_tpl_status", $data["email_tpl_status"]); $this->db->where("email_type_id", $data["email_type_id"]); $this->db->update("event_email_template", array("email_tpl_creation_status" => "CUSTOMIZED")); } $this->db->insert("event_email_template", $data); if($this->db->affected_rows()){ return $this->db->insert_id(); } return false; } public function update_email_template($email_tpl_id, $data){ //unset default template if the template to be replaced is also a default one if($data["email_tpl_creation_status"] === "DEFAULT" && $data["email_tpl_status"] == 2) { $this->db->where("email_tpl_creation_status", $data["email_tpl_creation_status"]); $this->db->where("email_tpl_status", $data["email_tpl_status"]); $this->db->where("email_type_id", $data["email_type_id"]); $this->db->update("event_email_template", array("email_tpl_creation_status" => "CUSTOMIZED")); } $this->db->where("email_tpl_id", $email_tpl_id); $update = $this->db->update("event_email_template", $data); if($update){ return true; } return false; } public function check_template_dependencies($email_tpl_id){ // //check dependencies // $this->db->select("email_tpl_id"); // $this->db->where("email_tpl_id", $email_tpl_id); // $this->db->where("email_map_status", 1); // $check = $this->db->get("event_email_template_map")->num_rows(); // if($check){ // return true; // } // return false; } public function delete_email_tempalate($email_tpl_id){ $this->db->where("email_tpl_id", $email_tpl_id); $this->db->update("event_email_template", array("email_tpl_status" => 0)); if($this->db->affected_rows()){ return true; } return false; } public function get_email_template_content($email_tpl_id){ $this->db->select("email_tpl_detail,email_tpl_subject"); $this->db->where("email_tpl_id",$email_tpl_id); $result = $this->db->get("event_email_template")->result(); if($result){ return $result; } return false; } public function check_duplicate_template_name($email_tpl_id="", $email_tpl_name){ $this->db->select("email_tpl_id"); if($email_tpl_id !="") { $this->db->where("email_tpl_id !=", $email_tpl_id); } $this->db->where("email_tpl_name", $email_tpl_name); $this->db->where("email_tpl_status !=", 0); $result = $this->db->get("event_email_template")->num_rows(); if($result > 0){ return true; } return false; } public function get_subscribers_data($subscriber){ $result = $this->db->query("SELECT u.user_id as subscriber_id, u.email_address, CONCAT(u.first_name, ' ', u.last_name) AS subscriber, u.first_name AS subs_prenom, u.last_name AS subs_nom FROM user u WHERE user_id = ? LIMIT 1", array($subscriber)); if ($result->num_rows() > 0) { return $result->result_array()[0]; } return false; } public function list_email_type(){ $result = $this->db->select("email_type_id, email_type") ->where("email_type_status",1) ->order_by("sort_order", "asc") ->get("event_email_template_type")->result(); return $result; } public function list_email_type_with_default_setting(){ $result = $this->db->select("email_type_id, email_type") ->where("email_type_status",1) ->where_not_in("email_type_id", array(1,2,4, 5, 6 ,7, 8)) ->get("event_email_template_type")->result(); return $result; } public function typeahead_email_template($data){ $this->db->select("email_tpl_id, email_tpl_name AS name"); $this->db->where("email_tpl_status", 2); $this->db->where("email_type_id", $data["email_type_id"]); $this->db->like("email_tpl_name", $data["search"]); $this->db->limit(10); $this->db->order_by("email_tpl_id", "desc"); return $this->db->get("event_email_template")->result(); } public function typeahead_event($data){ $where = (isset($data["events_ids"]) && !empty($data["events_ids"]))?" AND eetmp.event_id != ".$this->db->escape($data["events_ids"]):""; return $this->db->query(" SELECT event_id, title AS name, DATE_FORMAT(reservation_start_date, '%d/%m/%Y %Hh%m') AS reservation FROM event WHERE back_office_status IN(1,2,3) AND title LIKE '%".$this->db->escape_like_str($data["search"])."%' ESCAPE '!' AND event_id NOT IN( SELECT eetmp.event_id FROM event_email_template_mapping eetmp, event_email_template eet WHERE eet.email_type_id = '".$this->db->escape_str($data["email_type_id"])."' AND eetmp.email_mapping_status = 1 ".$where." ) ORDER BY event_id desc LIMIT 10 ")->result(); } public function check_reset_time($email_schedule_id){ return $this->db->query("SELECT ees.email_schedule_id FROM event_email_schedule ees LEFT JOIN event_schedule es ON es.event_schedule_id = ees.event_schedule_id WHERE ees.email_schedule_date <= NOW() AND es.start_date_time >= NOW() AND ees.email_schedule_status = 1 AND ees.email_schedule_id = ? AND es.back_office_status IN(2,3) ORDER BY ees.email_schedule_id DESC LIMIT 1 ", array($email_schedule_id))->num_rows(); } public function get_current_event_email_template($event_id, $email_type_id, $withcontent=false, $custom_tpl_id = null){ //check if email is disabled $not_disabled = $this->db->query(" select status from event_schedule_email_status where event_id = ? and email_type_id = ? and status = 1 limit 1 ", array($event_id, $email_type_id))->num_rows(); if ($custom_tpl_id !== null) { $email_type_id = $custom_tpl_id; } if($not_disabled > 0){ $select = ""; if($withcontent){ $select = ", (CASE WHEN (eet.email_tpl_surheader IS NULL OR eet.email_tpl_surheader = '') THEN eet.email_tpl_detail ELSE CONCAT(eet.email_tpl_surheader,' ', eet.email_tpl_detail) END) AS email_tpl_detail, eet.email_tpl_subject "; } //check if there is an assigned template to this event $eventTPL = $this->db->query(" SELECT eet.email_tpl_id, eet.email_type_id ".$select." FROM event_email_template_mapping_by_event_schedule emap LEFT JOIN event_email_template eet ON emap.email_tpl_id = eet.email_tpl_id WHERE emap.event_id = ? AND emap.event_id IN( SELECT DISTINCT eses.event_id FROM event_schedule_email_status eses WHERE eses.event_id = ? AND eses.status = 1 AND eses.email_type_id = ? ) AND emap.is_active = 1 AND eet.email_type_id = ? AND eet.email_tpl_status = 2 LIMIT 1 ", array($event_id, $event_id, $email_type_id, $email_type_id)); if ($eventTPL->num_rows()) { return $eventTPL->row(); } /*Check if there is an assigned email template for the event schedule*/ $eventSchedTPL = $this->db->query(" SELECT eet.email_tpl_id, eet.email_type_id ".$select." FROM event_email_template eet WHERE eet.email_tpl_status = 2 AND eet.email_type_id = ? AND eet.email_type_id IN( SELECT DISTINCT eses.email_type_id FROM event_schedule_email_status eses WHERE eses.event_id = ? AND eses.status = 1 AND eses.email_type_id = ? ) AND eet.email_tpl_creation_status = 'DEFAULT' LIMIT 1 ", array($email_type_id, $event_id, $email_type_id)); if ($eventSchedTPL->num_rows()) { return $eventSchedTPL->row(); } /*Get globally set default email template for the email type*/ $defaultTPL = $this->db->query(" SELECT eet.email_tpl_id, eet.email_type_id ".$select." FROM event_email_template eet WHERE eet.email_tpl_status = 2 AND eet.email_type_id = ? AND eet.email_tpl_creation_status = 'DEFAULT' LIMIT 1 ", array($email_type_id)); if ($defaultTPL->num_rows()) { return $defaultTPL->row(); } } return array(); } public function get_default_template($email_template_id){ $default_template = $this->db->select("email_type_subject, email_type_template") ->from('event_email_template_type') ->where('email_type_id', $email_template_id) ->where('email_type_status', 1) ->limit(1) ->get() ->row(); if($default_template){ return $default_template; } else return false; } public function get_default_template_by_email_type_id($email_type_id){ $default_template = $this->db->select("*") ->from('event_email_template') ->where('email_type_id', $email_type_id) ->where('email_tpl_creation_status', 'DEFAULT') ->where('email_tpl_status', 2) ->limit(1) ->get() ->row(); if($default_template){ return $default_template; } else return false; } public function get_customized_template_by_email_type_id($email_type_id){ $default_template = $this->db->select("*") ->from('event_email_template') ->where('email_type_id', $email_type_id) ->where('email_tpl_creation_status', 'CUSTOMIZED') ->where('email_tpl_status', 2) ->limit(1) ->get() ->row(); if($default_template){ return $default_template; } else return false; } public function get_default_tmplt($email_template_id){ $default_template = $this->db->select("email_tpl_subject, email_tpl_detail") ->from('event_email_template') ->where('email_type_id', $email_template_id) ->where('email_tpl_status', 2) ->where('email_tpl_creation_status', "DEFAULT") ->limit(1) ->get() ->row(); if($default_template){ return $default_template; } else return false; } public function upload_default_email_template($email_template){ $this->db->where('email_type_status',1); $this->db->update_batch('event_email_template_type', $email_template, 'email_type_id'); $this->db->trans_complete(); return ($this->db->trans_status() === FALSE)? FALSE:TRUE; } }