<?php defined('ABSPATH') or die(); add_action('plugins_loaded', 'rsssl_upgrade', 20); function rsssl_upgrade() { #only run upgrade check if cron, or if admin. if ( !is_admin() && !wp_doing_cron() ) { return; } $prev_version = get_option( 'rsssl_current_version', false ); //no version change, skip upgrade. if ( get_option('rsssl_6_upgrade_completed') && ($prev_version && version_compare( $prev_version, rsssl_version, '==' )) ){ return; } //dismiss notices that should be dismissed on plugin upgrade if ( $prev_version && version_compare( $prev_version, rsssl_version, '!=' )) { $dismiss_options = RSSSL()->admin->get_notices_list( array( 'dismiss_on_upgrade' => true, ) ); foreach ($dismiss_options as $dismiss_option ) { update_option( "rsssl_" . $dismiss_option . "_dismissed" , true, false ); } delete_transient( 'rsssl_plusone_count' ); } if ( $prev_version && version_compare( $prev_version, '5.1.3', '<=' ) ) { if ( get_option( 'rsssl_disable_ocsp' ) ) { $options = get_option( 'rsssl_options_lets-encrypt' ); $options['disable_ocsp'] = true; update_option( 'rsssl_options_lets-encrypt', $options, false ); delete_option('rsssl_disable_ocsp'); } } if ( $prev_version && version_compare( $prev_version, '5.3.0', '<=' ) ) { if ( file_exists(RSSSL()->admin->htaccess_file() ) && is_writable(RSSSL()->admin->htaccess_file() ) ) { $htaccess = file_get_contents( RSSSL()->admin->htaccess_file() ); $pattern_start = "/rlrssslReallySimpleSSL rsssl_version\[.*.]/"; if ( preg_match_all( $pattern_start, $htaccess ) ) { $htaccess = preg_replace( $pattern_start, "Really Simple SSL Redirect " . rsssl_version, $htaccess ); $htaccess = str_replace( "rlrssslReallySimpleSSL", "Really Simple SSL Redirect", $htaccess ); file_put_contents( RSSSL()->admin->htaccess_file(), $htaccess ); } } } if ( !get_option('rsssl_6_upgrade_completed') || ( $prev_version && version_compare( $prev_version, '6.0.0', '<' ) ) ) { delete_transient('rsssl_admin_notices'); update_option('rsssl_show_onboarding', true, false); //upgrade both site and network settings $options = get_option( 'rlrsssl_options' ); if ( is_multisite() && rsssl_is_networkwide_active() ) { $new_options = get_site_option('rsssl_options', []); } else { $new_options = get_option('rsssl_options', []); } $ssl_enabled = isset( $options['ssl_enabled'] ) ? $options['ssl_enabled'] : false; $new_options['ssl_enabled'] = (bool) $ssl_enabled; $autoreplace_insecure_links = isset( $options['autoreplace_insecure_links'] ) ? $options['autoreplace_insecure_links'] : true; $new_options['mixed_content_fixer'] = (bool) $autoreplace_insecure_links; $wp_redirect = isset( $options['wp_redirect'] ) ? $options['wp_redirect'] : false; $htaccess_redirect = isset( $options['htaccess_redirect'] ) ? $options['htaccess_redirect'] : false; $redirect = 'none;'; if ( $htaccess_redirect ) { $redirect = 'htaccess'; } else if ( $wp_redirect ) { $redirect = 'wp_redirect'; } $new_options['redirect'] = sanitize_title($redirect); $do_not_edit_htaccess = isset( $options['do_not_edit_htaccess'] ) ? $options['do_not_edit_htaccess'] : false; $new_options['do_not_edit_htaccess'] = (bool) $do_not_edit_htaccess; $dismiss_all_notices = isset( $options['dismiss_all_notices'] ) ? $options['dismiss_all_notices'] : false; $new_options['dismiss_all_notices'] = (bool) $dismiss_all_notices; $switch_mixed_content_fixer_hook = isset( $options['switch_mixed_content_fixer_hook'] ) ? $options['switch_mixed_content_fixer_hook'] : false; $new_options['switch_mixed_content_fixer_hook'] = (bool) $switch_mixed_content_fixer_hook; delete_option( "rsssl_upgraded_to_four" ); /** * Multisite */ if ( is_multisite() && rsssl_is_networkwide_active() ) { $network_options = get_site_option('rlrsssl_network_options'); $enabled_network_wide = isset($network_options["ssl_enabled_networkwide"]) ? $network_options["ssl_enabled_networkwide"] : false; if ( $ssl_enabled && $enabled_network_wide ) { update_site_option('rsssl_network_activation_status', 'completed'); } else if ($ssl_enabled) { //convert entire site to SSL RSSSL()->multisite->start_ssl_activation(); } //ensure this doesn't run again $network_options["ssl_enabled_networkwide"] = false; update_site_option('rlrsssl_network_options', $network_options); $dismiss_all_notices = isset($network_options["dismiss_all_notices"]) ? $network_options["dismiss_all_notices"] : false; $new_options['dismiss_all_notices'] = (bool) $dismiss_all_notices; $wp_redirect = isset($network_options["wp_redirect"]) ? $network_options["wp_redirect"] : false; if ($wp_redirect) $redirect = 'wp_redirect'; $htaccess_redirect = isset($network_options["htaccess_redirect"]) ? $network_options["htaccess_redirect"] : false; if ($htaccess_redirect) $redirect = 'htaccess'; $new_options['redirect'] = sanitize_title($redirect); $do_not_edit_htaccess = isset($network_options["do_not_edit_htaccess"]) ? $network_options["do_not_edit_htaccess"] : false; $new_options['do_not_edit_htaccess'] = (bool) $do_not_edit_htaccess; $autoreplace_mixed_content = isset($network_options["autoreplace_mixed_content"]) ? $network_options["autoreplace_mixed_content"] : false; $new_options['mixed_content_fixer'] = (bool) $autoreplace_mixed_content; //upgrade lets encrypt options $le_options = get_option( 'rsssl_options_lets-encrypt' ); $verification_type = get_option('rsssl_verification_type'); if ($verification_type) { $new_options['verification_type'] = strtolower(sanitize_title($verification_type)); } if (!empty($le_options)) { foreach ($options as $fieldname => $value ) { $new_options[$fieldname] = sanitize_text_field($value); } } } if ( is_multisite() && rsssl_is_networkwide_active() ) { update_site_option( 'rsssl_options', $new_options ); } else { update_option( 'rsssl_options', $new_options ); } update_option('rsssl_6_upgrade_completed', true, false); } #clean up old rest api optimizer on upgrade if ( $prev_version && version_compare( $prev_version, '6.0.5', '<' ) ) { if ( file_exists(trailingslashit( WPMU_PLUGIN_DIR ) . 'rsssl_rest_api_optimizer.php') ) { unlink( trailingslashit( WPMU_PLUGIN_DIR ) . 'rsssl_rest_api_optimizer.php' ); } } #clear notices cache for multisite on upgrade, for the subsite notice if ( version_compare( $prev_version, '6.0.9', '<' ) ) { if ( is_multisite() ) { delete_transient('rsssl_admin_notices' ); } } #ensure administrators have the manage_security capability if ( version_compare( $prev_version, '6.0.10', '<' ) ) { rsssl_add_manage_security_capability(); } #move notices transient to option, for better persistence if ( version_compare( $prev_version, '6.0.13', '<' ) ) { $notices = get_transient('rsssl_admin_notices'); $plus_ones = get_transient('rsssl_plusone_count'); update_option('rsssl_admin_notices', $notices); update_option('rsssl_plusone_count', $plus_ones); } //delete in future upgrade. We want to check the review notice dismissed as fallback still. //delete_option( 'rlrsssl_options' ); //delete_site_option( 'rlrsssl_network_options' ); //delete_option( 'rsssl_options_lets-encrypt' ); do_action("rsssl_upgrade", $prev_version); update_option( 'rsssl_current_version', rsssl_version, false ); }