/Zend/View/Helper/HeadTitle.php
https://github.com/MontmereLimited/ZendFramework-v1 · PHP · 222 lines · 102 code · 20 blank · 100 comment · 16 complexity · 808678d07550b2cb725f6af74b9b1731 MD5 · raw file
- <?php
- /**
- * Zend Framework
- *
- * LICENSE
- *
- * This source file is subject to the new BSD license that is bundled
- * with this package in the file LICENSE.txt.
- * It is also available through the world-wide-web at this URL:
- * http://framework.zend.com/license/new-bsd
- * If you did not receive a copy of the license and are unable to
- * obtain it through the world-wide-web, please send an email
- * to license@zend.com so we can send you a copy immediately.
- *
- * @category Zend
- * @package Zend_View
- * @subpackage Helper
- * @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
- * @version $Id: HeadTitle.php 23775 2011-03-01 17:25:24Z ralph $
- * @license http://framework.zend.com/license/new-bsd New BSD License
- */
- /** Zend_View_Helper_Placeholder_Container_Standalone */
- // // // // // // // // require_once 'Zend/View/Helper/Placeholder/Container/Standalone.php';
- /**
- * Helper for setting and retrieving title element for HTML head
- *
- * @uses Zend_View_Helper_Placeholder_Container_Standalone
- * @package Zend_View
- * @subpackage Helper
- * @copyright Copyright (c) 2005-2011 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- */
- class Zend_View_Helper_HeadTitle extends Zend_View_Helper_Placeholder_Container_Standalone
- {
- /**
- * Registry key for placeholder
- * @var string
- */
- protected $_regKey = 'Zend_View_Helper_HeadTitle';
- /**
- * Whether or not auto-translation is enabled
- * @var boolean
- */
- protected $_translate = false;
- /**
- * Translation object
- *
- * @var Zend_Translate_Adapter
- */
- protected $_translator;
- /**
- * Default title rendering order (i.e. order in which each title attached)
- *
- * @var string
- */
- protected $_defaultAttachOrder = null;
- /**
- * Retrieve placeholder for title element and optionally set state
- *
- * @param string $title
- * @param string $setType
- * @return Zend_View_Helper_HeadTitle
- */
- public function headTitle($title = null, $setType = null)
- {
- if (null === $setType) {
- $setType = (null === $this->getDefaultAttachOrder())
- ? Zend_View_Helper_Placeholder_Container_Abstract::APPEND
- : $this->getDefaultAttachOrder();
- }
- $title = (string) $title;
- if ($title !== '') {
- if ($setType == Zend_View_Helper_Placeholder_Container_Abstract::SET) {
- $this->set($title);
- } elseif ($setType == Zend_View_Helper_Placeholder_Container_Abstract::PREPEND) {
- $this->prepend($title);
- } else {
- $this->append($title);
- }
- }
- return $this;
- }
- /**
- * Set a default order to add titles
- *
- * @param string $setType
- */
- public function setDefaultAttachOrder($setType)
- {
- if (!in_array($setType, array(
- Zend_View_Helper_Placeholder_Container_Abstract::APPEND,
- Zend_View_Helper_Placeholder_Container_Abstract::SET,
- Zend_View_Helper_Placeholder_Container_Abstract::PREPEND
- ))) {
- // // // // // // // // require_once 'Zend/View/Exception.php';
- throw new Zend_View_Exception("You must use a valid attach order: 'PREPEND', 'APPEND' or 'SET'");
- }
- $this->_defaultAttachOrder = $setType;
- return $this;
- }
- /**
- * Get the default attach order, if any.
- *
- * @return mixed
- */
- public function getDefaultAttachOrder()
- {
- return $this->_defaultAttachOrder;
- }
- /**
- * Sets a translation Adapter for translation
- *
- * @param Zend_Translate|Zend_Translate_Adapter $translate
- * @return Zend_View_Helper_HeadTitle
- */
- public function setTranslator($translate)
- {
- if ($translate instanceof Zend_Translate_Adapter) {
- $this->_translator = $translate;
- } elseif ($translate instanceof Zend_Translate) {
- $this->_translator = $translate->getAdapter();
- } else {
- // // // // // // // // require_once 'Zend/View/Exception.php';
- $e = new Zend_View_Exception("You must set an instance of Zend_Translate or Zend_Translate_Adapter");
- $e->setView($this->view);
- throw $e;
- }
- return $this;
- }
- /**
- * Retrieve translation object
- *
- * If none is currently registered, attempts to pull it from the registry
- * using the key 'Zend_Translate'.
- *
- * @return Zend_Translate_Adapter|null
- */
- public function getTranslator()
- {
- if (null === $this->_translator) {
- // // // // // // // // require_once 'Zend/Registry.php';
- if (Zend_Registry::isRegistered('Zend_Translate')) {
- $this->setTranslator(Zend_Registry::get('Zend_Translate'));
- }
- }
- return $this->_translator;
- }
- /**
- * Enables translation
- *
- * @return Zend_View_Helper_HeadTitle
- */
- public function enableTranslation()
- {
- $this->_translate = true;
- return $this;
- }
- /**
- * Disables translation
- *
- * @return Zend_View_Helper_HeadTitle
- */
- public function disableTranslation()
- {
- $this->_translate = false;
- return $this;
- }
- /**
- * Turn helper into string
- *
- * @param string|null $indent
- * @param string|null $locale
- * @return string
- */
- public function toString($indent = null, $locale = null)
- {
- $indent = (null !== $indent)
- ? $this->getWhitespace($indent)
- : $this->getIndent();
- $items = array();
- if($this->_translate && $translator = $this->getTranslator()) {
- foreach ($this as $item) {
- $items[] = $translator->translate($item, $locale);
- }
- } else {
- foreach ($this as $item) {
- $items[] = $item;
- }
- }
- $separator = $this->getSeparator();
- $output = '';
- if(($prefix = $this->getPrefix())) {
- $output .= $prefix;
- }
- $output .= implode($separator, $items);
- if(($postfix = $this->getPostfix())) {
- $output .= $postfix;
- }
- $output = ($this->_autoEscape) ? $this->_escape($output) : $output;
- return $indent . '<title>' . $output . '</title>';
- }
- }