1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
<?php
/**
* Smarty Output Render Adapter.
*
* @package Silla.IO
* @subpackage Core\Modules\Render\Adapters
* @author Plamen Nikolov <plamen@athlonsofia.com>
* @copyright Copyright (c) 2015, Silla.io
* @license http://opensource.org/licenses/GPL-3.0 GNU General Public License, version 3.0 (GPLv3)
*/
namespace Core\Modules\Render\Adapters;
use Core;
/**
* Class FileSystem Adapter for caching data.
*/
class Smarty implements Core\Modules\Render\Interfaces\Adapter
{
/**
* Smarty Template Engine instance.
*
* @var \Smarty
*/
private $tpl;
/**
* Initialize the template engine.
*
* @param array $config Template configuration.
* @param array $options Additional options.
*/
public function __construct(array $config, array $options = array())
{
$this->tpl = new \Smarty;
$this->tpl->setTemplateDir($config['templates'])
->setCompileDir($config['compiled'])
->setCacheDir($config['cache'])
->setConfigDir($config['config'])
->addPluginsDir($config['plugins']);
$this->tpl->configLoad('globals.conf');
if (isset($options['strip_white_space']) && $options['strip_white_space']) {
$this->tpl->loadFilter('output', 'trimwhitespace');
}
}
/**
* Assigns a template variable.
*
* @param string $name Name of the variable.
* @param mixed $value Value of the variable.
*
* @return void
*/
public function assignVariable($name, $value)
{
$this->tpl->assign($name, $value);
}
/**
* Retrieves an assigned template variable.
*
* @param string $name Name of the variable.
*
* @return mixed
*/
public function getVariable($name)
{
return $this->tpl->getTemplateVars($name);
}
/**
* Removes an assigned template variable.
*
* @param string $name Name of the variable to remove.
*
* @return void
*/
public function removeVariable($name)
{
$this->tpl->clearAssign($name);
}
/**
* Applies a render filter.
*
* @param string $type Filter type.
* @param string $filterName Filter name.
*
* @return boolean
*/
public function applyFilter($type, $filterName)
{
return $this->tpl->loadFilter($type, $filterName);
}
/**
* Removes a render filter.
*
* @param string $type Filter type.
* @param string $filterName Filter name.
*
* @return void
*/
public function removeFilter($type, $filterName)
{
$this->tpl->unloadFilter($type, $filterName);
}
/**
* Parse and return render output.
*
* @param string $template Path to template file to parse.
*
* @return string
*/
public function parse($template)
{
return $this->tpl->fetch($template);
}
/**
* Retrieves rendered templates file extension.
*
* @return string
*/
public function getTemplatesFileExtension()
{
return 'html.tpl';
}
/**
* Retrieves rendered content type(MIME type).
*
* @return string
*/
public function getRenderedContentType()
{
return 'text/html';
}
}