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

265 lines 6.0 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($type, $name, $default = null, $source = 'REQUEST', $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($name, $value = null, $hash = 'REQUEST', $overwrite = true)
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()
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()
165 {
166 defined('ABSPATH') || die('Restricted access');
167 }
168
169 function acym_isDebug()
170 {
171 return defined('WP_DEBUG') && WP_DEBUG;
172 }
173
174 function acym_askLog($current = true, $message = 'ACYM_NOTALLOWED', $type = 'error')
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()
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()
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('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_checkVersion($ajax = false)
239 {
240
241 return false;
242 }
243
244 function acym_triggerCmsHook($action, $args = [], $isAction = true)
245 {
246 array_unshift($args, $action);
247
248 return call_user_func_array($isAction ? 'do_action' : 'apply_filters', $args);
249 }
250
251 function acym_getCmsCaptcha()
252 {
253 return [];
254 }
255
256 function acym_loadCaptcha(string $captchaPluginName, string $id): string
257 {
258 return '';
259 }
260
261 function acym_checkCaptcha(string $captchaPluginName, ?string $response = null): bool
262 {
263 return true;
264 }
265