Spaces:
No application file
No application file
| namespace Mautic\EmailBundle\Helper; | |
| use Mautic\CoreBundle\Factory\MauticFactory; | |
| use Mautic\LeadBundle\Entity\Lead; | |
| class PointEventHelper | |
| { | |
| public static function validateEmail($eventDetails, $action): bool | |
| { | |
| if (null === $eventDetails) { | |
| return false; | |
| } | |
| $emailId = $eventDetails->getId(); | |
| if (isset($action['properties']['emails'])) { | |
| $limitToEmails = $action['properties']['emails']; | |
| } | |
| if (!empty($limitToEmails) && !in_array($emailId, $limitToEmails)) { | |
| // no points change | |
| return false; | |
| } | |
| return true; | |
| } | |
| public static function sendEmail($event, Lead $lead, MauticFactory $factory): bool | |
| { | |
| $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 (null != $email && $email->isPublished()) { | |
| $leadFields = $lead->getFields(); | |
| if (isset($leadFields['core']['email']['value']) && $leadFields['core']['email']['value']) { | |
| $leadCredentials = $lead->getProfileFields(); | |
| $leadCredentials['id'] = $lead->getId(); | |
| $options = ['source' => ['trigger', $event['id']]]; | |
| $emailSent = $model->sendEmail($email, $leadCredentials, $options); | |
| return is_array($emailSent) ? false : true; | |
| } | |
| } | |
| return false; | |
| } | |
| } | |