Commit a1956fb6 authored by Bong Cosca's avatar Bong Cosca
Browse files

Bug fix: PHP globals passed by reference in hive() result (Issue #424)

parent 51c92fb2
Loading
Loading
Loading
Loading
+16 −12
Original line number Diff line number Diff line
@@ -569,18 +569,20 @@ final class Base {
	*	Encode characters to equivalent HTML entities
	*	@return string
	*	@param $arg mixed
	*	@param $lvl int
	**/
	function esc($arg) {
	function esc($arg,$lvl=0) {
		if (is_string($arg))
			return $this->encode($arg);
		if (is_array($arg) || is_a($arg,'ArrayAccess'))
			foreach ($arg as &$val) {
				$val=$this->esc($val);
			foreach ($arg as $key=>&$val)
				if ($lvl || !preg_match('/'.self::GLOBALS.'/',$key)) {
					$val=$this->esc($val,$lvl+1);
					unset($val);
				}
		if (is_object($arg))
			foreach (get_object_vars($arg) as $key=>$val)
				$arg->$key=$this->esc($val);
				$arg->$key=$this->esc($val,$lvl+1);
		return $arg;
	}

@@ -588,18 +590,20 @@ final class Base {
	*	Decode HTML entities to equivalent characters
	*	@return string
	*	@param $arg mixed
	*	@param $lvl int
	**/
	function raw($arg) {
	function raw($arg,$lvl=0) {
		if (is_string($arg))
			return $this->decode($arg);
		if (is_array($arg) || is_a($arg,'ArrayAccess'))
			foreach ($arg as &$val) {
				$val=$this->raw($val);
			foreach ($arg as $key=>&$val)
				if ($lvl || !preg_match('/'.self::GLOBALS.'/',$key)) {
					$val=$this->raw($val,$lvl+1);
					unset($val);
				}
		if (is_object($arg))
			foreach (get_object_vars($arg) as $key=>$val)
				$arg->$key=$this->raw($val);
				$arg->$key=$this->raw($val,$lvl+1);
		return $arg;
	}