public function getSkinUrl($file = null, array $params = array()) { $fileExtension = pathinfo($file, PATHINFO_EXTENSION); if (self::$cacheImages === false or in_array($fileExtension, array('gif', 'jpg', 'jpeg', 'png', 'bmp', 'svg')) === false) { return parent::getSkinUrl($file, $params); } Varien_Profiler::start(__METHOD__); if (empty($params['_type'])) { $params['_type'] = 'skin'; } if (empty($params['_default'])) { $params['_default'] = false; } $this->updateParamDefaults($params); if (!empty($file)) { $result = $this->_fallback($file, $params, array(array(), array('_theme' => $this->getFallbackTheme()), array('_theme' => self::DEFAULT_THEME))); } $sourceFile = $this->getSkinBaseFile($params) . (empty($file) ? '' : $file); if (file_exists($sourceFile) === false) { return parent::getSkinUrl($file, $params); } $fileName = substr(md5($sourceFile), 0, 6); $file = self::getCacheMediaDir() . DS . dechex(ceil(hexdec($fileName[0] . $fileName[1] . $fileName[2]) / 16)) . DS . $fileName[3] . DS . pathinfo($sourceFile, PATHINFO_FILENAME) . '.' . pathinfo($sourceFile, PATHINFO_EXTENSION); if (self::$checkFilemtime === true) { if (@filemtime($sourceFile) >= @filemtime($file)) { if (@filemtime($file) > 0) { @unlink($file); } } } if (file_exists($file) === false) { if (!is_dir(dirname($file))) { Extendware_EWCore_Helper_File::mkdir(dirname($file)); } copy($sourceFile, $file); if (Mage::helper('ewimageopt/config')->isSkinImageOptimizingEnabled() === true) { if (Mage::helper('ewimageopt/config')->getOptimizerMode() == 'realtime') { if (Mage::helper('ewimageopt')->lock('optimizer.lock') === true) { Mage::helper('ewimageopt')->optimizeImage($file, false); Mage::helper('ewimageopt')->unlock('optimizer.lock'); } } } } $baseDir = self::getCacheMediaDir(); $path = str_replace($baseDir . DS, '', $file); $result = $this->getBaseUrl() . Mage::helper('ewimageopt/config')->getSlugCustomPath() . '/media/skin/' . str_replace(DS, '/', $path); Varien_Profiler::stop(__METHOD__); return $result; }
public function mediaDirective($construction) { if (!$this instanceof Mage_Widget_Model_Template_Filter) { return parent::mediaDirective($construction); } if (self::$cacheImages === true) { $params = $this->_getIncludeParameters($construction[2]); $sourceFile = Mage::getConfig()->getOptions()->getMediaDir() . DS . $params['url']; if (file_exists($sourceFile) === false) { return parent::mediaDirective($construction); } $fileName = substr(md5($sourceFile), 0, 6); $file = self::getCacheMediaDir() . DS . dechex(ceil(hexdec($fileName[0] . $fileName[1] . $fileName[2]) / 16)) . DS . $fileName[3] . DS . pathinfo($sourceFile, PATHINFO_FILENAME) . '.' . pathinfo($sourceFile, PATHINFO_EXTENSION); if (self::$checkFilemtime === true) { if (@filemtime($sourceFile) >= @filemtime($file)) { if (@filemtime($file) > 0) { @unlink($file); } } } if (file_exists($file) === false) { if (!is_dir(dirname($file))) { Extendware_EWCore_Helper_File::mkdir(dirname($file)); } copy($sourceFile, $file); if (Mage::helper('ewimageopt/config')->isSkinImageOptimizingEnabled() === true) { if (Mage::helper('ewimageopt/config')->getOptimizerMode() == 'realtime') { if (Mage::helper('ewimageopt')->lock('optimizer.lock') === true) { Mage::helper('ewimageopt')->optimizeImage($file, false); Mage::helper('ewimageopt')->unlock('optimizer.lock'); } } } } $baseDir = self::getCacheMediaDir(); $path = str_replace($baseDir . DS, '', $file); return $this->getBaseUrl() . Mage::helper('ewimageopt/config')->getSlugCustomPath() . '/media/template/' . str_replace(DS, '/', $path); } return parent::mediaDirective($construction); }
private function createCachedFiles($type, $name, $contents) { $cacheDirectory = $this->getMinifyCacheDirectory() . DS . $type; if (is_dir($cacheDirectory) === false) { Extendware_EWCore_Helper_File::mkdir($cacheDirectory); } self::createHtaccessFile(); $contentType = $type == 'js' ? 'application/x-javascript' : 'text/css'; $typeMap = ''; $contentLength = strlen($contents); @self::filePutContents($cacheDirectory . DS . $name, $contents, LOCK_EX); $typeMap .= self::getTypeMapSection($name, $contentType, null, 0.001); if (function_exists('gzdeflate')) { $compressedContents = gzdeflate($contents, 9); @self::filePutContents($cacheDirectory . DS . $name . '.zd', $compressedContents, LOCK_EX); $typeMap .= self::getTypeMapSection($name . '.zd', $contentType, 'deflate', $this->getQualityScore($contentLength, strlen($compressedContents))); } if (function_exists('gzencode')) { $compressedContents = gzencode($contents, 9); @self::filePutContents($cacheDirectory . DS . $name . '.zg', $compressedContents, LOCK_EX); $typeMap .= self::getTypeMapSection($name . '.zg', $contentType, 'x-gzip', $this->getQualityScore($contentLength, strlen($compressedContents))); } if (function_exists('gzcompress')) { $compressedContents = gzcompress($contents, 9); @self::filePutContents($cacheDirectory . DS . $name . '.zc', $compressedContents, LOCK_EX); $typeMap .= self::getTypeMapSection($name . '.zc', $contentType, 'x-compress', $this->getQualityScore($contentLength, strlen($compressedContents))); } @self::filePutContents($cacheDirectory . DS . $name . '.var', $typeMap, LOCK_EX); return $this; }