/** * eventLinkClicked * This is a listener for "IEM_STATSAPI_RECORDLINKCLICK" event. * It allows trigger email to capture "Newsletter Opened" and "Link Clicked" * * @param EventData_IEM_STATSAPI_RECORDLINKCLICK $eventData Event data object * @return Void Returns nothing * * @uses EventData_IEM_STATSAPI_RECORDLINKCLICK */ static public function eventLinkClicked(EventData_IEM_STATSAPI_RECORDLINKCLICK $eventData) { // Only intrested if it is a newsletter if ($eventData->statstype != 'newsletter') { return; } // If this click has been recorded previously, ignore it if ($eventData->have_been_recorded) { return; } $api = new TriggerEmails_API(); $linkid = intval($eventData->click_details['linkid']); $statid = intval($eventData->click_details['statid']); $triggerrecords = $api->GetRecordByAssociatedLinkIDStatID($linkid, $statid); // 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->click_details['subscriberid'], array_keys($triggerrecords['lists'])); foreach ($triggerrecords['triggeremails'] as $trigger) { // If receipients has 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->click_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; }