/** * eventEmailOpen * This is a listener for "IEM_STATSAPI_RECORDOPEN" event. * It allows trigger email to capture "Newsletter Opened" and "Link Clicked" * * @param EventData_IEM_STATSAPI_RECORDOPEN $eventData Event data object * @return Void Returns nothing * * @uses EventData_IEM_STATSAPI_RECORDOPEN */ static public function eventEmailOpen(EventData_IEM_STATSAPI_RECORDOPEN $eventData) { // Only intrested if it is a newsletter if ($eventData->statstype != 'newsletter') { return; } // If this open has been recorded previously, ignore it if ($eventData->have_been_recorded) { return; } $api = new TriggerEmails_API(); $statid = intval($eventData->open_details['statid']); $triggerrecords = $api->GetRecordByAssociatedNewsletterStatisticID($statid, 'n'); // If no trigger records are found, return from function if (!$triggerrecords || !is_array($triggerrecords) || !isset($triggerrecords['triggeremails']) || empty($triggerrecords['triggeremails'])) { return; } $recipients = $api->_getSubscriberIDSFromList($eventData->open_details['subscriberid'], array_keys($triggerrecords['lists'])); foreach ($triggerrecords['triggeremails'] as $trigger) { // If recipients have been added to the send queue or have been sent an email for this particular trigger, do not re-add the subscriber again if (!$api->CanAddToQueue($trigger['triggeremailsid'], $eventData->open_details['subscriberid'], $trigger['queueid'])) { continue; } $schedule = time() + ($trigger['triggerhours'] * 3600); IEM::userLogin($trigger['ownerid'], false); $api->AddToQueue($trigger['queueid'], 'triggeremail', $recipients, $schedule); IEM::userLogout(); } return; }