MAILJET_API['SENDER_EMAIL'], "fromName" => MAILJET_API['SENDER_NAME'], "apikey" => MAILJET_API['KEY'], "apisecret" => MAILJET_API['SECRET'] ); $this->cfg = $_config; $this->mj = new \Mailjet\Client($this->cfg["apikey"], $this->cfg["apisecret"], true); $CI =& get_instance(); $CI->lang->load('frontoffice/subscribe', 'fr'); } public function _ci_instance_email(){ return array( 'sender' => $this->cfg["sender"], 'protocol' => 'smtp', 'smtp_host' => 'ssl://in.mailjet.com', 'smtp_port' => 465, 'smtp_user' => $this->cfg["apikey"], 'smtp_pass' => $this->cfg["apisecret"], 'mailtype' => 'html', 'charset' => 'UTF-8', 'newline' => "\r\n" ); } public function fo_send_template_email($maildata) { //initialize vars $maildata["vars"] = $this->initialize_event_vars($maildata["vars"]); $body = [ 'FromEmail' => $this->cfg["sender"], 'FromName' => (isset($this->cfg["fromName"]) && !empty($this->cfg["fromName"]))?$this->cfg["fromName"]:'', 'Subject' => str_ireplace($this->search, $this->replacements, $maildata["message"]->email_tpl_subject), 'Html-part' => customEmailFormat($maildata["message"]->email_tpl_detail, $maildata["vars"]), 'Recipients' => [ [ 'Email' => $maildata["vars"]->email_address, 'Name' => $maildata["vars"]->subscriber, 'Vars' => (array) $maildata["vars"] ] ] ]; $response = $this->mj->post(Resources::$Email, ['body' => $body]); if($response->success()) { $msgSent = (object) $response->getData(); if(isset($msgSent->Sent) && !empty($msgSent->Sent)){ if($msgSent->Sent) { $processed_email = array_column($msgSent->Sent, 'MessageID', 'Email'); if(isset($processed_email[$maildata["vars"]->email_address]) && !empty($processed_email[$maildata["vars"]->email_address])){ return array( "email_reference_id" => $processed_email[$maildata["vars"]->email_address], "email_number_of_send_attempt" => 1, "email_status" => 1, "email_description" => "Sent!" ); } else { return false; } } else { return false; } } else { return false; } } else{ return false; } } public function fo_send_default_email($maildata) { $body = [ 'FromEmail' => $this->cfg["sender"], 'FromName' => (isset($maildata['fromName']) && !empty($maildata['fromName']))?$maildata['fromName']:$this->cfg["fromName"], 'Subject' => $maildata["subject"], 'Html-part' => urldecode($maildata["message"]), 'Recipients' => [ [ 'Email' => $maildata["recipient"], ] ] ]; $response = $this->mj->post(Resources::$Email, ['body' => $body]); if($response->success()) { return $response->getData(); } else return false; } function send($data, int $type){ switch($type){ case 1: return $this->send_reminder_email($data); break; case 2: return $this->send_waiting_list_reinvitation_email($data); break; case 3: return $this->send_push_event_emails($data); break; case 4: return $this->send_frontoffice_emails($data); break; case 5: return $this->send_workshop_informer_emails($data); break; case 6: return $this->send_cancel_email($data); break; case 7: return $this->send_distance_reminder_email($data); default : echo "No action has been specified."; exit(0); break; }; } private function send_workshop_informer_emails($maildata){ $emails = array(); $sent_emails = array(); $failed_emails = array(); $mjLog = ""; foreach ($maildata["maildata"] as $key => $value) { //initialize variables $value["event"] = $this->initialize_event_vars($value["event"]); $mjBODY = array( 'FromEmail' => $this->cfg["sender"], 'FromName' => $this->cfg["fromName"], 'Subject' => str_replace($this->search, $this->replacements, $value["event_email_tpl"]->email_tpl_subject), 'Html-part' => customEmailFormat($value["event_email_tpl"]->email_tpl_detail, $value["event"]), 'Vars' => (array) $value["event"] ); $mjBODY['Vars'] = array_merge($mjBODY['Vars'], $maildata["addVars"]); $mjBODY['Vars']['event_url'] = $mjBODY['Vars']['event_url'].$value["event"]->event_id; $mjBODY['Vars']['event_picture'] = $maildata["addVars"]['event_picture'].$value["event"]->event_picture; $mjBODY['Recipients'] = array(); foreach ($value["subscribers"] as $index => $subscriber) { array_push($mjBODY['Recipients'], array( 'Email' => $subscriber->email_address, // 'Name' => $subscriber->subscriber, 'Vars' => array( 'new_tab_url' => "e/workshop/".base64_encode($subscriber->email_recipient_id), 'email_address' => $subscriber->email_address ) )); //prepare processed emails array_push($emails, array( "email_recipient_id" => $subscriber->email_recipient_id, "email_address" => $subscriber->email_address, "email_reference_id" => null, "email_date_time" => date('Y-m-d H:i:s'), "email_tpl_id" => $value["event_email_tpl"]->email_tpl_id, "email_number_of_send_attempt" => $subscriber->email_number_of_send_attempt, "email_status" => 0, )); } $sent = 0; $failed = 0; $response = $this->mj->post(Resources::$Email, array('body' => $mjBODY)); if ($response->success()) { $msgSent = (object) $response->getData(); if($msgSent->Sent){ $processed_emails = array_column($msgSent->Sent, 'MessageID', 'Email'); foreach($emails as $idx => $val){ //sent emails if(isset($processed_emails[$val["email_address"]]) && !empty($processed_emails[$val["email_address"]])){ $val["email_reference_id"] = $processed_emails[$val["email_address"]]; $val["email_number_of_send_attempt"] +=1; $val["email_status"] = 1;//we need to set this to 5 instead of one, description matters here which is the "Sent!" $val["email_description"] = "Sent!"; unset($val["email_address"]); $sent++; array_push($sent_emails, $val); } else { //failed emails $val["email_number_of_send_attempt"] += 1; $val["email_status"] = 0; $val["email_description"] = "Failed!"; unset($val["email_address"]); $failed++; array_push($failed_emails, $val); } } unset($processed_emails); $emails = array(); $mjLog .="Email type : Workshop Informer, Sent : ".$sent.", Failed : ".$failed.", Event_id : ".$value["event"]->event_id."\n"; } else { $mjLog .="Email type : Workshop Informer, Mj E-Code : ".$response->getStatus()." Event_id : ".$value["event"]->event_id."\n"; } } else { $mjLog .="Email type : Workshop Informer, Mj E-Code : ".$response->getStatus()." Event_id : ".$value["event"]->event_id."\n"; } unset($response); } //end of main loop return array("success" => true, "sent_emails" => $sent_emails, "failed_emails" => $failed_emails, "logs" => $mjLog); } private function send_reminder_email($maildata){ $emails = array(); $sent_emails = array(); $failed_emails = array(); $mjLog = ""; foreach ($maildata["maildata"] as $key => $value) { //initialize variables $value["event"] = $this->initialize_event_vars($value["event"]); if(isset($value['event']->event_reminder_specific_date) && !empty($value['event']->event_reminder_specific_date)) { $value['event']->event_reminder_date = secondsToTime($value['event']->event_reminder_specific_date); } else { unset($value['event']->event_reminder_specific_date); } $mjBODY = array( 'FromEmail' => $this->cfg["sender"], 'FromName' => $this->cfg["fromName"], 'Subject' => str_replace($this->search, $this->replacements, $value["event_email_tpl"]->email_tpl_subject), 'Html-part' => customEmailFormat($value["event_email_tpl"]->email_tpl_detail, $value["event"]), 'Vars' => (array) $value["event"] ); $mjBODY['Vars'] = array_merge($mjBODY['Vars'], $maildata["addVars"]); $mjBODY['Vars']['event_url'] = $mjBODY['Vars']['event_url'].$value["event"]->event_id; $mjBODY['Vars']['event_picture'] = $maildata["addVars"]['event_picture'].$value["event"]->event_picture; $mjBODY['Recipients'] = array(); foreach ($value["subscribers"] as $index => $subscriber) { array_push($mjBODY['Recipients'], array( 'Email' => $subscriber->email_address, 'Name' => $subscriber->subscriber, 'Vars' => array( 'subscriber' => $subscriber->subscriber, 'subs_prenom' => $subscriber->subs_prenom, 'subs_nom' => $subscriber->subs_nom, 'new_tab_url' => "e/r/".base64_encode($subscriber->email_recipient_id."_".$subscriber->subscriber_id), 'email_address' => $subscriber->email_address ) )); //prepare processed emails array_push($emails, array( "email_recipient_id" => $subscriber->email_recipient_id, "email_address" => $subscriber->email_address, "email_reference_id" => null, "email_date_time" => date('Y-m-d H:i:s'), "email_tpl_id" => $value["event_email_tpl"]->email_tpl_id, "email_number_of_send_attempt" => $subscriber->email_number_of_send_attempt, "email_status" => 0, )); } $sent = 0; $failed = 0; $response = $this->mj->post(Resources::$Email, array('body' => $mjBODY)); if ($response->success()) { $msgSent = (object) $response->getData(); if($msgSent->Sent){ $processed_emails = array_column($msgSent->Sent, 'MessageID', 'Email'); foreach($emails as $idx => $val){ //sent emails if(isset($processed_emails[$val["email_address"]]) && !empty($processed_emails[$val["email_address"]])){ $val["email_reference_id"] = $processed_emails[$val["email_address"]]; $val["email_number_of_send_attempt"] +=1; $val["email_status"] = 1;//we need to set this to 5 instead of one, description matters here which is the "Sent!" $val["email_description"] = "Sent!"; unset($val["email_address"]); $sent++; array_push($sent_emails, $val); } else { //failed emails $val["email_number_of_send_attempt"] += 1; $val["email_status"] = 0; $val["email_description"] = "Failed!"; unset($val["email_address"]); $failed++; array_push($failed_emails, $val); } } unset($processed_emails); $emails = array(); $mjLog .="Email type : Reminder, Sent : ".$sent.", Failed : ".$failed.", Event_id : ".$value["event"]->event_id.", Event_schedule_id : ".$value["event"]->event_schedule_id."\n"; } else { $mjLog .="Email type : Reminder, Mj E-Code : ".$response->getStatus()." Event_id : ".$value["event"]->event_id.", Event_schedule_id : ".$value["event"]->event_schedule_id."\n"; } } else { $mjLog .="Email type : Reminder, Mj E-Code : ".$response->getStatus()." Event_id : ".$value["event"]->event_id.", Event_schedule_id : ".$value["event"]->event_schedule_id."\n"; } unset($response); } //end of main loop return array("success" => true, "sent_emails" => $sent_emails, "failed_emails" => $failed_emails, "logs" => $mjLog); } private function send_waiting_list_reinvitation_email($maildata){ $emails = array(); $sent_emails = array(); $failed_emails = array(); $mjLog = ""; foreach ($maildata["maildata"] as $key => $value) { //initialize variables $value["event"] = $this->initialize_event_vars($value["event"]); $mjBODY = array( 'FromEmail' => $this->cfg["sender"], 'FromName' => $this->cfg["fromName"], 'Subject' => str_replace($this->search, $this->replacements, $value["event_email_tpl"]->email_tpl_subject), 'Html-part' => customEmailFormat($value["event_email_tpl"]->email_tpl_detail, $value["event"]), 'Vars' => (array) $value["event"] ); $mjBODY['Vars'] = array_merge($mjBODY['Vars'], $maildata["addVars"]); $mjBODY['Vars']['event_url'] = $mjBODY['Vars']['event_url'].$value["event"]->event_id; $mjBODY['Vars']['event_picture'] = $maildata["addVars"]['event_picture'].$value["event"]->event_picture; $mjBODY['Recipients'] = array(); foreach ($value["subscribers"] as $index => $subscriber) { array_push($mjBODY['Recipients'], array( 'Email' => $subscriber->email_address, 'Name' => $subscriber->subscriber, 'Vars' => array( 'subscriber' => $subscriber->subscriber, 'subs_prenom' => $subscriber->subs_prenom, 'subs_nom' => $subscriber->subs_nom, 'new_tab_url' => "e/wri/".base64_encode($subscriber->email_recipient_id."_".$subscriber->subscriber_id), 'email_address' => $subscriber->email_address ) )); //prepare processed emails array_push($emails, array( "email_recipient_id" => $subscriber->email_recipient_id, "email_address" => $subscriber->email_address, "email_reference_id" => null, "email_date_time" => date('Y-m-d H:i:s'), "email_tpl_id" => $value["event_email_tpl"]->email_tpl_id, "email_number_of_send_attempt" => $subscriber->email_number_of_send_attempt, "email_status" => 0, )); } $sent=0; $failed = 0; $response = $this->mj->post(Resources::$Email, array('body' => $mjBODY)); if ($response->success()) { $msgSent = (object) $response->getData(); if($msgSent->Sent){ $processed_emails = array_column($msgSent->Sent, 'MessageID', 'Email'); foreach($emails as $idx => $val){ //sent emails if(isset($processed_emails[$val["email_address"]]) && !empty($processed_emails[$val["email_address"]])){ $val["email_reference_id"] = $processed_emails[$val["email_address"]]; $val["email_number_of_send_attempt"] +=1; $val["email_status"] = 1; $val["email_description"] = "Sent!"; unset($val["email_address"]); $sent++; array_push($sent_emails, $val); } else { //failed emails $val["email_number_of_send_attempt"] += 1; $val["email_status"] = 0; $val["email_description"] = "Failed!"; unset($val["email_address"]); $failed++; array_push($failed_emails, $val); } } unset($processed_emails); $emails = array(); $mjLog .="Email type : Waitinglist Reinvitation, Sent : ".$sent.", Failed : ".$failed.", Event_id : ".$value["event"]->event_id.", Event_schedule_id : ".$value["event"]->event_schedule_id."\n"; } else { $mjLog .="Email type : Waitinglist Reinvitation, Mj E-Code : ".$response->getStatus()." Event_id : ".$value["event"]->event_id.", Event_schedule_id : ".$value["event"]->event_schedule_id."\n"; } } else { $mjLog .="Email type : Waitinglist Reinvitation, Mj E-Code : ".$response->getStatus()." Event_id : ".$value["event"]->event_id.", Event_schedule_id : ".$value["event"]->event_schedule_id."\n"; } unset($response); } //end of main loop return array("success" => true, "sent_emails" => $sent_emails, "failed_emails" => $failed_emails, "logs" => $mjLog); } private function send_push_event_emails($maildata){ $emails = array(); $sent_emails = array(); $failed_emails = array(); $mjLog = ""; foreach ($maildata["maildata"] as $key => $value) { //initialize variables $value["event"] = $this->initialize_event_vars($value["event"]); $mjBODY = array( 'FromEmail' => $this->cfg["sender"], 'FromName' => $this->cfg["fromName"], 'Subject' => str_replace($this->search, $this->replacements, $value["event_email_tpl"]->email_tpl_subject), 'Html-part' => urldecode($value["event_email_tpl"]->email_tpl_detail), 'Vars' => (array) $value["event"] ); $mjBODY['Vars'] = array_merge($mjBODY['Vars'], $maildata["addVars"]); $mjBODY['Vars']['event_url'] = $mjBODY['Vars']['event_url'].$value["event"]->event_id; $mjBODY['Vars']['event_picture'] = $maildata["addVars"]['event_picture'].$value["event"]->event_picture; $mjBODY['Recipients'] = array(); foreach ($value["subscribers"] as $index => $subscriber) { array_push($mjBODY['Recipients'], array( 'Email' => $subscriber->email_address, 'Name' => $subscriber->subscriber, 'Vars' => array( 'subscriber' => $subscriber->subscriber, 'subs_prenom' => $subscriber->subs_prenom, 'subs_nom' => $subscriber->subs_nom, 'new_tab_url' => "e/epe/".base64_encode($subscriber->email_recipient_id."_".$subscriber->subscriber_id), 'email_address' => $subscriber->email_address ) )); //prepare processed emails array_push($emails, array( "email_recipient_id" => $subscriber->email_recipient_id, "email_address" => $subscriber->email_address, "email_date_time" => date('Y-m-d H:i:s'), "email_tpl_id" => $value["event_email_tpl"]->email_tpl_id, "email_number_of_send_attempt" => $subscriber->email_number_of_send_attempt, "email_status" => 0, )); } $sent=0; $failed = 0; $response = $this->mj->post(Resources::$Email, array('body' => $mjBODY)); if ($response->success()) { $msgSent = (object) $response->getData(); if($msgSent->Sent){ $processed_emails = array_column($msgSent->Sent, 'MessageID', 'Email'); foreach($emails as $idx => $val){ //sent emails if(isset($processed_emails[$val["email_address"]]) && !empty($processed_emails[$val["email_address"]])){ $val["email_reference_id"] = $processed_emails[$val["email_address"]]; $val["email_number_of_send_attempt"] +=1; $val["email_status"] = 1; $val["email_description"] = "Sent!"; unset($val["email_address"]); $sent++; array_push($sent_emails, $val); } else { //failed emails $val["email_number_of_send_attempt"] += 1; $val["email_status"] = 0; $val["email_description"] = "Failed!"; unset($val["email_address"]); $failed++; array_push($failed_emails, $val); } } unset($processed_emails); $emails = array(); $mjLog .="Email type : Push event, Sent : ".$sent.", Failed : ".$failed.", Event_id : ".$value["event"]->event_id."\n"; } else { $mjLog .="Email type : Push event, Mj E-Code : ".$response->getStatus()." Event_id : ".$value["event"]->event_id."\n"; } } else { $mjLog .="Email type : Push event, Mj E-Code : ".$response->getStatus()." Event_id : ".$value["event"]->event_id."\n"; } unset($response); } //end of main loop return array("success" => true, "sent_emails" => $sent_emails, "failed_emails" => $failed_emails, "logs" => $mjLog); } public function _call(){ // use your saved credentials // Resources are all located in the Resources class $response = $this->mj->get(Resources::$Contact); /* Read the response */ if ($response->success()) var_dump($response->getData()); else var_dump($response->getStatus()); } private function send_frontoffice_emails($maildata){ $emails = array(); $sent_emails = array(); $failed_emails = array(); $mjLog = ""; foreach ($maildata["maildata"] as $key => $value) { //initialize variables $value["event"] = $this->initialize_event_vars($value["event"]); $mjBODY = array( 'FromEmail' => $this->cfg["sender"], 'FromName' => $this->cfg["fromName"], 'Subject' => str_replace($this->search, $this->replacements, $value["event_email_tpl"]->email_tpl_subject), 'Html-part' => customEmailFormat($value["event_email_tpl"]->email_tpl_detail, $value["event"]), 'Vars' => (array) $value["event"] ); $mjBODY['Vars'] = array_merge($mjBODY['Vars'], $maildata["addVars"]); $mjBODY['Vars']['event_url'] = $mjBODY['Vars']['event_url'].$value["event"]->event_id; $mjBODY['Vars']['event_picture'] = $maildata["addVars"]['event_picture'].$value["event"]->event_picture; $mjBODY['Recipients'] = array(); $email_type = ""; if ($value['event']->event_status !== 'CANCEL') { if($value["event_email_tpl"]->email_type_id == 3){ $email_type = "foer"; } else if($value["event_email_tpl"]->email_type_id == 5){ $email_type = "four"; } else if($value["event_email_tpl"]->email_type_id == 8){ $email_type = "pscl"; } else { $email_type = "forwl"; } } else { $email_type = "evcl"; } foreach ($value["subscribers"] as $index => $subscriber) { array_push($mjBODY['Recipients'], array( 'Email' => $subscriber->email_address, 'Name' => $subscriber->subscriber, 'Vars' => array( 'subscriber' => $subscriber->subscriber, 'subs_prenom' => $subscriber->subs_prenom, 'subs_nom' => $subscriber->subs_nom, 'new_tab_url' => "e/".$email_type."/".base64_encode($subscriber->subscriber_id."_".$value["event"]->event_id."_".$value["event"]->event_schedule_id."_".$subscriber->seats_reserved), 'email_address' => $subscriber->email_address, 'seats_reserved' => (($subscriber->seats_reserved > 1)?$subscriber->seats_reserved." places":$subscriber->seats_reserved." place") ) )); array_push($emails, array( "email_recipient_id" => $subscriber->email_recipient_id, "email_address" => $subscriber->email_address, "email_reference_id" => null, "email_date_time" => date('Y-m-d H:i:s'), "email_tpl_id" => $value["event_email_tpl"]->email_tpl_id, "email_number_of_send_attempt" => $subscriber->email_number_of_send_attempt, "email_status" => 0, )); } $sent = 0; $failed = 0; $response = $this->mj->post(Resources::$Email, array('body' => $mjBODY)); if ($response->success()) { $msgSent = (object) $response->getData(); if($msgSent->Sent){ $processed_emails = array_column($msgSent->Sent, 'MessageID', 'Email'); foreach($emails as $idx => $val){ //sent emails if(isset($processed_emails[$val["email_address"]]) && !empty($processed_emails[$val["email_address"]])){ $val["email_reference_id"] = $processed_emails[$val["email_address"]]; $val["email_number_of_send_attempt"] +=1; $val["email_status"] = 1;//we need to set this to 5 instead of one, description matters here which is the "Sent!" $val["email_description"] = "Resent!"; unset($val["email_address"]); $sent++; array_push($sent_emails, $val); } else { //failed emails $val["email_number_of_send_attempt"] += 1; $val["email_status"] = 0; $val["email_description"] = "Failed!"; unset($val["email_address"]); $failed++; array_push($failed_emails, $val); } } unset($processed_emails); $emails = array(); $mjLog .="Email type : ".($email_type == "evcl" ? "Cancelled Event" : "Resend || Paid Event, Sent")." : ".$sent.", Failed : ".$failed.", Event_id : ".$value["event"]->event_id.", Event_schedule_id : ".$value["event"]->event_schedule_id."\n"; } else { $mjLog .="Email type : ".($email_type == "evcl" ? "Cancelled Event" : "Resend || Paid Event, Mj E-Code")." : ".$response->getStatus()." Event_id : ".$value["event"]->event_id.", Event_schedule_id : ".$value["event"]->event_schedule_id."\n"; } } else { $mjLog .="Email type : ".($email_type == "evcl" ? "Cancelled Event" : "Resend, Mj E-Code")." : ".$response->getStatus()." Event_id : ".$value["event"]->event_id.", Event_schedule_id : ".$value["event"]->event_schedule_id."\n"; } unset($response); } //end of main loop return array("success" => true, "sent_emails" => $sent_emails, "failed_emails" => $failed_emails, "logs" => $mjLog); } public function send_success_email($event, $paymentFormData, $emailTemplate){ //initialize variables $event = $this->initialize_event_vars($event); $mjBODY = array( 'FromEmail' => $this->cfg["sender"], 'FromName' => $this->cfg["fromName"], 'Subject' => str_replace($this->search, $this->replacements, $emailTemplate->email_tpl_subject), 'Html-part' => urldecode($emailTemplate->email_tpl_detail), 'Vars' => (array) $event ); $mjBODY['Recipients'] = array(); array_push($mjBODY['Recipients'], array( 'Email' => $paymentFormData->email, 'Name' =>$paymentFormData->fname .' '.$paymentFormData->name, 'Vars' => array( //'subscriber' => $subscriber->subscriber, 'subs_prenom' => $paymentFormData->fname, 'subs_nom' => $paymentFormData->name, 'email_address' => $paymentFormData->email ) )); $response = $this->mj->post(Resources::$Email, array('body' => $mjBODY)); return $response->getStatus(); } public function send_distance_reminder_email($data){ //initialize variables $event = $this->initialize_event_vars($data["event"]); $emailTemplate = $data["event_email_tpl"]; $user = $data["subscriber"]; $mjBODY = array( 'FromEmail' => $this->cfg["sender"], 'FromName' => $this->cfg["fromName"], 'Subject' => str_replace($this->search, $this->replacements, $emailTemplate->email_tpl_subject), 'Html-part' => urldecode($emailTemplate->email_tpl_detail), 'Vars' => ['video_link' => $event->video_link, 'event_title' => $event->title] ); $mjBODY['Recipients'] = array(); array_push($mjBODY['Recipients'], array( 'Email' => $user->email_address, 'Name' => $user->subs_prenom .' '.$user->subs_nom, 'Vars' => array( 'subscriber' => $user->subscriber, 'subs_prenom' => $user->subs_prenom, 'subs_nom' => $user->subs_nom, 'email_address' => $user->email_address ) )); $response = $this->mj->post(Resources::$Email, array('body' => $mjBODY)); return $response->getStatus(); } private function send_cancel_email($maildata){ $emails = array(); $sent_emails = array(); $failed_emails = array(); $mjLog = ""; foreach ($maildata["maildata"] as $key => $value) { $s_r = 0; //initialize variables foreach ($value["subscribers"] as $index => $subscriber) { $s_r += $subscriber->seats_reserved; } $value["event"] = $this->initialize_event_vars(array( "seats_reserved" => $s_r, "workshop_author" => $value["event"]->workshop_author, "event_id" => $value["event"]->event_id )); $mjBODY = array( 'FromEmail' => $this->cfg["sender"], 'FromName' => $this->cfg["fromName"], 'Subject' => str_replace($this->search, $this->replacements, $value["event_email_tpl"]->email_tpl_subject), 'Html-part' => customEmailFormat($value["event_email_tpl"]->email_tpl_detail, $value["event"]), 'Vars' => (array) $value["event"] ); //$mjBODY['Vars'] = array_merge($mjBODY['Vars'], $maildata["addVars"]); //$mjBODY['Vars']['event_url'] = $mjBODY['Vars']['event_url'].$value["event"]->event_id; //$mjBODY['Vars']['event_picture'] = $maildata["addVars"]['event_picture'].$value["event"]->event_picture; $mjBODY['Recipients'] = array(); foreach ($value["subscribers"] as $index => $subscriber) { array_push($mjBODY['Recipients'], array( 'Email' => $subscriber->email_address, 'Name' => $subscriber->subscriber, 'Vars' => array( //'subscriber' => $subscriber->subscriber, 'subs_prenom' => $subscriber->subscriber_first_name, 'subs_nom' => $subscriber->subscriber_last_name, 'email_address' => $subscriber->email_address ) )); //prepare processed emails array_push($emails, array( //"email_recipient_id" => $subscriber->email_recipient_id, "email_address" => $subscriber->email_address, //"email_reference_id" => null, "email_date_time" => date('Y-m-d H:i:s'), "email_tpl_id" => $value["event_email_tpl"]->email_tpl_id, //"email_number_of_send_attempt" => $subscriber->email_number_of_send_attempt, "email_status" => 0, )); } $sent = 0; $failed = 0; $response = $this->mj->post(Resources::$Email, array('body' => $mjBODY)); if ($response->success()) { $msgSent = (object) $response->getData(); if($msgSent->Sent){ $processed_emails = array_column($msgSent->Sent, 'MessageID', 'Email'); //return $processed_emails; foreach($emails as $idx => $val){ if(isset($processed_emails[$val["email_address"]]) && !empty($processed_emails[$val["email_address"]])){ //$val["email_reference_id"] = $processed_emails[$val["email_address"]]; //$val["email_number_of_send_attempt"] +=1; $val["email_status"] = 1;//we need to set this to 5 instead of one, description matters here which is the "Sent!" //$val["email_description"] = "Sent!"; unset($val["email_address"]); $sent++; array_push($sent_emails, $val); } else { //failed emails //$val["email_number_of_send_attempt"] += 1; $val["email_status"] = 0; //$val["email_description"] = "Failed!"; unset($val["email_address"]); $failed++; array_push($failed_emails, $val); } } unset($processed_emails); $emails = array(); $mjLog .="Email type : Reminder, Sent : ".$sent.", Failed : ".$failed."\n"; } else { $mjLog .="Email type : Reminder, Mj E-Code : ".$response->getStatus()."\n"; } } else { $mjLog .="Email type : Reminder, Mj E-Code : ".$response->getStatus()."\n"; } unset($response); } //end of main loop return array("success" => true, "sent_emails" => $sent_emails, "failed_emails" => $failed_emails, "logs" => $mjLog); } protected function initialize_event_vars($vars){ $CI =& get_instance(); $this->search = array(); $this->replacements = array(); $Vars = array('event_reminder_date', 'subscriber','email_address','event_title', 'event_start_day_name','event_start_day','event_start_month', 'event_start_month_name','event_start_year','event_start_hour', 'seats_reserved','event_start_day_name', 'city', 'event_description', 'event_venue', 'event_place_name', 'event_address', 'event_postal_code', 'event_rate', 'day', 'addressee', 'subscriber_address', 'start_day', 'start_month', 'start_year', 'start_date_hour', 'event_url', 'new_tab_url', 'event_picture', 'workshop_author', 'subscriber_last_name', 'subscriber_first_name', 'order_number','event_rate', 'service_charge', 'mode_of_payment', 'order_date', 'vat','no_vat_amount','total_amount','start_date_time', 'commencement_de_lheure', 'date_complete', 'video_link'); //for translation $toFR = array('day', 'event_start_month_name', 'event_start_day_name'); foreach ($vars as $key => $value) { if(is_null($value) || empty(trim($value))) { $value = ""; } if (in_array($key, $Vars)) { //translate to french if(in_array($key, $toFR)){ $value = $CI->lang->line($value); $vars->{$key} = $value; } if($key == 'date_complete') { $month = ucfirst($CI->lang->line(date('F', strtotime($value)))); $day_name = ucfirst($CI->lang->line(date('l', strtotime($value)))); $day_num = date('j', strtotime($value)); $year = date('Y', strtotime($value)); $value = $day_name. ' '. $day_num. ' '. $month. ' '. $year; $vars->{$key} = $value; } $this->search[] = "[[var:" . $key . "]]"; $this->replacements[] = $value; } } return $vars; } }