get_col( "SELECT blog_id FROM $wpdb->blogs" ); $original_blog_id = get_current_blog_id(); foreach ( $blog_ids as $blog_id ) { switch_to_blog( $blog_id ); foreach ($delete_options as $del_opt) { delete_option( $del_opt ); } } switch_to_blog( $original_blog_id ); } if ( wp_get_schedule( 'ao_cachechecker' ) ) { wp_clear_scheduled_hook( 'ao_cachechecker' ); } } function autoptimize_install_config_notice() { echo '

'; _e('Thank you for installing and activating Autoptimize. Please configure it under "Settings" -> "Autoptimize" to start improving your site\'s performance.', 'autoptimize' ); echo '

'; } function autoptimize_update_config_notice() { echo '

'; _e('Autoptimize has just been updated. Please test your site now and adapt Autoptimize config if needed.', 'autoptimize' ); echo '

'; } function autoptimize_cache_unavailable_notice() { echo '

'; printf( __( 'Autoptimize cannot write to the cache directory (%s), please fix to enable CSS/ JS optimization!', 'autoptimize' ), AUTOPTIMIZE_CACHE_DIR ); echo '

'; } // Set up the buffering function autoptimize_start_buffering() { $ao_noptimize = false; // noptimize in qs to get non-optimized page for debugging if (array_key_exists("ao_noptimize",$_GET) || array_key_exists("ao_noptirocket",$_GET)) { if ( ( ($_GET["ao_noptimize"]==="1") || ($_GET["ao_noptirocket"]==="1") ) && (apply_filters('autoptimize_filter_honor_qs_noptimize',true)) ) { $ao_noptimize = true; } } // check for DONOTMINIFY constant as used by e.g. WooCommerce POS if (defined('DONOTMINIFY') && (constant('DONOTMINIFY')===true || constant('DONOTMINIFY')==="true")) { $ao_noptimize = true; } // if setting says not to optimize logged in user and user is logged in if ( get_option('autoptimize_optimize_logged','on') !== 'on' && is_user_logged_in() && current_user_can('edit_posts') ) { $ao_noptimize = true; } // if setting says not to optimize cart/ checkout if ( get_option('autoptimize_optimize_checkout','on') !== 'on' ) { // checking for woocommerce, easy digital downloads and wp ecommerce foreach ( array("is_checkout","is_cart","edd_is_checkout","wpsc_is_cart","wpsc_is_checkout") as $shopCond ) { if ( function_exists($shopCond) && $shopCond() ) { $ao_noptimize = true; break; } } } // filter you can use to block autoptimization on your own terms $ao_noptimize = (bool) apply_filters( 'autoptimize_filter_noptimize', $ao_noptimize ); if (!is_feed() && !$ao_noptimize && !is_admin() && ( !function_exists('is_customize_preview') || !is_customize_preview() ) ) { // load speedupper conditionally (true by default?) if ( apply_filters('autoptimize_filter_speedupper', true) ) { include(AUTOPTIMIZE_PLUGIN_DIR.'classlesses/autoptimizeSpeedupper.php'); } // Config element $conf = autoptimizeConfig::instance(); // Load our base class include(AUTOPTIMIZE_PLUGIN_DIR.'classes/autoptimizeBase.php'); // Load extra classes and set some vars if($conf->get('autoptimize_html')) { include(AUTOPTIMIZE_PLUGIN_DIR.'classes/autoptimizeHTML.php'); // BUG: new minify-html does not support keeping HTML comments, skipping for now // if (defined('AUTOPTIMIZE_LEGACY_MINIFIERS')) { @include(AUTOPTIMIZE_PLUGIN_DIR.'classes/external/php/minify-html.php'); // } else { // @include(AUTOPTIMIZE_PLUGIN_DIR.'classes/external/php/minify-2.1.7-html.php'); // } } if($conf->get('autoptimize_js')) { include(AUTOPTIMIZE_PLUGIN_DIR.'classes/autoptimizeScripts.php'); if (!class_exists('JSMin')) { if (defined('AUTOPTIMIZE_LEGACY_MINIFIERS')) { @include(AUTOPTIMIZE_PLUGIN_DIR.'classes/external/php/jsmin-1.1.1.php'); } else { @include(AUTOPTIMIZE_PLUGIN_DIR.'classes/external/php/minify-2.3.1-jsmin.php'); } } if ( ! defined( 'CONCATENATE_SCRIPTS' )) { define('CONCATENATE_SCRIPTS',false); } if ( ! defined( 'COMPRESS_SCRIPTS' )) { define('COMPRESS_SCRIPTS',false); } } if($conf->get('autoptimize_css')) { include(AUTOPTIMIZE_PLUGIN_DIR.'classes/autoptimizeStyles.php'); if (defined('AUTOPTIMIZE_LEGACY_MINIFIERS')) { if (!class_exists('Minify_CSS_Compressor')) { @include(AUTOPTIMIZE_PLUGIN_DIR.'classes/external/php/minify-css-compressor.php'); } } else { if (!class_exists('CSSmin')) { @include(AUTOPTIMIZE_PLUGIN_DIR.'classes/external/php/yui-php-cssmin-2.4.8-4_fgo.php'); } } if ( ! defined( 'COMPRESS_CSS' )) { define('COMPRESS_CSS',false); } } // filter to be used with care, kills all output buffers when true. use with extreme caution. you have been warned! if (apply_filters('autoptimize_filter_obkiller',false)) { while (ob_get_level() > 0) { ob_end_clean(); } } // Now, start the real thing! ob_start('autoptimize_end_buffering'); } } // Action on end, this is where the magic happens function autoptimize_end_buffering($content) { if ( ((stripos($content,"]*(?:amp|⚡)/',$content) === 1 || stripos($content,"get('autoptimize_js')) $classes[] = 'autoptimizeScripts'; if($conf->get('autoptimize_css')) $classes[] = 'autoptimizeStyles'; if($conf->get('autoptimize_html')) $classes[] = 'autoptimizeHTML'; // Set some options $classoptions = array( 'autoptimizeScripts' => array( 'justhead' => $conf->get('autoptimize_js_justhead'), 'forcehead' => $conf->get('autoptimize_js_forcehead'), 'trycatch' => $conf->get('autoptimize_js_trycatch'), 'js_exclude' => $conf->get('autoptimize_js_exclude'), 'cdn_url' => $conf->get('autoptimize_cdn_url'), 'include_inline' => $conf->get('autoptimize_js_include_inline') ), 'autoptimizeStyles' => array( 'justhead' => $conf->get('autoptimize_css_justhead'), 'datauris' => $conf->get('autoptimize_css_datauris'), 'defer' => $conf->get('autoptimize_css_defer'), 'defer_inline' => $conf->get('autoptimize_css_defer_inline'), 'inline' => $conf->get('autoptimize_css_inline'), 'css_exclude' => $conf->get('autoptimize_css_exclude'), 'cdn_url' => $conf->get('autoptimize_cdn_url'), 'include_inline' => $conf->get('autoptimize_css_include_inline'), 'nogooglefont' => $conf->get('autoptimize_css_nogooglefont') ), 'autoptimizeHTML' => array( 'keepcomments' => $conf->get('autoptimize_html_keepcomments') ) ); $content = apply_filters( 'autoptimize_filter_html_before_minify', $content ); // Run the classes foreach($classes as $name) { $instance = new $name($content); if($instance->read($classoptions[$name])) { $instance->minify(); $instance->cache(); $content = $instance->getcontent(); } unset($instance); } $content = apply_filters( 'autoptimize_html_after_minify', $content ); return $content; } if ( autoptimizeCache::cacheavail() ) { $conf = autoptimizeConfig::instance(); if( $conf->get('autoptimize_html') || $conf->get('autoptimize_js') || $conf->get('autoptimize_css') ) { // Hook to wordpress if (defined('AUTOPTIMIZE_INIT_EARLIER')) { add_action('init','autoptimize_start_buffering',-1); } else { if (!defined('AUTOPTIMIZE_HOOK_INTO')) { define('AUTOPTIMIZE_HOOK_INTO', 'template_redirect'); } add_action(constant("AUTOPTIMIZE_HOOK_INTO"),'autoptimize_start_buffering',2); } } } else { add_action('admin_notices', 'autoptimize_cache_unavailable_notice'); } function autoptimize_activate() { register_uninstall_hook( __FILE__, 'autoptimize_uninstall' ); } register_activation_hook( __FILE__, 'autoptimize_activate' ); include_once('classlesses/autoptimizeCacheChecker.php'); add_action('plugins_loaded','includeAutoptimizeExtra'); function includeAutoptimizeExtra() { if ( apply_filters('autoptimize_filter_extra_activate',true) ) { include_once('classlesses/autoptimizeExtra.php'); } } // Do not pollute other plugins unset($conf);