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/Helpers/UserHelper.php +0 -222 11.0.2 → 11.1.1 View file →
@@ -1,222 +1,0 @@
1 -<?php
2 -
3 -namespace AcyMailing\Helpers;
4 -
5 -use AcyMailing\Classes\FieldClass;
6 -use AcyMailing\Classes\MailClass;
7 -use AcyMailing\Classes\UrlClickClass;
8 -use AcyMailing\Classes\UserClass;
9 -use AcyMailing\Classes\UserStatClass;
10 -use AcyMailing\Core\AcymObject;
11 -
12 -class UserHelper extends AcymObject
13 -{
14 - public function getUserData(object $user): array
15 - {
16 - $userData = [];
17 - $this->prepareProfileData($user, $userData);
18 - $this->prepareSubscriptionData($user, $userData);
19 - $this->prepareStatisticsData($user, $userData);
20 - $this->prepareClickStatisticsData($user, $userData);
21 -
22 - return $userData;
23 - }
24 -
25 - private function prepareProfileData(object $user, array &$exportedData): void
26 - {
27 - $userClass = new UserClass();
28 - $userClass->getAllUserFields($user);
29 -
30 - $profileData = [];
31 -
32 - $fieldsClass = new FieldClass();
33 - $fields = $fieldsClass->getAll('namekey');
34 -
35 - $uploadFolder = acym_rootURI().trim(acym_cleanPath(html_entity_decode(acym_getFilesFolder(true))), DS.' ').DS;
36 - $coreFields = ['confirmation_date', 'confirmation_ip', 'language'];
37 -
38 - foreach ($user as $column => $value) {
39 - if (is_null($value) || strlen($value) === 0) {
40 - continue;
41 - }
42 -
43 - if ($column === 'confirmation_date') {
44 - if (empty($value)) {
45 - continue;
46 - }
47 - $value = acym_getDate($value, '%Y-%m-%d %H:%M:%S');
48 - }
49 -
50 - if (empty($fields[$column]) || $fields[$column]->core == 1) {
51 - if (in_array($column, $coreFields)) {
52 - $profileData[] = [
53 - 'name' => ucfirst(str_replace('_', ' ', $column)),
54 - 'value' => $value,
55 - ];
56 - }
57 - continue;
58 - }
59 -
60 - if ($fields[$column]->type === 'date') {
61 - $decodedValue = @json_decode($value, true);
62 - $valueTmp = is_array($decodedValue) ? $decodedValue : $value;
63 -
64 - $value = is_array($valueTmp) ? implode('/', $valueTmp) : $valueTmp;
65 - }
66 -
67 - if (in_array($fields[$column]->type, ['gravatar', 'file'])) {
68 - $userFilePath = $uploadFolder.'userfiles'.DS.$user->id.DS.$value;
69 - if (file_exists(ACYM_ROOT.$userFilePath)) {
70 - $value = $userFilePath;
71 - } else {
72 - $value = $uploadFolder.'userfiles'.DS.$value;
73 - }
74 - }
75 -
76 - $profileData[] = [
77 - 'name' => $fields[$column]->name,
78 - 'value' => $value,
79 - ];
80 - }
81 -
82 - $exportedData[] = [
83 - 'group_id' => 'acyprofile',
84 - 'group_label' => 'Newsletter profile',
85 - 'item_id' => 'user-'.$user->id,
86 - 'data' => $profileData,
87 - ];
88 - }
89 -
90 - private function prepareSubscriptionData(object $user, array &$exportedData): void
91 - {
92 - $userClass = new UserClass();
93 - $subscription = $userClass->getUserSubscriptionById($user->id);
94 -
95 - if (empty($subscription)) {
96 - return;
97 - }
98 -
99 - $subscriptionData = [];
100 -
101 - foreach ($subscription as $oneSubscription) {
102 - $listName = empty($oneSubscription->display_name) ? $oneSubscription->name : $oneSubscription->display_name;
103 -
104 - $value = acym_translation('ACYM_SUBSCRIPTION_DATE').' '.acym_getDate($oneSubscription->subscription_date, '%Y-%m-%d %H:%M:%S');
105 -
106 - if (!empty($oneSubscription->unsubscribe_date) && $oneSubscription->status == 0) {
107 - $value .= ' / '.acym_translation('ACYM_UNSUBSCRIPTION_DATE').' '.acym_getDate($oneSubscription->unsubscribe_date, '%Y-%m-%d %H:%M:%S');
108 - }
109 -
110 - $subscriptionData[] = [
111 - 'name' => $listName,
112 - 'value' => $value,
113 - ];
114 - }
115 -
116 - $exportedData[] = [
117 - 'group_id' => 'acysubscription',
118 - 'group_label' => acym_translation('ACYM_LISTS'),
119 - 'item_id' => 'subscription-'.$user->id,
120 - 'data' => $subscriptionData,
121 - ];
122 - }
123 -
124 - private function prepareStatisticsData(object $user, array &$exportedData): void
125 - {
126 - $mailClass = new MailClass();
127 - $userStatClass = new UserStatClass();
128 - $statistics = $userStatClass->getAllUserStatByUserId($user->id);
129 - if (empty($statistics)) {
130 - return;
131 - }
132 - $statistics = $mailClass->decode($statistics);
133 -
134 - foreach ($statistics as $oneStatistics) {
135 - if (empty($oneStatistics->sent)) {
136 - continue;
137 - }
138 -
139 - $statisticsData = [];
140 - $statisticsData[] = [
141 - 'name' => acym_translation('ACYM_EMAIL_SUBJECT'),
142 - 'value' => strlen($oneStatistics->subject) > 50 ? substr($oneStatistics->subject, 0, 50).'...' : $oneStatistics->subject,
143 - ];
144 -
145 - $statisticsData[] = [
146 - 'name' => acym_translation('ACYM_SEND_DATE'),
147 - 'value' => acym_getDate($oneStatistics->send_date, 'Y-m-d H:i:s'),
148 - ];
149 -
150 - $statisticsData[] = [
151 - 'name' => acym_translation('ACYM_OPENED'),
152 - 'value' => acym_translation(empty($oneStatistics->open) ? 'ACYM_NO' : 'ACYM_YES'),
153 - ];
154 -
155 - if (!empty($oneStatistics->open_date)) {
156 - $statisticsData[] = [
157 - 'name' => acym_translation('ACYM_OPEN_DATE'),
158 - 'value' => acym_getDate($oneStatistics->open_date, 'Y-m-d H:i:s'),
159 - ];
160 - }
161 -
162 - if (!empty($oneStatistics->device)) {
163 - $statisticsData[] = [
164 - 'name' => acym_translation('ACYM_DEVICE_COLUMN_STAT'),
165 - 'value' => $oneStatistics->device,
166 - ];
167 - }
168 -
169 - if (!empty($oneStatistics->opened_with)) {
170 - $statisticsData[] = [
171 - 'name' => acym_translation('ACYM_OPENED_WITH_COLUMN_STAT'),
172 - 'value' => $oneStatistics->opened_with,
173 - ];
174 - }
175 -
176 - $exportedData[] = [
177 - 'group_id' => 'acystatistics',
178 - 'group_label' => acym_translation('ACYM_STATISTICS'),
179 - 'item_id' => 'statistics-'.$user->id.'-'.$oneStatistics->mail_id,
180 - 'data' => $statisticsData,
181 - ];
182 - }
183 - }
184 -
185 - private function prepareClickStatisticsData(object $user, array &$exportedData): void
186 - {
187 - $urlClickClass = new UrlClickClass();
188 - $statistics = $urlClickClass->getClicksByUserId($user->id);
189 - if (empty($statistics)) {
190 - return;
191 - }
192 -
193 - foreach ($statistics as $oneStatistics) {
194 - if (empty($oneStatistics->click)) {
195 - continue;
196 - }
197 -
198 - $statisticsData = [];
199 - $statisticsData[] = [
200 - 'name' => acym_translation('ACYM_URL'),
201 - 'value' => strlen($oneStatistics->url) > 200 ? substr($oneStatistics->url, 0, 197).'...' : $oneStatistics->url,
202 - ];
203 -
204 - $statisticsData[] = [
205 - 'name' => acym_translation('ACYM_CLICK_DATE'),
206 - 'value' => acym_getDate($oneStatistics->date_click, 'Y-m-d H:i:s'),
207 - ];
208 -
209 - $statisticsData[] = [
210 - 'name' => acym_translation('ACYM_TOTAL_CLICKS'),
211 - 'value' => $oneStatistics->click,
212 - ];
213 -
214 - $exportedData[] = [
215 - 'group_id' => 'acyclickstatistics',
216 - 'group_label' => acym_translation('ACYM_USER_CLICK_DETAILS'),
217 - 'item_id' => 'clickstatistics-'.$user->id.'-'.$oneStatistics->url_id,
218 - 'data' => $statisticsData,
219 - ];
220 - }
221 - }
222 -}