PluginProbe
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress / 10.11.1
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress v10.11.1
11.1.1 11.1.0 11.0.5 11.0.4 11.0.3 11.0.2 11.0.1 11.0.0 10.11.1 10.11.0 10.10.2 10.10.1 10.10.0 10.9.1 trunk 10.0.0 10.0.1 10.1.0 10.1.1 10.1.2 10.1.3 10.1.4 10.2.0 10.2.1 10.2.2 All 62 releases
acymailing / back / Controllers / Campaigns / AutoCampaigns.php

AutoCampaigns.php in AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress 10.11.1, at back/Controllers/Campaigns/AutoCampaigns.php

196 lines 6.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace AcyMailing\Controllers\Campaigns;
4
5 use AcyMailing\Classes\CampaignClass;
6 use AcyMailing\Classes\MailClass;
7
8
9 trait AutoCampaigns
10 {
11 public function campaigns_auto(): void
12 {
13 if (!acym_level(ACYM_ENTERPRISE)) {
14 $this->campaigns();
15 }
16 }
17
18 private function getIsPendingGenerated(array &$data): void
19 {
20 $campaignClass = new CampaignClass();
21 $campaingsGenerated = $campaignClass->getAllCampaignsGeneratedWaiting();
22 $data['generatedPending'] = !empty($campaingsGenerated);
23 }
24
25 private function getAutoCampaignsFrequency(array &$data): void
26 {
27 foreach ($data['allCampaigns'] as $key => $campaign) {
28 if (empty($campaign->sending_params)) continue;
29 $textToDisplay = new \stdClass();
30 $textToDisplay->triggers = $campaign->sending_params;
31 acym_trigger('onAcymDeclareSummary_triggers', [&$textToDisplay], 'plgAcymTime');
32
33 if (empty($textToDisplay->triggers['trigger_type']) || empty($textToDisplay->triggers[$textToDisplay->triggers['trigger_type']])) {
34 $data['allCampaigns'][$key]->sending_params['trigger_text'] = acym_translation('ACYM_ERROR_WHILE_RECOVERING_TRIGGERS');
35 $message = acym_translationSprintf('ACYM_ERROR_WHILE_RECOVERING_TRIGGERS_NOTIF_X', $campaign->id);
36 $message .= ' <a id="acym__queue__configure-cron" href="'.acym_completeLink('campaigns&task=campaigns_auto').'">'.acym_translation(
37 'ACYM_GOTO_CAMPAIGNS_AUTO'
38 ).'</a>';
39 $message .= '<p class="acym__do__not__remindme" title="auto_campaigns_triggers_reminder">'.acym_translation('ACYM_DO_NOT_REMIND_ME').'</p>';
40
41 $notification = [
42 'name' => 'auto_campaigns_triggers_reminder',
43 'removable' => 1,
44 ];
45 acym_enqueueMessage($message, 'warning', true, [$notification]);
46 } else {
47 $data['allCampaigns'][$key]->sending_params['trigger_text'] = $textToDisplay->triggers[$textToDisplay->triggers['trigger_type']];
48 }
49 }
50 }
51
52 public function summaryGenerated(): void
53 {
54 $campaignId = acym_getVar('int', 'campaignId', 0);
55 $mailClass = new MailClass();
56
57 acym_setVar('layout', 'summary_generated');
58
59 $generatedCampaign = $this->loadCampaignMail($campaignId);
60
61 if (empty($generatedCampaign)) {
62 acym_enqueueMessage(acym_translation('ACYM_COULD_NOT_LOAD_CAMPAIGN'), 'error');
63 $this->listing();
64
65 return;
66 }
67
68 $campaign = $generatedCampaign['campaign'];
69 $mail = $generatedCampaign['mail'];
70
71 $lists = $mailClass->getAllListsByMailId($mail->id);
72
73 if (empty($lists)) {
74 $this->listing();
75
76 return;
77 }
78
79 $parentCampaign = $this->loadCampaignMail((int)$campaign->parent_id);
80 if (empty($parentCampaign)) {
81 $parentCampaign = [
82 'campaign' => false,
83 'mail' => false,
84 ];
85 }
86
87 $campaign->waiting_confirmation = false;
88 if ($campaign->draft && $campaign->active) {
89 $campaign->waiting_confirmation = true;
90 }
91 $campaign->canceled = false;
92 if (!$campaign->draft && !$campaign->active) {
93 $campaign->canceled = true;
94 }
95
96 $data = [
97 'campaign' => $campaign,
98 'mailId' => $campaign->mail_id,
99 'mail' => $mail,
100 'lists' => $lists,
101 'parent_campaign' => $parentCampaign['campaign'],
102 'parent_mail' => $parentCampaign['mail'],
103 'mailClass' => $mailClass,
104 ];
105
106 $this->prepareMultilingual($data, false);
107 $this->prepareAllMailsForMultilingual($data);
108
109 $this->breadcrumb[acym_escape($mail->name)] = acym_completeLink('campaigns&task=summaryGenerated&campaignId='.$campaign->id);
110 parent::display($data);
111 }
112
113 protected function changeStatusGeneratedCampaign(string $statusToApply = 'disable'): void
114 {
115 $campaignId = acym_getVar('int', 'campaignId', 0);
116 $campaignClass = new CampaignClass();
117
118 $campaign = $this->loadCampaignMail($campaignId);
119
120 if (empty($campaign)) {
121 acym_enqueueMessage(acym_translation('ACYM_COULD_NOT_LOAD_CAMPAIGN'), 'error');
122 $this->listing();
123
124 return;
125 }
126
127 $campaign = $campaign['campaign'];
128
129 if ('disable' === $statusToApply) {
130 $campaign->sent = 0;
131 $campaign->active = 0;
132 $campaign->draft = 0;
133 $successMsg = acym_translation('ACYM_CAMPAIGN_HAS_BEEN_DISABLED');
134 } else {
135 $campaign->active = 1;
136 $campaign->draft = 1;
137 $successMsg = acym_translation('ACYM_CAMPAIGN_HAS_BEEN_ENABLED');
138 }
139
140 $savedCampaignId = $campaignClass->save($campaign);
141 if (!empty($savedCampaignId)) {
142 acym_enqueueMessage($successMsg);
143 } else {
144 acym_enqueueMessage(acym_translation('ACYM_ERROR_SAVING'), 'error');
145 }
146
147 if ('enable' === $statusToApply) {
148 acym_setVar('campaignId', $campaignId);
149 $this->summaryGenerated();
150 } else {
151 acym_setVar('campaigns_status', 'generated');
152 $this->listing();
153 }
154 }
155
156 public function disableGeneratedCampaign(): void
157 {
158 $this->changeStatusGeneratedCampaign();
159 }
160
161 public function enableGeneratedCampaign(): void
162 {
163 $this->changeStatusGeneratedCampaign('enable');
164 }
165
166 private function loadCampaignMail(int $campaignId): array
167 {
168 if (empty($campaignId)) {
169 return [];
170 }
171
172 $campaignClass = new CampaignClass();
173 $mailClass = new MailClass();
174
175 $campaign = $campaignClass->getOneById($campaignId);
176 if (empty($campaign)) {
177 return [];
178 }
179
180 $mail = $mailClass->getOneById($campaign->mail_id);
181 if (empty($mail)) {
182 return [];
183 }
184
185 if (empty($mail->from_name)) $mail->from_name = $this->config->get('from_name');
186 if (empty($mail->from_email)) $mail->from_email = $this->config->get('from_email');
187 if (empty($mail->reply_to_name)) $mail->reply_to_name = $this->config->get('replyto_name');
188 if (empty($mail->reply_to_email)) $mail->reply_to_email = $this->config->get('replyto_email');
189
190 return [
191 'campaign' => $campaign,
192 'mail' => $mail,
193 ];
194 }
195 }
196