/* Plugin Name: WP Minify Plugin URI: http://omninoggin.com/wordpress-plugins/wp-minify-wordpress-plugin/ Description: This plugin uses the Minify engine to combine and compress JS and CSS files to improve page load time. Version: 1.2.0 Author: Thaya Kareeson Author URI: http://omninoggin.com */ /* Copyright 2009-2011 Thaya Kareeson (email : thaya.kareeson@gmail.com) This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ class WPMinify { var $author_homepage = 'http://omninoggin.com/'; var $homepage = 'http://omninoggin.com/wordpress-plugins/wp-minify-wordpress-plugin/'; var $name = 'wp_minify'; var $name_dashed = 'wp-minify'; var $name_proper = 'WP Minify'; var $required_wp_version = '2.7'; var $version = '1.2.0'; var $c = null; var $debug = false; var $cache_location = 'wp-content/plugins/wp-minify/cache/'; var $url_len_limit = 2000; var $minify_limit = 50; var $buffer_started = false; var $default_exclude = array(); function WPMinify() { // initialize common functions $this->c = new WPMinifyCommon($this); // load translation $this->c->load_text_domain(); // register admin scripts add_action('admin_init', array($this->c, 'a_register_scripts')); add_action('admin_init', array($this->c, 'a_register_styles')); // check wp version add_action('admin_head', array($this->c, 'a_check_version')); // load admin menu add_action('admin_menu', array($this, 'a_menu')); // register ajax handler add_action('wp_ajax_wpm', array($this, 'a_ajax_handler')); // No need to minify admin stuff if (!is_admin() && !is_feed() && !defined('XMLRPC_REQUEST')) { // Don't minify if if user passes wp-minify-off=1 in GET parameter if (!(isset($_GET['wp-minify-off']) && $_GET['wp-minify-off'])) { add_action('init', array($this, 'pre_content'), 99999); add_action('wp_footer', array($this, 'post_content')); } // advertise hook add_action('wp_footer', array($this, 'advertise')); } } // admin functions function a_default_options() { return array( 'cache_external' => false, 'cache_interval' => 900, 'css_exclude' => array(), 'css_include' => array(), 'debug_nominify' => false, 'debug_firephp' => false, 'enable_css' => true, 'enable_js' => true, 'enable_html' => true, 'auto_base' => true, 'extra_minify_options' => '', 'js_exclude' => array(), 'js_include' => array(), 'js_in_footer' => false, 'force_https' => false, 'pretty_url' => false, 'show_link' => false, 'show_advanced' => false, 'uri_exclude' => array(), 'version' => $this->version, 'deprecated' => array( 'wp_path', 'debug', 'debug_noprettyurl' ) ); } function a_update_options() { // new options $wpm_new_options = stripslashes_deep($_POST['wpm_options_update']); // current options $wpm_current_options = get_option($this->name); // convert "on" to true and "off" to false for checkbox fields // and set defaults for fields that are left blank if (isset($wpm_new_options['show_link']) && $wpm_new_options['show_link'] == "on") $wpm_new_options['show_link'] = true; else $wpm_new_options['show_link'] = false; if (isset($wpm_new_options['enable_js'])) $wpm_new_options['enable_js'] = true; else $wpm_new_options['enable_js'] = false; if (isset($wpm_new_options['enable_css'])) $wpm_new_options['enable_css'] = true; else $wpm_new_options['enable_css'] = false; if (isset($wpm_new_options['enable_html'])) $wpm_new_options['enable_html'] = true; else $wpm_new_options['enable_html'] = false; if (isset($wpm_new_options['auto_base'])) $wpm_new_options['auto_base'] = true; else $wpm_new_options['auto_base'] = false; if (isset($wpm_new_options['cache_external'])) $wpm_new_options['cache_external'] = true; else $wpm_new_options['cache_external'] = false; if (isset($wpm_new_options['js_in_footer'])) $wpm_new_options['js_in_footer'] = true; else $wpm_new_options['js_in_footer'] = false; if (isset($wpm_new_options['pretty_url'])) $wpm_new_options['pretty_url'] = true; else $wpm_new_options['pretty_url'] = false; if (isset($wpm_new_options['debug_nominify'])) $wpm_new_options['debug_nominify'] = true; else $wpm_new_options['debug_nominify'] = false; if (isset($wpm_new_options['debug_firephp'])) $wpm_new_options['debug_firephp'] = true; else $wpm_new_options['debug_firephp'] = false; $this->a_set_minify_config($wpm_new_options['debug_nominify'], $wpm_new_options['debug_firephp']); if ( isset($wpm_new_options['force_https']) ) $wpm_new_options['force_https'] = true; else $wpm_new_options['force_https'] = false; if (strlen(trim($wpm_new_options['js_include'])) > 0) $wpm_new_options['js_include'] = $this->array_trim(split(chr(10), str_replace(chr(13), '', $wpm_new_options['js_include']))); else $wpm_new_options['js_include'] = array(); if (strlen(trim($wpm_new_options['js_exclude'])) > 0) $wpm_new_options['js_exclude'] = $this->array_trim(split(chr(10), str_replace(chr(13), '', $wpm_new_options['js_exclude']))); else $wpm_new_options['js_exclude'] = array(); if (strlen(trim($wpm_new_options['css_include'])) > 0) $wpm_new_options['css_include'] = $this->array_trim(split(chr(10), str_replace(chr(13), '', $wpm_new_options['css_include']))); else $wpm_new_options['css_include'] = array(); if (strlen(trim($wpm_new_options['css_exclude'])) > 0) $wpm_new_options['css_exclude'] = $this->array_trim(split(chr(10), str_replace(chr(13), '', $wpm_new_options['css_exclude']))); else $wpm_new_options['css_exclude'] = array(); if ( strlen(trim($wpm_new_options['uri_exclude'])) > 0 ) $wpm_new_options['uri_exclude'] = $this->array_trim(split(chr(10), str_replace(chr(13), '', $wpm_new_options['uri_exclude']))); else $wpm_new_options['uri_exclude'] = array(); // Update options foreach ($wpm_new_options as $key => $value) { $wpm_current_options[$key] = $value; } update_option($this->name, $wpm_current_options); } function a_set_advanced_options($val) { $wpm_options = get_option($this->name); $wpm_options['show_advanced'] = $val; update_option($this->name, $wpm_options); } function a_ajax_handler() { check_ajax_referer($this->name); if (isset($_POST['wpm_action'])) { if (strtolower($_POST['wpm_action']) == 'show_advanced') { $this->a_set_advanced_options(true); } elseif (strtolower($_POST['wpm_action']) == 'hide_advanced') { $this->a_set_advanced_options(false); } else { echo 'Invalid wpm_action.'; } } exit(); } function a_request_handler() { if (isset($_POST['wpm_options_update_submit'])) { check_admin_referer($this->name); $this->a_update_options(); add_action('admin_notices', array($this->c, 'a_notify_updated')); } elseif (isset($_POST['wpm_options_clear_cache_submit'])) { // if user wants to regenerate nonce check_admin_referer($this->name); $this->c->a_clear_cache(); add_action('admin_notices', array($this->c, 'a_notify_cache_cleared')); } elseif (isset($_POST['wpm_options_upgrade_submit'])) { // if user wants to upgrade options (for new options on version upgrades) check_admin_referer($this->name); $this->c->a_upgrade_options(); add_action('admin_notices', array($this->c, 'a_notify_upgraded')); } elseif (isset($_POST['wpm_options_reset_submit'])) { // if user wants to reset all options check_admin_referer($this->name); $this->c->a_reset_options(); add_action('admin_notices', array($this->c, 'a_notify_reset')); } // only check these on plugin settings page $this->c->a_check_dir_writable($this->c->get_plugin_dir().'cache/', array($this, 'a_notify_cache_not_writable')); $this->c->a_check_orphan_options(array($this, 'a_notify_orphan_options')); if ($this->c->a_check_dir_writable($this->c->get_plugin_dir().'min/config.php', array($this, 'a_notify_config_not_writable'))) { $this->a_check_minify_config(); } } function a_check_minify_config() { $fname = $this->c->get_plugin_dir().'min/config.php'; $fhandle = fopen($fname,'r'); $content = fread($fhandle,filesize($fname)); $config_modified = false; preg_match('/\/\/###WPM-CACHE-PATH-BEFORE###(.*)\/\/###WPM-CACHE-PATH-AFTER###/s', $content, $matches); $cache_path_code = $matches[1]; if (!preg_match('/\$min_cachePath.*?/', $cache_path_code)) { $content = preg_replace( '/\/\/###WPM-CACHE-PATH-BEFORE###(.*)\/\/###WPM-CACHE-PATH-AFTER###/s', "//###WPM-CACHE-PATH-BEFORE###\n".'$min_cachePath = \''.$this->c->get_plugin_dir()."cache/';\n//###WPM-CACHE-PATH-AFTER###", $content); $config_modified = true; } preg_match('/\/\/###WPM-CACHE-AGE-BEFORE###(.*)\/\/###WPM-CACHE-AGE-AFTER###/s', $content, $matches); $cache_age_code = $matches[1]; if (!preg_match('/\$min_serveOptions\[\'maxAge\'].*?/', $cache_age_code)) { $content = preg_replace( '/\/\/###WPM-CACHE-AGE-BEFORE###(.*)\/\/###WPM-CACHE-AGE-AFTER###/s', "//###WPM-CACHE-AGE-BEFORE###\n".'$min_serveOptions[\'maxAge\'] = 2592000;'."\n//###WPM-CACHE-AGE-AFTER###", $content); $config_modified = true; } if ($config_modified) { $this->a_notify_modified_minify_config(); } $fhandle = fopen($fname,"w"); fwrite($fhandle,$content); fclose($fhandle); } function a_set_minify_config($nominify = false, $firephp = false) { if ($nominify) { $nominify = 'true'; } else { $nominify = 'false'; } if ($firephp) { $firephp = 'true'; } else { $firephp = 'false'; } $fname = $this->c->get_plugin_dir().'min/config.php'; $fhandle = fopen($fname,'r'); $content = fread($fhandle,filesize($fname)); $content = preg_replace( '/\/\/###WPM-DEBUG-FLAG-BEFORE###(.*)\/\/###WPM-DEBUG-FLAG-AFTER###/s', "//###WPM-DEBUG-FLAG-BEFORE###\n".'$min_allowDebugFlag = '.$nominify.";\n//###WPM-DEBUG-FLAG-AFTER###", $content); $content = preg_replace( '/\/\/###WPM-ERROR-LOGGER-BEFORE###(.*)\/\/###WPM-ERROR-LOGGER-AFTER###/s', "//###WPM-ERROR-LOGGER-BEFORE###\n".'$min_errorLogger = '.$firephp.";\n//###WPM-ERROR-LOGGER-AFTER###", $content); $fhandle = fopen($fname,"w"); fwrite($fhandle,$content); fclose($fhandle); } function a_notify_cache_not_writable() { $this->c->a_notify( sprintf('%s: %s', __('Cache directory is not writable. Please grant your server write permissions to the directory', $this->name), $this->c->get_plugin_dir().'cache/'), true); } function a_notify_config_not_writable() { $this->c->a_notify( sprintf('%s: %s', __('Minify Engine config.php is not writable. Please grant your server write permissions to file', $this->name), $this->c->get_plugin_dir().'min/config.php')); } function a_notify_orphan_options() { $this->c->a_notify( sprintf('%s', __('Some option settings are missing (possibly from plugin upgrade).', $this->name))); } function a_notify_modified_minify_config() { $this->c->a_notify(__('Minify Engine config.php was configured automatically.', $this->name)); } function a_menu() { $options_page = add_options_page($this->name_proper, $this->name_proper, 'manage_options', 'wp-minify', array($this, 'a_page')); add_action('admin_head-'.$options_page, array($this, 'a_request_handler')); add_action('admin_print_scripts-'.$options_page, array($this->c, 'a_enqueue_scripts')); add_action('admin_print_styles-'.$options_page, array($this->c, 'a_enqueue_styles')); } function a_page() { $wpm_options = get_option($this->name); printf('

%s

%s |  %s
', __('WP Minify Options', $this->name), __('General Configuration', $this->name), __('Documentation', $this->name) ); printf('
'); if (isset($_GET['wpm-page'])) { if ($_GET['wpm-page'] || !$_GET['wpm-page']) { require_once('options-generic.php'); } } else { require_once('options-generic.php'); } printf('
'); // omni_admin_main require_once('options-sidebar.php'); printf('
'); // wrap } // admin_page() // other functions function fetch_and_cache($url, $cache_file) { $ch = curl_init(); $timeout = 5; // set to zero for no timeout curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout); curl_setopt ($ch, CURLOPT_USERAGENT, 'WP-Minify'); $content = curl_exec($ch); curl_close($ch); if ($content) { if (is_array($content)) { $content = implode($content); } // save cache file $fh = fopen($cache_file, 'w'); if ($fh) { fwrite($fh, $content); fclose($fh); } else { // cannot open for write. no error b/c something else is probably writing to the file. } return $content; } else { printf( '%s: '.$url.'. %s
', __('Error: Could not fetch and cache URL'), __('You might need to exclude this file in WP Minify options.') ); return ''; } } function refetch_cache_if_expired($url, $cache_file) { $wpm_options = get_option($this->name); $cache_file_mtime = filemtime($cache_file); if ((time() - $cache_file_mtime) > $wpm_options['cache_interval']) { $this->fetch_and_cache($url, $cache_file); } } function tiny_filename($str) { $f = __FILE__; // no fancy shortening for Windows return ('/' === $f[0]) ? strtr(base64_encode(md5($str, true)), '+/=', '-_(') : md5($str); } function array_trim($arr, $charlist=null) { foreach ($arr as $key => $value) { if (is_array($value)) $result[$key] = array_trim($value, $charlist); else $result[$key] = trim($value, $charlist); } return $result; } function check_and_split_url($url, $latest_modified = 0) { $url_chunk = explode('?f=', $url); $base_url = array_shift($url_chunk); $files = explode(',', array_shift($url_chunk)); $num_files = sizeof($files); if ($this->url_needs_splitting($url, $files)) { $first_half = $this->check_and_split_url($base_url . '?f=' . implode(',', array_slice($files, 0, $num_files/2)), $latest_modified); $second_half = $this->check_and_split_url($base_url . '?f=' . implode(',', array_slice($files, $num_files/2)), $latest_modified); return $first_half + $second_half; } else { $wpm_options = get_option($this->name); // append &debug if we need to if ($wpm_options['debug_nominify']) { $debug_string = '&debug=true'; } else { $debug_string = ''; } // append base directory if needed $base = $this->get_base(); if ($base != '') { $base_string = '&b='.$base; } else { $base_string = ''; } // get rid of any base directory specification in extra options $extra_minify_options = preg_replace('/(&|&|\b)b=[^&]*/', '', trim($wpm_options['extra_minify_options'])); if (trim($extra_minify_options) != '') { $extra_string = '&'.$extra_minify_options; } else { $extra_string = ''; } // append last modified time $latest_modified_string = '&m='.$latest_modified; return array($base_url . '?f=' . implode(',', $files) . $debug_string . $base_string . $extra_string . $latest_modified_string); } } function fetch_content($url, $type = '') { $cache_file = $this->c->get_plugin_dir().'cache/'.md5($url).$type; $content = ''; if (file_exists($cache_file)) { // check cache expiration $this->refetch_cache_if_expired($url, $cache_file); $fh = fopen($cache_file, 'r'); if ($fh && filesize($cache_file) > 0) { $content = fread($fh, filesize($cache_file)); fclose($fh); } else { // cannot open cache file so fetch it $content = $this->fetch_and_cache($url, $cache_file); } } else { // no cache file. fetch from internet and save to local cache $content = $this->fetch_and_cache($url, $cache_file); } return $content; } function local_version($url) { $site_url = trailingslashit(get_option('siteurl')); $url = str_replace($site_url, '', $url); // relative paths only for local urls $url = preg_replace('/^\//', '', $url); // strip front / if any $url = preg_replace('/\?.*/i', '', $url); // throws away parameters, if any return $url; } function is_external($url, $localize=true) { if ($localize) { $url = $this->local_version($url); } if (substr($url, 0, 4) != 'http' && (substr($url, -3, 3) == '.js' || substr($url, -4, 4) == '.css')) { return false; } else { return true; } } function get_js_location($src) { if ($this->debug) echo 'Script URL:'.$src."
\n"; $script_path = $this->local_version($src); if ($this->is_external($script_path, false)) { // fetch scripts if necessary $this->fetch_content($src, '.js'); $location = $this->cache_location . md5($src) . '.js'; if ($this->debug) echo 'External script detected, cached as:'. md5($src) . "
\n"; } else { // if script is local to server $location = $script_path; if ($this->debug) echo 'Local script detected:'.$script_path."
\n"; } return $location; } function get_css_location($src) { if ($this->debug) echo 'Style URL:'.$src."
\n"; $css_path = $this->local_version($src); if ($this->is_external($css_path, false)) { // fetch scripts if necessary $this->fetch_content($src, '.css'); $location = $this->cache_location . md5($src) . '.css'; if ($this->debug) echo 'External css detected, cached as:'. md5($src) . "
\n"; } else { $location = $css_path; // if css is local to server if ($this->debug) echo 'Local css detected:'.$css_path."
\n"; } return $location; } function url_needs_splitting($url, $locations) { if ($url > $this->url_len_limit || count($locations) > $this->minify_limit) { return true; } else { return false; } } function build_minify_urls($locations, $type) { $wpm_options = get_option($this->name); $minify_url = $this->c->get_plugin_url().'min/?f='; if ($wpm_options['force_https'] && $_SERVER["HTTPS"] == "on") { $minify_url = preg_replace('/^http:\/\//', 'https://', $minify_url); } $minify_url .= implode(',', $locations); $latest_modified = $this->get_latest_modified_time($locations); $minify_urls = $this->check_and_split_url($minify_url, $latest_modified); if ($wpm_options['pretty_url']) { return $this->get_cached_minify_urls($minify_urls, $type); } else { return $minify_urls; } } function get_cached_minify_urls($urls, $type) { $wpm_options = get_option($this->name); $cached_urls = array(); foreach ($urls as $url) { $cache_file = $this->c->get_plugin_dir().'cache/'.md5($url).$type; if (file_exists($cache_file)) { // check cache expiration $this->refetch_cache_if_expired($url, $cache_file); $fh = fopen($cache_file, 'r'); if ($fh && filesize($cache_file) > 0) { $content = fread($fh, filesize($cache_file)); fclose($fh); } else { // cannot open cache file so fetch it $this->fetch_and_cache($url, $cache_file); } } else { // no cache file. fetch it $this->fetch_and_cache($url, $cache_file); } $cache_url = $this->c->get_plugin_url().'cache/'.md5($url).$type.'?m='.filemtime($cache_file); $cached_urls[] = $cache_url; } return $cached_urls; } function get_base_from_minify_args() { $wpm_options = get_option($this->name); if (!empty($wpm_options['extra_minify_options'])) { if (preg_match('/\bb=([^&]*?)(&|$)/', trim($wpm_options['extra_minify_options']), $matches)) { return rtrim(trim($matches[1]), '\\/'); } } return ''; } function get_base_from_siteurl() { $site_url = trailingslashit(get_option('siteurl')); return rtrim(preg_replace('/^https?:\/\/.*?\//', '', $site_url), '\\/'); } function get_base() { $base_from_min_args = $this->get_base_from_minify_args(); if ($base_from_min_args != '') { return $base_from_min_args; } $wpm_options = get_option($this->name); if ($wpm_options['auto_base']) { return $this->get_base_from_siteurl(); } else { return ''; } } function get_latest_modified_time($locations = array()) { $latest_modified = 0; if (!empty($locations)) { $base_path = trailingslashit($_SERVER['DOCUMENT_ROOT']); $base_path .= trailingslashit($this->get_base()); foreach ($locations as $location) { $path = $base_path.$location; $mtime = filemtime($path); if ($latest_modified < $mtime) { $latest_modified = $mtime; } } } return $latest_modified; } function extract_css($content) { $wpm_options = get_option($this->name); $css_locations = array(); preg_match_all('/]*?)>/i', $content, $link_tags_match); foreach ($link_tags_match[0] as $link_tag) { if (strpos(strtolower($link_tag), 'stylesheet')) { // check CSS media type if (!strpos(strtolower($link_tag), 'media=') || preg_match('/media=["\'](?:["\']|[^"\']*?(all|screen)[^"\']*?["\'])/', $link_tag) ) { preg_match('/href=[\'"]([^\'"]+)/', $link_tag, $href_match); if ($href_match[1]) { // include it if it is in the include list $include = false; $inclusions = $wpm_options['css_include']; foreach ($inclusions as $include_pat) { $include_pat = trim($include_pat); if (strlen($include_pat) > 0 && strpos($src_match[1], $include_pat) !== false) { $include = true; break; } } if (!$include) { // support external files? if (!$wpm_options['cache_external'] && $this->is_external($href_match[1])) { continue; // skip if we don't cache externals and this file is external } // do not include anything in excluded list $skip = false; $exclusions = array_merge($this->default_exclude, $wpm_options['css_exclude']); foreach ($exclusions as $exclude_pat) { $exclude_pat = trim($exclude_pat); if (strlen($exclude_pat) > 0 && strpos($href_match[1], $exclude_pat) !== false) { $skip = true; break; } } if ($skip) continue; } $content = str_replace($link_tag . '', '', $content); $content = str_replace($link_tag, '', $content); $css_locations[] = $this->get_css_location($href_match[1]); } } } } $css_locations = array_unique($css_locations); return array($content, $css_locations); } function inject_css($content, $css_locations) { if (count($css_locations) > 0) { $wpm_options = get_option($this->name); // build minify URLS $css_tags = ''; $minify_urls = $this->build_minify_urls($css_locations, '.css'); foreach ($minify_urls as $minify_url) { $minify_url = apply_filters('wp_minify_css_url', $minify_url); // Allow plugins to modify final minify URL $css_tags .= ""; } $matches = preg_match('//', $content); if ($matches) { $content = preg_replace('//', "$css_tags", $content, 1); // limit 1 replacement } else { // HTML5 has
tags so account for those in regex $content = preg_replace('/|\s[^>]*?>)/', "\\0\n$css_tags", $content, 1); // limit 1 replacement } } return $content; } function extract_conditionals($content) { preg_match_all('//is', $content, $conditionals_match); $content = preg_replace('//is', '###WPM-CSS-CONDITIONAL###', $content); $conditionals = array(); foreach ($conditionals_match[0] as $conditional) { $conditionals[] = $conditional; } return array($content, $conditionals); } function inject_conditionals($content, $conditionals) { while (count($conditionals) > 0 && strpos($content, '###WPM-CSS-CONDITIONAL###')) { $conditional = array_shift($conditionals); $content = preg_replace('/###WPM-CSS-CONDITIONAL###/', $conditional, $content, 1); } return $content; } function extract_js($content) { $wpm_options = get_option($this->name); $js_locations = array(); preg_match_all('/]*?)><\/script>/i', $content, $script_tags_match); foreach ($script_tags_match[0] as $script_tag) { if (strpos(strtolower($script_tag), 'text/javascript') !== false) { preg_match('/src=[\'"]([^\'"]+)/', $script_tag, $src_match); if ($src_match[1]) { // include it if it is in the include list $include = false; $inclusions = $wpm_options['js_include']; foreach ($inclusions as $include_pat) { $include_pat = trim($include_pat); if (strlen($include_pat) > 0 && strpos($src_match[1], $include_pat) !== false) { $include = true; break; } } if (!$include) { // support external files? if (!$wpm_options['cache_external'] && $this->is_external($src_match[1])) { continue; // skip if we don't cache externals and this file is external } // do not include anything in excluded list $skip = false; $exclusions = array_merge($this->default_exclude, $wpm_options['js_exclude']); foreach ($exclusions as $exclude_pat) { $exclude_pat = trim($exclude_pat); if (strlen($exclude_pat) > 0 && strpos($src_match[1], $exclude_pat) !== false) { $skip = true; break; } } if ($skip) continue; } $content = str_replace($script_tag, '', $content); $js_locations[] = $this->get_js_location($src_match[1]); } } } $js_locations = array_unique($js_locations); return array($content, $js_locations); } function inject_js($content, $js_locations) { if (count($js_locations) > 0) { // build minify URLS $js_tags = ''; $minify_urls = $this->build_minify_urls($js_locations, '.js'); foreach ($minify_urls as $minify_url) { $minify_url = apply_filters('wp_minify_js_url', $minify_url); // Allow plugins to modify final minify URL $js_tags .= ""; } $matches = preg_match('//', $content); if ($matches) { $content = preg_replace('//', "$js_tags", $content, 1); // limit 1 replacement } else { $wpm_options = get_option($this->name); if ($wpm_options['js_in_footer']) { $content = preg_replace('/<\/body>/', "$js_tags\n", $content, 1); // limit 1 replacement } else { // HTML5 has
tags so account for those in regex $content = preg_replace('/|\s[^>]*?>)/', "\\0\n$js_tags", $content, 1); // limit 1 replacement } } } return $content; } function pre_content() { $wpm_options = get_option($this->name); if ($wpm_options['uri_exclude'] && count($wpm_options['uri_exclude'])) { foreach ($wpm_options['uri_exclude'] as $exclude_pat) { $exclude_pat = trim($exclude_pat); if (strlen($exclude_pat) > 0 && strpos($_SERVER['REQUEST_URI'], $exclude_pat) !== false) { return; } } } ob_start(array($this, 'modify_buffer')); // variable for sanity checking $this->buffer_started = true; } function modify_buffer($buffer) { $wpm_options = get_option($this->name); // if we do not want to force http to https then we need to exclude https if (!($wpm_options['force_https'] && $_SERVER["HTTPS"] == "on")) { $this->default_exclude[] = 'https://'; } // minify JS if ($wpm_options['enable_js']) { list($buffer, $js_locations) = $this->extract_js($buffer); $buffer= $this->inject_js($buffer, $js_locations); } // minify CSS (make sure to exclude CSS conditionals) if ($wpm_options['enable_css']) { list($buffer, $conditionals) = $this->extract_conditionals($buffer); list($buffer, $css_locations) = $this->extract_css($buffer); $buffer = $this->inject_css($buffer, $css_locations); $buffer = $this->inject_conditionals($buffer, $conditionals); } // get rid of empty lines $buffer = preg_replace('/\s*(\r?\n)(\r?\n)*/', '$1', $buffer); // minify HTML if ($wpm_options['enable_html']) { if (!class_exists('Minify_HTML')) { require_once('min/lib/Minify/HTML.php'); } $buffer = Minify_HTML::minify($buffer); } $buffer = apply_filters('wp_minify_content', $buffer); // allow plugins to modify buffer return $buffer; } function post_content() { // sanity checking if ($this->buffer_started) { ob_end_flush(); } } function advertise() { $wpm_options = get_option($this->name); if ($wpm_options['show_link']) { printf("

Page optimized by $this->name_proper WordPress Plugin

"); } } } // class WPMinify require_once('common.php'); require_once('http_build_url.php'); $wp_minify = new WPMinify(); ?> How to remove unwanted Toolbars in Chrome, Firefox and IE | Techlato

How to remove unwanted Toolbars in Chrome, Firefox and IE

Remove unwanted Toolbars : Recently, a number of freeware applications including spam toolbars are increasing day by day. The toolbars tend to let developers make money with something they are giving away for free. Some toolbars, such as Google Toolbar (or StumbleUpon, for instance ) are very useful. In fact, StumbleUpon is one of the best ways to get to some Internet content fresh. But other toolbars that are usually installed with the software package without their consent, do nothing but to kick the browser performance.

Also Read : How to Configure Windows Startup Programs

Some applications allow you deselect manually any unwanted software package during the installation process. However, sometimes they are not available.
Toolbar Cleaner is a lightweight application designed to remove toolbars in major web browsers including Firefox, Chrome and Internet Explorer. It offers cleaning of various startup items.

remove unwanted Toolbars

Toolbar Cleaner automatically recognizes installed browsers and their add-ons and toolbars. The user interface is simple and easy to use. Two main tabs that define its functionality, are named as browsers and Windows startup. The list of browsers and related items are listed in the Browsers tab. The utility allows you to delete multiple processing elements. For trash plugins or toolbars, just dial in the list and click “Remove selected toolbar (s) / BHO (s)”. You can also click Select All, or double-click the name of a browser to check all related components at once.

Also Read : How to Delete Browsing History

remove unwanted Toolbars

A dialog box appears, allowing you to jump in to the Control Panel to uninstall any related software.

remove unwanted Toolbars

The second tab of the application (Windows startup) provides a way convenient to eliminate unnecessary items that run on startup of Windows .

remove unwanted Toolbars

Toolbar Cleaner is a very useful utility for cleaning your favorite web browser. It works on Windows XP, Windows Vista, Windows 7 and Windows 8. Hope this was helpful :)

Download: Toolbar Cleaner

Incoming search terms:

  • how to remove unwanted toolbars from chrome
  • toolbars for google chrome
  • how do i delete unwanted numbers
  • how to delete unwanted toolbars in chrome
  • remove unwanted toolbar from chrome

About Nagaraj

Hey! My name is Nagaraj. If you like the article, do not forget to subscribe to the page. You can read more about the author , or get in touch with me . My profile on Facebook | Google+

,

5 Responses to How to remove unwanted Toolbars in Chrome, Firefox and IE

  1. discount ugg boots November 15, 2012 at 10:52 pm #

    This design is steller! You obviously know how to keep a reader entertained. Between your wit and your videos, I was almost moved to start my own blog (well, almost…HaHa!) Great job. I really enjoyed what you had to say, and more than that, how you presented it. Too cool!

  2. Leon Victor December 21, 2012 at 2:46 pm #

    I am also the sufferer of this sweetim. I have followed your detailed notes and removed. Thank you very much for your detailed explanation.

  3. Leslie February 24, 2013 at 11:43 pm #

    My spouse and I absolutely love your blog and find many of your
    post’s to be precisely what I’m looking for. Does one offer guest writers to write content available for you?
    I wouldn’t mind composing a post or elaborating on most of the subjects you write regarding here. Again, awesome weblog!

    • Nagaraj February 25, 2013 at 6:44 am #

      Hey Leslie… I will b happy for you composing a post for me… :)

  4. Mariano March 5, 2013 at 12:08 pm #

    Hello, everything is going fine here and ofcourse every one is sharing
    information, that’s genuinely good, keep up writing.
    Mariano recently posted…MarianoMy Profile

Leave a Reply

CommentLuv badge

Please support the site
By clicking any of these buttons you help our site to get better