PluginProbe
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress / 11.1.0
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress v11.1.0
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/Bounces/Listing.php +65 -26 10.1.4 → 11.1.0 View file →
@@ -79,11 +79,18 @@
79 79
80 80 parent::display($data);
81 81 }
82 82
83 + // When one of the raw of the listing is moved we set the ordering
83 84 public function ajaxSetOrdering(): void
84 85 {
85 - $order = json_decode(acym_getVar('string', 'order'));
86 + wp_verify_nonce(acym_getVar('cmd', '_wpnonce'), 'acymnonce') || die('Invalid Token');
87 +
88 + $order = json_decode(acym_getVar('string', 'order'), true);
89 + if (empty($order)) {
90 + $order = [];
91 + }
92 +
86 93 $i = 1;
87 94 $error = false;
88 95 foreach ($order as $rule) {
89 96 $query = 'UPDATE #__acym_rule SET `ordering` = '.intval($i).' WHERE `id` = '.intval($rule);
@@ -93,10 +100,13 @@
93 100
94 101 acym_sendAjaxResponse('', [], !$error);
95 102 }
96 103
104 + // Click on the button Run Bounce Handling
97 105 public function test(): void
98 106 {
107 + wp_verify_nonce(acym_getVar('cmd', '_wpnonce'), 'acymnonce') || die('Invalid Token');
108 +
99 109 $ruleClass = new RuleClass();
100 110
101 111 if ($ruleClass->getOrderingNumber() < 1) {
102 112 acym_enqueueMessage(acym_translation('ACYM_NO_RULES'), 'error');
@@ -109,22 +119,22 @@
109 119 acym_increasePerf();
110 120 $bounceHelper = new BounceHelper();
111 121 $bounceHelper->report = true;
112 122
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 - }
123 + if ($bounceHelper->init() && $bounceHelper->connect()) {
124 + $this->runBounce = true;
125 + } else {
126 + $errors = $bounceHelper->getErrors();
127 + if (!empty($errors)) {
128 + acym_enqueueMessage($errors, 'error');
129 + $errorString = implode(' ', $errors);
130 + $port = $this->config->get('bounce_port');
131 + if (preg_match('#certificate#i', $errorString) && !$this->config->get('bounce_certif', false)) {
132 + //Self signed certificate issue
133 + acym_enqueueMessage(acym_translationSprintf('ACYM_YOU_MAY_TURN_ON_OPTION', '<i>'.acym_translation('ACYM_SELF_SIGNED_CERTIFICATE').'</i>'), 'warning');
134 + } elseif (!empty($port) && !in_array($port, ['993', '143', '110'])) {
135 + //Not the right port... ?
136 + acym_enqueueMessage(acym_translation('ACYM_BOUNCE_WRONG_PORT'), 'warning');
127 137 }
128 138 }
129 139 }
130 140
@@ -130,10 +140,13 @@
130 140
131 141 $this->listing();
132 142 }
133 143
144 + // Process bounce handling after clicking on the button Run Bounce Handling
134 145 public function process(): void
135 146 {
147 + wp_verify_nonce(acym_getVar('cmd', '_wpnonce'), 'acymnonce') || die('Invalid Token');
148 +
136 149 acym_increasePerf();
137 150
138 151 $bounceHelper = new BounceHelper();
139 152 $bounceHelper->report = true;
@@ -144,18 +157,29 @@
144 157 acym_display($bounceHelper->getErrors(), 'error');
145 158
146 159 return;
147 160 }
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 -
161 + ?>
162 + <html>
163 + <head>
164 + <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
165 + <title><?php echo esc_html(acym_translation('ACYM_BOUNCE_PROCESS')); ?></title>
166 + <style>
167 + body{
168 + font-size: 12px;
169 + font-family: Arial, Helvetica, sans-serif;
170 + padding-top: 30px;
171 + }
172 + </style>
173 + </head>
174 + <body>
175 + <?php
153 176 acym_display(acym_translationSprintf('ACYM_BOUNCE_CONNECT_SUCC', $this->config->get('bounce_username')), 'success');
154 177 $nbMessages = $bounceHelper->getNBMessages();
155 178 $nbMessagesReport = acym_translationSprintf('ACYM_NB_MAIL_MAILBOX', $nbMessages);
156 179 acym_display($nbMessagesReport, 'info');
157 180
181 + //that should not happen as we check it before anyway...
158 182 if (empty($nbMessages)) {
159 183 exit;
160 184 }
161 185
@@ -160,20 +184,25 @@
160 184 }
161 185
162 186 $bounceHelper->handleMessages();
163 187
188 + //Load the cron class to save the report if there is one
164 189 $cronHelper = new CronHelper();
165 190 $cronHelper->saveReport([$nbMessagesReport], $bounceHelper->messages);
166 191
167 192 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);
193 + //We still have some messages...
194 + $url = acym_completeLink('bounces&task=process&continuebounce=1', true, true).'&'.acym_getFormToken();
169 195 if (acym_getVar('int', 'continuebounce')) {
170 - echo '<script type="text/javascript">document.location.href=\''.$url.'\';</script>';
196 + //We already started the bounce handling and we should resume it until the end...
197 + echo '<script type="text/javascript">document.location.href = '.json_encode($url).';</script>';
171 198 } else {
172 - echo '<div style="padding:20px;"><a href="'.$url.'">'.acym_translation('ACYM_CLICK_HANDLE_ALL_BOUNCES').'</a></div>';
199 + //We should propose to the user to resume the bounce process until the end...
200 + echo '<div style="padding:20px;"><a href="'.esc_url($url).'">'.esc_html(acym_translation('ACYM_CLICK_HANDLE_ALL_BOUNCES')).'</a></div>';
173 201 }
174 202 }
175 203
204 + //We need to finish the current page properly
176 205 echo '</body></html>';
177 206 while ($bounceHelper->obend-- > 0) {
178 207 ob_start();
179 208 }
@@ -179,10 +208,13 @@
179 208 }
180 209 exit;
181 210 }
182 211
212 + // Click on the button Reset to default rules
183 213 public function reinstall(): void
184 214 {
215 + wp_verify_nonce(acym_getVar('cmd', '_wpnonce'), 'acymnonce') || die('Invalid Token');
216 +
185 217 $ruleClass = new RuleClass();
186 218 $ruleClass->cleanTable();
187 219
188 220 $updateHelper = new UpdateHelper();
@@ -190,8 +222,9 @@
190 222
191 223 $this->listing();
192 224 }
193 225
226 + // Click on the button configuration
194 227 public function config(): void
195 228 {
196 229 acym_redirect(acym_completeLink('configuration', false, true));
197 230 }
@@ -197,10 +230,12 @@
197 230 }
198 231
199 232 public function delete(): void
200 233 {
201 - $rulesSelected = acym_getVar('array', 'elements_checked');
234 + wp_verify_nonce(acym_getVar('cmd', '_wpnonce'), 'acymnonce') || die('Invalid Token');
202 235
236 + $rulesSelected = acym_getVar('array', 'elements_checked', []);
237 +
203 238 if (in_array(RuleClass::FINAL_RULE_ID, $rulesSelected)) {
204 239 acym_enqueueMessage(acym_translation('ACYM_CANNOT_DELETE_FINAL_RULE'), 'error');
205 240
206 241 $key = array_search(RuleClass::FINAL_RULE_ID, $rulesSelected);
@@ -216,9 +251,11 @@
216 251 }
217 252
218 253 public function setInactive(): void
219 254 {
220 - $rulesSelected = acym_getVar('array', 'elements_checked');
255 + wp_verify_nonce(acym_getVar('cmd', '_wpnonce'), 'acymnonce') || die('Invalid Token');
256 +
257 + $rulesSelected = acym_getVar('array', 'elements_checked', []);
221 258 $ruleClass = new RuleClass();
222 259 $ruleClass->setInactive($rulesSelected);
223 260
224 261 $this->listing();
@@ -225,9 +262,11 @@
225 262 }
226 263
227 264 public function setActive(): void
228 265 {
229 - $rulesSelected = acym_getVar('array', 'elements_checked');
266 + wp_verify_nonce(acym_getVar('cmd', '_wpnonce'), 'acymnonce') || die('Invalid Token');
267 +
268 + $rulesSelected = acym_getVar('array', 'elements_checked', []);
230 269 $ruleClass = new RuleClass();
231 270 $ruleClass->setActive($rulesSelected);
232 271
233 272 $this->listing();