} } /** * The actual magic to differentiate between network options and per-site options. * * @param mixed $value Option value. * @param string $option Option name. * @param string $old_value Old value. */ public static function update_autoptimize_option_on_network( $value, $option, $old_value ) { if ( strpos( $option, 'autoptimize_' ) === 0 && self::is_options_from_network_admin() ) { if ( self::is_ao_active_for_network() ) { update_network_option( get_main_network_id(), $option, $value ); // Return old value, to stop update_option logic. return $old_value; } if ( apply_filters( 'autoptimize_filter_optionwrapper_wp_cache_delete', false ) ) { // in some (rare) cases options seem to get stuck in WP's Object cache, this should clear it there. wp_cache_delete( $option ); } } return $value; } /** * As options are POST-ed to wp-admin/options.php checking is_network_admin() does not * work (yet). Instead we compare the network_admin_url with the _wp_http_referer * (which should always be available as part of a hidden form field). */ public static function is_options_from_network_admin() { static $_really_is_network_admin = null; if ( null === $_really_is_network_admin ) { if ( array_key_exists( '_wp_http_referer', $_POST ) && strpos( network_admin_url( 'settings.php' ), strtok( $_POST['_wp_http_referer'], '?' ) ) !== false ) { $_really_is_network_admin = true; } else { $_really_is_network_admin = false; } } return $_really_is_network_admin; } /** * Function to check if AO (including beta) is active for network. */ public static function is_ao_active_for_network() { static $_is_ao_active_for_network = null; if ( null === $_is_ao_active_for_network || defined( 'TEST_MULTISITE_FORCE_AO_ON_NETWORK' ) ) { self::maybe_include_plugin_functions(); if ( is_plugin_active_for_network( 'autoptimize/autoptimize.php' ) || is_plugin_active_for_network( 'autoptimize-beta/autoptimize.php' ) || defined( 'TEST_MULTISITE_FORCE_AO_ON_NETWORK' ) ) { $_is_ao_active_for_network = true; } else { $_is_ao_active_for_network = false; } } return $_is_ao_active_for_network; } } new autoptimizeOptionWrapper();