Code Coverage |
||||||||||
Classes and Traits |
Functions and Methods |
Lines |
||||||||
Total | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
CRAP | |
88.89% |
32 / 36 |
AbstractActionController | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
14.27 | |
88.89% |
32 / 36 |
onDispatch | |
0.00% |
0 / 1 |
14.27 | |
88.89% |
32 / 36 |
<?php | |
namespace AssetsBundle\Mvc\Controller; | |
abstract class AbstractActionController extends \Zend\Mvc\Controller\AbstractActionController { | |
/** | |
* @var string | |
*/ | |
const JS_CUSTOM_ACTION = 'jscustom'; | |
/** | |
* @param \Zend\Mvc\MvcEvent $oEvent | |
* @return mixed | |
* @throws \LogicException | |
*/ | |
public function onDispatch(\Zend\Mvc\MvcEvent $oEvent) { | |
$oReturn = parent::onDispatch($oEvent); | |
if ($this->params('action') === self::JS_CUSTOM_ACTION) { | |
if (!is_array($oReturn)) { | |
throw new \LogicException('jscustomAction return expects an array, "' . gettype($oReturn) . '" given'); | |
} | |
/* @var $oAssetsBundleService \AssetsBundle\Service\Service */ | |
$oAssetsBundleService = $oEvent->getApplication()->getServiceManager()->get('AssetsBundleService'); | |
$oOptions = $oAssetsBundleService->getOptions(); | |
//Retrieve asset files manager | |
$oAssetFilesCacheManager = $oAssetsBundleService->getAssetFilesManager()->getAssetFilesCacheManager(); | |
//Check js files | |
foreach ($oReturn as &$sJsFilePath) { | |
if ($sJsFilePath = $oOptions->getRealPath($sJsFilePath)) { | |
$oJsAssetFile = new \AssetsBundle\AssetFile\AssetFile(array( | |
'asset_file_type' => \AssetsBundle\AssetFile\AssetFile::ASSET_JS, | |
'asset_file_path' => $sJsFilePath | |
)); | |
// Copy js file into cache | |
$oAssetFilesCacheManager->cacheAssetFile($oJsAssetFile); | |
$sJsFilePath = $oJsAssetFile; | |
} else { | |
throw new \LogicException('File "' . $sJsFilePath . '" does not exist'); | |
} | |
} | |
$oEvent->getViewModel()->setVariable('jsCustomFiles', $oReturn); | |
} elseif ( | |
!$this->getRequest()->isXmlHttpRequest() && method_exists($this, 'jscustomAction') | |
) { | |
/* @var $oAssetsBundleService \AssetsBundle\Service\Service */ | |
$oAssetsBundleService = $oEvent->getApplication()->getServiceManager()->get('AssetsBundleService'); | |
$oOptions = $oAssetsBundleService->getOptions(); | |
if ($oOptions->isProduction()) { | |
$this->layout()->jsCustomUrl = $this->getEvent()->getRouter()->assemble( | |
array('controller' => $this->params('controller'), 'js_action' => $this->params('action')), array('name' => 'jscustom/definition') | |
); | |
} else { | |
if ($aJsFilesPath = $this->jsCustomAction($this->params('action'))) { | |
if (!is_array($aJsFilesPath)) { | |
throw new \LogicException('Js files path expects an array, "' . gettype($aJsFilesPath) . '" given'); | |
} | |
//Retrieve asset files manager | |
$oAssetFilesCacheManager = $oAssetsBundleService->getAssetFilesManager()->getAssetFilesCacheManager(); | |
//Check js files | |
foreach ($aJsFilesPath as &$sJsFilePath) { | |
if ($sJsFilePath = $oOptions->getRealPath($sJsFilePath)) { | |
//Copy js file into cache | |
$oAssetFilesCacheManager->cacheAssetFile($oJsAssetFile = new \AssetsBundle\AssetFile\AssetFile(array( | |
'asset_file_type' => \AssetsBundle\AssetFile\AssetFile::ASSET_JS, | |
'asset_file_path' => $sJsFilePath | |
))); | |
$sJsFilePath = $oOptions->getAssetFileBaseUrl($oJsAssetFile, $oJsAssetFile->getAssetFileLastModified()? : time()); | |
} else { | |
throw new \LogicException('File "' . $sJsFilePath . '" does not exist'); | |
} | |
} | |
} | |
$this->layout()->jsCustomFiles = array_merge(is_array($this->layout()->jsCustomFiles) ? $this->layout()->jsCustomFiles : array(), $aJsFilesPath); | |
} | |
} | |
$oEvent->setResult($oReturn); | |
return $oReturn; | |
} | |
} |