ce(Mage::getBaseDir().DS, '', $file); $this->_callbackFileDir = dirname($file); } /** * Callback function replaces relative links for @import matches in css file * * @param array $match * @return string */ protected function _cssMergerImportCallback($match) { $quote = $match[1]; $uri = $this->_prepareUrl($match[2]); return "@import {$quote}{$uri}{$quote}"; } /** * Callback function replaces relative links for url() matches in css file * * @param array $match * @return string */ protected function _cssMergerUrlCallback($match) { $quote = ($match[1][0] == "'" || $match[1][0] == '"') ? $match[1][0] : ''; $uri = ($quote == '') ? $match[1] : substr($match[1], 1, strlen($match[1]) - 2); $uri = $this->_prepareUrl($uri); return "url({$quote}{$uri}{$quote})"; } /** * Prepare url for css replacement * * @param string $uri * @return string */ protected function _prepareUrl($uri) { // check absolute or relative url if (!preg_match('/^[http|https]/i', $uri) && !preg_match('/^\//i', $uri)) { $fileDir = ''; $pathParts = explode(DS, $uri); $fileDirParts = explode(DS, $this->_callbackFileDir); $baseUrl = Mage::getBaseUrl('web'); foreach ($pathParts as $key=>$part) { if ($part == '.' || $part == '..') { unset($pathParts[$key]); } if ($part == '..' && count($fileDirParts)) { $fileDirParts = array_slice($fileDirParts, 0, count($fileDirParts) - 1); } } if (count($fileDirParts)) { $fileDir = implode('/', $fileDirParts).'/'; } $uri = $baseUrl.$fileDir.implode('/', $pathParts); } return $uri; } } class Mage_Core_Model_Design_Package extends Aitoc_Aitsys_Model_Rewriter_Mage_Core_Model_Design_Package { /** * Changing path for patched layouts */ public function getLayoutFilename($file, array $params=array()) { $filename = parent::getLayoutFilename($file, $params); $filenameNew = str_replace(Mage::getBaseDir('app'), Mage::getBaseDir('var') . DS . 'ait_patch', $filename); if (file_exists($filenameNew)) { $filename = $filenameNew; } else { $filenameNew = str_replace(DS . 'base' . DS, DS . 'default' . DS, $filenameNew); if (file_exists($filenameNew)) { $filename = $filenameNew; } } return $filename; } }