PluginProbe
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress / 11.1.1
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress v11.1.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
← All changes | back/Controllers/Mails/Listing.php +0 -266 10.11.1 → 11.1.1 View file →
@@ -1,266 +1,0 @@
1 -<?php
2 -
3 -namespace AcyMailing\Controllers\Mails;
4 -
5 -use AcyMailing\Classes\MailClass;
6 -use AcyMailing\Classes\TagClass;
7 -use AcyMailing\Helpers\ExportHelper;
8 -use AcyMailing\Helpers\PaginationHelper;
9 -use AcyMailing\Helpers\ToolbarHelper;
10 -use AcyMailing\Helpers\UpdateHelper;
11 -
12 -trait Listing
13 -{
14 - public function listing(): void
15 - {
16 - acym_setVar('layout', 'listing');
17 -
18 - $searchFilter = $this->getVarFiltersListing('string', 'mails_search', '');
19 - $tagFilter = $this->getVarFiltersListing('string', 'mails_tag', '');
20 - $ordering = $this->getVarFiltersListing('string', 'mails_ordering', 'creation_date');
21 - $orderingSortOrder = $this->getVarFiltersListing('cmd', 'mails_ordering_sort_order', 'desc');
22 -
23 - $pagination = new PaginationHelper();
24 - $mailsPerPage = $pagination->getListLimit();
25 - $page = $this->getVarFiltersListing('int', 'mails_pagination_page', 1);
26 - $mailClass = new MailClass();
27 - $status = MailClass::TYPE_STANDARD;
28 -
29 - $requestData = [
30 - 'ordering' => $ordering,
31 - 'search' => $searchFilter,
32 - 'elementsPerPage' => $mailsPerPage,
33 - 'offset' => ($page - 1) * $mailsPerPage,
34 - 'tag' => $tagFilter,
35 - 'status' => $status,
36 - 'ordering_sort_order' => $orderingSortOrder,
37 - 'onlyStandard' => true,
38 - ];
39 - $matchingMails = $this->getMatchingElementsFromData($requestData, $status, $page);
40 -
41 -
42 - $matchingMailsNb = count($matchingMails['elements']);
43 -
44 - if (empty($matchingMailsNb) && $page > 1) {
45 - $this->setVarFiltersListing('mails_pagination_page', 1);
46 - $this->listing();
47 -
48 - return;
49 - }
50 -
51 - $pagination->setStatus($matchingMails['total']->total, $page, $mailsPerPage);
52 -
53 - ob_start();
54 - require acym_getView('mails', 'listing_import', true);
55 - $templateImportView = ob_get_clean();
56 -
57 - $tagClass = new TagClass();
58 - $mailsData = [
59 - 'allMails' => $matchingMails['elements'],
60 - 'allTags' => $tagClass->getAllTagsByType(TagClass::TYPE_MAIL),
61 - 'pagination' => $pagination,
62 - 'search' => $searchFilter,
63 - 'tag' => $tagFilter,
64 - 'ordering' => $ordering,
65 - 'status' => $status,
66 - 'mailNumberPerStatus' => $matchingMails['status'],
67 - 'orderingSortOrder' => $orderingSortOrder,
68 - 'templateImportView' => $templateImportView,
69 - 'mailClass' => $mailClass,
70 - 'favoriteTemplateId' => (int)$this->config->get('favorite_template', 0),
71 - ];
72 -
73 - if (!empty($mailsData['tag'])) {
74 - $mailsData['status_toolbar'] = [
75 - 'mails_tag' => $mailsData['tag'],
76 - ];
77 - }
78 -
79 - $this->prepareToolbar($mailsData);
80 - parent::display($mailsData);
81 - }
82 -
83 - public function prepareToolbar(array &$data): void
84 - {
85 - $toolbarHelper = new ToolbarHelper();
86 - $toolbarHelper->addSearchBar($data['search'], 'mails_search', 'ACYM_SEARCH');
87 - $toolbarHelper->addFilterByTag($data, 'mails_tag', 'acym__templates__filter__tags acym__select');
88 - $toolbarHelper->addButton(acym_translation('ACYM_ADD_DEFAULT_TMPL'), ['data-task' => 'installDefaultTmpl', 'id' => 'acym__mail__install-default'], 'content_copy');
89 - $otherContent = acym_modal(
90 - '<i class="acymicon-download"></i>'.acym_translation('ACYM_IMPORT'),
91 - $data['templateImportView'],
92 - 'acym__template__import__reveal',
93 - [],
94 - [
95 - 'class' => 'button button-secondary cell medium-6 large-shrink',
96 - 'data-reload' => 'true',
97 - 'data-ajax' => 'false',
98 - ]
99 - );
100 -
101 - $otherContent .= acym_modal(
102 - '<i class="acymicon-add"></i>'.acym_translation('ACYM_CREATE'),
103 - '<div class="cell grid-x grid-margin-x">
104 - <button type="button" data-task="edit" data-editor="html" class="acym__create__template button cell large-auto small-6 margin-top-1 button-secondary">'.acym_translation(
105 - 'ACYM_HTML_EDITOR'
106 - ).'</button>
107 - <button type="button" data-task="edit" data-editor="acyEditor" class="acym__create__template button cell medium-auto margin-top-1">'.acym_translation(
108 - 'ACYM_DD_EDITOR'
109 - ).'</button>
110 - </div>',
111 - '',
112 - [],
113 - ['class' => 'acym_vcenter button cell medium-6 large-shrink'],
114 - true,
115 - false
116 - );
117 - $toolbarHelper->addOtherContent($otherContent);
118 -
119 - $data['toolbar'] = $toolbarHelper;
120 - }
121 -
122 - public function doUploadTemplate(): void
123 - {
124 - acym_checkToken();
125 -
126 - if (!acym_isAdmin() || !acym_isAllowed('mails')) {
127 - die('Access denied');
128 - }
129 -
130 - $mailClass = new MailClass();
131 - $mailClass->doupload();
132 -
133 - $this->listing();
134 - }
135 -
136 - public function export(): void
137 - {
138 - acym_checkToken();
139 -
140 - $templateId = acym_getVar('int', 'templateId', 0);
141 -
142 - if (empty($templateId)) {
143 - exit;
144 - }
145 -
146 - $mailClass = new MailClass();
147 - $template = $mailClass->getOneById($templateId);
148 -
149 - $exportHelper = new ExportHelper();
150 - $exportHelper->exportTemplate($template);
151 -
152 - exit;
153 - }
154 -
155 - public function installDefaultTmpl(): void
156 - {
157 - $updateHelper = new UpdateHelper();
158 - $updateHelper->installTemplates();
159 -
160 - $this->listing();
161 - }
162 -
163 - public function favorite(): void
164 - {
165 - $templateId = acym_getVar('int', 'templateId', 0);
166 -
167 - if (empty($templateId)) {
168 - acym_enqueueMessage(acym_translationSprintf('ACYM_NOT_FOUND', acym_translation('ACYM_TEMPLATE')), 'error');
169 - $this->listing();
170 -
171 - return;
172 - }
173 -
174 - $favoriteTemplateId = $this->config->get('favorite_template', 0);
175 - $this->config->saveConfig(['favorite_template' => (int)$favoriteTemplateId === $templateId ? 0 : $templateId]);
176 -
177 - $this->listing();
178 - }
179 -
180 - public function massDuplicate(): void
181 - {
182 - $ids = acym_getVar('array', 'elements_checked', []);
183 - if (!empty($ids)) {
184 - $this->duplicate($ids);
185 - }
186 - $this->listing();
187 - }
188 -
189 - public function oneDuplicate(): void
190 - {
191 - $templateId = acym_getVar('int', 'templateId', 0);
192 -
193 - if (empty($templateId)) {
194 - acym_enqueueMessage(acym_translation('ACYM_TEMPLATE_DUPLICATE_ERROR'), 'error');
195 - $this->listing();
196 -
197 - return;
198 - }
199 -
200 - $this->duplicate([$templateId]);
201 - $this->listing();
202 - }
203 -
204 - public function duplicate(array $templates = []): void
205 - {
206 - $mailClass = new MailClass();
207 - $tmplError = [];
208 - foreach ($templates as $templateId) {
209 - $oldTemplate = $mailClass->getOneById($templateId);
210 -
211 - if (empty($oldTemplate)) {
212 - $tmplError[] = $templateId;
213 - continue;
214 - }
215 -
216 - $newTemplate = $oldTemplate;
217 - $newTemplate->id = 0;
218 - $newTemplate->name = $oldTemplate->name.'_copy';
219 - $newTemplate->creator_id = acym_currentUserId();
220 - unset($newTemplate->thumbnail);
221 -
222 - $mailClass->save($newTemplate);
223 - }
224 - if (!empty($tmplError)) {
225 - acym_enqueueMessage(acym_translationSprintf('ACYM_TEMPLATE_X_DUPLICATE_ERROR', implode(', ', $tmplError)), 'error');
226 - }
227 - }
228 -
229 - public function delete(): void
230 - {
231 - parent::delete();
232 -
233 - $returnListing = acym_getVar('string', 'return_listing', '');
234 - if (!empty($returnListing)) {
235 - if (acym_isAdmin()) {
236 - acym_redirect(acym_completeLink($returnListing, false, true));
237 - } else {
238 - $itemId = acym_getVar('int', 'acym_itemid');
239 - $itemId = empty($itemId) ? '' : '&Itemid='.$itemId;
240 - $urlRedirect = acym_completeLink($returnListing.$itemId, false, true);
241 - acym_redirect($urlRedirect);
242 - }
243 - }
244 - }
245 -
246 - public function getMailByIdAjax(): void
247 - {
248 - acym_checkToken();
249 - $mailId = acym_getVar('int', 'id', 0);
250 - if (empty($mailId)) {
251 - acym_sendAjaxResponse(acym_translation('ACYM_COULD_NOT_FIND_MAIL'), [], false);
252 - }
253 -
254 - $mailClass = new MailClass();
255 - $mail = $mailClass->getOneById($mailId);
256 - if (empty($mail)) {
257 - acym_sendAjaxResponse(acym_translation('ACYM_COULD_NOT_FIND_MAIL'), [], false);
258 - }
259 -
260 - if (!$mailClass->hasUserAccess($mailId)) {
261 - die('Access denied for this mail');
262 - }
263 -
264 - acym_sendAjaxResponse('', ['mail' => $mail]);
265 - }
266 -}