1
0
mirror of https://github.com/e107inc/e107.git synced 2025-08-06 14:46:56 +02:00

<pluginPrefs> support added to plugin.xml spec. XML handler array exceptions option added.

This commit is contained in:
CaMer0n
2009-09-21 21:53:38 +00:00
parent e8db0ef354
commit efda62371f
3 changed files with 245 additions and 100 deletions

View File

@@ -9,8 +9,8 @@
* Simple XML Parser
*
* $Source: /cvs_backup/e107_0.8/e107_handlers/xml_class.php,v $
* $Revision: 1.27 $
* $Date: 2009-09-17 04:30:25 $
* $Revision: 1.28 $
* $Date: 2009-09-21 21:53:38 $
* $Author: e107coders $
*/
@@ -86,6 +86,8 @@ class xmlClass
private $arrayTags = false;
private $stringTags = false;
/**
@@ -205,6 +207,12 @@ class xmlClass
return $this;
}
public function setOptStringTags($string)
{
$this->stringTags = (array) explode(",",$string);
return $this;
}
/**
* Set forceArray option
*
@@ -424,6 +432,7 @@ class xmlClass
}
$ret = $this->parseArrayTags($ret);
$ret = $this->parseStringTags($ret);
return ($this->_optAddRoot ? array($xml->getName() => $ret) : $ret);
}
@@ -463,16 +472,19 @@ class xmlClass
for ($i = 0; $i < $count; $i++)
{
$ret[$tag][$i] = $this->xml2array($xml->{$tag}[$i], $tag);
$ret[$tag][$i] = $this->parseStringTags($ret[$tag][$i]);
}
}
else //single element
{
$ret[$tag] = $this->xml2array($xml->{$tag}, $tag);
$ret[$tag] = $this->parseStringTags($ret[$tag]);
}
break;
}
}
$ret = $this->parseStringTags($ret);
return $ret;
}
@@ -525,16 +537,40 @@ class xmlClass
if (count($xml) == 1 && isset($xml[0]))
{
$xml = $xml[0];
}
}
$xml = $this->parseArrayTags($xml);
// $xml = $this->parseStringTags($xml);
return $xml;
}
/**
* Convert Array(0) to String based on specified Tags.
* @param object $vars
* @return
*/
function parseStringTags($vars)
{
if(!$this->stringTags)
{
return $vars;
}
foreach($this->stringTags as $vl)
{
if(is_array($vars[$vl]) && varset($vars[$vl][0]))
{
$vars[$vl] = $vars[$vl][0];
}
}
return $vars;
}
/**
* Return as an array, even when a single xml tag value is found
* Use setArrayTags() to set which tags are affected.
@@ -549,6 +585,7 @@ class xmlClass
return $vars;
}
foreach($this->arrayTags as $vl)
{
@@ -561,6 +598,8 @@ class xmlClass
return $vars;
}