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);