PluginProbe
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress / 10.11.1
AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress v10.11.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
acymailing / back / Core / wordpress / security.php

security.php in AcyMailing – An Ultimate Newsletter Plugin and Marketing Automation Solution for WordPress 10.11.1, at back/Core/wordpress/security.php

273 lines 6.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 use AcyMailing\Helpers\UpdatemeHelper;
4
5 function acym_getVar(string $type, string $name, $default = null, string $source = 'REQUEST', int $mask = 0)
6 {
7 $source = strtoupper($source);
8
9 switch ($source) {
10 case 'GET':
11 $input = &$_GET;
12 break;
13 case 'POST':
14 $input = &$_POST;
15 break;
16 case 'FILES':
17 $input = &$_FILES;
18 break;
19 case 'COOKIE':
20 $input = &$_COOKIE;
21 break;
22 case 'ENV':
23 $input = &$_ENV;
24 break;
25 case 'SERVER':
26 $input = &$_SERVER;
27 break;
28 default:
29 $source = 'REQUEST';
30 $input = &$_REQUEST;
31 break;
32 }
33
34 if (!isset($input[$name])) {
35 return $default;
36 }
37
38 $result = $input[$name];
39 unset($input);
40 if ($type === 'array') {
41 $result = (array)$result;
42 }
43
44 if (in_array($source, ['POST', 'REQUEST', 'GET', 'COOKIE'])) {
45 $result = acym_stripslashes($result);
46 }
47
48 return acym_cleanVar($result, $type, $mask);
49 }
50
51 function acym_stripslashes($element)
52 {
53 if (is_array($element)) {
54 foreach ($element as &$oneCell) {
55 $oneCell = acym_stripslashes($oneCell);
56 }
57 } elseif (is_string($element)) {
58 $element = stripslashes($element);
59 }
60
61 return $element;
62 }
63
64 function acym_cleanVar($var, $type, $mask)
65 {
66 if (is_array($var)) {
67 foreach ($var as $i => $val) {
68 $var[$i] = acym_cleanVar($val, $type, $mask);
69 }
70
71 return $var;
72 }
73
74 switch ($type) {
75 case 'string':
76 $var = strval($var);
77 break;
78 case 'int':
79 $var = intval($var);
80 break;
81 case 'float':
82 $var = floatval($var);
83 break;
84 case 'bool':
85 case 'boolean':
86 $var = boolval($var);
87 break;
88 case 'word':
89 $var = preg_replace('#[^a-zA-Z_]#', '', $var);
90 break;
91 case 'cmd':
92 $var = preg_replace('#[^a-zA-Z0-9_\.-]#', '', $var);
93 $var = ltrim($var, '.');
94 break;
95 default:
96 break;
97 }
98
99 if (!is_string($var)) {
100 return $var;
101 }
102
103 $var = trim($var);
104
105 if ($mask & ACYM_ALLOWRAW) {
106 return $var;
107 }
108
109 if (!preg_match('//u', $var)) {
110 $var = htmlspecialchars_decode(htmlspecialchars($var, ENT_IGNORE, 'UTF-8'));
111 }
112
113 if (!($mask & ACYM_ALLOWHTML)) {
114 $var = preg_replace('#<[a-zA-Z/]+[^>]*>#Uis', '', $var);
115 }
116
117 return $var;
118 }
119
120 function acym_setVar(string $name, $value = null, string $hash = 'REQUEST', bool $overwrite = true): void
121 {
122 $hash = strtoupper($hash);
123
124 switch ($hash) {
125 case 'GET':
126 $input = &$_GET;
127 break;
128 case 'POST':
129 $input = &$_POST;
130 break;
131 case 'FILES':
132 $input = &$_FILES;
133 break;
134 case 'COOKIE':
135 $input = &$_COOKIE;
136 break;
137 case 'ENV':
138 $input = &$_ENV;
139 break;
140 case 'SERVER':
141 $input = &$_SERVER;
142 break;
143 default:
144 $input = &$_REQUEST;
145 break;
146 }
147
148 if (!isset($input[$name]) || $overwrite) {
149 $input[$name] = $value;
150 }
151 }
152
153 function acym_isAdmin(): bool
154 {
155 $page = acym_getVar('string', 'page', '');
156
157 if (!empty($page)) {
158 return !in_array($page, [ACYM_COMPONENT.'_front', 'front']);
159 } else {
160 return is_admin();
161 }
162 }
163
164 function acym_cmsLoaded(): void
165 {
166 defined('ABSPATH') || die('Restricted access');
167 }
168
169 function acym_isDebug(): bool
170 {
171 return defined('WP_DEBUG') && WP_DEBUG;
172 }
173
174 function acym_askLog(bool $current = true, string $message = 'ACYM_NOTALLOWED', string $type = 'error'): void
175 {
176 $url = acym_rootURI().'wp-login.php';
177 if ($current) {
178 $url .= '&redirect_to='.base64_encode(acym_currentURL());
179 }
180
181 acym_redirect($url, $message, $type);
182 }
183
184 function acym_getDefaultConfigValues(): array
185 {
186 $allPref = [];
187
188 $allPref['from_name'] = get_option('fromname', '');
189 $allPref['from_email'] = get_option('admin_email', '');
190 $allPref['bounce_email'] = $allPref['from_email'];
191 $allPref['sendmail_path'] = '';
192 $allPref['smtp_port'] = get_option('mailserver_port', '');
193 $allPref['smtp_secured'] = $allPref['smtp_port'] == 465 ? 'ssl' : '';
194 $allPref['smtp_auth'] = 1;
195 $allPref['smtp_username'] = get_option('mailserver_login', '');
196 $allPref['smtp_password'] = get_option('mailserver_pass', '');
197 $allPref['mailer_method'] = empty($allPref['smtp_host']) ? 'phpmail' : 'smtp';
198 $allPref['smtp_host'] = get_option('mailserver_url', '');
199 $allPref['cron_savepath'] = ACYM_LOGS_FOLDER.'report{year}_{month}.log';
200
201 return $allPref;
202 }
203
204 function acym_cmsPermission(): string
205 {
206 if (!current_user_can('manage_options')) return '';
207
208 $config = acym_config();
209 $roles = acym_getGroups();
210 $options = [];
211 $selected = explode(',', $config->get('wp_access', 'administrator'));
212
213 foreach ($roles as $name => $oneRole) {
214 if ($name === 'administrator') continue;
215 $options[$name] = $oneRole->text;
216 }
217
218 asort($options);
219
220 $option = '
221 <div class="cell grid-x">
222 <label class="cell large-3 medium-5 small-9">'.acym_translation('ACYM_ACCESS').' '.acym_info(['textShownInTooltip' => 'ACYM_ACCESS_DESC']).'</label>
223 <div class="cell auto">';
224
225 $option .= acym_selectMultiple(
226 $options,
227 'config[wp_access]',
228 $selected,
229 ['class' => 'acym__select']
230 );
231
232 $option .= '</div>
233 </div>';
234
235 return $option;
236 }
237
238 function acym_triggerCmsHook(string $action, array $args = [], bool $isAction = true)
239 {
240 array_unshift($args, $action);
241
242 return call_user_func_array($isAction ? 'do_action' : 'apply_filters', $args);
243 }
244
245 function acym_getCmsCaptcha(): array
246 {
247 return [];
248 }
249
250 function acym_loadCaptcha(string $captchaPluginName, string $id): string
251 {
252 return '';
253 }
254
255 function acym_checkCaptcha(string $captchaPluginName, ?string $response = null): bool
256 {
257 return true;
258 }
259
260 function acym_getSiteSalt(): string
261 {
262 return wp_salt('auth');
263 }
264
265 function acym_escapeUrl(string $url): string
266 {
267 if (empty($url)) {
268 return '';
269 }
270
271 return esc_url($url);
272 }
273