示例#1
0
 /**
  * @param CampaignExecutionEvent $event
  */
 public function onCampaignTriggerDecision(CampaignExecutionEvent $event)
 {
     $eventDetails = $event->getEventDetails();
     if ($eventDetails === null) {
         return $event->setResult(true);
     }
     $limitToForms = $event->getConfig()['forms'];
     //check against selected forms
     if (!empty($limitToForms) && !in_array($eventDetails->getId(), $limitToForms)) {
         return $event->setResult(false);
     }
     return $event->setResult(true);
 }
示例#2
0
 /**
  * @param CampaignExecutionEvent $event
  */
 public function onCampaignTriggerDecision(CampaignExecutionEvent $event)
 {
     $eventDetails = $event->getEventDetails();
     if ($eventDetails == null) {
         return $event->setResult(true);
     }
     $assetId = $eventDetails->getId();
     $limitToAssets = $event->getConfig()['assets'];
     if (!empty($limitToAssets) && !in_array($assetId, $limitToAssets)) {
         //no points change
         return $event->setResult(false);
     }
     $event->setResult(true);
 }
示例#3
0
 /**
  * @param CampaignExecutionEvent $event
  */
 public function onCampaignTriggerDecision(CampaignExecutionEvent $event)
 {
     $eventConfig = $event->getConfig();
     $eventDetails = $event->getEventDetails();
     $lead = $event->getLead();
     if ($eventConfig['dwc_slot_name'] === $eventDetails) {
         $defaultDwc = $this->dynamicContentModel->getRepository()->getEntity($eventConfig['dynamicContent']);
         if ($defaultDwc instanceof DynamicContent) {
             // Set the default content in case none of the actions return data
             $this->dynamicContentModel->setSlotContentForLead($defaultDwc, $lead, $eventDetails);
         }
         $this->session->set('dwc.slot_name.lead.' . $lead->getId(), $eventDetails);
         $event->stopPropagation();
         return $event->setResult(true);
     }
 }
示例#4
0
 /**
  * @param CampaignExecutionEvent $event
  */
 public function onCampaignTriggerAction(CampaignExecutionEvent $event)
 {
     $emailSent = false;
     $lead = $event->getLead();
     $leadCredentials = $lead instanceof Lead ? $lead->getProfileFields() : $lead;
     $leadCredentials['owner_id'] = $lead instanceof Lead && ($owner = $lead->getOwner()) ? $owner->getId() : 0;
     if (!empty($leadCredentials['email'])) {
         $config = $event->getConfig();
         $emailId = (int) $config['email'];
         $email = $this->emailModel->getEntity($emailId);
         if ($email != null && $email->isPublished()) {
             // Determine if this email is transactional/marketing
             $type = isset($config['email_type']) ? $config['email_type'] : 'transactional';
             if ('marketing' == $type) {
                 // Determine if this lead has received the email before
                 $stats = $this->emailModel->getStatRepository()->findContactEmailStats($leadCredentials['id'], $emailId);
                 if (count($stats)) {
                     // Already sent
                     return $event->setResult(true);
                 }
             }
             $eventDetails = $event->getEventDetails();
             $options = ['source' => ['campaign', $eventDetails['campaign']['id']]];
             $emailSent = $this->emailModel->sendEmail($email, $leadCredentials, $options);
         }
         $event->setChannel('email', $emailId);
     }
     return $event->setResult($emailSent);
 }
示例#5
0
 /**
  * @param CampaignExecutionEvent $event
  */
 public function onCampaignTriggerDecision(CampaignExecutionEvent $event)
 {
     $eventDetails = $event->getEventDetails();
     $config = $event->getConfig();
     if ($eventDetails == null) {
         return true;
     }
     $pageHit = $eventDetails->getPage();
     // Check Landing Pages
     if ($pageHit instanceof Page) {
         list($parent, $children) = $pageHit->getVariants();
         //use the parent (self or configured parent)
         $pageHitId = $parent->getId();
     } else {
         $pageHitId = 0;
     }
     $limitToPages = $config['pages'];
     $urlMatches = array();
     // Check Landing Pages URL or Tracing Pixel URL
     if (isset($config['url']) && $config['url']) {
         $pageUrl = $eventDetails->getUrl();
         $limitToUrls = explode(',', $config['url']);
         foreach ($limitToUrls as $url) {
             $url = trim($url);
             $urlMatches[$url] = fnmatch($url, $pageUrl);
         }
     }
     // **Page hit is true if:**
     // 1. no landing page is set and no URL rule is set
     $applyToAny = empty($config['url']) && empty($limitToPages);
     // 2. some landing pages are set and page ID match
     $langingPageIsHit = !empty($limitToPages) && in_array($pageHitId, $limitToPages);
     // 3. URL rule is set and match with URL hit
     $urlIsHit = !empty($config['url']) && in_array(true, $urlMatches);
     if ($applyToAny || $langingPageIsHit || $urlIsHit) {
         return $event->setResult(true);
     }
     return $event->setResult(false);
 }
示例#6
0
 /**
  * @param CampaignExecutionEvent $event
  */
 public function onCampaignTriggerDecision(CampaignExecutionEvent $event)
 {
     $eventDetails = $event->getEventDetails();
     $eventParent = $event->getEvent()['parent'];
     if ($eventDetails == null) {
         return $event->setResult(false);
     }
     //check to see if the parent event is a "send email" event and that it matches the current email opened
     if (!empty($eventParent) && $eventParent['type'] === 'email.send') {
         return $event->setResult($eventDetails->getId() === (int) $eventParent['properties']['email']);
     }
     return $event->setResult(false);
 }