public function showAssetPackageSizesAction() { $a = new Kwf_Util_Build_Types_Assets(); $packages = $a->getAllPackages(); $langs = $a->getAllLanguages(); $exts = array('js', 'defer.js', 'css'); foreach ($packages as $p) { $depName = $p->getDependencyName(); $language = $langs[0]; foreach ($exts as $extension) { $cacheId = Kwf_Assets_Dispatcher::getCacheIdByPackage($p, $extension, $language); $cacheContents = Kwf_Assets_BuildCache::getInstance()->load($cacheId); echo "{$depName} "; $h = new Kwf_View_Helper_FileSize(); echo "{$extension} size: " . $h->fileSize(strlen(gzencode($cacheContents['contents'], 9, FORCE_GZIP))); echo "\n"; } } $d = Kwf_Assets_Package_Default::getDefaultProviderList()->findDependency('Frontend'); foreach ($d->getFilteredUniqueDependencies('text/javascript') as $i) { if ($i instanceof Kwf_Assets_Dependency_File && $i->getType() == 'ext2') { echo "\n[WARNING] Frontend text/javascript contains ext2\n"; echo "To improve frontend performance all ext2 dependencies should be moved to defer\n\n"; break; } } exit; }
public function clean() { if (!Kwf_Assets_BuildCache::getInstance()->building) { throw new Kwf_Exception("Can't clear out of build"); } foreach (glob(self::$_buildDir . '/*') as $f) { unlink($f); } }
/** * Returns a timestamp that can be used as assets version * * will be reset everytime assets are built */ public static function getAssetsVersion() { return Kwf_Assets_BuildCache::getInstance()->load('assetsVersion'); }
private static function _clearAssetsAll($fileType = null) { if (!$fileType) { self::_clearAssetsAll('js'); self::_clearAssetsAll('defer.js'); self::_clearAssetsAll('css'); self::_clearAssetsAll('printcss'); return; } $fileNames = array('cache/assets/output-cache-ids-' . $fileType, 'build/assets/output-cache-ids-' . $fileType); foreach ($fileNames as $fileName) { if (file_exists($fileName)) { $cacheIds = file($fileName); unlink($fileName); foreach ($cacheIds as $cacheId) { $cacheId = trim($cacheId); echo $cacheId; if (Kwf_Assets_Cache::getInstance()->remove($cacheId)) { echo " [DELETED]"; } if (Kwf_Assets_BuildCache::getInstance()->remove($cacheId)) { echo " [build DELETED]"; } if (Kwf_Cache_SimpleStatic::_delete(array('as_' . $cacheId . '_gzip', 'as_' . $cacheId . '_deflate'))) { echo " [gzip DELETED]"; } if (Kwf_Assets_Cache::getInstance()->remove($cacheId . '_map')) { echo " [map DELETED]"; } if (Kwf_Assets_BuildCache::getInstance()->remove($cacheId . '_map')) { echo " [build map DELETED]"; } if (Kwf_Cache_SimpleStatic::_delete(array('as_' . $cacheId . '_map_gzip', 'as_' . $cacheId . '_map_deflate'))) { echo " [map_gzip DELETED]"; } echo "\n"; } } } $fileName = 'build/assets/package-max-mtime-' . $fileType; if (file_exists($fileName)) { $cacheIds = file($fileName); unlink($fileName); foreach ($cacheIds as $cacheId) { $cacheId = trim($cacheId); echo $cacheId; if (Kwf_Assets_BuildCache::getInstance()->remove($cacheId)) { echo " [DELETED]"; } echo "\n"; } } $a = new Kwf_Util_Build_Types_Assets(); $a->flagAllPackagesOutdated($fileType); self::_informDuckcast($fileType); }
protected function _build($options) { if (!file_exists('build/assets')) { mkdir('build/assets'); } Kwf_Assets_BuildCache::getInstance()->building = true; Kwf_Assets_BuildCache::getInstance()->clean(); Kwf_Assets_BuildCache::getInstance()->save(time(), 'assetsVersion'); $langs = $this->_getAllLanguages(); $packages = $this->_getAllPackages(); $exts = array('js', 'defer.js', 'css', 'printcss'); echo "\ncalculating dependencies...\n"; $steps = count($packages) * count($exts); $c = new Zend_ProgressBar_Adapter_Console(); $c->setElements(array(Zend_ProgressBar_Adapter_Console::ELEMENT_PERCENT, Zend_ProgressBar_Adapter_Console::ELEMENT_BAR, Zend_ProgressBar_Adapter_Console::ELEMENT_TEXT)); $c->setTextWidth(50); $progress = new Zend_ProgressBar($c, 0, $steps); $countDependencies = 0; foreach ($packages as $p) { $depName = $p->getDependencyName(); foreach ($exts as $extension) { $progress->next(1, "{$depName} {$extension}"); $countDependencies += count($p->getFilteredUniqueDependencies(self::$_mimeTypeByExtension[$extension])); $cacheId = $p->getMaxMTimeCacheId(self::$_mimeTypeByExtension[$extension]); if (!$cacheId) { throw new Kwf_Exception("Didn't get cacheId for " . get_class($p)); } $maxMTime = $p->getMaxMTime(self::$_mimeTypeByExtension[$extension]); Kwf_Assets_BuildCache::getInstance()->save($maxMTime, $cacheId); //save generated caches for clear-cache-watcher $fileName = 'build/assets/package-max-mtime-' . $extension; if (!file_exists($fileName) || strpos(file_get_contents($fileName), $cacheId . "\n") === false) { file_put_contents($fileName, $cacheId . "\n", FILE_APPEND); } } } $progress->finish(); echo "compiling assets...\n"; $c = new Zend_ProgressBar_Adapter_Console(); $c->setElements(array(Zend_ProgressBar_Adapter_Console::ELEMENT_PERCENT, Zend_ProgressBar_Adapter_Console::ELEMENT_BAR, Zend_ProgressBar_Adapter_Console::ELEMENT_TEXT)); $c->setTextWidth(50); $progress = new Zend_ProgressBar($c, 0, $countDependencies); foreach ($packages as $p) { foreach ($exts as $extension) { foreach ($p->getFilteredUniqueDependencies(self::$_mimeTypeByExtension[$extension]) as $dep) { $progress->next(1, "{$dep}"); $dep->warmupCaches(); } } } $progress->finish(); echo "generating packages...\n"; $steps = count($packages) * count($langs) * count($exts) * 4; $c = new Zend_ProgressBar_Adapter_Console(); $c->setElements(array(Zend_ProgressBar_Adapter_Console::ELEMENT_PERCENT, Zend_ProgressBar_Adapter_Console::ELEMENT_BAR, Zend_ProgressBar_Adapter_Console::ELEMENT_TEXT)); $c->setTextWidth(50); $progress = new Zend_ProgressBar($c, 0, $steps); foreach ($packages as $p) { $depName = $p->getDependencyName(); foreach ($langs as $language) { foreach ($exts as $extension) { $packageContents = $p->getPackageContents(self::$_mimeTypeByExtension[$extension], $language); $maxMTime = $p->getMaxMTime(self::$_mimeTypeByExtension[$extension]); $progress->next(1, "{$depName} {$extension} {$language}"); $progress->next(1, "{$depName} {$extension} {$language} source"); $this->_buildPackageContents($packageContents, $maxMTime, $p, $extension, $language); $progress->next(1, "{$depName} {$extension} {$language} map"); $this->_buildPackageSourceMap($packageContents, $maxMTime, $p, $extension, $language); $progress->next(1, "{$depName} {$extension} {$language} url"); $urls = $p->getPackageUrls(self::$_mimeTypeByExtension[$extension], $language); if (Kwf_Setup::getBaseUrl()) { foreach ($urls as $k => $i) { $urls[$k] = substr($i, strlen(Kwf_Setup::getBaseUrl())); } } $cacheId = $p->getPackageUrlsCacheId(self::$_mimeTypeByExtension[$extension], $language); Kwf_Assets_BuildCache::getInstance()->save($urls, $cacheId); } } } Kwf_Assets_Cache::getInstance()->clean(); Kwf_Assets_BuildCache::getInstance()->building = false; $exts = array('js', 'defer.js', 'css'); foreach ($packages as $p) { $depName = $p->getDependencyName(); $language = $langs[0]; foreach ($exts as $extension) { $cacheId = Kwf_Assets_Dispatcher::getCacheIdByPackage($p, $extension, $language); $cacheContents = Kwf_Assets_BuildCache::getInstance()->load($cacheId); echo "{$depName} "; $h = new Kwf_View_Helper_FileSize(); echo "{$extension} size: " . $h->fileSize(strlen(gzencode($cacheContents['contents'], 9, FORCE_GZIP))); echo "\n"; } } $d = Kwf_Assets_Package_Default::getDefaultProviderList()->findDependency('Frontend'); foreach ($d->getFilteredUniqueDependencies('text/javascript') as $i) { if ($i instanceof Kwf_Assets_Dependency_File && $i->getType() == 'ext2') { echo "\n[WARNING] Frontend text/javascript contains ext2\n"; echo "To improve frontend performance all ext2 dependencies should be moved to defer\n\n"; break; } } }
private static function _clearAssetsAll($fileType = null) { if (!$fileType) { self::_clearAssetsAll('js'); self::_clearAssetsAll('css'); return; } $fileNames = array('cache/assets/output-cache-ids-' . $fileType, 'build/assets/output-cache-ids-' . $fileType); $assetsCacheIds = array(); $assetsBuildCacheIds = array(); $simpleStaticCacheIds = array(); foreach ($fileNames as $fileName) { if (file_exists($fileName)) { $cacheIds = file($fileName); unlink($fileName); foreach ($cacheIds as $cacheId) { $cacheId = trim($cacheId); echo $cacheId . "\n"; $assetsCacheIds[] = $cacheId; $assetsBuildCacheIds[] = $cacheId; $simpleStaticCacheIds[] = 'as_' . $cacheId . '_gzip'; $simpleStaticCacheIds[] = 'as_' . $cacheId . '_deflate'; $assetsCacheIds[] = $cacheId . '_map'; $assetsBuildCacheIds[] = $cacheId . '_map'; $simpleStaticCacheIds[] = 'as_' . $cacheId . '_map_gzip'; $simpleStaticCacheIds[] = 'as_' . $cacheId . '_map_deflate'; } } } if ($assetsCacheIds) { Kwf_Assets_Cache::getInstance()->remove($assetsCacheIds); } if ($assetsBuildCacheIds) { Kwf_Assets_BuildCache::getInstance()->remove($assetsBuildCacheIds); } if ($simpleStaticCacheIds) { Kwf_Cache_SimpleStatic::_delete($simpleStaticCacheIds); } $a = new Kwf_Util_Build_Types_Assets(); $a->flagAllPackagesOutdated($fileType); self::_informDuckcast($fileType); if ($fileType == 'css') { self::_clearAssetsAll('0.css'); self::_clearAssetsAll('1.css'); self::_clearAssetsAll('ie8.css'); } if ($fileType == 'js') { self::_clearAssetsAll('defer.js'); } }
protected function _build($options) { if (!file_exists('build/assets')) { mkdir('build/assets'); } Kwf_Assets_BuildCache::getInstance()->building = true; Kwf_Assets_BuildCache::getInstance()->clean(); Kwf_Assets_BuildCache::getInstance()->save(time(), 'assetsVersion'); $langs = $this->getAllLanguages(); $packages = $this->getAllPackages(); $exts = array('js', 'defer.js', 'css'); echo "\ncalculating dependencies...\n"; $steps = count($packages) * count($exts); $c = new Zend_ProgressBar_Adapter_Console(); $c->setElements(array(Zend_ProgressBar_Adapter_Console::ELEMENT_PERCENT, Zend_ProgressBar_Adapter_Console::ELEMENT_BAR, Zend_ProgressBar_Adapter_Console::ELEMENT_TEXT)); $c->setTextWidth(50); $progress = new Zend_ProgressBar($c, 0, $steps); $countDependencies = 0; foreach ($packages as $p) { $depName = $p->getDependencyName(); foreach ($exts as $extension) { $progress->next(1, "{$depName} {$extension}"); $p->getFilteredUniqueDependencies(self::$_mimeTypeByExtension[$extension]); $cacheId = $p->getMaxMTimeCacheId(self::$_mimeTypeByExtension[$extension]); if (!$cacheId) { throw new Kwf_Exception("Didn't get cacheId for " . get_class($p)); } $maxMTime = $p->getMaxMTime(self::$_mimeTypeByExtension[$extension]); Kwf_Assets_BuildCache::getInstance()->save($maxMTime, $cacheId); //save generated caches for clear-cache-watcher $fileName = 'build/assets/package-max-mtime-' . $extension; if (!file_exists($fileName) || strpos(file_get_contents($fileName), $cacheId . "\n") === false) { file_put_contents($fileName, $cacheId . "\n", FILE_APPEND); } } $it = new RecursiveIteratorIterator(new Kwf_Assets_Dependency_Iterator_UniqueFilter(new Kwf_Assets_Dependency_Iterator_Recursive($p->getDependency(), Kwf_Assets_Dependency_Abstract::DEPENDENCY_TYPE_ALL)), RecursiveIteratorIterator::CHILD_FIRST); foreach ($it as $i) { $countDependencies++; } } $progress->finish(); echo "compiling assets...\n"; $c = new Zend_ProgressBar_Adapter_Console(); $c->setElements(array(Zend_ProgressBar_Adapter_Console::ELEMENT_PERCENT, Zend_ProgressBar_Adapter_Console::ELEMENT_BAR, Zend_ProgressBar_Adapter_Console::ELEMENT_TEXT)); $c->setTextWidth(50); $progress = new Zend_ProgressBar($c, 0, $countDependencies); foreach ($packages as $p) { $it = new RecursiveIteratorIterator(new Kwf_Assets_Dependency_Iterator_UniqueFilter(new Kwf_Assets_Dependency_Iterator_Recursive($p->getDependency(), Kwf_Assets_Dependency_Abstract::DEPENDENCY_TYPE_ALL)), RecursiveIteratorIterator::CHILD_FIRST); foreach ($it as $dep) { $progress->next(1, "{$dep}"); $dep->warmupCaches(); } } $progress->finish(); echo "generating packages...\n"; $steps = count($packages) * count($langs) * count($exts) * 4; $c = new Zend_ProgressBar_Adapter_Console(); $c->setElements(array(Zend_ProgressBar_Adapter_Console::ELEMENT_PERCENT, Zend_ProgressBar_Adapter_Console::ELEMENT_BAR, Zend_ProgressBar_Adapter_Console::ELEMENT_TEXT)); $c->setTextWidth(50); $progress = new Zend_ProgressBar($c, 0, $steps); foreach ($packages as $p) { $depName = $p->getDependencyName(); foreach ($langs as $language) { foreach ($exts as $extension) { $progress->next(1, "{$depName} {$extension} {$language}"); $packageContents = $p->getPackageContents(self::$_mimeTypeByExtension[$extension], $language); $maxMTime = $p->getMaxMTime(self::$_mimeTypeByExtension[$extension]); $progress->next(1, "{$depName} {$extension} {$language} source"); $this->_buildPackageContents($packageContents, $maxMTime, $p, $extension, $language); $progress->next(1, "{$depName} {$extension} {$language} map"); $this->_buildPackageSourceMap($packageContents, $maxMTime, $p, $extension, $language); $progress->next(1, "{$depName} {$extension} {$language} url"); $urls = $p->getPackageUrls(self::$_mimeTypeByExtension[$extension], $language); if (Kwf_Setup::getBaseUrl()) { foreach ($urls as $k => $i) { $urls[$k] = substr($i, strlen(Kwf_Setup::getBaseUrl())); } } $cacheId = $p->getPackageUrlsCacheId(self::$_mimeTypeByExtension[$extension], $language); Kwf_Assets_BuildCache::getInstance()->save($urls, $cacheId); } } } Kwf_Assets_Cache::getInstance()->clean(); Kwf_Assets_BuildCache::getInstance()->building = false; }
protected function _buildPackageUrls($mimeType, $language) { if (!Kwf_Assets_BuildCache::getInstance()->building && !Kwf_Config::getValue('assets.lazyBuild')) { throw new Kwf_Exception("Building assets is disabled (assets.lazyBuild). Please upload build contents."); } if (($mimeType == 'text/css; ie8' || $mimeType == 'text/javascript; ie8') && !$this->_enableLegacySupport) { return array(); } if ($mimeType == 'text/javascript') { $ext = 'js'; } else { if ($mimeType == 'text/javascript; defer') { $ext = 'defer.js'; } else { if ($mimeType == 'text/css') { $ext = 'css'; } else { if ($mimeType == 'text/css; ie8') { $ext = 'ie8.css'; } else { if ($mimeType == 'text/javascript; ie8') { $ext = 'ie8.js'; } else { throw new Kwf_Exception_NotYetImplemented(); } } } } } $ret = array(); $hasContents = false; $includesDependencies = array(); foreach ($this->_getFilteredUniqueDependencies($mimeType) as $i) { if (!$i->getIncludeInPackage()) { if (in_array($i, $includesDependencies, true)) { //include dependency only once continue; } if ($i->getMimeType() != $mimeType) { //happens for 'text/css; ie8' continue; } $includesDependencies[] = $i; if ($i instanceof Kwf_Assets_Dependency_HttpUrl) { $ret[] = $i->getUrl(); } else { throw new Kwf_Exception('Invalid dependency that should not be included in package'); } } else { $hasContents = true; } } if ($hasContents) { $chunks = $this->_getChunkedContentsCount($mimeType, $language); if ($chunks > 1) { $urls = array(); for ($i = 0; $i < $chunks; $i++) { $urls[] = $this->getPackageUrl($i . '.' . $ext, $language); } } else { $urls = array($this->getPackageUrl($ext, $language)); } $ret = array_merge($urls, $ret); } return $ret; }
protected function _build($options) { if (!file_exists('build/assets')) { mkdir('build/assets'); } Kwf_Assets_BuildCache::getInstance()->building = true; Kwf_Assets_BuildCache::getInstance()->clean(); Kwf_Assets_BuildCache::getInstance()->save(time(), 'assetsVersion'); $langs = $this->getAllLanguages(); $packages = $this->getAllPackages(); $exts = array('js', 'defer.js', 'css', 'ie8.css', 'ie8.js'); $providers = array(); foreach ($packages as $p) { foreach ($p->getProviderList()->getProviders() as $provider) { if (!in_array($provider, $providers)) { $providers[] = $provider; } } } echo "\ninitializing providers...\n"; $steps = count($providers); $c = new Zend_ProgressBar_Adapter_Console(); $c->setElements(array(Zend_ProgressBar_Adapter_Console::ELEMENT_PERCENT, Zend_ProgressBar_Adapter_Console::ELEMENT_BAR, Zend_ProgressBar_Adapter_Console::ELEMENT_TEXT)); $c->setTextWidth(80); $progress = new Zend_ProgressBar($c, 0, $steps); foreach ($providers as $provider) { $progress->next(1, get_class($provider)); $provider->initialize(); } $progress->finish(); echo "calculating dependencies...\n"; $steps = count($packages) * count($exts); $c = new Zend_ProgressBar_Adapter_Console(); $c->setElements(array(Zend_ProgressBar_Adapter_Console::ELEMENT_PERCENT, Zend_ProgressBar_Adapter_Console::ELEMENT_BAR, Zend_ProgressBar_Adapter_Console::ELEMENT_TEXT)); $c->setTextWidth(80); $progress = new Zend_ProgressBar($c, 0, $steps); $countDependencies = 0; foreach ($packages as $p) { $depName = $p->getDependencyName(); foreach ($exts as $extension) { $progress->next(1, "{$depName} {$extension}"); $p->getFilteredUniqueDependencies(self::$_mimeTypeByExtension[$extension]); } $it = new RecursiveIteratorIterator(new Kwf_Assets_Dependency_Iterator_UniqueFilter(new Kwf_Assets_Dependency_Iterator_Recursive($p->getDependency(), Kwf_Assets_Dependency_Abstract::DEPENDENCY_TYPE_ALL)), RecursiveIteratorIterator::CHILD_FIRST); foreach ($it as $i) { $countDependencies++; } } $progress->finish(); echo "compiling assets...\n"; $c = new Zend_ProgressBar_Adapter_Console(); $c->setElements(array(Zend_ProgressBar_Adapter_Console::ELEMENT_ETA, Zend_ProgressBar_Adapter_Console::ELEMENT_BAR, Zend_ProgressBar_Adapter_Console::ELEMENT_TEXT)); $c->setTextWidth(80); $progress = new Zend_ProgressBar($c, 0, $countDependencies); foreach ($packages as $p) { $it = new RecursiveIteratorIterator(new Kwf_Assets_Dependency_Iterator_UniqueFilter(new Kwf_Assets_Dependency_Iterator_Recursive($p->getDependency(), Kwf_Assets_Dependency_Abstract::DEPENDENCY_TYPE_ALL)), RecursiveIteratorIterator::CHILD_FIRST); foreach ($it as $dep) { $progress->next(1, "{$dep}"); if ($dep->getMimeType()) { $mimeType = $dep->getMimeType(); $p->warmupDependencyCaches($dep, $mimeType, $progress); if ($mimeType == 'text/css') { $p->warmupDependencyCaches($dep, 'text/css; ie8', $progress); } } } } $progress->finish(); echo "generating package urls...\n"; $steps = count($packages) * count($langs) * count($exts); $c = new Zend_ProgressBar_Adapter_Console(); $c->setElements(array(Zend_ProgressBar_Adapter_Console::ELEMENT_PERCENT, Zend_ProgressBar_Adapter_Console::ELEMENT_BAR, Zend_ProgressBar_Adapter_Console::ELEMENT_TEXT)); $c->setTextWidth(80); $progress = new Zend_ProgressBar($c, 0, $steps); $allUrls = array(); foreach ($packages as $p) { $depName = $p->getDependencyName(); foreach ($langs as $language) { foreach ($exts as $extension) { $progress->next(1, "{$depName} {$extension} {$language}"); $urls = $p->getPackageUrls(self::$_mimeTypeByExtension[$extension], $language); if (Kwf_Setup::getBaseUrl()) { foreach ($urls as $k => $i) { $urls[$k] = substr($i, strlen(Kwf_Setup::getBaseUrl())); } } $cacheId = $p->getPackageUrlsCacheId(self::$_mimeTypeByExtension[$extension], $language); Kwf_Assets_BuildCache::getInstance()->save($urls, $cacheId); foreach ($urls as $url) { if (!in_array($url, $allUrls)) { $allUrls[] = $url; } } } } } echo "generating package contents...\n"; $steps = count($allUrls) * 2; $c = new Zend_ProgressBar_Adapter_Console(); $c->setElements(array(Zend_ProgressBar_Adapter_Console::ELEMENT_PERCENT, Zend_ProgressBar_Adapter_Console::ELEMENT_BAR, Zend_ProgressBar_Adapter_Console::ELEMENT_TEXT)); $c->setTextWidth(80); $progress = new Zend_ProgressBar($c, 0, $steps); foreach ($allUrls as $url) { if (substr($url, 0, 8) != '/assets/') { continue; } $param = explode('/', $url); if (count($param) != 7) { continue; } $dependencyClass = $param[3]; $dependencyParams = $param[4]; $urlLanguage = $param[5]; $urlExtension = $param[6]; $urlExtension = substr($urlExtension, 0, strpos($urlExtension, '?')); if (!class_exists($dependencyClass)) { throw new Kwf_Exception(); } if (!is_instance_of($dependencyClass, 'Kwf_Assets_Interface_UrlResolvable')) { throw new Kwf_Exception(); } $p = call_user_func(array($dependencyClass, 'fromUrlParameter'), $dependencyClass, $dependencyParams); if (!$p instanceof Kwf_Assets_Package) { throw new Kwf_Exception(); } $contents = $p->getUrlContents($urlExtension, $urlLanguage); $progress->next(1, "{$p->getDependencyName()} {$urlExtension} {$urlLanguage} source"); $cacheId = Kwf_Assets_Dispatcher::getInstance()->getCacheIdByPackage($p, $urlExtension, $urlLanguage); Kwf_Assets_BuildCache::getInstance()->save($contents, $cacheId); //save generated caches for clear-cache-watcher $fileName = 'build/assets/output-cache-ids-' . $urlExtension; if (!file_exists($fileName) || strpos(file_get_contents($fileName), $cacheId . "\n") === false) { file_put_contents($fileName, $cacheId . "\n", FILE_APPEND); } $contents = $p->getUrlContents($urlExtension . '.map', $urlLanguage); $progress->next(1, "{$p->getDependencyName()} {$urlExtension} {$urlLanguage} map"); $cacheId = Kwf_Assets_Dispatcher::getInstance()->getCacheIdByPackage($p, $urlExtension . '.map', $urlLanguage); Kwf_Assets_BuildCache::getInstance()->save($contents, $cacheId); } Kwf_Assets_Cache::getInstance()->clean(); Kwf_Assets_BuildCache::getInstance()->building = false; }
public function getPackageUrls($mimeType, $language) { $cacheId = $this->getPackageUrlsCacheId($mimeType, $language); $ret = Kwf_Assets_BuildCache::getInstance()->load($cacheId); if ($ret !== false) { if (Kwf_Setup::getBaseUrl()) { foreach ($ret as $k => $i) { $ret[$k] = Kwf_Setup::getBaseUrl() . $i; } } return $ret; } if (!Kwf_Assets_BuildCache::getInstance()->building && !Kwf_Config::getValue('assets.lazyBuild')) { throw new Kwf_Exception("Building assets is disabled (assets.lazyBuild). Please upload build contents."); } if ($mimeType == 'text/javascript') { $ext = 'js'; } else { if ($mimeType == 'text/javascript; defer') { $ext = 'defer.js'; } else { if ($mimeType == 'text/css') { $ext = 'css'; } else { if ($mimeType == 'text/css; media=print') { $ext = 'printcss'; } else { throw new Kwf_Exception_NotYetImplemented(); } } } } $ret = array(); $hasContents = false; $includesDependencies = array(); foreach ($this->_getFilteredUniqueDependencies($mimeType) as $i) { if (!$i->getIncludeInPackage()) { if (in_array($i, $includesDependencies, true)) { //include dependency only once continue; } $includesDependencies[] = $i; if ($i instanceof Kwf_Assets_Dependency_HttpUrl) { $ret[] = $i->getUrl(); } else { throw new Kwf_Exception('Invalid dependency that should not be included in package'); } } else { $hasContents = true; } } if ($hasContents) { array_unshift($ret, $this->getPackageUrl($ext, $language)); } return $ret; }