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