<?php
namespace Cms\CoreBundle\Model\Scenes;
use Cms\CoreBundle\Service\SceneRenderer;
use Symfony\Component\DependencyInjection\ContainerInterface;
/**
* Class DashboardScene
* @package Cms\CoreBundle\Model\Scenes
*/
abstract class DashboardScene extends AbstractScene
{
/**
* @var string
*/
private $template;
/**
* @var array
*/
private $parameters;
/**
* @param string $template
* @param array $parameters
*/
public function __construct($template, array $parameters = [])
{
$this->template = $template;
$this->parameters = $parameters;
}
/**
* @return string
*/
public function getTemplate()
{
return $this->template;
}
/**
* @param string $template
* @return $this
*/
public function setTemplate($template)
{
$this->template = $template;
return $this;
}
/**
* @param string $key
* @return bool
*/
public function hasParameter($key)
{
return array_key_exists($key, $this->parameters);
}
/**
* @param string $key
* @return mixed
*/
public function getParameter($key)
{
return $this->parameters[$key];
}
/**
* @return array
*/
public function getParameters()
{
return $this->parameters;
}
/**
* @param string $key
* @param mixed $value
* @return $this
*/
public function setParameter($key, $value)
{
$this->parameters[$key] = $value;
return $this;
}
/**
* @param array $value
* @return $this
*/
public function setParameters(array $value)
{
$this->parameters = $value;
return $this;
}
/**
* @param string $key
* @return $this
*/
public function eraseParameter($key)
{
if (isset($this->parameters[$key])) {
unset($this->parameters[$key]);
}
return $this;
}
/**
* @return $this
*/
public function eraseParameters()
{
$this->parameters = [];
return $this;
}
/**
* {@inheritdoc}
*/
public function isFileBased()
{
return true;
}
/**
* {@inheritdoc}
*/
public function generateParameters(ContainerInterface $container, $extras = null)
{
// deps
/** @var SceneRenderer $sceneRenderer */
$sceneRenderer = $container->get(SceneRenderer::class);
// render our template as a general scene
$content = $sceneRenderer->subrender(new Scene(
$this->getTemplate(),
$this->getParameters()
));
// done
return array(
'content' => $content,
'doc' => $this->getAssetsOrganizer(),
);
}
}