. */ /* */ /*************************************************************************************/ namespace View\Loop; use Thelia\Core\Template\Element\ArraySearchLoopInterface; use Thelia\Core\Template\Element\BaseLoop; use Thelia\Core\Template\Element\LoopResult; use Thelia\Core\Template\Element\LoopResultRow; use Thelia\Core\Template\Loop\Argument\Argument; use Thelia\Core\Template\Loop\Argument\ArgumentCollection; use View\Event\FindViewEvent; /** * Class FrontView * @package View\Loop */ class FrontView extends BaseLoop implements ArraySearchLoopInterface { protected function getArgDefinitions() { return new ArgumentCollection( Argument::createAnyTypeArgument('source'), Argument::createIntTypeArgument('source_id') ); } public function buildArray() { $findEvent = new FindViewEvent($this->getSourceId(), $this->getSource()); $this->dispatcher->dispatch('view.find', $findEvent); return $findEvent->hasView() ? [ [ 'name' => $findEvent->getView(), 'id' => $findEvent->getViewObject()->getId() ] ] : []; } /** * @param LoopResult $loopResult * * @return LoopResult */ public function parseResults(LoopResult $loopResult) { foreach ($loopResult->getResultDataCollection() as $view) { $loopResultRow = new LoopResultRow($view); $loopResultRow ->set('FRONT_VIEW', $view['name']) ->set('VIEW_ID', $view['id']) ; $loopResult->addRow($loopResultRow); } return $loopResult; } }