/**
  * @param \AssetsBundle\AssetFile\AssetFile $oAssetFile
  * @return boolean|string
  */
 public function getCachedFilteredContent(\AssetsBundle\AssetFile\AssetFile $oAssetFile)
 {
     if (file_exists($sCachedFilteredContentFilePath = $this->getCachedFilteredContentFilePath($oAssetFile))) {
         $oFilteredAssetFile = new \AssetsBundle\AssetFile\AssetFile(array('assetFilePath' => $sCachedFilteredContentFilePath, 'assetFileType' => $oAssetFile->getAssetFileType()));
         if (($iFilteredAssetFileLastModified = $oFilteredAssetFile->getAssetFileLastModified()) && ($iAssetFileLastModified = $oAssetFile->getAssetFileLastModified()) && $iFilteredAssetFileLastModified >= $iAssetFileLastModified) {
             return $oFilteredAssetFile->getAssetFileContents();
         }
     }
     return false;
 }
 /**
  * Cache media asset files and retrieve cached asset files
  * @return array
  */
 protected function cacheMediaAssetFiles()
 {
     $aAssetFileFilters = array();
     $aAssetFiles = array();
     //Retrieve asset files cache manager
     $oAssetFilesCacheManager = $this->getAssetFilesCacheManager();
     // Retrieve asset file filters manager
     $oAssetFileFiltersManager = $this->getAssetFileFiltersManager();
     $bIsProduction = $this->getOptions()->isProduction();
     foreach ($this->getAssetFilesConfiguration()->getAssetFiles(\AssetsBundle\AssetFile\AssetFile::ASSET_MEDIA) as $oAssetFile) {
         if ($oAssetFilesCacheManager->isAssetFileCached($oAssetFile)) {
             $aAssetFiles[] = $oAssetFilesCacheManager->getAssetFileCachePath($oAssetFile);
             continue;
         }
         if ($bIsProduction) {
             if (!isset($aAssetFileFilters[$sAssetFileExtension = $oAssetFile->getAssetFileExtension()])) {
                 $aAssetFileFilters[$sAssetFileExtension] = $oAssetFileFiltersManager->has($sAssetFileExtension) ? $oAssetFileFiltersManager->get($sAssetFileExtension) : null;
             }
             $oMediaFileFilter = $aAssetFileFilters[$sAssetFileExtension];
         } else {
             $oMediaFileFilter = null;
         }
         if ($oMediaFileFilter) {
             // Create tmp asset file
             \Zend\Stdlib\ErrorHandler::stop(true);
             $sTmpAssetFilePath = tempnam($this->getOptions()->getTmpDirPath(), '.' . $sAssetFileExtension);
             \Zend\Stdlib\ErrorHandler::start();
             $oTmpAssetFile = new \AssetsBundle\AssetFile\AssetFile(array('asset_file_type' => \AssetsBundle\AssetFile\AssetFile::ASSET_MEDIA, 'asset_file_path' => $sTmpAssetFilePath));
             $oTmpAssetFile->setAssetFileContents($oMediaFileFilter->filterAssetFile($oAssetFile), false);
             // Cache asset file
             $aAssetFiles[] = $oAssetFilesCacheManager->cacheAssetFile($oTmpAssetFile, $oAssetFile);
             // Unlink tmp asset file
             \Zend\Stdlib\ErrorHandler::stop(true);
             unlink($sTmpAssetFilePath);
             \Zend\Stdlib\ErrorHandler::start();
         } else {
             // Cache asset file
             $aAssetFiles[] = $oAssetFilesCacheManager->cacheAssetFile($oAssetFile);
         }
     }
     return $aAssetFiles;
 }
 /**
  * @param array $aAssetFileOptions
  * @return \AssetsBundle\AssetFile\AssetFilesConfiguration
  * @throws \InvalidArgumentException
  */
 public function addAssetFileFromOptions(array $aAssetFileOptions)
 {
     if (empty($aAssetFileOptions['asset_file_type'])) {
         throw new \InvalidArgumentException('Asset file type is empty');
     }
     // Initialize asset file
     $oAssetFile = new \AssetsBundle\AssetFile\AssetFile();
     $oAssetFile->setAssetFileType($aAssetFileOptions['asset_file_type']);
     unset($aAssetFileOptions['asset_file_type']);
     // Retrieve asset file path
     if (empty($aAssetFileOptions['asset_file_path'])) {
         throw new \InvalidArgumentException('Asset file path is empty');
     }
     if (!is_string($aAssetFileOptions['asset_file_path'])) {
         throw new \InvalidArgumentException('Asset file path expects string, "' . gettype($aAssetFileOptions['asset_file_path']) . '" given');
     }
     // Retrieve asset file realpath
     $sAssetRealPath = $this->getOptions()->getRealPath($aAssetFileOptions['asset_file_path']) ?: $aAssetFileOptions['asset_file_path'];
     if (is_dir($sAssetRealPath)) {
         foreach ($this->getAssetFilesPathFromDirectory($sAssetRealPath, $oAssetFile->getAssetFileType()) as $sChildAssetRealPath) {
             $oNewAssetFile = clone $oAssetFile;
             $this->addAssetFile($oNewAssetFile->setAssetFilePath($sChildAssetRealPath));
         }
         return $this;
     }
     return $this->addAssetFile($oAssetFile->setAssetFilePath($sAssetRealPath));
 }