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/Campaigns/Listing.php +0 -218 10.2.2 → 11.1.1 View file →
@@ -1,218 +1,0 @@
1 -<?php
2 -
3 -namespace AcyMailing\Controllers\Campaigns;
4 -
5 -use AcyMailing\Classes\CampaignClass;
6 -use AcyMailing\Classes\MailClass;
7 -use AcyMailing\Classes\TagClass;
8 -use AcyMailing\Helpers\PaginationHelper;
9 -use AcyMailing\Helpers\ToolbarHelper;
10 -use AcyMailing\Helpers\WorkflowHelper;
11 -
12 -
13 -trait Listing
14 -{
15 - public function listing(): void
16 - {
17 - $this->storeRedirectListing(true);
18 - }
19 -
20 - public function storeRedirectListing(bool $fromListing = false): void
21 - {
22 - acym_session();
23 - $isFrontJoomla = !acym_isAdmin() && ACYM_CMS === 'joomla';
24 - $variableName = $isFrontJoomla ? 'ctrl_stored_front' : 'ctrl_stored';
25 -
26 - $currentTask = acym_getVar('string', 'task', '');
27 - if (!in_array($currentTask, self::TASKS_TO_REMEMBER_FOR_LISTING) && !$fromListing) {
28 - return;
29 - }
30 -
31 - if ((empty($currentTask) || !in_array($currentTask, self::TASKS_TO_REMEMBER_FOR_LISTING)) && !empty($_SESSION[$variableName])) {
32 - $taskToGo = is_array($_SESSION[$variableName]) ? $_SESSION[$variableName]['task'].'&type='.$_SESSION[$variableName]['type'] : $_SESSION[$variableName];
33 - $link = acym_completeLink(($isFrontJoomla ? 'front' : '').'campaigns&task='.$taskToGo, false, true);
34 - acym_redirect($link);
35 - } else {
36 - if (empty($currentTask) || !in_array($currentTask, self::TASKS_TO_REMEMBER_FOR_LISTING)) {
37 - $currentTask = self::TASK_TYPE_CAMPAIGN;
38 - }
39 -
40 - if ($currentTask === self::TASK_TYPE_SPECIFIC_LISTING) {
41 - $type = acym_getVar('string', 'type', '');
42 - $currentTask = empty($type) ? self::TASK_TYPE_CAMPAIGN : ['task' => $currentTask, 'type' => $type];
43 - }
44 -
45 - $_SESSION[$variableName] = $currentTask;
46 - }
47 -
48 - $taskToCall = is_array($currentTask) ? $currentTask['task'] : $currentTask;
49 -
50 - if ($fromListing && method_exists($this, $taskToCall)) {
51 - $this->$taskToCall();
52 - }
53 - }
54 -
55 - public function setTaskListing(string $type): bool
56 - {
57 - $task = self::CAMPAIGN_TYPE_TO_TASK[$type] ?? self::TASK_TYPE_CAMPAIGN;
58 -
59 - if ($task === self::TASK_TYPE_SPECIFIC_LISTING) {
60 - $task = [
61 - 'task' => self::TASK_TYPE_SPECIFIC_LISTING,
62 - 'type' => $type,
63 - ];
64 - }
65 -
66 - $isFrontJoomla = !acym_isAdmin() && ACYM_CMS === 'joomla';
67 - $variableName = $isFrontJoomla ? 'ctrl_stored_front' : 'ctrl_stored';
68 - acym_session();
69 - $_SESSION[$variableName] = $task;
70 -
71 - return true;
72 - }
73 -
74 - private function prepareListingClasses(array &$data): void
75 - {
76 - $data['workflowHelper'] = new WorkflowHelper();
77 - }
78 -
79 - public function specificListing(): void
80 - {
81 - acym_setVar('layout', 'specific_listing');
82 -
83 - $type = acym_getVar('string', 'type');
84 -
85 - $data = [
86 - 'type' => $type,
87 - 'campaign_type' => 'campaigns',
88 - ];
89 - $this->getAllParamsRequest($data);
90 - $this->prepareListingClasses($data);
91 - $this->prepareToolbar($data);
92 -
93 - acym_trigger('onAcymCampaignDataSpecificListing', [&$data, $type]);
94 -
95 - parent::display($data);
96 - }
97 -
98 - public function campaigns(): void
99 - {
100 - acym_setVar('layout', self::TASK_TYPE_CAMPAIGN);
101 -
102 - $data = [
103 - 'campaign_type' => 'campaigns',
104 - 'element_to_display' => lcfirst(acym_translation('ACYM_CAMPAIGNS')),
105 - ];
106 - $this->prepareAllCampaignsListing($data);
107 - $this->prepareToolbar($data);
108 - $this->prepareListingClasses($data);
109 -
110 - $data['menuClass'] = $this->menuClass;
111 -
112 - parent::display($data);
113 - }
114 -
115 - public function prepareToolbar(array &$data): void
116 - {
117 - $toolbarHelper = new ToolbarHelper();
118 - $toolbarHelper->addSearchBar($data['search'], 'campaigns_search');
119 - $toolbarHelper->addButton(acym_translation('ACYM_CREATE'), ['data-task' => 'newEmail'], 'add', true);
120 - if (acym_isAdmin() && (empty($data['campaign_type']) || $data['campaign_type'] !== MailClass::TYPE_FOLLOWUP)) {
121 - $toolbarHelper->addFilterByTag($data, 'campaigns_tag', 'acym__campaigns__filter__tags acym__select');
122 - }
123 -
124 - $data['toolbar'] = $toolbarHelper;
125 - }
126 -
127 - private function getAllParamsRequest(array &$data): void
128 - {
129 - $tagClass = new TagClass();
130 - $data['search'] = $this->getVarFiltersListing('string', 'campaigns_search', '');
131 - $data['tag'] = $this->getVarFiltersListing('string', 'campaigns_tag', '');
132 - $data['allTags'] = $tagClass->getAllTagsByType(TagClass::TYPE_MAIL);
133 - $data['pagination'] = new PaginationHelper();
134 - $data['status'] = '';
135 - if (isset($data['campaign_type'])) {
136 - $data['status'] = $this->getVarFiltersListing('string', $data['campaign_type'].'_status', '');
137 - $data['ordering'] = $this->getVarFiltersListing('string', $data['campaign_type'].'_ordering', 'id');
138 - $data['orderingSortOrder'] = $this->getVarFiltersListing('string', $data['campaign_type'].'_ordering_sort_order', 'desc');
139 - } elseif (isset($data['email_type'])) {
140 - $data['ordering'] = $this->getVarFiltersListing('string', $data['email_type'].'_ordering', 'id');
141 - $data['orderingSortOrder'] = $this->getVarFiltersListing('string', $data['email_type'].'_ordering_sort_order', 'desc');
142 - }
143 -
144 - if (!empty($data['tag'])) {
145 - $data['status_toolbar'] = [
146 - 'campaigns_tag' => $data['tag'],
147 - ];
148 - }
149 - }
150 -
151 - private function prepareAllCampaignsListing(array &$data): void
152 - {
153 - $this->getAllParamsRequest($data);
154 - $this->prepareEmailsListing($data, $data['campaign_type']);
155 - if ($data['campaign_type'] === self::TASK_TYPE_CAMPAIGN_AUTO) {
156 - $this->getAutoCampaignsFrequency($data);
157 - $this->getIsPendingGenerated($data);
158 - }
159 - }
160 -
161 - public function prepareEmailsListing(array &$data, string $campaignType = '', string $class = ''): void
162 - {
163 - $campaignsPerPage = $data['pagination']->getListLimit();
164 - $page = $this->getVarFiltersListing('int', 'campaigns_pagination_page', 1);
165 - $status = $data['status'];
166 -
167 - $matchingCampaigns = $this->getMatchingElementsFromData(
168 - [
169 - 'element_tab' => $campaignType,
170 - 'ordering' => $data['ordering'],
171 - 'search' => $data['search'],
172 - 'elementsPerPage' => $campaignsPerPage,
173 - 'offset' => ($page - 1) * $campaignsPerPage,
174 - 'tag' => $data['tag'],
175 - 'ordering_sort_order' => $data['orderingSortOrder'],
176 - 'status' => $data['status'],
177 - 'creator_id' => acym_isAdmin() ? 0 : acym_currentUserId(),
178 - 'campaign_type' => $data['campaign_type'] ?? '',
179 - 'advanced_total' => empty($class)
180 - ],
181 - $status,
182 - $page,
183 - empty($class) ? '' : $class
184 - );
185 -
186 - if (empty($class)) {
187 - foreach ($matchingCampaigns['elements'] as $key => $campaign) {
188 - $matchingCampaigns['elements'][$key]->scheduled = CampaignClass::SENDING_TYPE_SCHEDULED === $campaign->sending_type;
189 - }
190 -
191 - $data['allStatusFilter'] = $matchingCampaigns['total'];
192 - $totalElement = empty($status) ? $data['allStatusFilter']->all : $data['allStatusFilter']->$status;
193 - $data['statusAuto'] = CampaignClass::SENDING_TYPE_AUTO;
194 - } else {
195 - $totalElement = $matchingCampaigns['total']->total;
196 - }
197 -
198 - $data['pagination']->setStatus((int)$totalElement, $page, $campaignsPerPage);
199 - $data['allCampaigns'] = $matchingCampaigns['elements'];
200 - }
201 -
202 - public function mailbox_action(): void
203 - {
204 - acym_setVar('layout', self::TASK_TYPE_MAILBOX_ACTION);
205 -
206 - $data = [
207 - 'campaign_type' => 'campaigns',
208 - 'element_to_display' => lcfirst(acym_translation('ACYM_MAILBOX_ACTION_CAMPAIGN')),
209 - ];
210 - $this->prepareAllCampaignsListing($data);
211 - $this->prepareToolbar($data);
212 - $this->prepareListingClasses($data);
213 -
214 - $data['menuClass'] = $this->menuClass;
215 -
216 - parent::display($data);
217 - }
218 -}