Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
50.00% |
4 / 8 |
CRAP | |
96.12% |
99 / 103 |
ToolsService | |
0.00% |
0 / 1 |
|
50.00% |
4 / 8 |
26 | |
96.12% |
99 / 103 |
renderAllAssets | |
100.00% |
1 / 1 |
8 | |
100.00% |
59 / 59 |
|||
emptyCache | |
0.00% |
0 / 1 |
9 | |
96.55% |
28 / 29 |
|||
getConsole | |
0.00% |
0 / 1 |
2.15 | |
66.67% |
2 / 3 |
|||
setConsole | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
getMvcEvent | |
0.00% |
0 / 1 |
2.15 | |
66.67% |
2 / 3 |
|||
setMvcEvent | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
|||
getAssetsBundleService | |
0.00% |
0 / 1 |
2.15 | |
66.67% |
2 / 3 |
|||
setAssetsBundleService | |
100.00% |
1 / 1 |
1 | |
100.00% |
2 / 2 |
<?php | |
namespace AssetsBundle\Service; | |
class ToolsService | |
{ | |
/** | |
* @var \Zend\Console\Adapter\AdapterInterface | |
*/ | |
protected $console; | |
/** | |
* @var \Zend\Mvc\MvcEvent | |
*/ | |
protected $mvcEvent; | |
/** | |
* @var \AssetsBundle\Service\Service | |
*/ | |
protected $assetsBundleService; | |
/** | |
* @return \AssetsBundle\Service\ToolsService | |
*/ | |
public function renderAllAssets() : \AssetsBundle\Service\ToolsService | |
{ | |
// Initialize AssetsBundle service | |
$oAssetsBundleService = $this->getAssetsBundleService(); | |
$oAssetsBundleService->getOptions()->setRenderer(new \Zend\View\Renderer\PhpRenderer()); | |
// Start process | |
$oConsole = $this->getConsole(); | |
$oConsole->writeLine(''); | |
$oConsole->writeLine('======================================================================', \Zend\Console\ColorInterface::WHITE); | |
$oConsole->writeLine('Render all assets for ' . ($oAssetsBundleService->getOptions()->isProduction() ? 'production' : 'development'), \Zend\Console\ColorInterface::GREEN); | |
$oConsole->writeLine('======================================================================', \Zend\Console\ColorInterface::WHITE); | |
$oConsole->writeLine(''); | |
// Empty cache directory | |
$this->emptyCache(); | |
$oConsole->writeLine(''); | |
$oConsole->writeLine('Start rendering assets : ', \Zend\Console\ColorInterface::GREEN); | |
$oConsole->writeLine('-------------------------', \Zend\Console\ColorInterface::WHITE); | |
$oConsole->writeLine(''); | |
$aUnwantedKeys = array_fill_keys(\AssetsBundle\AssetFile\AssetFile::ALL_ASSET_TYPES, true); | |
// Retrieve MvcEvent | |
$oMvcEvent = $this->getMvcEvent(); | |
// Reset route match and request | |
$oMvcEvent->setRouteMatch(new \Zend\Router\RouteMatch(array()))->setRequest(new \Zend\Http\Request()); | |
// Retrieve AssetsBundle service options | |
$oOptions = $oAssetsBundleService->getOptions(); | |
$aAssetsConfiguration = $oOptions->getAssets(); | |
// Render all assets | |
foreach (array_diff_key($aAssetsConfiguration, $aUnwantedKeys) as $sModuleName => $aModuleConfig) { | |
// Render module assets | |
$oOptions->setModuleName($sModuleName); | |
// If module has global assets | |
if (array_intersect_key($aModuleConfig, $aUnwantedKeys)) { | |
$oConsole->write(' * ', \Zend\Console\ColorInterface::WHITE); | |
$oConsole->write('[' . $sModuleName . ']', \Zend\Console\ColorInterface::LIGHT_CYAN); | |
$oConsole->write('[No controller]', \Zend\Console\ColorInterface::LIGHT_BLUE); | |
$oConsole->write('[No action]' . PHP_EOL, \Zend\Console\ColorInterface::LIGHT_WHITE); | |
// Render assets for no_controller and no_action | |
$oOptions->setControllerName(\AssetsBundle\Service\ServiceOptions::NO_CONTROLLER) | |
->setActionName(\AssetsBundle\Service\ServiceOptions::NO_ACTION); | |
$oAssetsBundleService->renderAssets($oMvcEvent); | |
} | |
foreach (array_diff_key($aAssetsConfiguration[$sModuleName], $aUnwantedKeys) as $sControllerName => $aControllerConfig) { | |
// Render controller assets | |
$oOptions->setControllerName($sControllerName); | |
// If controller has global assets | |
if (array_intersect_key($aControllerConfig, $aUnwantedKeys)) { | |
$oConsole->write(' * ', \Zend\Console\ColorInterface::WHITE); | |
$oConsole->write('[' . $sModuleName . ']', \Zend\Console\ColorInterface::LIGHT_CYAN); | |
$oConsole->write('[' . $sControllerName . ']', \Zend\Console\ColorInterface::LIGHT_BLUE); | |
$oConsole->write('[No action]' . PHP_EOL, \Zend\Console\ColorInterface::LIGHT_WHITE); | |
// Render assets for no_action | |
$oOptions->setActionName(\AssetsBundle\Service\ServiceOptions::NO_ACTION); | |
$oAssetsBundleService->renderAssets($oMvcEvent); | |
} | |
foreach (array_diff_key($aAssetsConfiguration[$sModuleName][$sControllerName], $aUnwantedKeys) as $sActionName => $aActionConfig) { | |
// Render assets for action | |
if (array_intersect_key($aActionConfig, $aUnwantedKeys)) { | |
$oConsole->write(' * ', \Zend\Console\ColorInterface::WHITE); | |
$oConsole->write('[' . $sModuleName . ']', \Zend\Console\ColorInterface::LIGHT_CYAN); | |
$oConsole->write('[' . $sControllerName . ']', \Zend\Console\ColorInterface::LIGHT_BLUE); | |
$oConsole->write('[' . $sActionName . ']' . PHP_EOL, \Zend\Console\ColorInterface::LIGHT_WHITE); | |
$oAssetsBundleService->getOptions()->setActionName($sActionName); | |
$oAssetsBundleService->renderAssets($oMvcEvent); | |
} | |
} | |
} | |
} | |
//Render global assets | |
$oConsole->write(' * ', \Zend\Console\ColorInterface::WHITE); | |
$oConsole->write('[No module]', \Zend\Console\ColorInterface::LIGHT_CYAN); | |
$oConsole->write('[No controller]', \Zend\Console\ColorInterface::LIGHT_BLUE); | |
$oConsole->write('[No action]' . PHP_EOL, \Zend\Console\ColorInterface::LIGHT_WHITE); | |
$oAssetsBundleService->getOptions() | |
->setModuleName(\AssetsBundle\Service\ServiceOptions::NO_MODULE) | |
->setControllerName(\AssetsBundle\Service\ServiceOptions::NO_CONTROLLER) | |
->setActionName(\AssetsBundle\Service\ServiceOptions::NO_ACTION); | |
$oAssetsBundleService->renderAssets($oMvcEvent); | |
$oConsole->writeLine(''); | |
$oConsole->writeLine('---------------', \Zend\Console\ColorInterface::WHITE); | |
$oConsole->writeLine('Assets rendered', \Zend\Console\ColorInterface::GREEN); | |
$oConsole->writeLine(''); | |
return $this; | |
} | |
/** | |
* @param bool $bDisplayConsoleMessage | |
* @return \AssetsBundle\Service\ToolsService | |
*/ | |
public function emptyCache(bool $bDisplayConsoleMessage = true) : \AssetsBundle\Service\ToolsService | |
{ | |
if ($bDisplayConsoleMessage) { | |
$oConsole = $this->getConsole(); | |
$oConsole->writeLine(''); | |
$oConsole->writeLine('========================', \Zend\Console\ColorInterface::WHITE); | |
$oConsole->writeLine('Empty cache', \Zend\Console\ColorInterface::GREEN); | |
$oConsole->writeLine('========================', \Zend\Console\ColorInterface::WHITE); | |
$oConsole->writeLine(''); | |
} | |
// Initialize AssetsBundle service | |
$oAssetsBundleService = $this->getAssetsBundleService(); | |
// List directories to be emptied | |
$aDirectories = array( | |
'Cache' => $oAssetsBundleService->getOptions()->getCachePath(), | |
'Config cache' => dirname($oAssetsBundleService->getAssetFilesManager()->getAssetFilesConfiguration()->getConfigurationFilePath()), | |
'Tmp' => $oAssetsBundleService->getOptions()->getTmpDirPath(), | |
); | |
// Retrieve Asset File Filters cache directories | |
$oAssetFileFiltersManager = $oAssetsBundleService->getAssetFilesManager()->getAssetFileFiltersManager(); | |
$aRegisteredAssetFileFilters = $oAssetFileFiltersManager->getRegisteredAssetFileFilters(); | |
foreach ($aRegisteredAssetFileFilters as $sFilter) { | |
$oFilter = $oAssetFileFiltersManager->get($sFilter); | |
$aDirectories[$oFilter->getAssetFileFilterName() . ' filter cache'] = $oFilter->getAssetFileFilterProcessedDirPath(); | |
} | |
// Empty directories except .gitignore | |
foreach ($aDirectories as $sName => $sDirectoryPath) { | |
if (!is_dir($sDirectoryPath)) { | |
continue; | |
} | |
foreach (new \RecursiveIteratorIterator( | |
new \RecursiveDirectoryIterator($sDirectoryPath, \RecursiveDirectoryIterator::SKIP_DOTS), | |
\RecursiveIteratorIterator::CHILD_FIRST | |
) as $oFileinfo) { | |
if ($oFileinfo->isDir()) { | |
rmdir($oFileinfo->getRealPath()); | |
} elseif ($oFileinfo->getBasename() !== '.gitignore') { | |
unlink($oFileinfo->getRealPath()); | |
} | |
} | |
if ($bDisplayConsoleMessage) { | |
$oConsole->writeLine(' * "'.$sName.'" directory is empty', \Zend\Console\ColorInterface::WHITE); | |
} | |
} | |
return $this; | |
} | |
/** | |
* @return \Zend\Console\Adapter\AdapterInterface | |
* @throws \LogicException | |
*/ | |
public function getConsole() : \Zend\Console\Adapter\AdapterInterface | |
{ | |
if ($this->console instanceof \Zend\Console\Adapter\AdapterInterface) { | |
return $this->console; | |
} | |
throw new \LogicException('Console is undefined'); | |
} | |
/** | |
* @param \Zend\Console\Adapter\AdapterInterface $oConsole | |
* @return \AssetsBundle\Service\ToolsService | |
*/ | |
public function setConsole(\Zend\Console\Adapter\AdapterInterface $oConsole) : \AssetsBundle\Service\ToolsService | |
{ | |
$this->console = $oConsole; | |
return $this; | |
} | |
/** | |
* @return \Zend\Mvc\MvcEvent | |
* @throws \LogicException | |
*/ | |
public function getMvcEvent() : \Zend\Mvc\MvcEvent | |
{ | |
if ($this->mvcEvent instanceof \Zend\Mvc\MvcEvent) { | |
return $this->mvcEvent; | |
} | |
throw new \LogicException('Mvc event is undefined'); | |
} | |
/** | |
* @param \Zend\Mvc\MvcEvent $oMvcEvent | |
* @return \AssetsBundle\Service\ToolsService | |
*/ | |
public function setMvcEvent(\Zend\Mvc\MvcEvent $oMvcEvent) : \AssetsBundle\Service\ToolsService | |
{ | |
$this->mvcEvent = $oMvcEvent; | |
return $this; | |
} | |
/** | |
* @return \AssetsBundle\Service\Service | |
* @throws \LogicException | |
*/ | |
public function getAssetsBundleService() : \AssetsBundle\Service\Service | |
{ | |
if ($this->assetsBundleService instanceof \AssetsBundle\Service\Service) { | |
return $this->assetsBundleService; | |
} | |
throw new \LogicException('AssetsBundle service is undefined'); | |
} | |
/** | |
* @param \AssetsBundle\Service\Service $oAssetsBundleService | |
* @return \AssetsBundle\Service\ToolsService | |
*/ | |
public function setAssetsBundleService(\AssetsBundle\Service\Service $oAssetsBundleService) : \AssetsBundle\Service\ToolsService | |
{ | |
$this->assetsBundleService = $oAssetsBundleService; | |
return $this; | |
} | |
} |