rosehill/libraries/Blossom/Classes/View.php

129 lines
2.9 KiB
PHP

<?php
/**
* @copyright 2006-2013 City of Bloomington, Indiana
* @license http://www.gnu.org/licenses/agpl.txt GNU/AGPL, see LICENSE.txt
* @author Cliff Ingham <inghamn@bloomington.in.gov>
*/
namespace Blossom\Classes;
use Zend\I18n\Translator\Translator;
abstract class View
{
protected $vars = array();
private static $translator;
abstract public function render();
/**
* Instantiates the Zend Translator
*
* See: ZendFramework documentation for full information
* http://framework.zend.com/manual/2.2/en/modules/zend.i18n.translating.html
* @see http://framework.zend.com/manual/2.2/en/modules/zend.i18n.translating.html
*/
public function __construct(array $vars=null)
{
if (count($vars)) {
foreach ($vars as $name=>$value) {
$this->vars[$name] = $value;
}
}
if (!self::$translator) {
self::$translator = new Translator();
self::$translator->addTranslationFilePattern(
'gettext',
APPLICATION_HOME.'/language',
'%s.mo'
);
}
}
/**
* Magic Method for setting object properties
*
* @param string $key
* @param mixed $value
*/
public function __set($key,$value) {
$this->vars[$key] = $value;
}
/**
* Magic method for getting object properties
*
* @param string $key
* @return mixed
*/
public function __get($key)
{
if (isset($this->vars[$key])) {
return $this->vars[$key];
}
return null;
}
/**
* @param string $key
* @return boolean
*/
public function __isset($key) {
return array_key_exists($key,$this->vars);
}
/**
* Cleans strings for output
*
* There are more bad characters than htmlspecialchars deals with. We just want
* to add in some other characters to clean. While here, we might as well
* have it trim out the whitespace too.
*
* @param array|string $string
* @param CONSTANT $quotes Optional, the desired constant to use for the htmlspecidalchars call
* @return string
*/
public static function escape($input,$quotes=ENT_QUOTES)
{
if (is_array($input)) {
foreach ($input as $key=>$value) {
$input[$key] = self::escape($value,$quotes);
}
}
else {
$input = htmlspecialchars(trim($input), $quotes, 'UTF-8');
}
return $input;
}
/**
* Returns the gettext translation of msgid
*
* For entries in the PO that are plurals, you must pass msgid as an array
* $this->translate(array('msgid', 'msgid_plural', $num))
*
* See: ZendFramework documentation for full information
* http://framework.zend.com/manual/2.2/en/modules/zend.i18n.translating.html
*
* @see http://framework.zend.com/manual/2.2/en/modules/zend.i18n.translating.html
* @param mixed $msgid String or Array
* @return string
*/
public function translate($msgid)
{
if (is_array($msgid)) {
return self::$translator->translatePlural($msgid[0], $msgid[1], $msgid[2]);
}
else {
return self::$translator->translate($msgid);
}
}
/**
* Alias of $this->translate()
*/
public function _($msgid)
{
return $this->translate($msgid);
}
}