コード例 #1
0
 /**
  * @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');
 }
コード例 #2
0
 /**
  * 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;
     }
 }
コード例 #3
0
 /**
  * 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;
 }