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/Classes/OverrideClass.php +0 -206 10.2.2 → 11.1.1 View file →
@@ -1,206 +1,0 @@
1 -<?php
2 -
3 -namespace AcyMailing\Classes;
4 -
5 -use AcyMailing\Core\AcymClass;
6 -use AcyMailing\Helpers\PaginationHelper;
7 -
8 -class OverrideClass extends AcymClass
9 -{
10 - public function __construct()
11 - {
12 - parent::__construct();
13 -
14 - $this->table = 'mail_override';
15 - $this->pkey = 'id';
16 - }
17 -
18 - public function getMatchingElements(array $settings = []): array
19 - {
20 - $query = 'SELECT override.*, mail.name, mail.subject FROM #__acym_mail_override AS override JOIN #__acym_mail AS mail ON override.mail_id = mail.id';
21 - $queryCount = 'SELECT COUNT(override.mail_id) AS total, SUM(override.active) AS totalActive FROM #__acym_mail_override AS override INNER JOIN #__acym_mail AS mail ON override.mail_id = mail.id';
22 -
23 - $filters = [];
24 -
25 - if (!empty($settings['search'])) {
26 - $filters[] = 'mail.name LIKE '.acym_escapeDB('%'.$settings['search'].'%');
27 - }
28 -
29 - if (!empty($settings['source'])) {
30 - $filters[] = 'override.source LIKE '.acym_escapeDB('%'.$settings['source'].'%');
31 - }
32 -
33 - $filters[] = 'mail.parent_id IS NULL';
34 -
35 - if (!empty($filters)) {
36 - $query .= ' WHERE ('.implode(') AND (', $filters).')';
37 - $queryCount .= ' WHERE ('.implode(') AND (', $filters).')';
38 - }
39 -
40 - if (!empty($settings['status'])) {
41 - $query .= empty($filters) ? ' WHERE ' : ' AND ';
42 - $query .= 'active = '.($settings['status'] == 'active' ? '1' : '0');
43 - }
44 -
45 - if (!empty($settings['ordering']) && !empty($settings['ordering_sort_order'])) {
46 - $query .= ' ORDER BY override.'.acym_secureDBColumn($settings['ordering']).' '.acym_secureDBColumn(strtoupper($settings['ordering_sort_order']));
47 - $query .= ', override.mail_id ASC';
48 - }
49 -
50 - if (empty($settings['offset']) || $settings['offset'] < 0) {
51 - $settings['offset'] = 0;
52 - }
53 -
54 - if (empty($settings['elementsPerPage']) || $settings['elementsPerPage'] < 1) {
55 - $pagination = new PaginationHelper();
56 - $settings['elementsPerPage'] = $pagination->getListLimit();
57 - }
58 -
59 - $mailClass = new MailClass();
60 -
61 - return [
62 - 'elements' => $mailClass->decode(acym_loadObjectList($query, '', $settings['offset'], $settings['elementsPerPage'])),
63 - 'total' => acym_loadObject($queryCount),
64 - 'status' => [],
65 - ];
66 - }
67 -
68 - public function cleanEmailsOverride()
69 - {
70 - $overrideId = acym_loadResultArray('SELECT id FROM #__acym_mail_override');
71 - $this->delete($overrideId);
72 - }
73 -
74 - public function areOverrideMailsInstalled()
75 - {
76 - return (bool)acym_loadResult('SELECT COUNT(id) FROM #__acym_mail_override');
77 - }
78 -
79 - public function getAllSources()
80 - {
81 - return acym_loadResultArray('SELECT DISTINCT `source` FROM #__acym_mail_override');
82 - }
83 -
84 - public function getActiveOverrides($key = '')
85 - {
86 - $query = 'SELECT override.*, mail.name FROM #__acym_mail_override AS override JOIN #__acym_mail AS mail ON mail.id = override.mail_id WHERE `active` = 1';
87 -
88 - return acym_loadObjectList($query, $key);
89 - }
90 -
91 - public function getMailByBaseContent($subject, $body)
92 - {
93 - $translatepressIsActive = acym_isExtensionActive('translatepress-multilingual/index.php');
94 - $activeOverrides = $this->getActiveOverrides('name');
95 -
96 - $joomlaMailStyle = 'plaintext';
97 - if ('joomla' === ACYM_CMS) {
98 - acym_loadLanguageFile('com_contact');
99 - if (ACYM_J40) {
100 - $params = \Joomla\CMS\Component\ComponentHelper::getParams('com_mails');
101 - $joomlaMailStyle = $params->get('mail_style', 'plaintext');
102 - }
103 - }
104 -
105 - foreach ($activeOverrides as $oneOverride) {
106 - $parameters = [];
107 - $matches = true;
108 - foreach (['subject', 'body'] as $part) {
109 - $identifier = 'base_'.$part;
110 - if (empty($oneOverride->$identifier)) continue;
111 -
112 - $decodedValue = json_decode($oneOverride->$identifier, true);
113 - if (empty($decodedValue)) continue;
114 -
115 - $oneOverride->$identifier = '';
116 - foreach ($decodedValue as $partialTrad) {
117 - $oneOverride->$identifier .= acym_translation($partialTrad, false, true, '');
118 - if ($oneOverride->source === 'woocommerce') {
119 - $oneOverride->$identifier = acym_translation($oneOverride->$identifier, false, true, 'woocommerce');
120 - if ($translatepressIsActive) {
121 - $oneOverride->$identifier = preg_replace('/#!trpst#trp-gettext data-trpgettextoriginal=\d+#!trpen#/i', '', $oneOverride->$identifier);
122 - $oneOverride->$identifier = preg_replace('/#!trpst#\/trp-gettext#!trpen#/i', '', $oneOverride->$identifier);
123 - }
124 - }
125 - }
126 -
127 - $oneOverride->$identifier = preg_replace(
128 - [
129 - '/%([0-9].?\$)?s/',
130 - '/\\\{[A-Z_]+\\\}/i',
131 - '/###[A-Z_-]+###/i',
132 - '/\\\#\\\#\\\#[A-Z_-]+\\\#\\\#\\\#/i',
133 - ],
134 - '(.*)',
135 - preg_quote($oneOverride->$identifier, '/')
136 - );
137 -
138 - $oneOverride->$identifier = str_replace('&amp;', '&', $oneOverride->$identifier);
139 -
140 - if ('plaintext' !== $joomlaMailStyle) {
141 - $$part = str_replace('<br>', '', $$part);
142 - }
143 - $$part = str_replace("\r\n", "\n", $$part);
144 -
145 - $matches = preg_match('/'.trim($oneOverride->$identifier).'/', $$part, $params) === 1 && $matches;
146 -
147 - if (empty($parameters)) {
148 - $parameters = $params;
149 - } else {
150 - for ($i = 1 ; $i < count($params) ; $i++) {
151 - $parameters[] = trim($params[$i]);
152 - }
153 - }
154 - }
155 -
156 - if (!$matches) continue;
157 -
158 - $mailClass = new MailClass();
159 - $mail = $mailClass->getOneById($oneOverride->mail_id);
160 -
161 - if ($oneOverride->source == 'woocommerce' && $translatepressIsActive) {
162 - $subjectTranslated = $params[0];
163 - for ($i = 1 ; $i < count($params) ; $i++) {
164 - $pattern = '/'.$params[$i].'/i';
165 - $param = '{param'.$i.'}';
166 - $subjectTranslated = preg_replace($pattern, $param, $subjectTranslated);
167 - }
168 - $mail->subject = $subjectTranslated;
169 - }
170 -
171 - $mail->parameters = $parameters;
172 -
173 - if (empty($oneOverride->base_body)) $mail->body = $body;
174 -
175 - return $mail;
176 - }
177 -
178 - return false;
179 - }
180 -
181 - public function delete($elements)
182 - {
183 - if (empty($elements)) return 0;
184 - if (!is_array($elements)) $elements = [$elements];
185 -
186 - acym_arrayToInteger($elements);
187 - $mailIds = acym_loadResultArray('SELECT `mail_id` FROM #__acym_mail_override WHERE `id` IN ('.implode(',', $elements).')');
188 -
189 - $result = parent::delete($elements);
190 -
191 - $mailClass = new MailClass();
192 - $mailClass->delete($mailIds);
193 -
194 - return $result;
195 - }
196 -
197 - public function getParamsByMailId($mailId)
198 - {
199 - $mailClass = new MailClass();
200 - $mail = $mailClass->getOneById($mailId);
201 -
202 - if (empty($mail)) return [];
203 -
204 - return acym_getOverrideParamsByName($mail->name);
205 - }
206 -}