PluginProbe
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress / 10.1.4
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress v10.1.4
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 / Bounces / Listing.php

Listing.php in AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress 10.1.4, at back/Controllers/Bounces/Listing.php

236 lines 7.8 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\Bounces;
4
5 use AcyMailing\Classes\ListClass;
6 use AcyMailing\Classes\RuleClass;
7 use AcyMailing\Helpers\BounceHelper;
8 use AcyMailing\Helpers\CronHelper;
9 use AcyMailing\Helpers\ToolbarHelper;
10 use AcyMailing\Helpers\UpdateHelper;
11 use AcyMailing\Helpers\WorkflowHelper;
12
13 trait Listing
14 {
15 public function listing(): void
16 {
17 $this->storeRedirectListing(true);
18 }
19
20 public function prepareToolbar(array &$data, string $element = 'bounces'): void
21 {
22 $toolbarHelper = new ToolbarHelper();
23 if ($element === 'bounces') {
24 $toolbarHelper->addButton(
25 'ACYM_CONFIGURE',
26 [
27 'data-task' => 'config',
28 'id' => 'acym__bounce__button__config',
29 'type' => 'button',
30 ],
31 'settings'
32 );
33 $toolbarHelper->addButton(
34 'ACYM_RESET_DEFAULT_RULES',
35 [
36 'data-task' => 'reinstall',
37 'type' => 'button',
38 'data-confirmation-message' => 'ACYM_ARE_YOU_SURE',
39 ],
40 'repeat'
41 );
42 $toolbarHelper->addButton('ACYM_RUN_BOUNCE_HANDLING', ['data-task' => 'test'], 'play_arrow');
43 $toolbarHelper->addButton('ACYM_CREATE', ['data-task' => 'rule', 'type' => 'submit'], 'add', true);
44
45
46 $remindMe = json_decode($this->config->get('remindme', '[]'), true);
47 $messageIdentifier = 'bounce_rules_'.UpdateHelper::BOUNCE_VERSION;
48
49 if (!in_array($messageIdentifier, $remindMe) && $this->config->get('bounceVersion', 0) < UpdateHelper::BOUNCE_VERSION) {
50 $message = acym_translation('ACYM_NEW_BOUNCE_RULES');
51 $message .= '<a href="#" class="acym__do__not__remindme acym__do__not__remindme__info" title="'.$messageIdentifier.'">';
52 $message .= acym_translation('ACYM_DO_NOT_REMIND_ME');
53 $message .= '</a>';
54
55 acym_enqueueMessage($message, 'info', false);
56 }
57 } else {
58 $toolbarHelper = new ToolbarHelper();
59 $toolbarHelper->addSearchBar($data['search'], 'mailboxes_search', 'ACYM_SEARCH');
60 $toolbarHelper->addButton(acym_translation('ACYM_CREATE'), ['data-task' => 'mailboxAction'], 'add', true);
61 $data['toolbar'] = $toolbarHelper;
62 }
63
64 $data['toolbar'] = $toolbarHelper;
65 }
66
67 public function bounces(): void
68 {
69 $data = [];
70
71
72 $data['workflowHelper'] = new WorkflowHelper();
73 if (!acym_level(ACYM_ENTERPRISE)) {
74 acym_setVar('layout', 'splashscreen');
75 $data['isEnterprise'] = false;
76 }
77
78 $this->prepareToolbar($data);
79
80 parent::display($data);
81 }
82
83 public function ajaxSetOrdering(): void
84 {
85 $order = json_decode(acym_getVar('string', 'order'));
86 $i = 1;
87 $error = false;
88 foreach ($order as $rule) {
89 $query = 'UPDATE #__acym_rule SET `ordering` = '.intval($i).' WHERE `id` = '.intval($rule);
90 $error = acym_query($query) < 0 || $error;
91 $i++;
92 }
93
94 acym_sendAjaxResponse('', [], !$error);
95 }
96
97 public function test(): void
98 {
99 $ruleClass = new RuleClass();
100
101 if ($ruleClass->getOrderingNumber() < 1) {
102 acym_enqueueMessage(acym_translation('ACYM_NO_RULES'), 'error');
103
104 $this->listing();
105
106 return;
107 }
108
109 acym_increasePerf();
110 $bounceHelper = new BounceHelper();
111 $bounceHelper->report = true;
112
113 if ($bounceHelper->init()) {
114 if ($bounceHelper->connect()) {
115 $this->runBounce = true;
116 } else {
117 $errors = $bounceHelper->getErrors();
118 if (!empty($errors)) {
119 acym_enqueueMessage($errors, 'error');
120 $errorString = implode(' ', $errors);
121 $port = $this->config->get('bounce_port');
122 if (preg_match('#certificate#i', $errorString) && !$this->config->get('bounce_certif', false)) {
123 acym_enqueueMessage(acym_translationSprintf('ACYM_YOU_MAY_TURN_ON_OPTION', '<i>'.acym_translation('ACYM_SELF_SIGNED_CERTIFICATE').'</i>'), 'warning');
124 } elseif (!empty($port) && !in_array($port, ['993', '143', '110'])) {
125 acym_enqueueMessage(acym_translation('ACYM_BOUNCE_WRONG_PORT'), 'warning');
126 }
127 }
128 }
129 }
130
131 $this->listing();
132 }
133
134 public function process(): void
135 {
136 acym_increasePerf();
137
138 $bounceHelper = new BounceHelper();
139 $bounceHelper->report = true;
140 if (!$bounceHelper->init()) {
141 return;
142 }
143 if (!$bounceHelper->connect()) {
144 acym_display($bounceHelper->getErrors(), 'error');
145
146 return;
147 }
148 $disp = "<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n";
149 $disp .= '<title>'.addslashes(acym_translation('ACYM_BOUNCE_PROCESS')).'</title>'."\n";
150 $disp .= "<style>body{font-size:12px;font-family: Arial,Helvetica,sans-serif;padding-top:30px;}</style>\n</head>\n<body>";
151 echo $disp;
152
153 acym_display(acym_translationSprintf('ACYM_BOUNCE_CONNECT_SUCC', $this->config->get('bounce_username')), 'success');
154 $nbMessages = $bounceHelper->getNBMessages();
155 $nbMessagesReport = acym_translationSprintf('ACYM_NB_MAIL_MAILBOX', $nbMessages);
156 acym_display($nbMessagesReport, 'info');
157
158 if (empty($nbMessages)) {
159 exit;
160 }
161
162 $bounceHelper->handleMessages();
163
164 $cronHelper = new CronHelper();
165 $cronHelper->saveReport([$nbMessagesReport], $bounceHelper->messages);
166
167 if ($this->config->get('bounce_max', 0) != 0 && $nbMessages > $this->config->get('bounce_max', 0)) {
168 $url = acym_completeLink('bounces&task=process&continuebounce=1', true, true);
169 if (acym_getVar('int', 'continuebounce')) {
170 echo '<script type="text/javascript">document.location.href=\''.$url.'\';</script>';
171 } else {
172 echo '<div style="padding:20px;"><a href="'.$url.'">'.acym_translation('ACYM_CLICK_HANDLE_ALL_BOUNCES').'</a></div>';
173 }
174 }
175
176 echo '</body></html>';
177 while ($bounceHelper->obend-- > 0) {
178 ob_start();
179 }
180 exit;
181 }
182
183 public function reinstall(): void
184 {
185 $ruleClass = new RuleClass();
186 $ruleClass->cleanTable();
187
188 $updateHelper = new UpdateHelper();
189 $updateHelper->installBounceRules();
190
191 $this->listing();
192 }
193
194 public function config(): void
195 {
196 acym_redirect(acym_completeLink('configuration', false, true));
197 }
198
199 public function delete(): void
200 {
201 $rulesSelected = acym_getVar('array', 'elements_checked');
202
203 if (in_array(RuleClass::FINAL_RULE_ID, $rulesSelected)) {
204 acym_enqueueMessage(acym_translation('ACYM_CANNOT_DELETE_FINAL_RULE'), 'error');
205
206 $key = array_search(RuleClass::FINAL_RULE_ID, $rulesSelected);
207 if ($key !== false) {
208 unset($rulesSelected[$key]);
209 }
210 }
211
212 $ruleClass = new RuleClass();
213 $ruleClass->delete($rulesSelected);
214
215 $this->listing();
216 }
217
218 public function setInactive(): void
219 {
220 $rulesSelected = acym_getVar('array', 'elements_checked');
221 $ruleClass = new RuleClass();
222 $ruleClass->setInactive($rulesSelected);
223
224 $this->listing();
225 }
226
227 public function setActive(): void
228 {
229 $rulesSelected = acym_getVar('array', 'elements_checked');
230 $ruleClass = new RuleClass();
231 $ruleClass->setActive($rulesSelected);
232
233 $this->listing();
234 }
235 }
236