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 -253 10.0.1 → 11.1.1 View file →
@@ -1,253 +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()
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'], $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(&$data)
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()
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()
133 - {
134 - acym_checkToken();
135 -
136 - $templateId = acym_getVar('int', 'templateId', 0);
137 -
138 - if (empty($templateId)) exit;
139 -
140 - $mailClass = new MailClass();
141 - $template = $mailClass->getOneById($templateId);
142 -
143 - $exportHelper = new ExportHelper();
144 - $exportHelper->exportTemplate($template);
145 -
146 - exit;
147 - }
148 -
149 - public function installDefaultTmpl()
150 - {
151 - $updateHelper = new UpdateHelper();
152 - $updateHelper->installTemplates();
153 -
154 - $this->listing();
155 - }
156 -
157 - public function favorite()
158 - {
159 - $templateId = acym_getVar('int', 'templateId', 0);
160 -
161 - if (empty($templateId)) {
162 - acym_enqueueMessage(acym_translationSprintf('ACYM_NOT_FOUND', acym_translation('ACYM_TEMPLATE')), 'error');
163 - $this->listing();
164 -
165 - return;
166 - }
167 -
168 - $favoriteTemplateId = $this->config->get('favorite_template', 0);
169 - $this->config->save(['favorite_template' => (int)$favoriteTemplateId === $templateId ? 0 : $templateId]);
170 -
171 - $this->listing();
172 - }
173 -
174 - public function massDuplicate()
175 - {
176 - $ids = acym_getVar('array', 'elements_checked', []);
177 - if (!empty($ids)) $this->duplicate($ids);
178 - $this->listing();
179 - }
180 -
181 - public function oneDuplicate()
182 - {
183 - $templateId = acym_getVar('int', 'templateId', 0);
184 -
185 - if (empty($templateId)) {
186 - acym_enqueueMessage(acym_translation('ACYM_TEMPLATE_DUPLICATE_ERROR'), 'error');
187 - $this->listing();
188 -
189 - return;
190 - }
191 -
192 - $this->duplicate([$templateId]);
193 - $this->listing();
194 - }
195 -
196 - public function duplicate($templates = [])
197 - {
198 - $mailClass = new MailClass();
199 - $tmplError = [];
200 - foreach ($templates as $templateId) {
201 - $oldTemplate = $mailClass->getOneById($templateId);
202 -
203 - if (empty($oldTemplate)) {
204 - $tmplError[] = $templateId;
205 - continue;
206 - }
207 -
208 - $newTemplate = $oldTemplate;
209 - $newTemplate->id = 0;
210 - $newTemplate->name = $oldTemplate->name.'_copy';
211 - unset($newTemplate->thumbnail);
212 -
213 - $mailClass->save($newTemplate);
214 - }
215 - if (!empty($tmplError)) {
216 - acym_enqueueMessage(acym_translationSprintf('ACYM_TEMPLATE_X_DUPLICATE_ERROR', implode(', ', $tmplError)), 'error');
217 - }
218 - }
219 -
220 - public function delete()
221 - {
222 - parent::delete();
223 -
224 - $returnListing = acym_getVar('string', 'return_listing', '');
225 - if (!empty($returnListing)) {
226 - if (acym_isAdmin()) {
227 - acym_redirect(acym_completeLink($returnListing, false, true));
228 - } else {
229 - $itemId = acym_getVar('int', 'acym_itemid');
230 - $itemId = empty($itemId) ? '' : '&Itemid='.$itemId;
231 - $urlRedirect = acym_completeLink($returnListing.$itemId, false, true);
232 - acym_redirect($urlRedirect);
233 - }
234 - }
235 - }
236 -
237 - public function getMailByIdAjax()
238 - {
239 - acym_checkToken();
240 - $mailId = acym_getVar('int', 'id', 0);
241 - if (empty($mailId)) acym_sendAjaxResponse(acym_translation('ACYM_COULD_NOT_FIND_MAIL'), [], false);
242 -
243 - $mailClass = new MailClass();
244 - $mail = $mailClass->getOneById($mailId);
245 - if (empty($mail)) acym_sendAjaxResponse(acym_translation('ACYM_COULD_NOT_FIND_MAIL'), [], false);
246 -
247 - if (!$mailClass->hasUserAccess($mailId)) {
248 - die('Access denied for this mail');
249 - }
250 -
251 - acym_sendAjaxResponse('', $mail);
252 - }
253 -}