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/Update/DefaultData.php +0 -512 10.10.2 → 11.1.1 View file →
@@ -1,512 +1,0 @@
1 -<?php
2 -
3 -namespace AcyMailing\Helpers\Update;
4 -
5 -use AcyMailing\Classes\ActionClass;
6 -use AcyMailing\Classes\AutomationClass;
7 -use AcyMailing\Classes\ConditionClass;
8 -use AcyMailing\Classes\FieldClass;
9 -use AcyMailing\Classes\ListClass;
10 -use AcyMailing\Classes\MailClass;
11 -use AcyMailing\Classes\OverrideClass;
12 -use AcyMailing\Classes\PluginClass;
13 -use AcyMailing\Classes\RuleClass;
14 -use AcyMailing\Classes\StepClass;
15 -use AcyMailing\Classes\UserClass;
16 -
17 -trait DefaultData
18 -{
19 - public function installBounceRules(): void
20 - {
21 - $ruleClass = new RuleClass();
22 - if ($ruleClass->getOrderingNumber() > 0) {
23 - return;
24 - }
25 - $replyTo = $this->config->get('replyto_email');
26 - $bounce = $this->config->get('bounce_email');
27 - $from = $this->config->get('from_email');
28 -
29 - $forwardEmail = $replyTo != $bounce ? $replyTo : $from;
30 - if (empty($forwardEmail)) {
31 - $forwardEmail = acym_currentUserEmail();
32 - }
33 -
34 - $forwardEmail = str_replace('"', '', $forwardEmail);
35 -
36 - $query = "INSERT INTO `#__acym_rule` (`id`, `name`, `description`, `ordering`, `regex`, `executed_on`, `action_message`, `action_user`, `active`, `increment_stats`, `execute_action_after`) VALUES ";
37 - $query .= "(1, 'ACYM_LIST_UNSUBSCRIBE_HANDLING', 'ACYM_LIST_UNSUBSCRIBE_HANDLING_DESC', 1, 'Please unsubscribe user ID \\\\d+', '[\"body\"]', '[\"delete_message\"]', '[\"unsubscribe_user\"]', 1, 0, 0),";
38 - $query .= "(2, 'ACYM_SUPPRESSION_LIST', 'ACYM_SUPPRESSION_LIST_DESC', 2, 'suppression list', '[\"body\"]', '[\"delete_message\"]', '[\"unsubscribe_user\",\"block_user\",\"empty_queue_user\"]', 1, 1, 0),";
39 - $query .= "(3, 'ACYM_ACTION_REQUIRED', 'ACYM_ACTION_REQUIRED_DESC', 3, 'action *requ|verif', '[\"subject\"]', '{\"0\":\"delete_message\",\"1\":\"forward_message\",\"forward_to\":\"".$forwardEmail."\"}', '[]', 1, 0, 0),";
40 - $query .= "(4, 'ACYM_ACKNOWLEDGMENT_RECEIPT_SUBJECT', 'ACYM_ACKNOWLEDGMENT_RECEIPT_SUBJECT_DESC', 4, '(out|away) *(of|from)|vacation|vacanze|vacaciones|holiday|absen|congés|recept|acknowledg|thank you for|Auto *Response|Incident|Automati|Ticket|Resposta *automática', '[\"subject\"]', '[\"delete_message\"]', '[]', 1, 0, 0),";
41 - $query .= "(5, 'ACYM_FEEDBACK_LOOP', 'ACYM_FEEDBACK_LOOP_DESC', 5, 'feedback|[email protected]|complaints@.{0,15}email-abuse.amazonses.com|complaint about message', '[\"senderInfo\",\"subject\"]', '[\"save_message\",\"delete_message\"]', '[\"unsubscribe_user\",\"block_user\",\"empty_queue_user\"]', 1, 0, 0),";
42 - $query .= "(6, 'ACYM_FEEDBACK_LOOP_BODY', 'ACYM_FEEDBACK_LOOP_BODY_DESC', 6, 'Feedback-Type.{1,5}abuse', '[\"body\"]', '[\"save_message\",\"delete_message\"]', '[\"unsubscribe_user\"]', 1, 1, 0),";
43 - $query .= "(7, 'ACYM_MAILBOX_FULL', 'ACYM_MAILBOX_FULL_DESC', 7, '((mailbox|mailfolder|storage|quota|space|inbox) *(is)? *(over)? *(exceeded|size|storage|allocation|full|quota|maxi))|status(-code)? *(:|=)? *5.2.2|quota-issue|not *enough.{1,20}space|((over|exceeded|full|exhausted) *(allowed)? *(mail|storage|quota))|Space shortage', '[\"subject\",\"body\"]', '[\"save_message\",\"delete_message\"]', '[\"block_user\"]', 1, 1, 0),";
44 - $query .= "(8, 'ACYM_BLOCKED_GOOGLE_GROUPS', 'ACYM_BLOCKED_GOOGLE_GROUPS_DESC', 8, 'message *rejected *by *Google *Groups', '[\"body\"]', '[\"delete_message\"]', '[\"block_user\"]', 1, 1, 3),";
45 - $query .= "(9, 'ACYM_REJECTED', 'ACYM_REJECTED_DESC', 9, 'rejected *your *message|email *provider *rejected *it', '[\"body\"]', '[\"delete_message\"]', '[\"block_user\"]', 1, 1, 3),";
46 - $query .= "(10, 'ACYM_MAILBOX_DOESNT_EXIST_1', 'ACYM_MAILBOX_DOESNT_EXIST_1_DESC', 10, '(Invalid|no such|unknown|bad|des?activated|inactive|unrouteable) *(mail|destination|recipient|user|address|person)|bad-mailbox|inactive-mailbox|not listed in.{1,20}directory|RecipNotFound|(user|mailbox|address|recipients?|host|account|domain) *(is|has been)? *(error|disabled|failed|unknown|unavailable|not *(found|available)|.{1,30}inactiv)|no *mailbox *here|user does.?n.t have.{0,30}account|no *longer *(active|working|in *use)|mail( *foi)? *desativado|recipient \'[^\']+\' not known', '[\"subject\",\"body\"]', '[\"save_message\",\"delete_message\"]', '[\"block_user\"]', 1, 1, 0),";
47 - $query .= "(11, 'ACYM_MESSAGE_BLOCKED_RECIPIENTS', 'ACYM_MESSAGE_BLOCKED_RECIPIENTS_DESC', 11, 'blocked *by|block *list|look(ed)? *like *spam|spam-related|spam *detected| CXBL | CDRBL | IPBL | URLBL |(unacceptable|banned|offensive|filtered|blocked|unsolicited) *(content|message|e?-?mail)|service refused|(status(-code)?|554) *(:|=)? *5.7.1|administratively *denied|blacklisted *IP|policy *reasons|rejected.{1,10}spam|junkmail *rejected|throttling *constraints|exceeded.{1,10}max.{1,40}hour|comply with required standards|421 RP-00|550 SC-00|550 DY-00|550 OU-00|client *[0-9.]* *blocked *using', '[\"body\"]', '{\"0\":\"delete_message\",\"1\":\"forward_message\",\"forward_to\":\"".$forwardEmail."\"}', '[\"block_user\"]', 1, 1, 3),";
48 - $query .= "(12, 'ACYM_MAILBOX_DOESNT_EXIST_2', 'ACYM_MAILBOX_DOESNT_EXIST_2_DESC', 12, 'status(-? ?code)? *(:|=)? *(550)? *5.(1.[1-6]|0.0|4.[0123467])|recipient *(address *)?rejected|does *not *like *recipient|recipient *unknown *to *address|email *account *that *you *tried *to *reach *is *disabled|no *mail-enabled *subscriptions', '[\"subject\",\"body\"]', '[\"save_message\",\"delete_message\"]', '[\"block_user\"]', 1, 1, 0),";
49 - $query .= "(13, 'ACYM_DOMAIN_NOT_EXIST', 'ACYM_DOMAIN_NOT_EXIST_DESC', 13, 'No.{1,10}MX *(record|host)|host *does *not *receive *any *mail|bad-domain|connection.{1,10}mail.{1,20}fail|domain.{1,10}not *exist|fail.{1,10}establish *connection|Unable *to *lookup *DNS *for|Unable *to *connect *to *remote *host', '[\"subject\",\"body\"]', '[\"save_message\",\"delete_message\"]', '[\"block_user\"]', 1, 1, 0),";
50 - $query .= "(14, 'ACYM_TEMPORARY_FAILURES', 'ACYM_TEMPORARY_FAILURES_DESC', 14, 'has.*been.*delayed|delayed *mail|message *delayed|message-expired|temporar(il)?y *(failure|unavailable|disable|offline|unable)|deferred|delayed *([0-9]*) *(hour|minut)|possible *mail *loop|too *many *hops|delivery *time *expired|Action.php: *delayed|status(-code)? *(:|=)? *4.4.6|will continue to be attempted|unable to deliver in.*Status: 4.4.7|Connection *closed *unexpectedly', '[\"subject\",\"body\"]', '[\"save_message\",\"delete_message\"]', '[\"block_user\"]', 1, 1, 3),";
51 - $query .= "(15, 'ACYM_FAILED_PERM', 'ACYM_FAILED_PERM_DESC', 15, 'failed *permanently|permanent.{1,20}(failure|error)|not *accepting *(any)? *mail|does *not *exist|no *valid *route|delivery *failure', '[\"subject\",\"body\"]', '[\"save_message\",\"delete_message\"]', '[\"block_user\"]', 1, 1, 0),";
52 - $query .= "(16, 'ACYM_ACKNOWLEDGMENT_RECEIPT_BODY', 'ACYM_ACKNOWLEDGMENT_RECEIPT_BODY_DESC', 16, 'vacanc|holiday|vacation|absen|urlaub|ferie|feriado|vacanz|vacaciones|(out *of|not *in|outside)( *the)? *office|automatisch *(generierte)? *Antwort|confirm *we(\\'ve| *have) *received|den *Ferien|automática|RISPOSTA AUTOMATICA|vakantie|recepcionado *(su *)?requerimiento|Kiitos viestistäsi|nicht im Büro|nicht am Arbeitsplatz|automatic *reply|auto(-|mated *|matic *)reply|Email *has *been *recived|ricevuto *il *Suo *messaggio|ticket|poza *biurem|Automatic *respon|Case *Number|Αυτόματη *απάντηση', '[\"body\"]', '[\"delete_message\"]', '[]', 1, 0, 0),";
53 - $query .= "(17, 'ACYM_FINAL_RULE', 'ACYM_FINAL_RULE_DESC', 17, '.', '[\"senderInfo\",\"subject\"]', '{\"0\":\"delete_message\",\"1\":\"forward_message\",\"forward_to\":\"".$forwardEmail."\"}', '[]', 1, 0, 0);";
54 -
55 - acym_query($query);
56 -
57 - $this->config->saveConfig(['bounceVersion' => self::BOUNCE_VERSION]);
58 - }
59 -
60 - public function installFields(): void
61 - {
62 - $query = "INSERT IGNORE INTO #__acym_field (`id`, `name`, `type`, `value`, `active`, `default_value`, `required`, `ordering`, `option`, `core`, `backend_edition`, `backend_listing`, `frontend_edition`, `frontend_listing`, `namekey`) VALUES
63 - (1, 'ACYM_NAME', 'text', NULL, 1, NULL, 0, 1, '{\"error_message\":\"\",\"error_message_invalid\":\"\",\"size\":\"\",\"rows\":\"\",\"columns\":\"\",\"format\":\"\",\"custom_text\":\"\",\"css_class\":\"\",\"authorized_content\":{\"0\":\"all\",\"regex\":\"\"}}', 1, 1, 1, 1, 1, 'acym_name'),
64 - (2, 'ACYM_EMAIL', 'text', NULL, 1, NULL, 1, 2, '{\"error_message\":\"\",\"error_message_invalid\":\"\",\"size\":\"\",\"rows\":\"\",\"columns\":\"\",\"format\":\"\",\"custom_text\":\"\",\"css_class\":\"\",\"authorized_content\":{\"0\":\"all\",\"regex\":\"\"}}', 1, 1, 1, 1, 1, 'acym_email');";
65 - acym_query($query);
66 -
67 - $fieldClass = new FieldClass();
68 - $fieldClass->insertLanguageField();
69 - }
70 -
71 - public function installTemplates(): void
72 - {
73 - $mailClass = new MailClass();
74 - $installedTemplates = 0;
75 -
76 - $templates = acym_getFolders(ACYM_BACK.'templates'.DS, '.', false, true);
77 - foreach ($templates as $oneTemplateFolderPath) {
78 - $templateName = substr($oneTemplateFolderPath, strrpos($oneTemplateFolderPath, DS) + 1);
79 - $templateName = str_replace('_', ' ', $templateName);
80 -
81 - $oneMail = $mailClass->getOneByName($templateName, false, MailClass::TYPE_TEMPLATE);
82 - if (!empty($oneMail)) {
83 - continue;
84 - }
85 -
86 - if ($mailClass->installExtractedTemplate($oneTemplateFolderPath, false)) {
87 - $installedTemplates++;
88 - }
89 - }
90 -
91 - if ($installedTemplates === 0) {
92 - acym_enqueueMessage(acym_translation('ACYM_DEFAULT_TEMPLATES_ALREADY_INSTALL'), 'info');
93 - }
94 - }
95 -
96 - public function installDefaultAutomations(): void
97 - {
98 - $this->newAutomationAdmin('ACYM_ADMIN_USER_CREATE');
99 - $this->newAutomationAdmin('ACYM_ADMIN_USER_MODIFICATION');
100 - }
101 -
102 - public function installList(): void
103 - {
104 - $listClass = new ListClass();
105 - $listClass->addDefaultList();
106 - }
107 -
108 - public function installNotifications(): bool
109 - {
110 - $searchSettings = [
111 - 'offset' => 0,
112 - 'mailsPerPage' => 9000,
113 - 'key' => 'name',
114 - ];
115 -
116 - $mailClass = new MailClass();
117 - $notifications = $mailClass->getMailsByType(MailClass::TYPE_NOTIFICATION, $searchSettings);
118 - $notifications = $notifications['mails'];
119 - $user = $this->getCurrentUser();
120 - if (empty($user)) {
121 - return false;
122 - }
123 -
124 - $addNotif = [];
125 -
126 - if (empty($notifications['acy_report'])) {
127 - $addNotif[] = [
128 - 'name' => 'acy_report',
129 - 'subject' => 'AcyMailing Cron Report {mainreport}',
130 - 'content' => '<p>{report}</p><p>{detailreport}</p>',
131 - ];
132 - }
133 -
134 - if (empty($notifications['acy_confirm'])) {
135 - $addNotif[] = [
136 - 'name' => 'acy_confirm',
137 - 'subject' => '{subscriber:name|ucfirst}, {trans:ACYM_PLEASE_CONFIRM_SUBSCRIPTION}',
138 - 'content' => $this->getFormatedNotification(
139 - '<h1 style="font-size: 24px;">{trans:ACYM_HELLO} '.$this->getDTextDisplay('{subscriber:name|ucfirst}', 'Marc').',</h1>
140 - <p>{trans:ACYM_CONFIRM_MESSAGE}</p>
141 - <p>{trans:ACYM_CONFIRM_MESSAGE_ACTIVATE}</p>
142 - <p style="text-align: center;"><strong>{confirm}{trans:ACYM_CONFIRM_SUBSCRIPTION}{/confirm}</strong></p>'
143 - ),
144 - ];
145 - }
146 -
147 - if (empty($notifications['acy_notification_create'])) {
148 - $addNotif[] = [
149 - 'name' => 'acy_notification_create',
150 - 'subject' => acym_translation('ACYM_NOTIFICATION_CREATE_SUBJECT').': {user:email}',
151 - 'content' => $this->getFormatedNotification(
152 - '<h1 style="font-size: 24px;">'.acym_translation('ACYM_HELLO').' '.$this->getDTextDisplay('{subscriber:name|ucfirst}', 'Marc').',</h1>
153 - <p>'.acym_translation('ACYM_NOTIFICATION_CREATE_BODY').'</p>
154 - <p>'.acym_translation('ACYM_NAME').': '.$this->getDTextDisplay('{user:name}', 'Julia').'</p>
155 - <p>'.acym_translation('ACYM_EMAIL').': '.$this->getDTextDisplay('{user:email}', '[email protected]').'</p>
156 - <p>'.acym_translation('ACYM_SOURCE').': '.$this->getDTextDisplay('{user:source}', 'registration_form').'</p>
157 - <p>'.acym_translation('ACYM_SUBSCRIPTION').': '.$this->getDTextDisplay('{user:subscription}', 'Newsletters - 2020-11-02 14:38:24').'</p>'
158 - ),
159 - ];
160 - }
161 -
162 - if (empty($notifications['acy_notification_unsub'])) {
163 - $addNotif[] = [
164 - 'name' => 'acy_notification_unsub',
165 - 'subject' => acym_translation('ACYM_NOTIFICATION_UNSUB_SUBJECT').': {user:email}',
166 - 'content' => $this->getFormatedNotification(
167 - '<h1 style="font-size: 24px;">'.acym_translation('ACYM_HELLO').' '.$this->getDTextDisplay('{subscriber:name|ucfirst}', 'Marc').',</h1>
168 - <p>'.acym_translation('ACYM_NOTIFICATION_UNSUB_BODY').'</p>
169 - <p>'.acym_translation('ACYM_NAME').': '.$this->getDTextDisplay('{user:name}', 'Julia').'</p>
170 - <p>'.acym_translation('ACYM_EMAIL').': '.$this->getDTextDisplay('{user:email}', '[email protected]').'</p>
171 - <p>'.acym_translation('ACYM_LISTS').': '.$this->getDTextDisplay('{lists}', 'Newsletters, Tips').'</p>'
172 - ),
173 - ];
174 - }
175 -
176 - if (empty($notifications['acy_notification_unsuball'])) {
177 - $addNotif[] = [
178 - 'name' => 'acy_notification_unsuball',
179 - 'subject' => acym_translation('ACYM_NOTIFICATION_UNSUBALL_SUBJECT').': {user:email}',
180 - 'content' => $this->getFormatedNotification(
181 - '<h1 style="font-size: 24px;">'.acym_translation('ACYM_HELLO').' '.$this->getDTextDisplay('{subscriber:name|ucfirst}', 'Marc').',</h1>
182 - <p>'.acym_translation('ACYM_NOTIFICATION_UNSUBALL_BODY').'</p>
183 - <p>'.acym_translation('ACYM_NAME').': '.$this->getDTextDisplay('{user:name}', 'Julia').'</p>
184 - <p>'.acym_translation('ACYM_EMAIL').': '.$this->getDTextDisplay('{user:email}', '[email protected]').'</p>'
185 - ),
186 - ];
187 - }
188 -
189 - if (empty($notifications['acy_notification_subform'])) {
190 - $addNotif[] = [
191 - 'name' => 'acy_notification_subform',
192 - 'subject' => acym_translation('ACYM_NOTIFICATION_SUBFORM_SUBJECT').': {user:email}',
193 - 'content' => $this->getFormatedNotification(
194 - '<h1 style="font-size: 24px;">'.acym_translation('ACYM_HELLO').' '.$this->getDTextDisplay('{subscriber:name|ucfirst}', 'Marc').',</h1>
195 - <p>'.acym_translation('ACYM_NOTIFICATION_SUBFORM_BODY').'</p>
196 - <p>'.acym_translation('ACYM_NAME').': '.$this->getDTextDisplay('{user:name}', 'Julia').'</p>
197 - <p>'.acym_translation('ACYM_EMAIL').': '.$this->getDTextDisplay('{user:email}', '[email protected]').'</p>
198 - <p>'.acym_translation('ACYM_SUBSCRIPTION').': '.$this->getDTextDisplay('{user:subscription}', 'Newsletters - 2025-11-02 14:38:24').'</p>'
199 - ),
200 - ];
201 - }
202 -
203 - if (empty($notifications['acy_notification_profile'])) {
204 - $addNotif[] = [
205 - 'name' => 'acy_notification_profile',
206 - 'subject' => acym_translation('ACYM_NOTIFICATION_PROFILE_SUBJECT').': {user:email}',
207 - 'content' => $this->getFormatedNotification(
208 - '<h1 style="font-size: 24px;">'.acym_translation('ACYM_HELLO').' '.$this->getDTextDisplay('{subscriber:name|ucfirst}', 'Marc').',</h1>
209 - <p>'.acym_translation('ACYM_NOTIFICATION_PROFILE_BODY').'</p>
210 - <p>'.acym_translation('ACYM_NAME').': '.$this->getDTextDisplay('{user:name}', 'Julia').'</p>
211 - <p>'.acym_translation('ACYM_EMAIL').': '.$this->getDTextDisplay('{user:email}', '[email protected]').'</p>
212 - <p>'.acym_translation('ACYM_SUBSCRIPTION').': '.$this->getDTextDisplay('{user:subscription}', 'Newsletters - 2025-11-02 14:38:24').'</p>'
213 - ),
214 - ];
215 - }
216 -
217 - if (empty($notifications['acy_notification_confirm'])) {
218 - $addNotif[] = [
219 - 'name' => 'acy_notification_confirm',
220 - 'subject' => acym_translation('ACYM_NOTIFICATION_CONFIRM_SUBJECT').': {user:email}',
221 - 'content' => $this->getFormatedNotification(
222 - '<h1 style="font-size: 24px;">'.acym_translation('ACYM_HELLO').' '.$this->getDTextDisplay('{subscriber:name|ucfirst}', 'Marc').',</h1>
223 - <p>'.acym_translation('ACYM_NOTIFICATION_CONFIRM_BODY').'</p>
224 - <p>'.acym_translation('ACYM_NAME').': '.$this->getDTextDisplay('{user:name}', 'Julia').'</p>
225 - <p>'.acym_translation('ACYM_EMAIL').': '.$this->getDTextDisplay('{user:email}', '[email protected]').'</p>
226 - <p>'.acym_translation('ACYM_IP').': '.$this->getDTextDisplay('{user:confirmation_ip}', '127.0.0.1').'</p>
227 - <p>'.acym_translation('ACYM_SUBSCRIPTION').': '.$this->getDTextDisplay('{user:subscription}', 'Newsletters - 2025-11-02 14:38:24').'</p>'
228 - ),
229 - ];
230 - }
231 -
232 - if (empty($notifications['acy_notification_cms'])) {
233 - $addNotif[] = [
234 - 'name' => 'acy_notification_cms',
235 - 'subject' => '{subject}',
236 - 'content' => '{body}',
237 - 'drag_editor' => 0,
238 - ];
239 - }
240 -
241 - if (empty($notifications['acy_notification_auto_campaign_admin'])) {
242 - $addNotif[] = [
243 - 'name' => 'acy_notification_auto_campaign_admin',
244 - 'subject' => acym_translation('ACYM_NOTIFICATION_AUTO_CAMPAIGN_SUBJECT'),
245 - 'content' => $this->getFormatedNotification(
246 - '<h1 style="font-size: 24px;">'.acym_translation('ACYM_HELLO').' '.$this->getDTextDisplay('{subscriber:name|ucfirst}', 'Marc').',</h1>
247 - <p>'.acym_translation('ACYM_NOTIFICATION_AUTO_CAMPAIGN_BODY').'</p>'
248 - ),
249 - ];
250 - }
251 -
252 - $firstEmail = $mailClass->getOneByName(acym_translation(self::FIRST_EMAIL_NAME_KEY));
253 - if (empty($firstEmail)) {
254 - $body = '<div id="acym__wysid__template" class="cell"><table class="body"><tbody><tr><td align="center" class="center acym__wysid__template__content" valign="top" style="background-color: rgb(239, 239, 239); padding: 30px 0px 120px;"><center><table align="center" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="acym__wysid__row ui-droppable ui-sortable" bgcolor="#ffffff" style="background-color: rgb(255, 255, 255); min-height: 0px; display: table-cell;"><table class="row acym__wysid__row__element" border="0" cellpadding="0" cellspacing="0" style="z-index: 100; background-color: rgb(238, 238, 238);" bgcolor="#eeeeee"><tbody bgcolor="" style="background-color: inherit;"><tr><th class="small-12 medium-12 large-12 columns" style="height: auto;"><table class="acym__wysid__column" style="min-height: 0px; display: table; height: auto;" border="0" cellpadding="0" cellspacing="0"><tbody class="ui-sortable" style="min-height: 0px; display: table-row-group; height: auto;"><tr class="acym__wysid__column__element ui-draggable" style="position: relative; top: inherit; left: inherit; right: inherit; bottom: inherit; height: auto;"><td class="large-12 acym__wysid__column__element__td" style="outline-width: 0px;"><div class="acym__wysid__tinymce--text mce-content-body" style="position: relative;" spellcheck="false" contenteditable="false" id="mce_41"><p style="font-family: Helvetica; font-size: 12px; font-weight: normal; font-style: normal; color: #000000; word-break: break-word; text-align: center; line-height: inherit;"><span style="font-size: 12px;">Having trouble seeing this email?&nbsp;<span class="mceNonEditable acym_dynamic" contenteditable="false" data-dynamic="{readonline}View it online{/readonline}"><a style="text-decoration: none; font-family: Helvetica; font-size: 12px; font-weight: normal; line-height: inherit; font-style: normal; color: #38c2f3;" href="view_it_online_link" target="_blank" rel="noopener"><span class="acym_online">View it online</span></a><em class="acym_remove_dynamic acymicon-close">‍‍</em></span>&nbsp;</span></p></div></td></tr></tbody></table></th></tr></tbody></table><table class="row acym__wysid__row__element" bgcolor="#ffffff" style="background-color: rgb(255, 255, 255); z-index: 100;" cellpadding="0" cellspacing="0" border="0"><tbody bgcolor="" style="background-color: inherit;"><tr><th class="small-12 medium-12 large-12 columns acym__wysid__row__element__th" valign="top"><table class="acym__wysid__column" border="0" cellpadding="0" cellspacing="0" style="min-height: 0px; display: table;"><tbody class="ui-sortable" style="min-height: 0px; display: table-row-group;"><tr class="acym__wysid__column__element ui-draggable" style="position: relative; top: inherit; left: inherit; right: inherit; bottom: inherit; height: auto;"><td class="large-12 acym__wysid__column__element__td" style="height: 21px; outline-width: 0px;"><span class="acy-editor__space" style="display:block; padding: 0;margin: 0; height: 100%"></span></td></tr><tr class="acym__wysid__column__element ui-draggable" style="position: relative; top: inherit; left: inherit; right: inherit; bottom: inherit; height: auto;"><td class="large-12 acym__wysid__column__element__td" style="outline-width: 0px;"><div class="acym__wysid__tinymce--image mce-content-body" style="position: relative;" spellcheck="false" contenteditable="false" id="mce_45"><p style="font-family: Helvetica; font-size: 12px; font-weight: normal; font-style: normal; color: #000000; word-break: break-word; line-height: inherit;"><img class="acym__wysid__media__inserted" style="max-width: 100%; height: 85px; box-sizing: border-box; padding: 0px 5px; display: block; margin-left: auto; margin-right: auto; width: 306px;" src="'.ACYM_LIVE.ACYM_UPLOAD_FOLDER.'logo_acymailing_step_email.png" alt="logo_acymailing_step_email.png" height="85" width="306"></p></div></td></tr><tr class="acym__wysid__column__element ui-draggable" style="position: relative; top: inherit; left: inherit; right: inherit; bottom: inherit; height: auto;"><td class="large-12 acym__wysid__column__element__td" style="height: 29px; outline-width: 0px;"><span class="acy-editor__space" style="display:block; padding: 0;margin: 0; height: 100%"></span></td></tr><tr class="acym__wysid__column__element acym__wysid__column__element__separator cursor-pointer ui-draggable" style="position: relative; top: inherit; left: inherit; right: inherit; bottom: inherit; height: auto;"><td class="large-12 acym__wysid__column__element__td" style="outline-width: 0px;"><hr style="border-bottom: 3px solid rgb(214, 214, 214); width: 24%; border-top: none; border-left: none; border-right: none; size: 3px;" class="acym__wysid__row__separator"></td></tr></tbody></table></th></tr></tbody></table><table class="row acym__wysid__row__element" bgcolor="#ffffff" style="background-color: rgb(255, 255, 255); z-index: 100;" cellpadding="0" cellspacing="0" border="0"><tbody bgcolor="" style="background-color: inherit;"><tr><th class="small-12 medium-12 large-12 columns acym__wysid__row__element__th" valign="top"><table class="acym__wysid__column" border="0" cellpadding="0" cellspacing="0" style="min-height: 0px; display: table;"><tbody class="ui-sortable" style="min-height: 0px; display: table-row-group;"><tr class="acym__wysid__column__element ui-draggable" style="position: relative; top: inherit; left: inherit; right: inherit; bottom: inherit; height: auto;"><td class="large-12 acym__wysid__column__element__td" style="outline-width: 0px;"><div class="acym__wysid__tinymce--text mce-content-body" style="position: relative;" spellcheck="false" contenteditable="false" id="mce_42"><h1 style="font-family: Helvetica; font-size: 20px; font-weight: normal; font-style: normal; color: #000000; line-height: inherit; text-align: left;">Dear&nbsp;<span class="mceNonEditable acym_dynamic" contenteditable="false" data-dynamic="{subscriber:name|part:first|ucfirst}">Admin<em class="acym_remove_dynamic acymicon-close">‍‍</em></span>,</h1></div></td></tr><tr class="acym__wysid__column__element ui-draggable" style="position: relative; top: inherit; left: inherit; right: inherit; bottom: inherit; height: auto;"><td class="large-12 acym__wysid__column__element__td" style="outline-width: 0px;"><div class="acym__wysid__tinymce--text mce-content-body" style="position: relative;" spellcheck="false" contenteditable="false" id="mce_43"><p style="word-break: break-word; font-family: Helvetica; font-size: 12px; font-weight: normal; font-style: normal; color: #000000; line-height: inherit; text-align: left;"><span style="color: #000000;"><span style="font-family: Helvetica;">Feel free to drag &amp; drop some content and&nbsp;</span><span style="font-family: Helvetica;">try the AcyMailing editor.</span></span></p><p style="word-break: break-word; font-family: Helvetica; font-size: 12px; font-weight: normal; font-style: normal; color: #000000; line-height: inherit; text-align: left;"><span style="color: #000000; font-family: Helvetica;">Once it is done, click on the "Apply" button.</span></p></div></td></tr></tbody></table></th></tr></tbody></table><table class="row acym__wysid__row__element" bgcolor="#ffffff" style="background-color: rgb(255, 255, 255); z-index: 100; padding: 0px;" cellpadding="0" cellspacing="0" border="0"><tbody bgcolor="" style="background-color: inherit;"><tr><th class="small-12 medium-12 large-12 columns acym__wysid__row__element__th" valign="top"><table class="acym__wysid__column" border="0" cellpadding="0" cellspacing="0" style="min-height: 0px; display: table;"><tbody class="ui-sortable" style="min-height: 0px; display: table-row-group;"><tr class="acym__wysid__column__element ui-draggable" style="position: relative; top: inherit; left: inherit; right: inherit; bottom: inherit; height: auto;"><td class="large-12 acym__wysid__column__element__td" style="outline-width: 0px;"><div class="acym__wysid__tinymce--image mce-content-body" style="position: relative;" spellcheck="false" contenteditable="false" id="mce_46"><p style="font-family: Helvetica; font-size: 12px; font-weight: normal; font-style: normal; color: #000000; word-break: break-word; line-height: inherit;"><img class="acym__wysid__media__inserted" style="max-width: 100%; height: auto; box-sizing: border-box; padding: 0px 5px; display: block; margin-left: auto; margin-right: auto; width: 580px;" src="'.ACYM_LIVE.ACYM_UPLOAD_FOLDER.'image_mailing_step_email.jpg" alt="image_mailing_step_email.jpg" height="400.68" width="580"></p></div></td></tr></tbody></table></th></tr></tbody></table><table class="row acym__wysid__row__element" bgcolor="#303e47" style="background-color: rgb(48, 62, 71); z-index: 100;" cellpadding="0" cellspacing="0" border="0"><tbody bgcolor="" style="background-color: inherit;"><tr><th class="small-12 medium-12 large-12 columns acym__wysid__row__element__th" valign="top"><table class="acym__wysid__column" border="0" cellpadding="0" cellspacing="0" style="min-height: 0px; display: table;"><tbody class="ui-sortable" style="min-height: 0px; display: table-row-group;"><tr class="acym__wysid__column__element ui-draggable" style="position: relative; top: inherit; left: inherit; right: inherit; bottom: inherit; height: auto;"><td class="large-12 acym__wysid__column__element__td" style="outline-width: 0px;"><div class="acym__wysid__tinymce--text mce-content-body" style="position: relative;" spellcheck="false" contenteditable="false" id="mce_44"><p style="font-family: Helvetica; font-size: 12px; font-weight: normal; font-style: normal; color: #000000; text-align: center; word-break: break-word; line-height: inherit;"><span style="color: #ffffff;">If you\'re not interested anymore, you can</span> <span class="mceNonEditable acym_dynamic" data-dynamic="{unsubscribe}unsubscribe{/unsubscribe}" contenteditable="false"><a style="text-decoration: none; font-family: Helvetica; font-size: 12px; font-weight: normal; line-height: inherit; font-style: normal; color: #38c2f3;" target="_blank" href="'.acym_frontendLink(
255 - 'frontusers&task=unsubscribe&id='.$user->id.'&key='.$user->key.'&'.acym_noTemplate()
256 - ).'" rel="noopener"><span class="acym_unsubscribe acym_link" style="font-family: Helvetica; font-size: 12px; font-weight: normal; line-height: inherit; font-style: normal; color: #ffffff;">unsubscribe</span></a><em class="acym_remove_dynamic acymicon-close">‍</em></span></p></div></td></tr></tbody></table></th></tr></tbody></table></td></tr></tbody></table></center></td></tr></tbody></table></div>';
257 -
258 - $addNotif[] = [
259 - 'name' => acym_translation(self::FIRST_EMAIL_NAME_KEY),
260 - 'subject' => acym_translation('ACYM_YOUR_FIRST_EMAIL'),
261 - 'content' => $body,
262 - 'settings' => '{"default":{"font-family":"Helvetica"},"p":{"font-family":"Helvetica","font-size":"12px","overridden":{"font-size":true,"line-height":true},"line-height":"inherit"},"a":{"font-family":"Helvetica","font-size":"12px","overridden":{"font-size":true,"line-height":true,"color":true},"line-height":"inherit","color":"#38c2f3"},"span.acym_link":{"font-family":"Helvetica","font-size":"12px","overridden":{"font-size":true,"line-height":true,"color":true},"line-height":"inherit","color":"#ffffff"},"h1":{"font-family":"Helvetica","font-size":"20px","overridden":{"font-size":true,"line-height":true},"line-height":"inherit"}}',
263 - 'type' => MailClass::TYPE_TEMPLATE,
264 - 'thumbnail' => 'thumbnail_first_email.png',
265 - ];
266 - $mailingImage = 'image_mailing_step_email.jpg';
267 - $logoAcymailing = 'logo_acymailing_step_email.png';
268 - $thumbnailFirstStep = 'thumbnail_first_email.png';
269 -
270 - $uploadFolder = ACYM_ROOT.ACYM_UPLOAD_FOLDER;
271 - $defaultImagesFolder = ACYM_ROOT.ACYM_MEDIA_FOLDER.'images'.DS.'templates'.DS.'first_email'.DS;
272 -
273 - acym_createFolder($uploadFolder);
274 - acym_createFolder(ACYM_UPLOAD_FOLDER_THUMBNAIL);
275 -
276 - if (!file_exists($uploadFolder.$mailingImage)) {
277 - copy(
278 - $defaultImagesFolder.$mailingImage,
279 - $uploadFolder.$mailingImage
280 - );
281 - }
282 - if (!file_exists($uploadFolder.$logoAcymailing)) {
283 - copy(
284 - $defaultImagesFolder.$logoAcymailing,
285 - $uploadFolder.$logoAcymailing
286 - );
287 - }
288 - if (!file_exists(ACYM_UPLOAD_FOLDER_THUMBNAIL.$thumbnailFirstStep)) {
289 - copy(
290 - $defaultImagesFolder.$thumbnailFirstStep,
291 - ACYM_UPLOAD_FOLDER_THUMBNAIL.$thumbnailFirstStep
292 - );
293 - }
294 - }
295 -
296 - if (!empty($addNotif)) {
297 - foreach ($addNotif as $oneNotif) {
298 - $notif = new \stdClass();
299 - $notif->type = $oneNotif['type'] ?? MailClass::TYPE_NOTIFICATION;
300 - $notif->settings = $oneNotif['settings'] ?? '';
301 - $notif->drag_editor = $oneNotif['drag_editor'] ?? 1;
302 - $notif->creator_id = acym_currentUserId();
303 - $notif->creation_date = date('Y-m-d H:i:s', time() - date('Z'));
304 - $notif->name = $oneNotif['name'];
305 - $notif->subject = $oneNotif['subject'];
306 - $notif->body = $oneNotif['content'];
307 - $notif->thumbnail = $oneNotif['thumbnail'] ?? '';
308 -
309 - $notif->id = $mailClass->save($notif);
310 - if (empty($notif->id)) {
311 - acym_enqueueMessage(acym_translationSprintf('ACYM_ERROR_INSTALLING_X_TEMPLATE', $notif->name), 'error');
312 -
313 - return false;
314 - }
315 -
316 - if (strpos($notif->body, 'view_it_online_link') !== false) {
317 - $viewItOnlineLink = 'archive&task=view&id='.$notif->id.'&userid='.$user->id.'-'.$user->key.'&'.acym_noTemplate();
318 - $notif->body = str_replace('view_it_online_link', acym_frontendLink($viewItOnlineLink), $notif->body);
319 - $mailClass->save($notif);
320 - }
321 - }
322 - }
323 -
324 - return true;
325 - }
326 -
327 - public function installAddons(): void
328 - {
329 - $pluginClass = new PluginClass();
330 - $installedAddons = array_keys($pluginClass->getAll('folder_name'));
331 - $coreAddons = acym_coreAddons();
332 -
333 - foreach ($coreAddons as $oneAddon) {
334 - if (in_array($oneAddon->folder_name, $installedAddons)) {
335 - continue;
336 - }
337 -
338 - $pluginClass->save($oneAddon);
339 - }
340 - }
341 -
342 - public function installOverrideEmails(): void
343 - {
344 - $overrideClass = new OverrideClass();
345 - $mailClass = new MailClass();
346 - $currentUserId = acym_currentUserId();
347 -
348 - $emailOverrides = acym_getEmailOverrides();
349 - $existingOverrides = $mailClass->getMailsByType(MailClass::TYPE_OVERRIDE, ['offset' => 0, 'mailsPerPage' => 9000, 'key' => 'name']);
350 - $existingOverrides = $existingOverrides['mails'];
351 -
352 - foreach ($emailOverrides as $oneOverride) {
353 - if (!empty($existingOverrides[$oneOverride['name']])) {
354 - continue;
355 - }
356 -
357 - $mail = new \stdClass();
358 - $mail->name = $oneOverride['name'];
359 - $mail->creation_date = date('Y-m-d H:i:s', time() - date('Z'));
360 - $mail->type = MailClass::TYPE_OVERRIDE;
361 - $mail->subject = $oneOverride['new_subject'];
362 - $mail->body = $this->getFormatedNotification($oneOverride['new_body']);
363 - $mail->drag_editor = 1;
364 - $mail->creator_id = $currentUserId;
365 - $mailId = $mailClass->save($mail);
366 -
367 - if (empty($mailId)) {
368 - continue;
369 - }
370 -
371 - $override = new \stdClass();
372 - $override->mail_id = $mailId;
373 - $override->description = $oneOverride['description'];
374 - $override->source = $oneOverride['source'];
375 - $override->active = 0;
376 - $override->base_subject = json_encode($oneOverride['base_subject']);
377 - $override->base_body = empty($oneOverride['base_body']) ? '' : json_encode($oneOverride['base_body']);
378 -
379 - $overrideClass->save($override);
380 - }
381 - }
382 -
383 - private function newAutomationAdmin(string $title): void
384 - {
385 - $automationClass = new AutomationClass();
386 - $stepClass = new StepClass();
387 - $conditionClass = new ConditionClass();
388 - $mailClass = new MailClass();
389 - $actionClass = new ActionClass();
390 -
391 - $adminCreate = new \stdClass();
392 - $adminCreate->desc = 'ACYM_ADMIN_USER_CREATE_DESC';
393 - $adminCreate->triggers = '{"user_creation":[""],"type_trigger":"user"}';
394 - $adminCreate->conditions = '{"type_condition":"user"}';
395 - $adminCreate->emailTitle = acym_translation('ACYM_SUBSCRIBER_CREATION');
396 - $adminCreate->emailSubject = acym_translation('ACYM_SUBSCRIBER_CREATION');
397 - $adminCreate->emailContent = '<h1 style="font-size: 24px;">'.acym_translation('ACYM_HELLO').' '.$this->getDTextDisplay('{subscriber:name|ucfirst}', 'Marc').',</h1>
398 - <p>'.acym_translation('ACYM_NEW_USER_ACYMAILING').':</p>
399 - <p>'.acym_translation('ACYM_NAME').': '.$this->getDTextDisplay('{subscriber:name|info:current}', 'Roger').'</p>
400 - <p>'.acym_translation('ACYM_EMAIL').': '.$this->getDTextDisplay('{subscriber:email|info:current}', '[email protected]').'</p>';
401 -
402 - $adminModif = new \stdClass();
403 - $adminModif->desc = 'ACYM_ADMIN_USER_MODIFICATION_DESC';
404 - $adminModif->triggers = '{"user_modification":[""],"type_trigger":"user"}';
405 - $adminModif->conditions = '{"type_condition":"user"}';
406 - $adminModif->emailTitle = acym_translation('ACYM_SUBSCRIBER_MODIFICATION');
407 - $adminModif->emailSubject = acym_translation('ACYM_SUBSCRIBER_MODIFICATION');
408 - $adminModif->emailContent = '<h1 style="font-size: 24px;">'.acym_translation('ACYM_HELLO').' '.$this->getDTextDisplay('{subscriber:name|ucfirst}', 'Marc').',</h1>
409 - <p>'.acym_translation('ACYM_USER_MODIFY_ACYMAILING').':</p>
410 - <p>'.acym_translation('ACYM_NAME').': '.$this->getDTextDisplay('{subscriber:name|info:current}', 'Roger').'</p>
411 - <p>'.acym_translation('ACYM_EMAIL').': '.$this->getDTextDisplay('{subscriber:email|info:current}', '[email protected]').'</p>';
412 -
413 - $info = [
414 - 'ACYM_ADMIN_USER_CREATE' => $adminCreate,
415 - 'ACYM_ADMIN_USER_MODIFICATION' => $adminModif,
416 - ];
417 -
418 - $newAutomation = new \stdClass();
419 - $newAutomation->name = acym_translation($title);
420 - $newAutomation->description = acym_translation($info[$title]->desc);
421 - $newAutomation->active = 0;
422 - $newAutomation->admin = 1;
423 - $newAutomation->id = $automationClass->save($newAutomation);
424 - if (empty($newAutomation->id)) {
425 - return;
426 - }
427 -
428 - $newStep = new \stdClass();
429 - $newStep->name = acym_translation($title);
430 - $newStep->triggers = $info[$title]->triggers;
431 - $newStep->automation_id = $newAutomation->id;
432 - $newStep->id = $stepClass->save($newStep);
433 - if (empty($newStep->id)) {
434 - return;
435 - }
436 -
437 - $newCondition = new \stdClass();
438 - $newCondition->step_id = $newStep->id;
439 - $newCondition->conditions = $info[$title]->conditions;
440 - $newCondition->id = $conditionClass->save($newCondition);
441 - if (empty($newCondition->id)) {
442 - return;
443 - }
444 -
445 - $mailAutomation = new \stdClass();
446 - $mailAutomation->type = MailClass::TYPE_AUTOMATION;
447 - $mailAutomation->drag_editor = 1;
448 - $mailAutomation->creator_id = acym_currentUserId();
449 - $mailAutomation->creation_date = date('Y-m-d H:i:s', time() - date('Z'));
450 - $mailAutomation->name = acym_translation($info[$title]->emailTitle);
451 - $mailAutomation->subject = acym_translation($info[$title]->emailSubject);
452 - $mailAutomation->body = $this->getFormatedNotification($info[$title]->emailContent);
453 -
454 - $mailAutomation->id = $mailClass->save($mailAutomation);
455 - if (empty($mailAutomation->id)) {
456 - return;
457 - }
458 -
459 - $newAction = new \stdClass();
460 - $newAction->condition_id = $newCondition->id;
461 - $newAction->actions = '[{"acy_add_queue":{"mail_id":"'.intval($mailAutomation->id).'","time":"[time]"}}]';
462 - $newAction->filters = '{"0":{"1":{"acy_field":{"field":"email","operator":"=","value":"'.acym_currentUserEmail().'"}}},"type_filter":"classic"}';
463 - $newAction->order = 1;
464 - $actionClass->save($newAction);
465 - }
466 -
467 - private function getDTextDisplay(string $dtext, string $preview): string
468 - {
469 - $display = '<span class="acym_dynamic mceNonEditable" contenteditable="false" data-dynamic="'.acym_escape($dtext).'" data-mce-selected="1">';
470 - $display .= $preview;
471 - $display .= '<em class="acym_remove_dynamic acymicon-close">&zwj;</em>';
472 - $display .= '</span>';
473 -
474 - return $display;
475 - }
476 -
477 - private function getFormatedNotification(string $content): string
478 - {
479 - $beginning = '<div id="acym__wysid__template" class="cell"><table class="body"><tbody><tr><td align="center" class="center acym__wysid__template__content" valign="top" style="background-color: rgb(239, 239, 239); padding: 40px 0 120px 0;"><center><table align="center" border="0" cellpadding="0" cellspacing="0"><tbody><tr><td class="acym__wysid__row ui-droppable ui-sortable" style="min-height: 0px; display: table-cell;"><table class="row acym__wysid__row__element" bgcolor="#dadada" border="0" cellpadding="0" cellspacing="0"><tbody style="background-color: rgb(218,218,218);" bgcolor="#ffffff"><tr><th class="small-12 medium-12 large-12 columns acym__wysid__row__element__th"><table class="acym__wysid__column" style="min-height: 0px; display: table;" border="0" cellpadding="0" cellspacing="0"><tbody class="ui-sortable" style="min-height: 0px; display: table-row-group;"><tr class="acym__wysid__column__element ui-draggable" style="position: relative; top: inherit; left: inherit; right: inherit; bottom: inherit; height: auto;"><td class="large-12 acym__wysid__column__element__td" style="outline: rgb(0,163,254) dashed 0px; outline-offset: -1px;"><span class="acy-editor__space acy-editor__space--focus" style="display: block; padding: 0px; margin: 0px; height: 10px;"></span></td></tr></tbody></table></th></tr></tbody></table><table class="row acym__wysid__row__element" bgcolor="#ffffff" border="0" cellpadding="0" cellspacing="0"><tbody style="background-color: transparent;" bgcolor="#ffffff"><tr><th class="small-12 medium-12 large-12 columns"><table class="acym__wysid__column" style="min-height: 0px; display: table;" border="0" cellpadding="0" cellspacing="0"><tbody class="ui-sortable" style="min-height: 0px; display: table-row-group;"><tr class="acym__wysid__column__element ui-draggable" style="position: relative; top: inherit; left: inherit; right: inherit; bottom: inherit; height: auto;"><td class="large-12 acym__wysid__column__element__td" style="outline: rgb(0, 163, 254) dashed 0px; outline-offset: -1px;"><div class="acym__wysid__tinymce--text mce-content-body" style="position: relative;" spellcheck="false">';
480 - $ending = '</div></td></tr></tbody></table></th></tr></tbody></table><table class="row acym__wysid__row__element" bgcolor="#dadada" style="position: relative; z-index: 100; top: 0; left: 0;" border="0" cellpadding="0" cellspacing="0"><tbody style="background-color: rgb(218, 218, 218);" bgcolor="#ffffff"><tr><th class="small-12 medium-12 large-12 columns acym__wysid__row__element__th"><table class="acym__wysid__column" style="min-height: 0px; display: table;" border="0" cellpadding="0" cellspacing="0"><tbody class="ui-sortable" style="min-height: 0px; display: table-row-group;"><tr class="acym__wysid__column__element ui-draggable" style="position: relative; top: inherit; left: inherit; right: inherit; bottom: inherit; height: auto;"><td class="large-12 acym__wysid__column__element__td" style="outline: rgb(0, 163, 254) dashed 0px; outline-offset: -1px;"><span class="acy-editor__space acy-editor__space--focus" style="display: block; padding: 0px; margin: 0px; height: 10px;"></span></td></tr></tbody></table></th></tr></tbody></table></td></tr></tbody></table></center></td></tr></tbody></table></div>';
481 -
482 - return $beginning.$content.$ending;
483 - }
484 -
485 - private function getCurrentUser(): ?object
486 - {
487 - $currentCMSId = acym_currentUserId();
488 - $userClass = new UserClass();
489 - $user = $userClass->getOneByCMSId($currentCMSId);
490 - if (!empty($user)) {
491 - return $user;
492 - }
493 -
494 - $currentCMSEmail = acym_currentUserEmail();
495 - $user = $userClass->getOneByEmail($currentCMSEmail);
496 - if (!empty($user)) {
497 - return $user;
498 - }
499 -
500 - $newUser = new \stdClass();
501 - $newUser->email = $currentCMSEmail;
502 - $newUser->confirmed = 1;
503 - $newUser->cms_id = $currentCMSId;
504 - $newUser->id = $userClass->save($newUser);
505 -
506 - if (empty($newUser->id)) {
507 - return null;
508 - }
509 -
510 - return $userClass->getOneById($newUser->id);
511 - }
512 -}