Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
50.00% |
4 / 8 |
CRAP | |
95.65% |
110 / 115 |
ToolsService | |
0.00% |
0 / 1 |
|
50.00% |
4 / 8 |
34 | |
95.65% |
110 / 115 |
renderAllAssets | |
100.00% |
1 / 1 |
8 | |
100.00% |
59 / 59 |
|||
emptyCache | |
0.00% |
0 / 1 |
17 | |
95.12% |
39 / 41 |
|||
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() | |
{ | |
//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( | |
\AssetsBundle\AssetFile\AssetFile::ASSET_CSS => true, | |
\AssetsBundle\AssetFile\AssetFile::ASSET_LESS => true, | |
\AssetsBundle\AssetFile\AssetFile::ASSET_JS => true, | |
\AssetsBundle\AssetFile\AssetFile::ASSET_MEDIA => true | |
); | |
//Retrieve MvcEvent | |
$oMvcEvent = $this->getMvcEvent(); | |
//Reset route match and request | |
$oMvcEvent->setRouteMatch(new \Zend\Mvc\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 boolean $bDisplayConsoleMessage | |
* @return \AssetsBundle\Service\ToolsService | |
*/ | |
public function emptyCache($bDisplayConsoleMessage = true) | |
{ | |
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(); | |
/* @var $oAssetsBundleService \AssetsBundle\Service\Service */ | |
// Empty cache directory except .gitignore | |
foreach (new \RecursiveIteratorIterator( | |
new \RecursiveDirectoryIterator($oAssetsBundleService->getOptions()->getCachePath(), \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(' * Cache directory is empty', \Zend\Console\ColorInterface::WHITE); | |
} | |
// Retrieve Asset File Filters Manager | |
$oAssetFileFiltersManager = $oAssetsBundleService->getAssetFilesManager()->getAssetFileFiltersManager(); | |
$aRegisteredServices = $oAssetFileFiltersManager->getRegisteredServices(); | |
// Empty asset file filters cache directory except .gitignore | |
foreach ($aRegisteredServices['instances'] as $sFilter) { | |
$oFilter = $oAssetFileFiltersManager->get($sFilter); | |
if (is_dir($sAssetFileFilterProcessedDirPath = $oFilter->getAssetFileFilterProcessedDirPath())) { | |
foreach (new \RecursiveIteratorIterator( | |
new \RecursiveDirectoryIterator($sAssetFileFilterProcessedDirPath, \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(' * "' . $oFilter->getAssetFileFilterName() . '" filter cache directory is empty', \Zend\Console\ColorInterface::WHITE); | |
} | |
} | |
} | |
// Empty config directory except .gitignore | |
$sConfigurationFileDirectoryPath = dirname($oAssetsBundleService->getAssetFilesManager()->getAssetFilesConfiguration()->getConfigurationFilePath()); | |
if(is_dir($sConfigurationFileDirectoryPath)){ | |
foreach (new \RecursiveIteratorIterator( | |
new \RecursiveDirectoryIterator($sConfigurationFileDirectoryPath, \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(' * Config cache directory is empty', \Zend\Console\ColorInterface::WHITE); | |
$oConsole->writeLine(''); | |
} | |
} | |
return $this; | |
} | |
/** | |
* @return \Zend\Console\Adapter\AdapterInterface | |
* @throws \LogicException | |
*/ | |
public function getConsole() | |
{ | |
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) | |
{ | |
$this->console = $oConsole; | |
return $this; | |
} | |
/** | |
* @return \Zend\Mvc\MvcEvent | |
* @throws \LogicException | |
*/ | |
public function getMvcEvent() | |
{ | |
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) | |
{ | |
$this->mvcEvent = $oMvcEvent; | |
return $this; | |
} | |
/** | |
* @return \AssetsBundle\Service\Service | |
* @throws \LogicException | |
*/ | |
public function getAssetsBundleService() | |
{ | |
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) | |
{ | |
$this->assetsBundleService = $oAssetsBundleService; | |
return $this; | |
} | |
} |