setup_constants(); self::$instance->includes(); self::$instance->front_end = new rsssl_front_end(); self::$instance->mixed_content_fixer = new rsssl_mixed_content_fixer(); if ( is_multisite() ) { self::$instance->multisite = new rsssl_multisite(); } if ( rsssl_admin_logged_in() ) { self::$instance->cache = new rsssl_cache(); self::$instance->placeholder = new rsssl_placeholder(); self::$instance->server = new rsssl_server(); self::$instance->admin = new rsssl_admin(); self::$instance->mailer_admin = new rsssl_mailer_admin(); self::$instance->onboarding = new rsssl_onboarding(); self::$instance->progress = new rsssl_progress(); self::$instance->certificate = new rsssl_certificate(); self::$instance->site_health = new rsssl_site_health(); if ( defined( 'WP_CLI' ) && WP_CLI ) { self::$instance->wp_cli = new rsssl_wp_cli(); } } self::$instance->hooks(); } return self::$instance; } private function setup_constants() { define('rsssl_url', plugin_dir_url(__FILE__)); define('rsssl_path', trailingslashit(plugin_dir_path(__FILE__))); define('rsssl_template_path', trailingslashit(plugin_dir_path(__FILE__)).'grid/templates/'); define('rsssl_plugin', plugin_basename(__FILE__)); define('rsssl_add_on_version_requirement', '7.2.0'); if ( !defined('rsssl_file') ){ define('rsssl_file', __FILE__); } define('rsssl_version', '7.2.0'); define('rsssl_le_cron_generation_renewal_check', 20); define('rsssl_le_manual_generation_renewal_check', 15); } private function includes() { require_once(rsssl_path . 'class-front-end.php'); require_once(rsssl_path . 'functions.php'); require_once(rsssl_path . 'class-mixed-content-fixer.php'); if ( defined( 'WP_CLI' ) && WP_CLI ) { require_once( rsssl_path . 'class-wp-cli.php'); } if ( is_multisite() ) { require_once( rsssl_path . 'class-multisite.php'); } if ( rsssl_admin_logged_in() ) { require_once( rsssl_path . 'compatibility.php'); require_once( rsssl_path . 'upgrade.php'); require_once( rsssl_path . 'settings/settings.php' ); require_once( rsssl_path . 'modal/modal.php' ); require_once( rsssl_path . 'onboarding/class-onboarding.php' ); require_once( rsssl_path . 'placeholders/class-placeholder.php' ); require_once( rsssl_path . 'class-admin.php'); require_once( rsssl_path . 'mailer/class-mail-admin.php'); require_once( rsssl_path . 'class-cache.php'); require_once( rsssl_path . 'class-server.php'); require_once( rsssl_path . 'progress/class-progress.php'); require_once( rsssl_path . 'class-certificate.php'); require_once( rsssl_path . 'class-site-health.php'); require_once( rsssl_path . 'mailer/class-mail.php'); require_once( rsssl_path . 'lets-encrypt/letsencrypt.php' ); if ( isset($_GET['install_pro'])) { require_once( rsssl_path . 'upgrade/upgrade-to-pro.php'); } } require_once( rsssl_path . 'lets-encrypt/cron.php' ); require_once( rsssl_path . '/security/security.php'); } private function hooks() { /** * Fire custom hook */ if ( rsssl_admin_logged_in() ) { add_action('admin_notices', array( $this, 'admin_notices')); if ( is_multisite() ) { add_action('network_admin_notices', array( $this, 'admin_notices')); } } add_action('wp_loaded', array(self::$instance->front_end, 'force_ssl'), 20); if ( rsssl_admin_logged_in() ) { add_action('plugins_loaded', array(self::$instance->admin, 'init'), 10); } } /** * Notice about possible compatibility issues with add ons */ public static function admin_notices() { //prevent showing on edit screen, as gutenberg removes the class which makes it editable. $screen = get_current_screen(); if ( $screen && $screen->base === 'post' ) return; if ( self::has_old_addon('really-simple-ssl-pro/really-simple-ssl-pro.php') || self::has_old_addon('really-simple-ssl-pro-multisite/really-simple-ssl-pro-multisite.php' ) ) { ?>

',''); ?>

has_cap( 'manage_security' ) ){ $role->add_cap( 'manage_security' ); } } register_activation_hook( __FILE__, 'rsssl_add_manage_security_capability' ); } if ( ! function_exists( 'rsssl_user_can_manage' ) ) { /** * Check if user has required capability * @return bool */ function rsssl_user_can_manage() { if ( current_user_can('manage_security') ) { return true; } #allow wp-cli access to activate ssl if ( defined( 'WP_CLI' ) && WP_CLI ){ return true; } return false; } } if ( !function_exists('rsssl_admin_logged_in')){ function rsssl_admin_logged_in(){ $wpcli = defined( 'WP_CLI' ) && WP_CLI; return (is_admin() && rsssl_user_can_manage()) || rsssl_is_logged_in_rest() || wp_doing_cron() || $wpcli || defined('RSSSL_DOING_SYSTEM_STATUS') || defined('RSSSL_LEARNING_MODE'); } } function RSSSL() { return REALLY_SIMPLE_SSL::instance(); } add_action('plugins_loaded', 'RSSSL', 8); if ( !function_exists('rsssl_is_logged_in_rest')){ function rsssl_is_logged_in_rest(){ $valid_request = isset($_SERVER['REQUEST_URI']) && strpos($_SERVER['REQUEST_URI'], '/reallysimplessl/v1/')!==false; if ( !$valid_request ) { return false; } return is_user_logged_in(); } } /** * Add rsssl_two_fa_status usermeta field * * @return void */ function rsssl_register_user_meta() { register_meta('user', 'rsssl_two_fa_status', [ 'show_in_rest' => true, 'single' => true, 'type' => 'string', 'description' => 'The method of two-factor authentication for the user.', 'default' => 'disabled', 'auth_callback' => function() { return rsssl_user_can_manage(); }, ]); } add_action( 'init' , 'rsssl_register_user_meta' );