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); }
/** * Returns minify cache object * * @return object */ function _get_cache() { static $cache = array(); if (!isset($cache[0])) { switch ($this->_config->get_string('minify.engine')) { case 'memcached': $config = array('blog_id' => Util_Environment::blog_id(), 'instance_id' => Util_Environment::instance_id(), 'host' => Util_Environment::host(), 'module' => 'minify', 'servers' => $this->_config->get_array('minify.memcached.servers'), 'persistent' => $this->_config->get_boolean('minify.memcached.persistent'), 'aws_autodiscovery' => $this->_config->get_boolean('minify.memcached.aws_autodiscovery'), 'username' => $this->_config->get_boolean('minify.memcached.username'), 'password' => $this->_config->get_boolean('minify.memcached.password')); if (class_exists('Memcached')) { $w3_cache = new Cache_Memcached($config); } else { if (class_exists('Memcache')) { $w3_cache = new Cache_Memcache($config); } } $cache[0] = new \Minify_Cache_W3TCDerived($w3_cache); break; case 'redis': $config = array('blog_id' => Util_Environment::blog_id(), 'instance_id' => Util_Environment::instance_id(), 'host' => Util_Environment::host(), 'module' => 'minify', 'servers' => $this->_config->get_array('minify.redis.servers'), 'persistent' => $this->_config->get_boolean('minify.redis.persistent'), 'dbid' => $this->_config->get_boolean('minify.redis.dbid'), 'password' => $this->_config->get_boolean('minify.redis.password')); if (class_exists('Memcached')) { $w3_cache = new Cache_Memcached($config); } else { if (class_exists('Memcache')) { $w3_cache = new Cache_Memcache($config); } } $cache[0] = new \Minify_Cache_W3TCDerived($w3_cache); break; case 'apc': $config = array('blog_id' => Util_Environment::blog_id(), 'instance_id' => Util_Environment::instance_id(), 'host' => Util_Environment::host(), 'module' => 'minify'); if (function_exists('apcu_store')) { $w3_cache = new Cache_Apcu($config); } else { if (function_exists('apc_store')) { $w3_cache = new Cache_Apc($config); } } $cache[0] = new \Minify_Cache_W3TCDerived($w3_cache); break; case 'eaccelerator': $config = array('blog_id' => Util_Environment::blog_id(), 'instance_id' => Util_Environment::instance_id(), 'host' => Util_Environment::host(), 'module' => 'minify'); $w3_cache = new Cache_Eaccelerator($config); $cache[0] = new \Minify_Cache_W3TCDerived($w3_cache); break; case 'xcache': $config = array('blog_id' => Util_Environment::blog_id(), 'instance_id' => Util_Environment::instance_id(), 'host' => Util_Environment::host(), 'module' => 'minify'); $w3_cache = new Cache_Xcache($config); $cache[0] = new \Minify_Cache_W3TCDerived($w3_cache); break; case 'wincache': $config = array('blog_id' => Util_Environment::blog_id(), 'instance_id' => Util_Environment::instance_id(), 'host' => Util_Environment::host(), 'module' => 'minify'); $w3_cache = new Cache_Wincache($config); $cache[0] = new \Minify_Cache_W3TCDerived($w3_cache); break; case 'file': default: $cache[0] = new \Minify_Cache_File(Util_Environment::cache_blog_minify_dir(), array('.htaccess', 'index.php', '*.old'), $this->_config->get_boolean('minify.file.locking'), $this->_config->get_integer('timelimit.cache_flush'), Util_Environment::blog_id() == 0 ? W3TC_CACHE_MINIFY_DIR : null); break; } } return $cache[0]; }
/** * Gets regexp for minified files * * @return string */ private function minify_url_regexp($filename_mask) { $minify_base_url = Util_Environment::filename_to_url(Util_Environment::cache_blog_minify_dir()); $matches = null; if (!preg_match('~((https?://)?([^/]+))(.+)~i', $minify_base_url, $matches)) { return ''; } $protocol_domain_regexp = Util_Environment::get_url_regexp($matches[1]); $path_regexp = Util_Environment::preg_quote($matches[4]); $regexp = '(' . '(' . $protocol_domain_regexp . ')?' . '(' . $path_regexp . $filename_mask . ')' . ')'; return $regexp; }