/** * 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; }