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