/** * Fixes environment in each wp-admin request * * @param Config $config * @param bool $force_all_checks * * @throws Util_Environment_Exceptions */ public function fix_on_wpadmin_request($config, $force_all_checks) { $exs = new Util_Environment_Exceptions(); $this->fix_folders($config, $exs); if ($config->get_boolean('config.check') || $force_all_checks) { if ($config->get_boolean('minify.enabled') && Util_Rule::can_check_rules() && $config->get_boolean('minify.rewrite')) { $this->rules_core_add($config, $exs); } else { $this->rules_core_remove($exs); } if ($config->get_boolean('minify.enabled') && $config->get_string('minify.engine') == 'file') { $this->rules_cache_add($config, $exs); } else { $this->rules_cache_remove($exs); } } // if no errors so far - check if rewrite actually works if (count($exs->exceptions()) <= 0 || true) { try { if ($config->get_boolean('minify.enabled') && $config->get_boolean('minify.rewrite') && $config->get_boolean('minify.debug')) { $this->verify_rewrite_working(); } } catch (\Exception $ex) { $exs->push($ex); } if ($config->get_boolean('minify.enabled')) { $this->verify_engine_working($config, $exs); } } if (count($exs->exceptions()) > 0) { throw $exs; } }
/** * General tab * * @return void */ function view() { global $current_user; $config_master = $this->_config_master; /** * * * @var $modules W3_ModuleStatus */ $modules = Dispatcher::component('ModuleStatus'); $pgcache_enabled = $modules->is_enabled('pgcache'); $dbcache_enabled = $modules->is_enabled('dbcache'); $objectcache_enabled = $modules->is_enabled('objectcache'); $browsercache_enabled = $modules->is_enabled('browsercache'); $minify_enabled = $modules->is_enabled('minify'); $cdn_enabled = $modules->is_enabled('cdn'); $varnish_enabled = $modules->is_enabled('varnish'); $enabled = $modules->plugin_is_enabled(); $enabled_checkbox = $modules->all_modules_enabled(); $check_rules = Util_Rule::can_check_rules(); $disc_enhanced_enabled = !(!$check_rules || !$this->is_master() && Util_Environment::is_wpmu() && $config_master->get_string('pgcache.engine') != 'file_generic'); $can_empty_file = $modules->can_empty_file(); $can_empty_varnish = $modules->can_empty_varnish(); $cdn_mirror_purge = Cdn_Util::can_purge_all($modules->get_module_engine('cdn')); $file_nfs = $this->_config->get_boolean('pgcache.file.nfs') || $this->_config->get_boolean('minify.file.nfs'); $file_locking = $this->_config->get_boolean('dbcache.file.locking') || $this->_config->get_boolean('objectcache.file.locking') || $this->_config->get_boolean('pgcache.file.locking') || $this->_config->get_boolean('minify.file.locking'); $licensing_visible = (!Util_Environment::is_wpmu() || is_network_admin()) && !ini_get('w3tc.license_key') && get_transient('w3tc_license_status') != 'host_valid'; $custom_areas = apply_filters("w3tc_settings_general_anchors", array()); include W3TC_INC_DIR . '/options/general.php'; }
/** * Minify tab * * @return void */ function view() { $minify_enabled = $this->_config->get_boolean('minify.enabled'); $config_state = Dispatcher::config_state(); $minify_rewrite_disabled = !Util_Rule::can_check_rules() || $this->_config->is_sealed('minify.rewrite'); $themes = Util_Theme::get_themes_by_key(); $templates = array(); $current_theme = Util_Theme::get_current_theme_name(); $current_theme_key = ''; foreach ($themes as $theme_key => $theme_name) { if ($theme_name == $current_theme) { $current_theme_key = $theme_key; } $templates[$theme_key] = Util_Theme::get_theme_templates($theme_name); } $css_imports_values = array('' => 'None', 'bubble' => 'Bubble', 'process' => 'Process'); $auto = $this->_config->get_boolean('minify.auto'); $js_theme = Util_Request::get_string('js_theme', $current_theme_key); $js_groups = $this->_config->get_array('minify.js.groups'); $css_theme = Util_Request::get_string('css_theme', $current_theme_key); $css_groups = $this->_config->get_array('minify.css.groups'); $js_engine = $this->_config->get_string('minify.js.engine'); $css_engine = $this->_config->get_string('minify.css.engine'); $html_engine = $this->_config->get_string('minify.html.engine'); $css_imports = $this->_config->get_string('minify.css.imports'); // Required for Update Media Query String button $browsercache_enabled = $this->_config->get_boolean('browsercache.enabled'); $browsercache_update_media_qs = $this->_config->get_boolean('browsercache.cssjs.replace'); include W3TC_INC_DIR . '/options/minify.php'; }
public static function minified_url($minify_filename) { $path = Util_Environment::cache_blog_minify_dir(); $filename = $path . '/' . $minify_filename; $c = Dispatcher::config(); if (Util_Rule::can_check_rules() && $c->get_boolean('minify.rewrite')) { return Util_Environment::filename_to_url($filename); } return network_site_url('?w3tc_minify=' . $minify_filename); }
/** * Install tab * * @return void */ function view() { $rewrite_rules_descriptors = array(); if (Util_Rule::can_check_rules()) { $e = Dispatcher::component('Root_Environment'); $rewrite_rules_descriptors = $e->get_required_rules($this->_config); $other_areas = $e->get_other_instructions($this->_config); } include W3TC_INC_DIR . '/options/install.php'; }
/** * CDN tab * * @return void */ function view() { $config = Dispatcher::config(); $cdn_engine = $config->get_string('cdn.engine'); if (Cdn_Util::is_engine_fsd($cdn_engine)) { do_action('w3tc_settings_cdn'); return; } $cdn_enabled = $config->get_boolean('cdn.enabled'); $cdn_mirror = Cdn_Util::is_engine_mirror($cdn_engine); $cdn_mirror_purge_all = Cdn_Util::can_purge_all($cdn_engine); $cdn_common = Dispatcher::component('Cdn_Core'); $cdn = $cdn_common->get_cdn(); $cdn_supports_header = $cdn->headers_support() == W3TC_CDN_HEADER_MIRRORING; $minify_enabled = $config->get_boolean('minify.enabled') && Util_Rule::can_check_rules() && $config->get_boolean('minify.rewrite') && (!$config->get_boolean('minify.auto') || Cdn_Util::is_engine_mirror($config->get_string('cdn.engine'))); $cookie_domain = $this->get_cookie_domain(); $set_cookie_domain = $this->is_cookie_domain_enabled(); // Required for Update Media Query String button $browsercache_enabled = $config->get_boolean('browsercache.enabled'); $browsercache_update_media_qs = $config->get_boolean('browsercache.cssjs.replace') || $config->get_boolean('browsercache.other.replace'); if (in_array($cdn_engine, array('netdna', 'maxcdn'))) { $pull_zones = array(); $authorization_key = $config->get_string("cdn.{$cdn_engine}.authorization_key"); $zone_id = $config->get_integer("cdn.{$cdn_engine}.zone_id"); $alias = $consumerkey = $consumersecret = ''; if ($authorization_key) { $keys = explode('+', $authorization_key); if (sizeof($keys) == 3) { list($alias, $consumerkey, $consumersecret) = $keys; } } $authorized = $authorization_key != '' && $alias && $consumerkey && $consumersecret; $have_zone = $zone_id != 0; if ($authorized) { require_once W3TC_LIB_NETDNA_DIR . '/NetDNA.php'; try { $api = new \NetDNA($alias, $consumerkey, $consumersecret); $pull_zones = $api->get_zones_by_url(get_home_url()); } catch (\Exception $ex) { Util_Ui::error_box('<p>There is an error with your CDN settings: ' . $ex->getMessage() . '</p>'); } } } include W3TC_INC_DIR . '/options/cdn.php'; }
checked($browsercache_nocookies, true); ?> /> <?php _e("Don't set cookies for static files", 'w3-total-cache'); ?> </label> <br /><span class="description"><?php _e('Removes Set-Cookie header for responses.'); ?> </span> </th> </tr> <tr> <th colspan="2"> <?php $this->checkbox('browsercache.no404wp', !Util_Rule::can_check_rules()); ?> <?php Util_Ui::e_config_label('browsercache.no404wp'); ?> </label> <br /><span class="description"><?php _e('Reduce server load by allowing the web server to handle 404 (not found) errors for static files (images etc).', 'w3-total-cache'); ?> </span> <br /><span class="description"><?php _e('If enabled - you may get 404 File Not Found response for some files generated on-the-fly by WordPress plugins. You may add those file URIs to 404 error exception list below to avoid that.', 'w3-total-cache'); ?> </span> </th> </tr>
</p> </form> <form id="minify_form" action="admin.php?page=<?php echo $this->_page; ?> " method="post"> <div class="metabox-holder"> <?php Util_Ui::postbox_header(__('General', 'w3-total-cache'), '', 'general'); ?> <table class="form-table"> <tr> <th colspan="2"> <?php $this->checkbox('minify.rewrite', $minify_rewrite_disabled, '', true, !Util_Rule::can_check_rules() ? false : null); ?> <?php Util_Ui::e_config_label('minify.rewrite'); ?> </label><br /> <span class="description"><?php _e('If disabled, <acronym title="Cascading Style Sheet">CSS</acronym> and <acronym title="JavaScript">JS</acronym> embeddings will use GET variables instead of "fancy" links.', 'w3-total-cache'); ?> </span> </th> </tr> <tr> <th colspan="2"> <?php $this->checkbox('minify.reject.logged');
?> <code><?php _e('Not defined', 'w3-total-cache'); ?> </code> <?php } ?> </li> <li> <?php _e('URL rewrite:', 'w3-total-cache'); ?> <?php if (Util_Rule::can_check_rules()) { ?> <code><?php _e('Enabled', 'w3-total-cache'); ?> </code> <?php } else { ?> <code><?php _e('Disabled', 'w3-total-cache'); ?> </code> <?php } ?>
/** * Exports min files to CDN * * @return array */ function get_files_minify() { $files = array(); if ($this->_config->get_boolean('minify.rewrite') && Util_Rule::can_check_rules() && (!$this->_config->get_boolean('minify.auto') || Cdn_Util::is_engine_mirror($this->_config->get_string('cdn.engine')))) { $minify = Dispatcher::component('Minify_Plugin'); $document_root = Util_Environment::document_root(); $minify_root = Util_Environment::cache_blog_dir('minify'); $minify_path = ltrim(str_replace($document_root, '', $minify_root), '/'); $urls = $minify->get_urls(); // in WPMU + network admin (this code used for minify manual only) // common minify files are stored under context of main blog (i.e. 1) // but have urls of 0 blog, so download has to be used if ($this->_config->get_string('minify.engine') == 'file' && !(Util_Environment::is_wpmu() && is_network_admin())) { foreach ($urls as $url) { Util_Http::get($url); } $files = Cdn_Util::search_files($minify_root, $minify_path, '*.css;*.js'); } else { foreach ($urls as $url) { $file = Util_Environment::normalize_file_minify($url); $file = Util_Environment::translate_file($file); if (!Util_Environment::is_url($file)) { $file = $document_root . '/' . $file; $file = ltrim(str_replace($minify_root, '', $file), '/'); $dir = dirname($file); if ($dir) { Util_File::mkdir($dir, 0777, $minify_root); } if (Util_Http::download($url, $minify_root . '/' . $file) !== false) { $files[] = $minify_path . '/' . $file; } } } } } return $files; }