Files
php-flasher/Presenter/Adapter/JsonPresenter.php
T
KHOUBZA Younes 26d4ca787f update namespace
2020-12-03 09:15:47 +01:00

63 lines
1.5 KiB
PHP

<?php
namespace Flasher\Prime\Presenter\Adapter;
use Flasher\Prime\Presenter\AbstractPresenter;
final class JsonPresenter extends AbstractPresenter
{
/**
* @param string|array $criteria
*
* @return array
*/
public function render($criteria = null)
{
$filterName = 'default';
if (is_string($criteria)) {
$filterName = $criteria;
$criteria = array();
}
$envelopes = $this->getEnvelopes($filterName, $criteria);
if (empty($envelopes)) {
return array();
}
$response = array(
'scripts' => $this->getScripts($envelopes),
'styles' => $this->getStyles($envelopes),
'options' => $this->getOptions($envelopes),
'notifications' => $this->renderEnvelopes($envelopes),
);
$this->storage->flush($envelopes);
return $response;
}
/**
* @param \Flasher\Prime\Envelope[] $envelopes
*
* @return array
*/
private function renderEnvelopes($envelopes)
{
$notifications = array();
foreach ($envelopes as $envelope) {
$rendererStamp = $envelope->get('Flasher\Prime\Stamp\HandlerStamp');
$renderer = $this->rendererManager->make($rendererStamp->getHandler());
$notifications[] = array(
'code' => $renderer->render($envelope),
'adapter' => $rendererStamp->getHandler()
);
}
return $notifications;
}
}