mirror of
https://github.com/torrentpier/torrentpier-lts.git
synced 2025-03-01 15:21:02 +03:00
123 lines
3.0 KiB
PHP
123 lines
3.0 KiB
PHP
|
<?php
|
||
|
/**
|
||
|
* Zend Framework (http://framework.zend.com/)
|
||
|
*
|
||
|
* @link http://github.com/zendframework/zf2 for the canonical source repository
|
||
|
* @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
|
||
|
* @license http://framework.zend.com/license/new-bsd New BSD License
|
||
|
*/
|
||
|
|
||
|
namespace Zend\View\Helper;
|
||
|
|
||
|
abstract class AbstractHtmlElement extends AbstractHelper
|
||
|
{
|
||
|
/**
|
||
|
* EOL character
|
||
|
*
|
||
|
* @deprecated just use PHP_EOL
|
||
|
*/
|
||
|
const EOL = PHP_EOL;
|
||
|
|
||
|
/**
|
||
|
* The tag closing bracket
|
||
|
*
|
||
|
* @var string
|
||
|
*/
|
||
|
protected $closingBracket = null;
|
||
|
|
||
|
/**
|
||
|
* Get the tag closing bracket
|
||
|
*
|
||
|
* @return string
|
||
|
*/
|
||
|
public function getClosingBracket()
|
||
|
{
|
||
|
if (!$this->closingBracket) {
|
||
|
if ($this->isXhtml()) {
|
||
|
$this->closingBracket = ' />';
|
||
|
} else {
|
||
|
$this->closingBracket = '>';
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return $this->closingBracket;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Is doctype XHTML?
|
||
|
*
|
||
|
* @return bool
|
||
|
*/
|
||
|
protected function isXhtml()
|
||
|
{
|
||
|
return $this->getView()->plugin('doctype')->isXhtml();
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Converts an associative array to a string of tag attributes.
|
||
|
*
|
||
|
* @access public
|
||
|
*
|
||
|
* @param array $attribs From this array, each key-value pair is
|
||
|
* converted to an attribute name and value.
|
||
|
*
|
||
|
* @return string The XHTML for the attributes.
|
||
|
*/
|
||
|
protected function htmlAttribs($attribs)
|
||
|
{
|
||
|
$xhtml = '';
|
||
|
$escaper = $this->getView()->plugin('escapehtml');
|
||
|
$escapeHtmlAttr = $this->getView()->plugin('escapehtmlattr');
|
||
|
|
||
|
foreach ((array) $attribs as $key => $val) {
|
||
|
$key = $escaper($key);
|
||
|
|
||
|
if (('on' == substr($key, 0, 2)) || ('constraints' == $key)) {
|
||
|
// Don't escape event attributes; _do_ substitute double quotes with singles
|
||
|
if (!is_scalar($val)) {
|
||
|
// non-scalar data should be cast to JSON first
|
||
|
$val = \Zend\Json\Json::encode($val);
|
||
|
}
|
||
|
} else {
|
||
|
if (is_array($val)) {
|
||
|
$val = implode(' ', $val);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
$val = $escapeHtmlAttr($val);
|
||
|
|
||
|
if ('id' == $key) {
|
||
|
$val = $this->normalizeId($val);
|
||
|
}
|
||
|
|
||
|
if (strpos($val, '"') !== false) {
|
||
|
$xhtml .= " $key='$val'";
|
||
|
} else {
|
||
|
$xhtml .= " $key=\"$val\"";
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return $xhtml;
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Normalize an ID
|
||
|
*
|
||
|
* @param string $value
|
||
|
* @return string
|
||
|
*/
|
||
|
protected function normalizeId($value)
|
||
|
{
|
||
|
if (strstr($value, '[')) {
|
||
|
if ('[]' == substr($value, -2)) {
|
||
|
$value = substr($value, 0, strlen($value) - 2);
|
||
|
}
|
||
|
$value = trim($value, ']');
|
||
|
$value = str_replace('][', '-', $value);
|
||
|
$value = str_replace('[', '-', $value);
|
||
|
}
|
||
|
|
||
|
return $value;
|
||
|
}
|
||
|
}
|