Esempio n. 1
0
 /**
  * Deletes the cache file for the given hash
  * 
  * @param string $hash
  * @return boolean
  */
 protected function removeCacheFile($hash)
 {
     if (!$this->hasCachedFile($hash)) {
         return false;
     }
     $fileData = $this->cachedFiles[$hash];
     $this->fileBackend->deleteFile($fileData['file']);
 }
Esempio n. 2
0
 /**
  * Optimizes the urls in the css content.
  * 
  * @access protected
  * @param string $content
  * @param string $file
  * @return string
  */
 protected function optimizeUrls($content, $file)
 {
     preg_match_all('/url\\((.[^\\)]*)\\)/is', $content, $matches, PREG_SET_ORDER);
     foreach ($matches as $match) {
         $uri = $match[1];
         // Remove the apostrophs
         if (strpos($uri, '\'') === 0 || strpos($uri, '"') === 0) {
             $uri = substr($uri, 1, -1);
         }
         // If the uri is an absolute url we do not change anything
         if (strpos($uri, 'http') === 0) {
             continue;
         }
         $additionalData = $this->getAdditionalUriData($uri);
         $uri = $this->removeAdditionalUriData($uri);
         $path = dirname($file);
         $fullFilePath = realpath($path . '/' . $uri);
         $fileInformation = pathinfo($fullFilePath);
         $imageExtensions = array('png', 'jpg', 'jpeg', 'gif');
         if (in_array($fileInformation['extension'], $imageExtensions)) {
             // Load the file content
             $fileContent = $this->fileBackend->loadFromFile($fullFilePath);
             // Encode the file content
             $encodedContent = base64_encode($fileContent);
             $urlData = 'data:image/gif;base64,' . $encodedContent;
             // Replace the reference in the css content
             $content = str_replace($match[1], '\'' . $urlData . '\'', $content);
         } else {
             $type = AssetManager::BINARY;
             // Cache the file
             $cachedFile = $this->assetCacheManager->generateCachedFile($type, $fullFilePath);
             $url = $this->assetCacheManager->getUrlToTheAssetLoader($cachedFile['file']);
             // Add the additional data
             if ($additionalData !== '') {
                 $url .= $additionalData;
             }
             // Replace the reference in the css content
             $content = str_replace($match[1], '\'' . $url . '\'', $content);
         }
     }
     return $content;
 }