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/CampaignsController.php +28 -14 10.11.1 → 11.1.0 View file →
@@ -2,8 +2,9 @@
2 2
3 3 namespace AcyMailing\Controllers;
4 4
5 5 use AcyMailing\Classes\CampaignClass;
6 +use AcyMailing\Classes\HistoryClass;
6 7 use AcyMailing\Classes\MailClass;
7 8 use AcyMailing\Classes\ListClass;
8 9 use AcyMailing\Classes\UserClass;
9 10 use AcyMailing\Helpers\MailerHelper;
@@ -92,8 +93,10 @@
92 93 }
93 94
94 95 public function deleteAttachmentAjax(): void
95 96 {
97 + wp_verify_nonce(acym_getVar('cmd', '_wpnonce'), 'acymnonce') || die('Invalid Token');
98 +
96 99 $mailId = acym_getVar('int', 'mail', 0);
97 100 $attachmentId = acym_getVar('int', 'id', 0);
98 101
99 102 if (!empty($mailId) && $attachmentId >= 0) {
@@ -98,9 +101,9 @@
98 101
99 102 if (!empty($mailId) && $attachmentId >= 0) {
100 103 $mailClass = new MailClass();
101 104
102 - if (!$mailClass->hasUserAccess($mailId)) {
105 + if (!$mailClass->hasUserAccess($mailId, true)) {
103 106 acym_sendAjaxResponse(acym_translation('ACYM_COULD_NOT_DELETE_ATTACHMENT'), [], false);
104 107 }
105 108
106 109 if ($mailClass->deleteOneAttachment($mailId, $attachmentId)) {
@@ -112,8 +115,10 @@
112 115 }
113 116
114 117 public function test(): void
115 118 {
119 + wp_verify_nonce(acym_getVar('cmd', '_wpnonce'), 'acymnonce') || die('Invalid Token');
120 +
116 121 $campaignId = acym_getVar('int', 'campaignId', 0);
117 122 $specificMailId = acym_getVar('int', 'mailId', 0);
118 123
119 124 $campaignClass = new CampaignClass();
@@ -122,10 +127,18 @@
122 127 if (empty($campaign)) {
123 128 acym_sendAjaxResponse(acym_translation('ACYM_CAMPAIGN_NOT_FOUND'), [], false);
124 129 }
125 130
131 + if (!$campaignClass->hasUserAccess($campaignId)) {
132 + acym_sendAjaxResponse(acym_translation('ACYM_ACCESS_DENIED'), [], false);
133 + }
134 +
135 + $mailClassAccess = new MailClass();
136 + if (!empty($specificMailId) && $mailClassAccess->getMainMailId($specificMailId) !== (int)$campaign->mail_id) {
137 + acym_sendAjaxResponse(acym_translation('ACYM_ACCESS_DENIED'), [], false);
138 + }
139 +
126 140 $mailerHelper = new MailerHelper();
127 - $mailerHelper->autoAddUser = true;
128 141 $mailerHelper->report = false;
129 142 if (!empty($specificMailId)) {
130 143 $mailerHelper->isAbTest = $campaignClass->isAbTestMail($specificMailId);
131 144 }
@@ -155,22 +168,21 @@
155 168
156 169 return;
157 170 }
158 171
172 + $historyClass = new HistoryClass();
173 +
159 174 foreach ($testEmails as $oneAddress) {
175 + if (is_numeric($oneAddress)) {
176 + $receiver = $userClass->getOneById($oneAddress);
177 + } else {
178 + $receiver = $userClass->getOneByEmail($oneAddress, true);
179 + }
180 +
160 181 $mailId = $specificMailId;
161 182 if (empty($mailId)) {
162 183 if (acym_isMultilingual()) {
163 - if (is_numeric($oneAddress)) {
164 - $user = $userClass->getOneById($oneAddress);
165 - } else {
166 - $user = $userClass->getOneByEmail($oneAddress);
167 - }
168 - if (empty($user)) {
169 - $mailId = $campaign->mail_id;
170 - } else {
171 - $mailId = empty($translatedMails[$user->language]) ? $campaign->mail_id : $translatedMails[$user->language]->id;
172 - }
184 + $mailId = empty($receiver) || empty($translatedMails[$receiver->language]) ? $campaign->mail_id : $translatedMails[$receiver->language]->id;
173 185 } else {
174 186 $mailId = $campaign->mail_id;
175 187 }
176 188 }
@@ -178,9 +190,11 @@
178 190 $options = [
179 191 'isTest' => true,
180 192 'testNote' => $testNote,
181 193 ];
182 - if (!$mailerHelper->sendOne($mailId, $oneAddress, $options)) {
194 + if ($mailerHelper->sendOne($mailId, $receiver, $options)) {
195 + $historyClass->insert($receiver->id, 'test_sent', [], $mailId);
196 + } else {
183 197 $success = false;
184 198 }
185 199
186 200 if (!empty($mailerHelper->reportMessage)) {
@@ -202,9 +216,9 @@
202 216 }
203 217
204 218 public function saveAsTmplAjax(): void
205 219 {
206 - if (!acym_isAdmin()) {
220 + if (!acym_isAdmin() || (!acym_isAllowed('campaigns') && !acym_isAllowed('mails'))) {
207 221 die('Access denied');
208 222 }
209 223
210 224 $mailController = new MailsController();