PluginProbe
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress / 11.1.1
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress v11.1.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
← All changes | back/Controllers/Campaigns/Actions.php +0 -380 10.11.1 → 11.1.1 View file →
@@ -1,380 +1,0 @@
1 -<?php
2 -
3 -namespace AcyMailing\Controllers\Campaigns;
4 -
5 -use AcyMailing\Classes\CampaignClass;
6 -use AcyMailing\Classes\FollowupClass;
7 -use AcyMailing\Classes\MailArchiveClass;
8 -use AcyMailing\Classes\MailClass;
9 -use stdClass;
10 -
11 -
12 -trait Actions
13 -{
14 - public function duplicate(): void
15 - {
16 - $campaignsSelected = acym_getVar('array', 'elements_checked', []);
17 -
18 - $campaignClass = new CampaignClass();
19 - $mailClass = new MailClass();
20 - $campaignId = 0;
21 -
22 - if (!acym_isAdmin()) {
23 - $campaignClass->onlyManageableCampaigns($campaignsSelected);
24 - }
25 -
26 - foreach ($campaignsSelected as $campaignSelected) {
27 - $campaign = $campaignClass->getOneById($campaignSelected);
28 -
29 - unset($campaign->id);
30 - unset($campaign->sending_date);
31 - $campaign->draft = 1;
32 - $campaign->sent = 0;
33 - $campaign->active = 0;
34 - if (!empty($campaign->sending_params['resendTarget'])) {
35 - unset($campaign->sending_params['resendTarget']);
36 - }
37 -
38 - $mail = $mailClass->getOneById($campaign->mail_id);
39 - $oldMailId = $mail->id;
40 - unset($mail->id);
41 - $mail->creation_date = acym_date('now', 'Y-m-d H:i:s', false);
42 - $mail->name .= '_copy';
43 - $mail->creator_id = acym_currentUserId();
44 - $idNewMail = $mailClass->save($mail);
45 -
46 - if (isset($campaign->sending_params['abtest']) && !empty($campaign->sending_params['abtest']['B'])) {
47 - unset($campaign->sending_params['abtest']['abtest_finished']);
48 - unset($campaign->sending_params['abtest']['final']);
49 -
50 - $mailVersion = $mailClass->getOneById($campaign->sending_params['abtest']['B']);
51 - if (!empty($mailVersion)) {
52 - unset($mailVersion->id);
53 - $mailVersion->creation_date = acym_date('now', 'Y-m-d H:i:s', false);
54 - $mailVersion->name .= '_copy';
55 - $mailVersion->parent_id = $idNewMail;
56 - $mailVersion->id = $mailClass->save($mailVersion);
57 - $campaign->sending_params['abtest']['B'] = $mailVersion->id;
58 - }
59 - } else {
60 - $translations = $mailClass->getTranslationsById($oldMailId, true);
61 - foreach ($translations as $oneTranslation) {
62 - unset($oneTranslation->id);
63 - $oneTranslation->creation_date = acym_date('now', 'Y-m-d H:i:s', false);
64 - $oneTranslation->name .= '_copy';
65 - $oneTranslation->parent_id = $idNewMail;
66 - $mailClass->save($oneTranslation);
67 - }
68 - }
69 -
70 - $campaign->mail_id = $idNewMail;
71 - $campaignId = $campaignClass->save($campaign);
72 -
73 - $allLists = $campaignClass->getListsByMailId($oldMailId);
74 -
75 - $campaignClass->manageListsToCampaign($allLists, $idNewMail);
76 - }
77 -
78 - acym_enqueueMessage(acym_translation('ACYM_CAMPAIGN_DUPLICATED_SUCCESS'));
79 -
80 - if (count($campaignsSelected) == 1 && acym_getVar('string', 'step', '') === 'summary') {
81 - acym_setVar('campaignId', $campaignId);
82 - $this->editEmail();
83 - } else {
84 - $this->listing();
85 - }
86 - }
87 -
88 - public function duplicateFollowup(): void
89 - {
90 - $followupsSelected = acym_getVar('int', 'elements_checked');
91 -
92 - $followupClass = new FollowupClass();
93 - $mailClass = new MailClass();
94 -
95 - foreach ($followupsSelected as $oneFollowupId) {
96 - $followUp = $followupClass->getOneByIdWithMails($oneFollowupId);
97 - $followupEmails = $followUp->mails;
98 -
99 - unset($followUp->id, $followUp->creation_date, $followUp->list_id, $followUp->mails);
100 - $followUp->name .= '_copy';
101 - $followUp->active = 0;
102 - $followUp->creation_date = acym_date('now', 'Y-m-d H:i:s', false);
103 - $newFollowUpId = $followupClass->save($followUp);
104 - if (empty($newFollowUpId)) {
105 - acym_enqueueMessage(acym_translation('ACYM_FOLLOWUP_DUPLICATE_ERROR'), 'error');
106 - $this->listing();
107 -
108 - return;
109 - }
110 - $followUp->id = $newFollowUpId;
111 -
112 - foreach ($followupEmails as $oneEmail) {
113 - $mail = $mailClass->getOneById($oneEmail->id);
114 - unset($mail->id, $mail->creation_date, $mail->creator_id, $mail->autosave);
115 - $newMailId = $mailClass->save($mail);
116 - if (empty($newMailId)) {
117 - acym_enqueueMessage(acym_translation('ACYM_FOLLOWUP_DUPLICATE_ERROR'), 'error');
118 - continue;
119 - }
120 - $followupData = [
121 - 'id' => $newFollowUpId,
122 - 'delay' => $oneEmail->delay,
123 - 'delay_unit' => $oneEmail->delay_unit,
124 - ];
125 - $followupClass->saveDelaySettings($followupData, $newMailId);
126 - }
127 - }
128 - $this->listing();
129 - }
130 -
131 - public function unpause_campaign(): void
132 - {
133 - $id = acym_getVar('int', 'campaignId', 0);
134 - if (empty($id)) {
135 - acym_enqueueMessage(acym_translation('ACYM_CAMPAIGN_NOT_FOUND'), 'error');
136 - $this->listing();
137 -
138 - return;
139 - }
140 -
141 - acym_redirect(acym_completeLink('queue', false, true).'&task=playPauseSending&acym__queue__play_pause__active__new_value=1&acym__queue__play_pause__campaign_id='.$id);
142 - }
143 -
144 - public function stopSending(): void
145 - {
146 - $this->stopAction('stopSendingCampaignId');
147 - }
148 -
149 - public function stopScheduled(): void
150 - {
151 - $this->stopAction('stopScheduledCampaignId');
152 - }
153 -
154 - private function stopAction(string $action): void
155 - {
156 - acym_checkToken();
157 -
158 - $campaignID = acym_getVar('int', $action);
159 - $campaignClass = new CampaignClass();
160 -
161 - if (!empty($campaignID)) {
162 - if (!$campaignClass->hasUserAccess($campaignID)) {
163 - die('Access denied for campaign send modification');
164 - }
165 -
166 - $campaign = new stdClass();
167 - $campaign->id = $campaignID;
168 - $campaign->active = 0;
169 - $campaign->draft = 1;
170 -
171 - $campaignId = $campaignClass->save($campaign);
172 - if (empty($campaignId)) {
173 - acym_enqueueMessage(acym_translation('ACYM_CAMPAIGN_CANT_BE_SAVED'), 'error');
174 - } else {
175 - acym_enqueueMessage(acym_translation('ACYM_SUCCESSFULLY_SAVED'));
176 - }
177 - } else {
178 - acym_enqueueMessage(acym_translation('ACYM_CAMPAIGN_CANT_BE_SAVED'), 'error');
179 - }
180 -
181 - $this->listing();
182 - }
183 -
184 - public function confirmCampaign(): void
185 - {
186 - $this->updateOpenAcymailerPopup();
187 - $campaignId = acym_getVar('int', 'campaignId');
188 - $campaignSendingDate = acym_getVar('string', 'sending_date');
189 - $resendTarget = acym_getVar('cmd', 'resend_target', '');
190 - $campaignClass = new CampaignClass();
191 -
192 - if (!$campaignClass->hasUserAccess($campaignId)) {
193 - die('Access denied for campaign confirmation');
194 - }
195 -
196 - $campaign = new stdClass();
197 - $campaign->id = $campaignId;
198 - $campaign->draft = 0;
199 - $campaign->active = 1;
200 - $campaign->sent = 0;
201 -
202 - $currentCampaign = $campaignClass->getOneById($campaignId);
203 - if (!empty($resendTarget)) {
204 - $currentCampaign->sending_params['resendTarget'] = $resendTarget;
205 - $campaign->sending_params = $currentCampaign->sending_params;
206 - acym_trigger('onAcymResendCampaign', [$currentCampaign->mail_id]);
207 - }
208 -
209 - $resultSave = $campaignClass->save($campaign);
210 -
211 - if (!empty($resultSave)) {
212 - acym_enqueueMessage(acym_translationSprintf('ACYM_CONFIRMED_CAMPAIGN', acym_date($campaignSendingDate, 'j F Y H:i')));
213 - } else {
214 - acym_enqueueMessage(acym_translation('ACYM_CANT_CONFIRM_CAMPAIGN').' : '.end($campaignClass->errors), 'error');
215 - }
216 -
217 - $this->listing();
218 - }
219 -
220 - public function activeAutoCampaign(): void
221 - {
222 - $this->updateOpenAcymailerPopup();
223 - $campaignId = acym_getVar('int', 'campaignId');
224 - $campaignClass = new CampaignClass();
225 -
226 - $campaign = new stdClass();
227 - $campaign->id = $campaignId;
228 - $campaign->draft = 0;
229 - $campaign->active = 1;
230 - $campaign->sent = 0;
231 -
232 - $resultSave = $campaignClass->save($campaign);
233 -
234 - if (!empty($resultSave)) {
235 - acym_enqueueMessage(acym_translation('ACYM_CAMPAIGN_IS_ACTIVE'));
236 - } else {
237 - acym_enqueueMessage(acym_translation('ACYM_ERROR_SAVING'), 'error');
238 - }
239 -
240 - $this->listing();
241 - }
242 -
243 - public function saveAsDraftCampaign(): void
244 - {
245 - $campaignId = acym_getVar('int', 'campaignId');
246 - $campaignClass = new CampaignClass();
247 -
248 - if (!$campaignClass->hasUserAccess($campaignId)) {
249 - die('Access denied for campaign draft save');
250 - }
251 -
252 - $campaign = new stdClass();
253 - $campaign->id = $campaignId;
254 - $campaign->draft = 1;
255 - $campaign->active = 0;
256 -
257 - $resultSave = $campaignClass->save($campaign);
258 -
259 - if (!empty($resultSave)) {
260 - acym_enqueueMessage(acym_translation('ACYM_CAMPAIGN_SUCCESSFULLY_SAVE_AS_DRAFT'));
261 - } else {
262 - acym_enqueueMessage(acym_translation('ACYM_CAMPAIGN_CANT_BE_SAVED').' : '.end($campaignClass->errors), 'error');
263 - }
264 -
265 - $this->listing();
266 - }
267 -
268 - public function toggleActivateColumnCampaign(): void
269 - {
270 -
271 - $campaignId = acym_getVar('int', 'campaignId');
272 - $campaignClass = new CampaignClass();
273 -
274 - $campaign = $campaignClass->getOneById($campaignId);
275 - if (empty($campaign)) {
276 - acym_enqueueMessage(acym_translation('ACYM_CAMPAIGN_CANT_BE_SAVED').' : '.end($campaignClass->errors), 'error');
277 - $this->listing();
278 -
279 - return;
280 - }
281 -
282 - $campaign->active = empty($campaign->active) ? 1 : 0;
283 -
284 - if ($campaign->active === 0 && $campaign->sending_type === CampaignClass::SENDING_TYPE_AUTO) {
285 - $campaign->next_trigger = null;
286 - }
287 -
288 - $resultSave = $campaignClass->save($campaign);
289 -
290 - if (!empty($resultSave)) {
291 - acym_enqueueMessage(acym_translation('ACYM_CAMPAIGN_SUCCESSFULLY_SAVE_AS_DRAFT'));
292 - } else {
293 - acym_enqueueMessage(acym_translation('ACYM_CAMPAIGN_CANT_BE_SAVED').' : '.end($campaignClass->errors), 'error');
294 - }
295 -
296 - $this->listing();
297 - }
298 -
299 - public function addQueue(): void
300 - {
301 - acym_checkToken();
302 - $this->updateOpenAcymailerPopup();
303 -
304 - $campaignClass = new CampaignClass();
305 - $campaignID = acym_getVar('int', 'campaignId', 0);
306 -
307 - if (empty($campaignID)) {
308 - acym_enqueueMessage(acym_translation('ACYM_CAMPAIGN_NOT_FOUND'), 'error');
309 - } else {
310 - if (!$campaignClass->hasUserAccess($campaignID)) {
311 - die('Access denied to add campaign to the queue');
312 - }
313 - $campaign = $campaignClass->getOneByIdWithMail($campaignID);
314 -
315 - $resendTarget = acym_getVar('cmd', 'resend_target', '');
316 - if (!empty($resendTarget)) {
317 - $currentCampaign = $campaignClass->getOneById($campaignID);
318 - $currentCampaign->sending_params['resendTarget'] = $resendTarget;
319 - $campaignClass->save($currentCampaign);
320 - acym_trigger('onAcymResendCampaign', [$currentCampaign->mail_id]);
321 - }
322 -
323 - $status = $campaignClass->send($campaignID);
324 -
325 - if ($status) {
326 - acym_enqueueMessage(acym_translationSprintf('ACYM_CAMPAIGN_ADDED_TO_QUEUE', $campaign->name), 'info');
327 - } else {
328 - if (empty($campaignClass->errors)) {
329 - $notification = [
330 - 'name' => 'queue_campaign_error',
331 - 'removable' => 1,
332 - ];
333 - acym_enqueueMessage(acym_translationSprintf('ACYM_ERROR_QUEUE_CAMPAIGN', $campaign->name), 'error', true, [$notification]);
334 - } else {
335 - acym_enqueueMessage($campaignClass->errors, 'error');
336 - }
337 - }
338 - }
339 -
340 - $this->redirectAfterQueued();
341 - }
342 -
343 - private function redirectAfterQueued(): void
344 - {
345 - if (acym_isAdmin() && (!acym_level(ACYM_ESSENTIAL) || $this->config->get('cron_last', 0) < (time() - 43200))) {
346 - acym_redirect(acym_completeLink('queue&task=campaigns', false, true));
347 - } else {
348 - $this->listing();
349 - }
350 - }
351 -
352 - private function updateOpenAcymailerPopup(): void
353 - {
354 - if (acym_isAdmin() && $this->config->get('mailer_method') === 'acymailer' && intval($this->config->get('acymailer_popup', 0)) === 0) {
355 - $this->config->saveConfig(['acymailer_popup' => '1']);
356 - }
357 - }
358 -
359 - public function updateArchive(): void
360 - {
361 - $campaignId = acym_getVar('int', 'campaignId', 0);
362 - if (empty($campaignId)) {
363 - acym_sendAjaxResponse('', [], false);
364 - }
365 -
366 - $campaignClass = new CampaignClass();
367 - $campaign = $campaignClass->getOneById($campaignId);
368 - if (empty($campaign)) {
369 - acym_sendAjaxResponse(acym_translation('ACYM_CAMPAIGN_NOT_FOUND'), [], false);
370 - }
371 -
372 - $mailArchiveClass = new MailArchiveClass();
373 - $archive = $mailArchiveClass->getOneByMailId($campaign->mail_id);
374 - if (!empty($archive)) {
375 - $mailArchiveClass->delete([$archive->id]);
376 - }
377 -
378 - acym_sendAjaxResponse();
379 - }
380 -}