PluginProbe
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress / 10.1.4
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress v10.1.4
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
acymailing / back / Controllers / StatsController.php

StatsController.php in AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress 10.1.4, at back/Controllers/StatsController.php

173 lines 5.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace AcyMailing\Controllers;
4
5 use AcyMailing\Classes\CampaignClass;
6 use AcyMailing\Classes\MailClass;
7 use AcyMailing\Classes\MailStatClass;
8 use AcyMailing\Helpers\WorkflowHelper;
9 use AcyMailing\Core\AcymController;
10 use AcyMailing\Controllers\Stats\GlobalStats;
11 use AcyMailing\Controllers\Stats\Detailed;
12 use AcyMailing\Controllers\Stats\ClickMap;
13 use AcyMailing\Controllers\Stats\LinksDetails;
14 use AcyMailing\Controllers\Stats\UserLinksDetails;
15 use AcyMailing\Controllers\Stats\Lists;
16
17 class StatsController extends AcymController
18 {
19 use GlobalStats;
20 use Detailed;
21 use ClickMap;
22 use LinksDetails;
23 use UserLinksDetails;
24 use Lists;
25
26 private array $selectedMailIds = [];
27 private array $multiLanguageMailAdded = [];
28 private array $generatedMailAdded = [];
29
30 public function __construct()
31 {
32 parent::__construct();
33
34 $this->defaulttask = 'globalStats';
35 $this->breadcrumb[acym_translation('ACYM_STATISTICS')] = acym_completeLink('stats');
36 $this->loadScripts = [
37 'all' => ['datepicker', 'thumbnail'],
38 ];
39 }
40
41 public function call(string $task): void
42 {
43 $task = $this->storeAndGetTask($task);
44 parent::call($task);
45 }
46
47 private function storeAndGetTask(string $task): string
48 {
49 acym_session();
50
51 $tasksToStore = [
52 'globalStats',
53 'detailedStats',
54 'clickMap',
55 'linksDetails',
56 'userClickDetails',
57 'statsByList',
58 ];
59
60 if ($this->taskCalled === 'listing' && empty($_SESSION['stats_task'])) {
61 return 'globalStats';
62 }
63
64 if ((empty($this->taskCalled) || $this->taskCalled === 'listing') && !empty($_SESSION['stats_task']) && in_array($_SESSION['stats_task'], $tasksToStore)) {
65 return $_SESSION['stats_task'];
66 }
67
68 if (!empty($this->taskCalled) && !in_array($this->taskCalled, $tasksToStore) && method_exists($this, $this->taskCalled)) {
69 return $this->taskCalled;
70 } elseif (!empty($this->taskCalled) && $this->taskCalled != 'listing' && in_array($this->taskCalled, $tasksToStore)) {
71 $_SESSION['stats_task'] = $this->taskCalled;
72
73 return $task;
74 } elseif (!empty($_SESSION['stats_task']) && method_exists($this, $_SESSION['stats_task'])) {
75 return $_SESSION['stats_task'];
76 } else {
77 return $this->defaulttask;
78 }
79 }
80
81 public function searchSentMail(): void
82 {
83 $idsSelected = acym_getVar('string', 'id', '');
84 if (!empty($idsSelected)) {
85 $idsSelected = explode(',', $idsSelected);
86 $mailClass = new MailClass();
87 $mails = $mailClass->getByIds($idsSelected);
88 $data = [];
89 if (!empty($mails)) {
90 $mails = $mailClass->decode($mails);
91 foreach ($mails as $mail) {
92 $data[] = [
93 'value' => $mail->id,
94 'text' => $mail->name,
95 ];
96 }
97 }
98
99 echo json_encode($data);
100 exit;
101 }
102
103 $return = [];
104 $search = acym_getVar('string', 'search', '');
105
106 $mailStatClass = new MailStatClass();
107 $mails = $mailStatClass->getAllMailsForStats($search);
108
109 foreach ($mails as $oneMail) {
110 $return[] = [$oneMail->id, $oneMail->name];
111 }
112
113 echo json_encode($return);
114 exit;
115 }
116
117 public function prepareDefaultPageInfo(array &$data, bool $needMailId = false): bool
118 {
119 $data['workflowHelper'] = new WorkflowHelper();
120
121 $overrideFilterMailIds = false;
122
123 if (acym_getVar('string', 'task', '') == 'listing' && empty(acym_getVar('array', 'mail_ids', []))) $overrideFilterMailIds = true;
124
125 $data['selectedMailid'] = $this->getVarFiltersListing('array', 'mail_ids', [], $overrideFilterMailIds);
126
127 if ($needMailId && empty($data['selectedMailid'])) {
128 $this->globalStats();
129
130 return false;
131 }
132
133 $mailStatClass = new MailStatClass();
134 $data['sentMails'] = $mailStatClass->getAllMailsForStats();
135 $data['show_date_filters'] = true;
136 $data['page_title'] = false;
137
138 if (count($data['selectedMailid']) == 1) {
139 $overrideFilterMailIdVersion = !empty(acym_getVar('array', 'mail_ids', []));
140
141 $versionMailSelected = $this->getVarFiltersListing('int', 'mail_id_version', 0, $overrideFilterMailIdVersion);
142 if (!empty($versionMailSelected)) $data['selectedMailid'] = [$versionMailSelected];
143 }
144
145 $mailClass = new MailClass();
146 if (count($data['selectedMailid']) == 1) {
147 $data['mailInformation'] = $mailClass->getOneById($data['selectedMailid'][0]);
148 $campaignClass = new CampaignClass();
149 $data['isAbTest'] = $campaignClass->isAbTestMail($data['selectedMailid'][0]);
150 }
151
152 if (!empty($data['selectedMailid'])) {
153 $this->generatedMailAdded = $mailClass->getAutomaticMailIds($data['selectedMailid']);
154 $data['selectedMailid'] = array_merge($data['selectedMailid'], $this->generatedMailAdded);
155 }
156 if (count($data['selectedMailid']) > 1) {
157 $this->multiLanguageMailAdded = $mailClass->getMultilingualMailIds($data['selectedMailid']);
158 $data['selectedMailid'] = array_merge($data['selectedMailid'], $this->multiLanguageMailAdded);
159 $data['no_click_map'] = true;
160 }
161
162 if (empty($data['selectedMailid'])) {
163 $this->selectedMailIds = [];
164 } else {
165 $this->selectedMailIds = $data['selectedMailid'];
166 }
167
168 acym_arrayToInteger($this->selectedMailIds);
169
170 return true;
171 }
172 }
173