$val) { $var[$i] = acym_cleanVar($val, $type, $mask); } return $var; } switch ($type) { case 'string': $var = strval($var); break; case 'int': $var = intval($var); break; case 'float': $var = floatval($var); break; case 'bool': case 'boolean': $var = boolval($var); break; case 'word': $var = preg_replace('#[^a-zA-Z_]#', '', $var); break; case 'cmd': $var = preg_replace('#[^a-zA-Z0-9_\.-]#', '', $var); $var = ltrim($var, '.'); break; default: break; } if (!is_string($var)) { return $var; } $var = trim($var); if ($mask & ACYM_ALLOWRAW) { return $var; } if (!preg_match('//u', $var)) { // String contains invalid byte sequence, remove it $var = htmlspecialchars_decode(htmlspecialchars($var, ENT_IGNORE, 'UTF-8')); } if (!($mask & ACYM_ALLOWHTML)) { $var = preg_replace('#<[a-zA-Z/]+[^>]*>#Uis', '', $var); } return $var; } function acym_setVar(string $name, $value): void { $_REQUEST[$name] = $value; } /** * Function detecting the context of a request, not related to security checks */ function acym_isAdmin(): bool { // Outside of /wp-admin we are on the front-end, whatever the request parameters say if (!is_admin()) { return false; } $page = acym_getVar('string', 'page', ''); return !in_array($page, [ACYM_COMPONENT.'_front', 'front'], true); } function acym_cmsLoaded(): void { defined('ABSPATH') || die('Restricted access'); } function acym_isDebug(): bool { return defined('WP_DEBUG') && WP_DEBUG; } function acym_askLog(bool $current = true, string $message = 'ACYM_NOTALLOWED', string $type = 'error'): void { //If the user is not logged in, we just redirect him to the login page.... $url = acym_rootURI().'wp-login.php'; if ($current) { $url .= '&redirect_to='.base64_encode(acym_currentURL()); } acym_redirect($url, $message, $type); } function acym_getDefaultConfigValues(): array { $allPref = []; $allPref['from_name'] = get_option('fromname', ''); $allPref['from_email'] = get_option('admin_email', ''); $allPref['bounce_email'] = $allPref['from_email']; $allPref['sendmail_path'] = ''; $allPref['smtp_port'] = get_option('mailserver_port', ''); $allPref['smtp_secured'] = $allPref['smtp_port'] == 465 ? 'ssl' : ''; $allPref['smtp_auth'] = 1; $allPref['smtp_username'] = get_option('mailserver_login', ''); $allPref['smtp_password'] = get_option('mailserver_pass', ''); $allPref['mailer_method'] = empty($allPref['smtp_host']) ? 'phpmail' : 'smtp'; $allPref['smtp_host'] = get_option('mailserver_url', ''); $allPref['cron_savepath'] = ACYM_LOGS_FOLDER.'report{year}_{month}.log'; return $allPref; } function acym_hasAdminPermissions(): bool { return current_user_can('manage_options'); } /** * May the user reach the AcyMailing back-end at all? Same rule as the menu visibility (Menu::addMenus). */ function acym_hasBackofficeAccess(): bool { $config = acym_config(); $allowedGroups = explode(',', $config->get('wp_access', 'administrator')); $userGroups = acym_getGroupsByUser(); foreach ($userGroups as $oneGroup) { if ($oneGroup == 'administrator' || in_array($oneGroup, $allowedGroups)) { return true; } } return false; } function acym_cmsPermission(): void { if (!acym_hasAdminPermissions()) { return; } $config = acym_config(); $roles = acym_getGroups(); $options = []; $selected = explode(',', $config->get('wp_access', 'administrator')); foreach ($roles as $name => $oneRole) { if ($name === 'administrator') { continue; } $options[$name] = $oneRole->text; } asort($options); echo '
'; acym_selectMultiple( $options, 'config[wp_access]', $selected, ['class' => 'acym__select'], 'value', 'text', true, ); echo '
'; } function acym_triggerCmsHook(string $action, array $args = [], bool $isAction = true) { array_unshift($args, $action); return call_user_func_array($isAction ? 'do_action' : 'apply_filters', $args); } function acym_getCmsCaptcha(): array { return []; } function acym_loadCaptcha(string $captchaPluginName, string $id): void { } function acym_checkCaptcha(string $captchaPluginName, ?string $response = null): bool { return true; } function acym_getSiteSalt(): string { return wp_salt('auth'); } function acym_stripTags(string $text): string { return wp_strip_all_tags($text); } function acym_setSession(string $name, $value, bool $remove = false): void { acym_session(); if ($remove) { unset($_SESSION[$name]); } else { $_SESSION[$name] = $value; } }