PluginProbe
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress / 10.2.2
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress v10.2.2
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.2.2, at back/Controllers/Campaigns/AutoCampaigns.php

184 lines 5.7 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 } else {
36 $data['allCampaigns'][$key]->sending_params['trigger_text'] = $textToDisplay->triggers[$textToDisplay->triggers['trigger_type']];
37 }
38 }
39 }
40
41 public function summaryGenerated(): void
42 {
43 $campaignId = acym_getVar('int', 'campaignId', 0);
44 $mailClass = new MailClass();
45
46 acym_setVar('layout', 'summary_generated');
47
48 $generatedCampaign = $this->loadCampaignMail($campaignId);
49
50 if (empty($generatedCampaign)) {
51 acym_enqueueMessage(acym_translation('ACYM_COULD_NOT_LOAD_CAMPAIGN'), 'error');
52 $this->listing();
53
54 return;
55 }
56
57 $campaign = $generatedCampaign['campaign'];
58 $mail = $generatedCampaign['mail'];
59
60 $lists = $mailClass->getAllListsByMailId($mail->id);
61
62 if (empty($lists)) {
63 $this->listing();
64
65 return;
66 }
67
68 $parentCampaign = $this->loadCampaignMail((int)$campaign->parent_id);
69 if (empty($parentCampaign)) {
70 $parentCampaign = [
71 'campaign' => false,
72 'mail' => false,
73 ];
74 }
75
76 $campaign->waiting_confirmation = false;
77 if ($campaign->draft && $campaign->active) {
78 $campaign->waiting_confirmation = true;
79 }
80 $campaign->canceled = false;
81 if (!$campaign->draft && !$campaign->active) {
82 $campaign->canceled = true;
83 }
84
85 $data = [
86 'campaign' => $campaign,
87 'mailId' => $campaign->mail_id,
88 'mail' => $mail,
89 'lists' => $lists,
90 'parent_campaign' => $parentCampaign['campaign'],
91 'parent_mail' => $parentCampaign['mail'],
92 'mailClass' => $mailClass,
93 ];
94
95 $this->prepareMultilingual($data, false);
96 $this->prepareAllMailsForMultilingual($data);
97
98 $this->breadcrumb[acym_escape($mail->name)] = acym_completeLink('campaigns&task=summaryGenerated&campaignId='.$campaign->id);
99 parent::display($data);
100 }
101
102 protected function changeStatusGeneratedCampaign(string $statusToApply = 'disable'): void
103 {
104 $campaignId = acym_getVar('int', 'campaignId', 0);
105 $campaignClass = new CampaignClass();
106
107 $campaign = $this->loadCampaignMail($campaignId);
108
109 if (empty($campaign)) {
110 acym_enqueueMessage(acym_translation('ACYM_COULD_NOT_LOAD_CAMPAIGN'), 'error');
111 $this->listing();
112
113 return;
114 }
115
116 $campaign = $campaign['campaign'];
117
118 if ('disable' === $statusToApply) {
119 $campaign->sent = 0;
120 $campaign->active = 0;
121 $campaign->draft = 0;
122 $successMsg = acym_translation('ACYM_CAMPAIGN_HAS_BEEN_DISABLED');
123 } else {
124 $campaign->active = 1;
125 $campaign->draft = 1;
126 $successMsg = acym_translation('ACYM_CAMPAIGN_HAS_BEEN_ENABLED');
127 }
128
129 if ($campaignClass->save($campaign)) {
130 acym_enqueueMessage($successMsg);
131 } else {
132 acym_enqueueMessage(acym_translation('ACYM_ERROR_SAVING'), 'error');
133 }
134
135 if ('enable' === $statusToApply) {
136 acym_setVar('campaignId', $campaignId);
137 $this->summaryGenerated();
138 } else {
139 acym_setVar('campaigns_status', 'generated');
140 $this->listing();
141 }
142 }
143
144 public function disableGeneratedCampaign(): void
145 {
146 $this->changeStatusGeneratedCampaign();
147 }
148
149 public function enableGeneratedCampaign(): void
150 {
151 $this->changeStatusGeneratedCampaign('enable');
152 }
153
154 private function loadCampaignMail(int $campaignId): array
155 {
156 if (empty($campaignId)) {
157 return [];
158 }
159
160 $campaignClass = new CampaignClass();
161 $mailClass = new MailClass();
162
163 $campaign = $campaignClass->getOneById($campaignId);
164 if (empty($campaign)) {
165 return [];
166 }
167
168 $mail = $mailClass->getOneById($campaign->mail_id);
169 if (empty($mail)) {
170 return [];
171 }
172
173 if (empty($mail->from_name)) $mail->from_name = $this->config->get('from_name');
174 if (empty($mail->from_email)) $mail->from_email = $this->config->get('from_email');
175 if (empty($mail->reply_to_name)) $mail->reply_to_name = $this->config->get('replyto_name');
176 if (empty($mail->reply_to_email)) $mail->reply_to_email = $this->config->get('replyto_email');
177
178 return [
179 'campaign' => $campaign,
180 'mail' => $mail,
181 ];
182 }
183 }
184