do_version_updates( $last_active_version ); do_action( 'after_doing_aioseop_updates' ); // If we're running Pro, let the Pro updater set the version. if ( ! AIOSEOPPRO ) { // Save the current plugin version as the new last_active_version. $aioseop_options['last_active_version'] = AIOSEOP_VERSION; $aiosp->update_class_option( $aioseop_options ); } if ( ! is_network_admin() || ! isset( $_GET['activate-multi'] ) ) { // Replace this to reactivate update welcome screen. // set_transient( '_aioseop_activation_redirect', true, 30 ); // Sets 30 second transient for welcome screen redirect on activation. } delete_transient( 'aioseop_feed' ); add_action( 'admin_init', array( $this, 'aioseop_welcome' ) ); } /** * Perform updates that are dependent on external factors, not * just the plugin version. */ $this->do_feature_updates(); } function aioseop_welcome() { if ( get_transient( '_aioseop_activation_redirect' ) ) { delete_transient( '_aioseop_activation_redirect' ); // $aioseop_welcome = new aioseop_welcome(); // $aioseop_welcome->init( TRUE ); } } /** * Updates version. * * TODO: the compare here should be extracted into a function * * @global $aioseop_options . * * @param String $old_version */ function do_version_updates( $old_version ) { global $aioseop_options; if ( ( ! AIOSEOPPRO && version_compare( $old_version, '2.3.3', '<' ) ) || ( AIOSEOPPRO && version_compare( $old_version, '2.4.3', '<' ) ) ) { $this->bad_bots_201603(); } if ( ( ! AIOSEOPPRO && version_compare( $old_version, '2.3.4.1', '<' ) ) || ( AIOSEOPPRO && version_compare( $old_version, '2.4.4.1', '<' ) ) ) { $this->bad_bots_remove_yandex_201604(); } if ( ( ! AIOSEOPPRO && version_compare( $old_version, '2.3.9', '<' ) ) || ( AIOSEOPPRO && version_compare( $old_version, '2.4.9', '<' ) ) ) { $this->bad_bots_remove_seznambot_201608(); set_transient( '_aioseop_activation_redirect', true, 30 ); // Sets 30 second transient for welcome screen redirect on activation. } if ( ( ! AIOSEOPPRO && version_compare( $old_version, '2.9', '<' ) ) || ( AIOSEOPPRO && version_compare( $old_version, '2.10', '<' ) ) ) { $this->bad_bots_remove_semrush_201810(); } } /** * Removes overzealous 'DOC' entry which is causing false-positive bad * bot blocking. * * @since 2.3.3 * @global $aiosp , $aioseop_options. */ function bad_bots_201603() { global $aiosp, $aioseop_options; // Remove 'DOC' from bad bots list to avoid false positives. if ( isset( $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_blocklist'] ) ) { $list = $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_blocklist']; $list = str_replace( array( "DOC\r\n", "DOC\n", ), '', $list ); $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_blocklist'] = $list; update_option( 'aioseop_options', $aioseop_options ); $aiosp->update_class_option( $aioseop_options ); } } /* * Functions for specific version milestones. */ /** * Remove 'yandex' entry. This is a major Russian search engine, and no longer needs to be blocked. * * @since 2.3.4.1 * @global $aiosp , $aioseop_options. */ function bad_bots_remove_yandex_201604() { global $aiosp, $aioseop_options; // Remove 'yandex' from bad bots list to avoid false positives. if ( isset( $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_blocklist'] ) ) { $list = $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_blocklist']; $list = str_replace( array( "yandex\r\n", "yandex\n", ), '', $list ); $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_blocklist'] = $list; update_option( 'aioseop_options', $aioseop_options ); $aiosp->update_class_option( $aioseop_options ); } } /** * Remove 'SeznamBot' entry. * * @since 2.3.8 * @global $aiosp , $aioseop_options. */ function bad_bots_remove_seznambot_201608() { global $aiosp, $aioseop_options; // Remove 'SeznamBot' from bad bots list to avoid false positives. if ( isset( $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_blocklist'] ) ) { $list = $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_blocklist']; $list = str_replace( array( "SeznamBot\r\n", "SeznamBot\n", ), '', $list ); $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_blocklist'] = $list; update_option( 'aioseop_options', $aioseop_options ); $aiosp->update_class_option( $aioseop_options ); } } /** * Removes semrush from bad bot blocker. * * @since 2.9 * @global @aiosp, @aioseop_options */ function bad_bots_remove_semrush_201810(){ global $aiosp, $aioseop_options; // Remove 'SemrushBot' from bad bots list to avoid false positives. if ( isset( $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_blocklist'] ) ) { $list = $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_blocklist']; $list = str_replace( array( "SemrushBot\r\n", "SemrushBot\n", ), '', $list ); $aioseop_options['modules']['aiosp_bad_robots_options']['aiosp_bad_robots_blocklist'] = $list; update_option( 'aioseop_options', $aioseop_options ); $aiosp->update_class_option( $aioseop_options ); } } /** * Updates features. * * @return null * * if ( ! ( isset( $aioseop_options['version_feature_flags']['FEATURE_NAME'] ) && * $aioseop_options['version_feature_flags']['FEATURE_NAME'] === 'yes' ) ) { * $this->some_feature_update_method(); // sets flag to 'yes' on completion. */ public function do_feature_updates() { global $aioseop_options; // We don't need to check all the time. Use a transient to limit frequency. if ( get_site_transient( 'aioseop_update_check_time' ) ) { return; } // If we're running Pro, let the Pro updater set the transient. if ( ! AIOSEOPPRO ) { // We haven't checked recently. Reset the timestamp, timeout 6 hours. set_site_transient( 'aioseop_update_check_time', time(), apply_filters( 'aioseop_update_check_time', 3600 * 6 ) ); } } }