You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
133 lines
3.9 KiB
133 lines
3.9 KiB
<?php
|
|
defined('ABSPATH') or die();
|
|
/**
|
|
* Only functions also required on front-end here
|
|
*/
|
|
|
|
/**
|
|
* Get a Really Simple SSL option by name
|
|
*
|
|
* @param string $name
|
|
* @param mixed $default
|
|
*
|
|
* @return mixed
|
|
*/
|
|
|
|
function rsssl_get_option( string $name, $default=false ) {
|
|
$name = sanitize_title($name);
|
|
if ( is_multisite() && rsssl_is_networkwide_active() ) {
|
|
$options = get_site_option( 'rsssl_options', [] );
|
|
} else {
|
|
$options = get_option( 'rsssl_options', [] );
|
|
}
|
|
|
|
//fallback, will be removed after 6.2
|
|
//because we only check if the option is not saved in the new style, this if should normally never get executed.
|
|
if (
|
|
!isset($options[$name]) &&
|
|
($name === 'ssl_enabled' || $name === 'redirect' || $name === "mixed_content_fixer" || $name === 'dismiss_all_notices' )
|
|
) {
|
|
$options = rsssl_get_legacy_option($options, $name);
|
|
}
|
|
|
|
$value = $options[ $name ] ?? false;
|
|
if ( $value===false && $default!==false ) {
|
|
$value = $default;
|
|
}
|
|
|
|
if ($value===1) {
|
|
$value = true;
|
|
}
|
|
|
|
return apply_filters("rsssl_option_$name", $value, $name);
|
|
}
|
|
|
|
/**
|
|
* Check if we should treat the plugin as networkwide or not.
|
|
* Note that this function returns false for single sites! Always use icw is_multisite()
|
|
*
|
|
* @return bool
|
|
*/
|
|
|
|
function rsssl_is_networkwide_active(){
|
|
if ( !is_multisite() ) {
|
|
return false;
|
|
}
|
|
if ( !function_exists('is_plugin_active_for_network') ) {
|
|
require_once( ABSPATH . '/wp-admin/includes/plugin.php' );
|
|
}
|
|
|
|
if ( is_plugin_active_for_network(rsssl_plugin) ) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* if the option is does not exist in our new array, check if it's available in the old option. If so, use that one
|
|
* @deprecated to be used until 6.2, as fallback for failed upgrades in some specific edge case situations
|
|
* @param array|bool $options
|
|
* @param string $name
|
|
*
|
|
* @return array
|
|
*/
|
|
function rsssl_get_legacy_option( $options, string $name): array {
|
|
$old_options = is_multisite() ? get_site_option('rlrsssl_network_options') : get_option( 'rlrsssl_options' );
|
|
if ( $old_options ) {
|
|
if ( $name === 'ssl_enabled' && isset( $old_options['ssl_enabled']) ) {
|
|
$options['ssl_enabled'] = $old_options['ssl_enabled'];
|
|
} else if ( $name === 'dismiss_all_notices' && isset( $old_options['dismiss_all_notices']) ) {
|
|
$options['dismiss_all_notices'] = $old_options['dismiss_all_notices'];
|
|
} else if ( $name === 'dismiss_all_notices' && isset( $old_options['dismiss_all_notices']) ) {
|
|
$options['dismiss_all_notices'] = $old_options['dismiss_all_notices'];
|
|
} else if ( $name === 'mixed_content_fixer' && isset($old_options['autoreplace_insecure_links']) ) {
|
|
$options['mixed_content_fixer'] = $old_options['autoreplace_insecure_links'];
|
|
} else if ( $name === 'redirect' ){
|
|
if ( isset($old_options['htaccess_redirect']) && $old_options['htaccess_redirect'] ) {
|
|
$options['redirect'] = 'htaccess';
|
|
} else if (isset($old_options['wp_redirect']) && $old_options['wp_redirect']) {
|
|
$options['redirect'] = 'wp_redirect';
|
|
}
|
|
}
|
|
}
|
|
return $options;
|
|
}
|
|
|
|
function check_if_email_essential_feature() {
|
|
$essential_features = array(
|
|
'limit_login_attempts' => rsssl_get_option('enable_limited_login_attempts') == 1,
|
|
'two_fa_enabled' => rsssl_get_option('two_fa_enabled') == 1
|
|
);
|
|
|
|
// Check if the current feature is in the essential features array
|
|
foreach( $essential_features as $feature => $is_essential ) {
|
|
if ( $is_essential ) {
|
|
return true;
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
/**
|
|
* @param $response
|
|
* @param $user
|
|
* @param $request
|
|
*
|
|
* @return mixed
|
|
*
|
|
* Add user roles to /users endpoint
|
|
*/
|
|
function add_user_role_to_api_response( $response, $user, $request ) {
|
|
$headers = $request->get_headers();
|
|
|
|
if (isset($headers['referer']) && strpos($headers['referer'][0], 'really-simple-security') !== false) {
|
|
$data = $response->get_data();
|
|
$data['roles'] = $user->roles;
|
|
$response->set_data($data);
|
|
}
|
|
|
|
return $response;
|
|
}
|
|
add_filter('rest_prepare_user', 'add_user_role_to_api_response', 10, 3); |