From 8314b62fcdab4ac0e50118c243837345add17407 Mon Sep 17 00:00:00 2001 From: Ivan Tcholakov Date: Tue, 16 Mar 2010 06:10:59 +0200 Subject: [PATCH] Feature #272 - PEAR, HTML_Common class: Upgrading to version 1.2.5 (last stable). There is a solution inside about the function htmlspecialchars() and the encoding it uses as it is called within PEAR. --- main/inc/lib/pear/HTML/Common.php | 130 +++++++++++++++++++++--------- 1 file changed, 92 insertions(+), 38 deletions(-) diff --git a/main/inc/lib/pear/HTML/Common.php b/main/inc/lib/pear/HTML/Common.php index 830ec342ef..6b671bf9de 100755 --- a/main/inc/lib/pear/HTML/Common.php +++ b/main/inc/lib/pear/HTML/Common.php @@ -1,42 +1,46 @@ | -// +----------------------------------------------------------------------+ -// -// $Id: Common.php 20456 2009-05-10 17:27:44Z ivantcholakov $ +/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ /** * Base class for all HTML classes * + * PHP versions 4 and 5 + * + * LICENSE: This source file is subject to version 3.01 of the PHP license + * that is available through the world-wide-web at the following URI: + * http://www.php.net/license/3_01.txt If you did not receive a copy of + * the PHP License and are unable to obtain it through the web, please + * send a note to license@php.net so we can mail you a copy immediately. + * + * @category HTML + * @package HTML_Common * @author Adam Daniel - * @version 1.7 - * @since PHP 4.0.3pl1 - * @abstract + * @copyright 2001-2009 The PHP Group + * @license http://www.php.net/license/3_01.txt PHP License 3.01 + * @version CVS: $Id: Common.php,v 1.15 2009/04/03 15:26:22 avb Exp $ + * @link http://pear.php.net/package/HTML_Common/ */ -class HTML_Common { +/** + * Base class for all HTML classes + * + * @category HTML + * @package HTML_Common + * @author Adam Daniel + * @version Release: 1.2.5 + * @abstract + */ +class HTML_Common +{ /** - * Associative array of table attributes + * Associative array of attributes * @var array * @access private */ var $_attributes = array(); /** - * Tab offset of the table + * Tab offset of the tag * @var int * @access private */ @@ -95,7 +99,6 @@ class HTML_Common { * @since 1.7 * @access private * @return string - * @throws */ function _getLineEnd() { @@ -135,10 +138,13 @@ class HTML_Common { { $strAttr = ''; - global $charset; if (is_array($attributes)) { + $charset = HTML_Common::charset(); foreach ($attributes as $key => $value) { - $strAttr .= ' ' . $key . '="' . @htmlspecialchars($value, ENT_QUOTES, $charset) . '"'; + // Modified by Ivan Tcholakov, 16-MAR-2010 + //$strAttr .= ' ' . $key . '="' . htmlspecialchars($value, ENT_COMPAT, $charset) . '"'; + $strAttr .= ' ' . $key . '="' . @htmlspecialchars($value, ENT_COMPAT, $charset) . '"'; + // } } return $strAttr; @@ -148,6 +154,7 @@ class HTML_Common { * Returns a valid atrributes array from either a string or array * @param mixed $attributes Either a typical HTML attribute string or an associative array * @access private + * @return array */ function _parseAttributes($attributes) { @@ -175,9 +182,10 @@ class HTML_Common { $arrAttr[strtolower(trim($name))] = strtolower(trim($name)); } else { if (substr($value, 0, 1) == "\"" || substr($value, 0, 1) == "'") { - $value = substr($value, 1, -1); + $arrAttr[strtolower(trim($name))] = substr($value, 1, -1); + } else { + $arrAttr[strtolower(trim($name))] = trim($value); } - $arrAttr[strtolower(trim($name))] = trim($value); } } return $arrAttr; @@ -192,8 +200,7 @@ class HTML_Common { * @param array $attributes Array of attribute * @since 1.0 * @access private - * @return array key - * @throws + * @return bool */ function _getAttrKey($attr, $attributes) { @@ -209,7 +216,6 @@ class HTML_Common { * @param array $attr1 Original attributes array * @param array $attr2 New attributes array * @access private - * @return array */ function _updateAttrArray(&$attr1, $attr2) { @@ -227,9 +233,8 @@ class HTML_Common { * @param string $attr Attribute name * @param array $attributes Attribute array * @since 1.4 - * @access public + * @access private * @return void - * @throws */ function _removeAttr($attr, &$attributes) { @@ -245,8 +250,7 @@ class HTML_Common { * @param string $attr Attribute name * @since 1.5 * @access public - * @return void - * @throws + * @return string|null returns null if an attribute does not exist */ function getAttribute($attr) { @@ -258,6 +262,22 @@ class HTML_Common { } //end func getAttribute /** + * Sets the value of the attribute + * + * @param string Attribute name + * @param string Attribute value (will be set to $name if omitted) + * @access public + */ + function setAttribute($name, $value = null) + { + $name = strtolower($name); + if (is_null($value)) { + $value = $name; + } + $this->_attributes[$name] = $value; + } // end func setAttribute + + /** * Sets the HTML attributes * @param mixed $attributes Either a typical HTML attribute string or an associative array * @access public @@ -301,7 +321,6 @@ class HTML_Common { * @since 1.4 * @access public * @return void - * @throws */ function removeAttribute($attr) { @@ -325,7 +344,7 @@ class HTML_Common { case 'unix': $this->_lineEnd = "\12"; break; - case 'mac'; + case 'mac': $this->_lineEnd = "\15"; break; default: @@ -416,5 +435,40 @@ class HTML_Common { print $this->toHtml(); } // end func display + /** + * Sets the charset to use by htmlspecialchars() function + * + * Since this parameter is expected to be global, the function is designed + * to be called statically: + * + * HTML_Common::charset('utf-8'); + * + * or + * + * $charset = HTML_Common::charset(); + * + * + * @param string New charset to use. Omit if just getting the + * current value. Consult the htmlspecialchars() docs + * for a list of supported character sets. + * @return string Current charset + * @access public + * @static + */ + function charset($newCharset = null) + { + // Modified by Ivan Tcholakov, 16-MAR-2010 + //static $charset = 'ISO-8859-1'; + static $charset; + if (!isset($charset)) { + $charset = api_get_system_encoding(); + } + // + + if (!is_null($newCharset)) { + $charset = $newCharset; + } + return $charset; + } // end func charset } // end class HTML_Common ?>