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

187 lines 6.0 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()
12 {
13 if (!acym_level(ACYM_ENTERPRISE)) {
14 $this->campaigns();
15 }
16 }
17
18 private function getIsPendingGenerated(&$data)
19 {
20 $campaignClass = new CampaignClass();
21 $campaingsGenerated = $campaignClass->getAllCampaignsGeneratedWaiting();
22 $data['generatedPending'] = !empty($campaingsGenerated);
23 }
24
25 private function getAutoCampaignsFrequency(&$data)
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 private function getCountStatusFilterCampaignsAuto($allCampaigns, &$allCountStatus)
42 {
43 $allCountStatus->all = 0;
44 $allCountStatus->generated = 0;
45
46 if (!empty($allCampaigns)) $allCountStatus->all = count($allCampaigns);
47
48 $campaignClass = new CampaignClass();
49 $generatedCampaigns = $campaignClass->getAllCampaignsGenerated();
50 if (!empty($generatedCampaigns)) {
51 $allCountStatus->generated = count($generatedCampaigns);
52 }
53 }
54
55 public function summaryGenerated()
56 {
57 $campaignId = acym_getVar('int', 'campaignId', 0);
58 $mailClass = new MailClass();
59
60 acym_setVar('layout', 'summary_generated');
61
62 $generatedCampaign = $this->_loadCampaignMail($campaignId);
63
64 if (!$generatedCampaign) {
65 acym_enqueueMessage(acym_translation('ACYM_COULD_NOT_LOAD_CAMPAIGN'), 'error');
66 $this->listing();
67
68 return;
69 }
70
71 $campaign = $generatedCampaign['campaign'];
72 $mail = $generatedCampaign['mail'];
73
74 $lists = $mailClass->getAllListsByMailId($mail->id);
75
76 if (empty($lists)) {
77 $this->listing();
78
79 return;
80 }
81
82 $parentCampaign = $this->_loadCampaignMail($campaign->parent_id);
83 if (!$parentCampaign) {
84 $parentCampaign = ['campaign' => false, 'mail' => false];
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($statusToApply = 'disable')
114 {
115 $campaignId = acym_getVar('int', 'campaignId', 0);
116 $campaignClass = new CampaignClass();
117
118 $campaign = $this->_loadCampaignMail($campaignId);
119
120 if (!$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 if ($campaignClass->save($campaign)) {
141 acym_enqueueMessage($successMsg);
142 } else {
143 acym_enqueueMessage(acym_translation('ACYM_ERROR_SAVING'), 'error');
144 }
145
146 if ('enable' === $statusToApply) {
147 acym_setVar('campaignId', $campaignId);
148 $this->summaryGenerated();
149 } else {
150 acym_setVar('campaigns_status', 'generated');
151 $this->listing();
152 }
153 }
154
155 public function disableGeneratedCampaign()
156 {
157 $this->changeStatusGeneratedCampaign();
158 }
159
160 public function enableGeneratedCampaign()
161 {
162 $this->changeStatusGeneratedCampaign('enable');
163 }
164
165 private function _loadCampaignMail($campaignId)
166 {
167 if (empty($campaignId)) return false;
168
169 $campaignClass = new CampaignClass();
170 $mailClass = new MailClass();
171
172 $campaign = $campaignClass->getOneById($campaignId);
173 if (empty($campaign)) return false;
174
175 $mail = $mailClass->getOneById($campaign->mail_id);
176 if (empty($mail)) return false;
177
178
179 if (empty($mail->from_name)) $mail->from_name = $this->config->get('from_name');
180 if (empty($mail->from_email)) $mail->from_email = $this->config->get('from_email');
181 if (empty($mail->reply_to_name)) $mail->reply_to_name = $this->config->get('replyto_name');
182 if (empty($mail->reply_to_email)) $mail->reply_to_email = $this->config->get('replyto_email');
183
184 return ['campaign' => $campaign, 'mail' => $mail];
185 }
186 }
187