/** * @param $event * @param Lead $lead * @param MauticFactory $factory */ public static function sendEmail($event, Lead $lead, MauticFactory $factory) { $properties = $event['properties']; $emailId = (int) $properties['email']; /** @var \Mautic\EmailBundle\Model\EmailModel $model */ $model = $factory->getModel('email'); $email = $model->getEntity($emailId); //make sure the email still exists and is published if ($email != null && $email->isPublished()) { $leadFields = $lead->getFields(); if (isset($leadFields['core']['email']['value']) && $leadFields['core']['email']['value']) { $leadCredentials = array('email' => $leadFields['core']['email']['value'], 'id' => $lead->getId(), 'firstname' => $leadFields['core']['firstname']['value'], 'lastname' => $leadFields['core']['lastname']['value']); $options = array('source' => array('trigger', $event['id'])); $model->sendEmail($email, $leadCredentials, $options); } } }
/** * {@inheritDoc} */ public function getFields($ungroup = false) { $this->__initializer__ && $this->__initializer__->__invoke($this, 'getFields', array($ungroup)); return parent::getFields($ungroup); }
/** * Used by system processes that hook into events that use getCurrentLead() * * @param Lead $lead */ function setSystemCurrentLead(Lead $lead = null) { $fields = $lead->getFields(); if (empty($fields)) { $lead->setFields($this->getLeadDetails($lead)); } $this->systemCurrentLead = $lead; }
/** * Add a do not contact entry for the lead * * @param Lead $lead * @param string $emailAddress * @param string $reason * @param bool $persist */ public function setDoNotContact(Lead $lead, $emailAddress = '', $reason = '', $persist = true) { if (empty($emailAddress)) { $fields = $lead->getFields(); $emailAddress = $fields['core']['email']['value']; if (empty($emailAddress)) { return; } } $em = $this->factory->getEntityManager(); $repo = $em->getRepository('MauticEmailBundle:Email'); if (!$repo->checkDoNotEmail($emailAddress)) { $dnc = new DoNotEmail(); $dnc->setLead($lead); $dnc->setEmailAddress($emailAddress); $dnc->setDateAdded(new \DateTime()); $dnc->setUnsubscribed(); $dnc->setComments($reason); if ($persist) { $repo->saveEntity($dnc); } else { return $dnc; } } }