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 -257 10.2.2 → 11.1.1 View file →
@@ -1,257 +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 - 'class="button button-secondary cell medium-6 large-shrink" data-reload="true" data-ajax="false"'
95 - );
96 -
97 - $otherContent .= acym_modal(
98 - '<i class="acymicon-add"></i>'.acym_translation('ACYM_CREATE'),
99 - '<div class="cell grid-x grid-margin-x">
100 - <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(
101 - 'ACYM_HTML_EDITOR'
102 - ).'</button>
103 - <button type="button" data-task="edit" data-editor="acyEditor" class="acym__create__template button cell medium-auto margin-top-1">'.acym_translation(
104 - 'ACYM_DD_EDITOR'
105 - ).'</button>
106 - </div>',
107 - '',
108 - '',
109 - 'class="acym_vcenter button cell medium-6 large-shrink"',
110 - true,
111 - false
112 - );
113 - $toolbarHelper->addOtherContent($otherContent);
114 -
115 - $data['toolbar'] = $toolbarHelper;
116 - }
117 -
118 - public function doUploadTemplate(): void
119 - {
120 - acym_checkToken();
121 -
122 - if (!acym_isAdmin() || !acym_isAllowed('mails')) {
123 - die('Access denied');
124 - }
125 -
126 - $mailClass = new MailClass();
127 - $mailClass->doupload();
128 -
129 - $this->listing();
130 - }
131 -
132 - public function export(): void
133 - {
134 - acym_checkToken();
135 -
136 - $templateId = acym_getVar('int', 'templateId', 0);
137 -
138 - if (empty($templateId)) {
139 - exit;
140 - }
141 -
142 - $mailClass = new MailClass();
143 - $template = $mailClass->getOneById($templateId);
144 -
145 - $exportHelper = new ExportHelper();
146 - $exportHelper->exportTemplate($template);
147 -
148 - exit;
149 - }
150 -
151 - public function installDefaultTmpl(): void
152 - {
153 - $updateHelper = new UpdateHelper();
154 - $updateHelper->installTemplates();
155 -
156 - $this->listing();
157 - }
158 -
159 - public function favorite(): void
160 - {
161 - $templateId = acym_getVar('int', 'templateId', 0);
162 -
163 - if (empty($templateId)) {
164 - acym_enqueueMessage(acym_translationSprintf('ACYM_NOT_FOUND', acym_translation('ACYM_TEMPLATE')), 'error');
165 - $this->listing();
166 -
167 - return;
168 - }
169 -
170 - $favoriteTemplateId = $this->config->get('favorite_template', 0);
171 - $this->config->save(['favorite_template' => (int)$favoriteTemplateId === $templateId ? 0 : $templateId]);
172 -
173 - $this->listing();
174 - }
175 -
176 - public function massDuplicate(): void
177 - {
178 - $ids = acym_getVar('array', 'elements_checked', []);
179 - if (!empty($ids)) {
180 - $this->duplicate($ids);
181 - }
182 - $this->listing();
183 - }
184 -
185 - public function oneDuplicate(): void
186 - {
187 - $templateId = acym_getVar('int', 'templateId', 0);
188 -
189 - if (empty($templateId)) {
190 - acym_enqueueMessage(acym_translation('ACYM_TEMPLATE_DUPLICATE_ERROR'), 'error');
191 - $this->listing();
192 -
193 - return;
194 - }
195 -
196 - $this->duplicate([$templateId]);
197 - $this->listing();
198 - }
199 -
200 - public function duplicate(array $templates = []): void
201 - {
202 - $mailClass = new MailClass();
203 - $tmplError = [];
204 - foreach ($templates as $templateId) {
205 - $oldTemplate = $mailClass->getOneById($templateId);
206 -
207 - if (empty($oldTemplate)) {
208 - $tmplError[] = $templateId;
209 - continue;
210 - }
211 -
212 - $newTemplate = $oldTemplate;
213 - $newTemplate->id = 0;
214 - $newTemplate->name = $oldTemplate->name.'_copy';
215 - unset($newTemplate->thumbnail);
216 -
217 - $mailClass->save($newTemplate);
218 - }
219 - if (!empty($tmplError)) {
220 - acym_enqueueMessage(acym_translationSprintf('ACYM_TEMPLATE_X_DUPLICATE_ERROR', implode(', ', $tmplError)), 'error');
221 - }
222 - }
223 -
224 - public function delete(): void
225 - {
226 - parent::delete();
227 -
228 - $returnListing = acym_getVar('string', 'return_listing', '');
229 - if (!empty($returnListing)) {
230 - if (acym_isAdmin()) {
231 - acym_redirect(acym_completeLink($returnListing, false, true));
232 - } else {
233 - $itemId = acym_getVar('int', 'acym_itemid');
234 - $itemId = empty($itemId) ? '' : '&Itemid='.$itemId;
235 - $urlRedirect = acym_completeLink($returnListing.$itemId, false, true);
236 - acym_redirect($urlRedirect);
237 - }
238 - }
239 - }
240 -
241 - public function getMailByIdAjax(): void
242 - {
243 - acym_checkToken();
244 - $mailId = acym_getVar('int', 'id', 0);
245 - if (empty($mailId)) acym_sendAjaxResponse(acym_translation('ACYM_COULD_NOT_FIND_MAIL'), [], false);
246 -
247 - $mailClass = new MailClass();
248 - $mail = $mailClass->getOneById($mailId);
249 - if (empty($mail)) acym_sendAjaxResponse(acym_translation('ACYM_COULD_NOT_FIND_MAIL'), [], false);
250 -
251 - if (!$mailClass->hasUserAccess($mailId)) {
252 - die('Access denied for this mail');
253 - }
254 -
255 - acym_sendAjaxResponse('', $mail);
256 - }
257 -}