/** * @param string $sAssetFileType * @return array * @throws \InvalidArgumentException * @throws \LogicException */ public function getProductionCachedAssetFiles($sAssetFileType) { if (!\AssetsBundle\AssetFile\AssetFile::assetFileTypeExists($sAssetFileType)) { throw new \InvalidArgumentException('Asset file type "' . $sAssetFileType . '" is not valid'); } if (in_array($sAssetFileType, array(\AssetsBundle\AssetFile\AssetFile::ASSET_CSS, \AssetsBundle\AssetFile\AssetFile::ASSET_JS))) { $sCacheFileName = $this->getOptions()->getCacheFileName(); $sCacheFileExtension = \AssetsBundle\AssetFile\AssetFile::getAssetFileDefaultExtension($sAssetFileType); if (file_exists($sCachedAssetFile = $this->getOptions()->getCachePath() . DIRECTORY_SEPARATOR . $sCacheFileName . '.' . $sCacheFileExtension)) { $aAssetFiles = array(); foreach (glob($this->getOptions()->getCachePath() . DIRECTORY_SEPARATOR . $sCacheFileName . '*.' . $sCacheFileExtension) as $sAssetFilePath) { $aAssetFiles[] = new \AssetsBundle\AssetFile\AssetFile(array('asset_file_path' => $sAssetFilePath, 'asset_file_type' => $sAssetFileType)); } return $aAssetFiles; } throw new \LogicException('Production cached asset files do not exist for asset file type "' . $sAssetFileType . '"'); } throw new \InvalidArgumentException(__METHOD__ . 'allows "' . \AssetsBundle\AssetFile\AssetFile::ASSET_CSS . '" & "' . \AssetsBundle\AssetFile\AssetFile::ASSET_JS . '" asset file type, "' . $sAssetFileType . '" given'); }
/** * Cache Js asset files and retrieve cached asset files * @return array */ protected function cacheJsAssetFiles() { if ($bIsProduction = $this->getOptions()->isProduction()) { //Retrieve asset file filters manager $oAssetFileFiltersManager = $this->getAssetFileFiltersManager(); //Retrieve Js asset file filter if available $oJsFileFilter = $oAssetFileFiltersManager->has(\AssetsBundle\AssetFile\AssetFile::ASSET_JS) ? $oAssetFileFiltersManager->get(\AssetsBundle\AssetFile\AssetFile::ASSET_JS) : null; //Create tmp asset file \Zend\Stdlib\ErrorHandler::stop(true); $sTmpAssetFilePath = tempnam($this->getOptions()->getTmpDirPath(), '.' . \AssetsBundle\AssetFile\AssetFile::getAssetFileDefaultExtension(\AssetsBundle\AssetFile\AssetFile::ASSET_JS)); \Zend\Stdlib\ErrorHandler::start(); $oTmpAssetFile = new \AssetsBundle\AssetFile\AssetFile(array('asset_file_type' => \AssetsBundle\AssetFile\AssetFile::ASSET_JS, 'asset_file_path' => $sTmpAssetFilePath)); foreach ($this->getAssetFilesConfiguration()->getAssetFiles(\AssetsBundle\AssetFile\AssetFile::ASSET_JS) as $oAssetFile) { $sAssetFileContent = $oJsFileFilter ? $oJsFileFilter->filterAssetFile($oAssetFile) : $oAssetFile->getAssetFileContents(); $oTmpAssetFile->setAssetFileContents($sAssetFileContent . PHP_EOL); } return array($this->getAssetFilesCacheManager()->cacheAssetFile($oTmpAssetFile)); } else { //Retrieve asset files cache manager $oAssetFilesCacheManager = $this->getAssetFilesCacheManager(); $aAssetFiles = array(); foreach ($this->getAssetFilesConfiguration()->getAssetFiles(\AssetsBundle\AssetFile\AssetFile::ASSET_JS) as $oAssetFile) { //Cache asset file $aAssetFiles[] = $oAssetFilesCacheManager->cacheAssetFile($oAssetFile); } return $aAssetFiles; } }
/** * Retrieve assets from a directory * * @param string $sDirPath * @param string $sAssetType * @throws \InvalidArgumentException * @return array */ protected function getAssetFilesPathFromDirectory($sDirPath, $sAssetType) { if (!is_string($sDirPath) || !($sDirPath = $this->getOptions()->getRealPath($sDirPath)) && !is_dir($sDirPath)) { throw new \InvalidArgumentException('Directory not found : ' . $sDirPath); } if (!\AssetsBundle\AssetFile\AssetFile::assetFileTypeExists($sAssetType)) { throw new \InvalidArgumentException('Asset\'s type is undefined : ' . $sAssetType); } $oDirIterator = new \DirectoryIterator($sDirPath); $aAssets = array(); $bRecursiveSearch = $this->getOptions()->allowsRecursiveSearch(); // Defined expected extensions forthe given type if ($sAssetType === \AssetsBundle\AssetFile\AssetFile::ASSET_MEDIA) { $aExpectedExtensions = $this->getOptions()->getMediaExt(); } else { $aExpectedExtensions = array(\AssetsBundle\AssetFile\AssetFile::getAssetFileDefaultExtension($sAssetType)); } foreach ($oDirIterator as $oFile) { if ($oFile->isFile()) { if (in_array(strtolower(pathinfo($oFile->getFilename(), PATHINFO_EXTENSION)), $aExpectedExtensions, true)) { $aAssets[] = $oFile->getPathname(); } } elseif ($oFile->isDir() && !$oFile->isDot() && $bRecursiveSearch) { $aAssets = array_merge($aAssets, $this->getAssetFilesPathFromDirectory($oFile->getPathname(), $sAssetType)); } } return $aAssets; }