/
CampaignSubscriber.php
executable file
·114 lines (101 loc) · 3.47 KB
/
CampaignSubscriber.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
<?php
/*
* @copyright 2016 Mautic Contributors. All rights reserved
* @author Mautic
*
* @link http://mautic.org
*
* @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
*/
namespace MauticPlugin\InfoBipSmsBundle\EventListener;
use Mautic\CampaignBundle\CampaignEvents;
use Mautic\CampaignBundle\Event\CampaignBuilderEvent;
use Mautic\CampaignBundle\Event\CampaignExecutionEvent;
use Mautic\CoreBundle\EventListener\CommonSubscriber;
use Mautic\CoreBundle\Helper\CoreParametersHelper;
use MauticPlugin\InfoBipSmsBundle\Model\SmsModel;
use Mautic\SmsBundle\SmsEvents;
/**
* Class CampaignSubscriber.
*/
class CampaignSubscriber extends CommonSubscriber
{
/**
* @var CoreParametersHelper
*/
protected $coreParametersHelper;
/**
* @var SmsModel
*/
protected $smsModel;
/**
* CampaignSubscriber constructor.
*
* @param CoreParametersHelper $coreParametersHelper
* @param SmsModel $smsModel
*/
public function __construct(
CoreParametersHelper $coreParametersHelper,
SmsModel $smsModel
) {
$this->coreParametersHelper = $coreParametersHelper;
$this->smsModel = $smsModel;
}
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents()
{
return [
CampaignEvents::CAMPAIGN_ON_BUILD => ['onCampaignBuild', 0],
SmsEvents::ON_CAMPAIGN_TRIGGER_ACTION => ['onCampaignTriggerAction', 0],
];
}
/**
* @param CampaignBuilderEvent $event
*/
public function onCampaignBuild(CampaignBuilderEvent $event)
{
if ($this->coreParametersHelper->getParameter('sms_enabled')) {
$event->addAction(
'sms.send_text_sms',
[
'label' => 'mautic.campaign.sms.send_text_sms',
'description' => 'mautic.campaign.sms.send_text_sms.tooltip',
'eventName' => SmsEvents::ON_CAMPAIGN_TRIGGER_ACTION,
'formType' => 'smssend_list',
'formTypeOptions' => ['update_select' => 'campaignevent_properties_sms'],
'formTheme' => 'MauticSmsBundle:FormTheme\SmsSendList',
'timelineTemplate' => 'MauticSmsBundle:SubscribedEvents\Timeline:index.html.php',
'channel' => 'sms',
'channelIdField' => 'sms',
]
);
}
}
/**
* @param CampaignExecutionEvent $event
*/
public function onCampaignTriggerAction(CampaignExecutionEvent $event)
{
$lead = $event->getLead();
$smsId = (int) $event->getConfig()['sms'];
$sms = $this->smsModel->getEntity($smsId);
if (!$sms) {
return $event->setFailed('mautic.sms.campaign.failed.missing_entity');
}
$result = $this->smsModel->sendSms($sms, $lead, ['channel' => ['campaign.event', $event->getEvent()['id']]])[$lead->getId()];
if ('Authenticate' === $result['status']) {
// Don't fail the event but reschedule it for later
return $event->setResult(false);
}
if (!empty($result['sent'])) {
$event->setChannel('sms', $sms->getId());
$event->setResult($result);
} else {
$result['failed'] = true;
$result['reason'] = $result['status'];
$event->setResult($result);
}
}
}