mirror of
https://github.com/e107inc/e107.git
synced 2025-07-28 10:20:45 +02:00
3rd party functions added for comparison test
This commit is contained in:
@@ -9,8 +9,8 @@
|
|||||||
* Administration - Database Utilities
|
* Administration - Database Utilities
|
||||||
*
|
*
|
||||||
* $Source: /cvs_backup/e107_0.8/e107_admin/db.php,v $
|
* $Source: /cvs_backup/e107_0.8/e107_admin/db.php,v $
|
||||||
* $Revision: 1.12 $
|
* $Revision: 1.13 $
|
||||||
* $Date: 2009-08-22 00:28:54 $
|
* $Date: 2009-08-24 00:58:32 $
|
||||||
* $Author: e107coders $
|
* $Author: e107coders $
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
@@ -285,12 +285,42 @@ function export_core_prefs()
|
|||||||
function importCorePrefs()
|
function importCorePrefs()
|
||||||
{
|
{
|
||||||
//TODO - Cameron - move to own class and make generic.
|
//TODO - Cameron - move to own class and make generic.
|
||||||
$xml = e107::getSingleton('xmlClass')->loadXMLfile($_FILES['file_userfile']['tmp_name'][0],TRUE);
|
|
||||||
|
|
||||||
$data = e107::getSingleton('xmlClass')->xmlFileContents;
|
$dummyXml = "<?xml version='1.0' encoding='utf-8' ?>
|
||||||
$xll = new SimpleXMLElement($data);
|
<e107Export version='0.8.0 (cvs)' timestamp='1250896023' >
|
||||||
|
<prefs>
|
||||||
|
<core name='install_date'>1165362615</core>
|
||||||
|
<core name='sitename'>e107 Powered Website</core>
|
||||||
|
<core name='siteurl'>/e107_0.8/</core>
|
||||||
|
<core name='sitebutton'>{e_IMAGE}button.png</core>
|
||||||
|
<core name='sitetag'>e107 Website System</core>
|
||||||
|
<core name='sitedescription'></core>
|
||||||
|
<core name='siteadmin'>admin</core>
|
||||||
|
<core name='siteadminemail'>user@yoursite.com</core>
|
||||||
|
</prefs>
|
||||||
|
</e107Export>
|
||||||
|
|
||||||
|
|
||||||
|
";
|
||||||
|
|
||||||
|
|
||||||
|
echo "<h1>Example XML</h1><pre>".htmlentities($dummyXml)."</pre>";
|
||||||
|
|
||||||
|
$data = $dummyXml;
|
||||||
|
|
||||||
|
// $xml = e107::getSingleton('xmlClass')->loadXMLfile($_FILES['file_userfile']['tmp_name'][0],TRUE);
|
||||||
|
$xml = e107::getSingleton('xmlClass')->parseXml($dummyXml);
|
||||||
|
echo "<h1>Core XML Class</h1><hr />";
|
||||||
|
print_a($xml);
|
||||||
|
|
||||||
|
// $data = e107::getSingleton('xmlClass')->xmlFileContents;
|
||||||
|
|
||||||
|
echo '<h1>3rd Party Class</h1><hr />';
|
||||||
|
$array_3rd = e107::getSingleton('xmlClass')->xml2ary($data);
|
||||||
|
|
||||||
|
print_a($array_3rd);
|
||||||
|
|
||||||
|
|
||||||
print_a($xll);
|
|
||||||
foreach ($xll->corePref as $key=>$val)
|
foreach ($xll->corePref as $key=>$val)
|
||||||
{
|
{
|
||||||
// echo "<br />". $xll->corePref['@attributes'] ." = ".$val;
|
// echo "<br />". $xll->corePref['@attributes'] ." = ".$val;
|
||||||
@@ -312,6 +342,10 @@ function importCorePrefs()
|
|||||||
|
|
||||||
function importCorePrefsForm()
|
function importCorePrefsForm()
|
||||||
{
|
{
|
||||||
|
//TODO - Fix Core XML class - array returned is incorrect.
|
||||||
|
importCorePrefs();
|
||||||
|
return;
|
||||||
|
|
||||||
// Get largest allowable file upload
|
// Get largest allowable file upload
|
||||||
$frm = e107::getSingleton('e_form');
|
$frm = e107::getSingleton('e_form');
|
||||||
|
|
||||||
|
@@ -1,151 +1,155 @@
|
|||||||
<?php
|
<?php
|
||||||
/*
|
/*
|
||||||
+ ----------------------------------------------------------------------------+
|
+ ----------------------------------------------------------------------------+
|
||||||
| e107 website system
|
| e107 website system
|
||||||
|
|
|
|
||||||
| <20>Steve Dunstan 2001-2002
|
| <20>Steve Dunstan 2001-2002
|
||||||
| http://e107.org
|
| http://e107.org
|
||||||
| jalist@e107.org
|
| jalist@e107.org
|
||||||
|
|
|
|
||||||
| Released under the terms and conditions of the
|
| Released under the terms and conditions of the
|
||||||
| GNU General Public License (http://gnu.org).
|
| GNU General Public License (http://gnu.org).
|
||||||
|
|
|
|
||||||
| $Source: /cvs_backup/e107_0.8/e107_handlers/xml_class.php,v $
|
| $Source: /cvs_backup/e107_0.8/e107_handlers/xml_class.php,v $
|
||||||
| $Revision: 1.12 $
|
| $Revision: 1.13 $
|
||||||
| $Date: 2009-08-17 12:48:52 $
|
| $Date: 2009-08-24 00:58:01 $
|
||||||
| $Author: e107coders $
|
| $Author: e107coders $
|
||||||
+----------------------------------------------------------------------------+
|
+----------------------------------------------------------------------------+
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
class xmlClass
|
class xmlClass
|
||||||
{
|
{
|
||||||
|
|
||||||
var $xmlFileContents;
|
var $xmlFileContents;
|
||||||
var $filter; // Optional filter for loaded XML
|
|
||||||
// Set to FALSE if not enabled (default on initialisation)
|
|
||||||
// Otherwise mirrors the required subset of the loaded XML - set a field FALSE to accept all
|
|
||||||
// ...elements lower down the tree. e.g.:
|
|
||||||
// $filter = array(
|
|
||||||
// 'name' => FALSE,
|
|
||||||
// 'administration' => FALSE,
|
|
||||||
// 'management' => array('install' => FALSE)
|
|
||||||
// );
|
|
||||||
var $stripComments; // Set true to strip all mention of comments from the returned array (default); FALSE to return comment markers
|
|
||||||
|
|
||||||
|
var $filter; // Optional filter for loaded XML
|
||||||
|
// Set to FALSE if not enabled (default on initialisation)
|
||||||
|
// Otherwise mirrors the required subset of the loaded XML - set a field FALSE to accept all
|
||||||
|
// ...elements lower down the tree. e.g.:
|
||||||
|
// $filter = array(
|
||||||
|
// 'name' => FALSE,
|
||||||
|
// 'administration' => FALSE,
|
||||||
|
// 'management' => array('install' => FALSE)
|
||||||
|
// );
|
||||||
|
|
||||||
|
var $stripComments; // Set true to strip all mention of comments from the returned array (default); FALSE to return comment markers
|
||||||
// Constructor - set defaults
|
// Constructor - set defaults
|
||||||
|
|
||||||
|
|
||||||
function xmlClass()
|
function xmlClass()
|
||||||
{
|
{
|
||||||
$this->xmlFileContents = '';
|
$this->xmlFileContents = '';
|
||||||
$this->filter = FALSE;
|
$this->filter = FALSE;
|
||||||
$this->stripComments = TRUE; // Don't usually want comments back
|
$this->stripComments = TRUE; // Don't usually want comments back
|
||||||
}
|
}
|
||||||
|
|
||||||
function getRemoteFile($address, $timeout=10)
|
|
||||||
|
function getRemoteFile($address, $timeout = 10)
|
||||||
{
|
{
|
||||||
// Could do something like: if ($timeout <= 0) $timeout = $pref['get_remote_timeout']; here
|
// Could do something like: if ($timeout <= 0) $timeout = $pref['get_remote_timeout']; here
|
||||||
$timeout = min($timeout,120);
|
$timeout = min($timeout, 120);
|
||||||
$timeout = max($timeout,3);
|
$timeout = max($timeout, 3);
|
||||||
|
$address = str_replace(array("\r", "\n", "\t"), '', $address); // May be paranoia, but streaky thought it might be a good idea
|
||||||
$address = str_replace(array("\r","\n", "\t"),'',$address); // May be paranoia, but streaky thought it might be a good idea
|
// ... and there shouldn't be unprintable characters in the URL anyway
|
||||||
// ... and there shouldn't be unprintable characters in the URL anyway
|
if (function_exists('file_get_contents'))
|
||||||
|
|
||||||
if(function_exists('file_get_contents'))
|
|
||||||
{
|
{
|
||||||
|
$old_timeout = e107_ini_set('default_socket_timeout', $timeout);
|
||||||
$old_timeout = e107_ini_set('default_socket_timeout', $timeout);
|
$data = file_get_contents(urlencode($address));
|
||||||
$data = file_get_contents(urlencode($address));
|
echo "data=".$data;
|
||||||
// $data = file_get_contents(htmlspecialchars($address)); // buggy - sometimes fails.
|
// $data = file_get_contents(htmlspecialchars($address)); // buggy - sometimes fails.
|
||||||
if ($old_timeout !== FALSE) { e107_ini_set('default_socket_timeout', $old_timeout); }
|
if ($old_timeout !== FALSE)
|
||||||
|
{
|
||||||
if ($data)
|
e107_ini_set('default_socket_timeout', $old_timeout);
|
||||||
{
|
}
|
||||||
return $data;
|
if ($data)
|
||||||
}
|
{
|
||||||
|
return $data;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
if (function_exists("curl_init"))
|
||||||
if(function_exists("curl_init"))
|
|
||||||
{
|
{
|
||||||
$cu = curl_init();
|
$cu = curl_init();
|
||||||
curl_setopt($cu, CURLOPT_URL, $address);
|
curl_setopt($cu, CURLOPT_URL, $address);
|
||||||
curl_setopt($cu, CURLOPT_RETURNTRANSFER, 1);
|
curl_setopt($cu, CURLOPT_RETURNTRANSFER, 1);
|
||||||
curl_setopt ($cu, CURLOPT_HEADER, 0);
|
curl_setopt($cu, CURLOPT_HEADER, 0);
|
||||||
curl_setopt ($cu, CURLOPT_TIMEOUT, $timeout);
|
curl_setopt($cu, CURLOPT_TIMEOUT, $timeout);
|
||||||
$this->xmlFileContents = curl_exec($cu);
|
$this->xmlFileContents = curl_exec($cu);
|
||||||
if (curl_error($cu))
|
if (curl_error($cu))
|
||||||
{
|
{
|
||||||
$this -> error = "Curl error: ".curl_errno($cu).", ".curl_error($cu);
|
$this->error = "Curl error: ".curl_errno($cu).", ".curl_error($cu);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
curl_close($cu);
|
curl_close($cu);
|
||||||
return $this->xmlFileContents;
|
return $this->xmlFileContents;
|
||||||
}
|
}
|
||||||
|
if (ini_get("allow_url_fopen"))
|
||||||
if(ini_get("allow_url_fopen"))
|
|
||||||
{
|
{
|
||||||
$old_timeout = e107_ini_set('default_socket_timeout', $timeout);
|
$old_timeout = e107_ini_set('default_socket_timeout', $timeout);
|
||||||
$remote = @fopen($address, "r");
|
$remote = @fopen($address, "r");
|
||||||
if(!$remote)
|
if (!$remote)
|
||||||
{
|
{
|
||||||
$this -> error = "fopen: Unable to open remote XML file: ".$address;
|
$this->error = "fopen: Unable to open remote XML file: ".$address;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$old_timeout = $timeout;
|
$old_timeout = $timeout;
|
||||||
$tmp = parse_url($address);
|
$tmp = parse_url($address);
|
||||||
if(!$remote = fsockopen ($tmp['host'], 80 ,$errno, $errstr, $timeout))
|
if (!$remote = fsockopen($tmp['host'], 80, $errno, $errstr, $timeout))
|
||||||
{
|
{
|
||||||
$this -> error = "Sockets: Unable to open remote XML file: ".$address;
|
$this->error = "Sockets: Unable to open remote XML file: ".$address;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
socket_set_timeout($remote, $timeout);
|
socket_set_timeout($remote, $timeout);
|
||||||
fputs($remote, "GET ".urlencode($address)." HTTP/1.0\r\n\r\n");
|
fputs($remote, "GET ".urlencode($address)." HTTP/1.0\r\n\r\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
$this->xmlFileContents = "";
|
||||||
$this -> xmlFileContents = "";
|
|
||||||
while (!feof($remote))
|
while (!feof($remote))
|
||||||
{
|
{
|
||||||
$this->xmlFileContents .= fgets ($remote, 4096);
|
$this->xmlFileContents .= fgets($remote, 4096);
|
||||||
}
|
}
|
||||||
fclose ($remote);
|
fclose($remote);
|
||||||
if ($old_timeout != $timeout)
|
if ($old_timeout != $timeout)
|
||||||
{
|
{
|
||||||
if ($old_timeout !== FALSE) { e107_ini_set('default_socket_timeout', $old_timeout); }
|
if ($old_timeout !== FALSE)
|
||||||
|
{
|
||||||
|
e107_ini_set('default_socket_timeout', $old_timeout);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return $this->xmlFileContents;
|
return $this->xmlFileContents;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function parseXml($xml = '')
|
||||||
function parseXml($xml='')
|
|
||||||
{
|
{
|
||||||
if($xml == '' && $this->xmlFileContents)
|
if ($xml == '' && $this->xmlFileContents)
|
||||||
{
|
{
|
||||||
$xml = $this->xmlFileContents;
|
$xml = $this->xmlFileContents;
|
||||||
}
|
}
|
||||||
if(!$xml)
|
if (!$xml)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
$xml = simplexml_load_string($xml);
|
$xml = simplexml_load_string($xml);
|
||||||
if(is_object($xml))
|
if (is_object($xml))
|
||||||
{
|
{
|
||||||
$xml = (array)$xml;
|
$xml = (array) $xml;
|
||||||
}
|
}
|
||||||
$xml = $this->xml_convert_to_array($xml, $this->filter, $this->stripComments);
|
$xml = $this->xml_convert_to_array($xml, $this->filter, $this->stripComments);
|
||||||
return $xml;
|
return $xml;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function xml_convert_to_array($xml, $localFilter = FALSE, $stripComments = TRUE)
|
function xml_convert_to_array($xml, $localFilter = FALSE, $stripComments = TRUE)
|
||||||
{
|
{
|
||||||
if(is_array($xml))
|
if (is_array($xml))
|
||||||
{
|
{
|
||||||
foreach($xml as $k => $v)
|
foreach ($xml as $k=>$v)
|
||||||
{
|
{
|
||||||
if ($stripComments && ($k === 'comment'))
|
if ($stripComments && ($k === 'comment'))
|
||||||
{
|
{
|
||||||
@@ -165,9 +169,9 @@ class xmlClass
|
|||||||
}
|
}
|
||||||
if ($enabled)
|
if ($enabled)
|
||||||
{
|
{
|
||||||
if(is_object($v))
|
if (is_object($v))
|
||||||
{
|
{
|
||||||
$v = (array)$v;
|
$v = (array) $v;
|
||||||
}
|
}
|
||||||
$xml[$k] = $this->xml_convert_to_array($v, $onFilter, $stripComments);
|
$xml[$k] = $this->xml_convert_to_array($v, $onFilter, $stripComments);
|
||||||
}
|
}
|
||||||
@@ -176,7 +180,7 @@ class xmlClass
|
|||||||
unset($xml[$k]);
|
unset($xml[$k]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(count($xml) == 1 && isset($xml[0]))
|
if (count($xml) == 1 && isset($xml[0]))
|
||||||
{
|
{
|
||||||
$xml = $xml[0];
|
$xml = $xml[0];
|
||||||
}
|
}
|
||||||
@@ -185,39 +189,37 @@ class xmlClass
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function loadXMLfile($fname = '', $parse = false, $replace_constants = false)
|
||||||
function loadXMLfile($fname='', $parse = false, $replace_constants = false)
|
|
||||||
{
|
{
|
||||||
if($fname == '')
|
if ($fname == '')
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
$xml = false;
|
$xml = false;
|
||||||
|
if (strpos($fname, '://') !== false)
|
||||||
if(strpos($fname, '://') !== false)
|
|
||||||
{
|
{
|
||||||
$this->getRemoteFile($fname);
|
$this->getRemoteFile($fname);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if($xml = file_get_contents($fname))
|
if ($xml = file_get_contents($fname))
|
||||||
{
|
{
|
||||||
$this->xmlFileContents = $xml;
|
$this->xmlFileContents = $xml;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if($this->xmlFileContents)
|
if ($this->xmlFileContents)
|
||||||
{
|
{
|
||||||
if($replace_constants == true)
|
if ($replace_constants == true)
|
||||||
{
|
{
|
||||||
global $tp;
|
global $tp;
|
||||||
if(!is_object($tp))
|
if (!is_object($tp))
|
||||||
{
|
{
|
||||||
require_once('e_parse_class.php');
|
require_once ('e_parse_class.php');
|
||||||
$tp = new e_parse;
|
$tp = new e_parse;
|
||||||
}
|
}
|
||||||
$this->xmlFileContents = $tp->replaceConstants($this->xmlFileContents, '', true);
|
$this->xmlFileContents = $tp->replaceConstants($this->xmlFileContents, '', true);
|
||||||
}
|
}
|
||||||
if($parse == true)
|
if ($parse == true)
|
||||||
{
|
{
|
||||||
return $this->parseXML('');
|
return $this->parseXML('');
|
||||||
}
|
}
|
||||||
@@ -230,5 +232,121 @@ class xmlClass
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function xml2ary(&$string)
|
||||||
|
{
|
||||||
|
$parser = xml_parser_create();
|
||||||
|
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
|
||||||
|
xml_parse_into_struct($parser, $string, $vals, $index);
|
||||||
|
xml_parser_free($parser);
|
||||||
|
$mnary = array();
|
||||||
|
$ary = &$mnary;
|
||||||
|
foreach ($vals as $r)
|
||||||
|
{
|
||||||
|
$t = $r['tag'];
|
||||||
|
if ($r['type'] == 'open')
|
||||||
|
{
|
||||||
|
if (isset($ary[$t]))
|
||||||
|
{
|
||||||
|
if (isset($ary[$t][0]))
|
||||||
|
$ary[$t][] = array();
|
||||||
|
else
|
||||||
|
$ary[$t] = array($ary[$t], array());
|
||||||
|
$cv = &$ary[$t][count($ary[$t]) - 1];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
$cv = &$ary[$t];
|
||||||
|
if (isset($r['attributes']))
|
||||||
|
{
|
||||||
|
foreach ($r['attributes'] as $k=>$v)
|
||||||
|
$cv['_a'][$k] = $v;
|
||||||
|
}
|
||||||
|
$cv['_c'] = array();
|
||||||
|
$cv['_c']['_p'] = &$ary;
|
||||||
|
$ary = &$cv['_c'];
|
||||||
|
}
|
||||||
|
elseif ($r['type'] == 'complete')
|
||||||
|
{
|
||||||
|
if (isset($ary[$t]))
|
||||||
|
{ // same as open
|
||||||
|
if (isset($ary[$t][0]))
|
||||||
|
$ary[$t][] = array();
|
||||||
|
else
|
||||||
|
$ary[$t] = array($ary[$t], array());
|
||||||
|
$cv = &$ary[$t][count($ary[$t]) - 1];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
$cv = &$ary[$t];
|
||||||
|
if (isset($r['attributes']))
|
||||||
|
{
|
||||||
|
foreach ($r['attributes'] as $k=>$v)
|
||||||
|
$cv['_a'][$k] = $v;
|
||||||
|
}
|
||||||
|
$cv['_v'] = (isset($r['value']) ? $r['value'] : '');
|
||||||
|
}
|
||||||
|
elseif ($r['type'] == 'close')
|
||||||
|
{
|
||||||
|
$ary = &$ary['_p'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$this->_del_p($mnary);
|
||||||
|
return $mnary;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
function _del_p(&$ary)
|
||||||
|
{
|
||||||
|
foreach ($ary as $k=>$v)
|
||||||
|
{
|
||||||
|
if ($k === '_p')
|
||||||
|
unset($ary[$k]);
|
||||||
|
elseif (is_array($ary[$k]))
|
||||||
|
$this->_del_p($ary[$k]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Array to XML
|
||||||
|
|
||||||
|
|
||||||
|
function ary2xml($cary, $d = 0, $forcetag = '')
|
||||||
|
{
|
||||||
|
$res = array();
|
||||||
|
foreach ($cary as $tag=>$r)
|
||||||
|
{
|
||||||
|
if (isset($r[0]))
|
||||||
|
{
|
||||||
|
$res[] = $this->ary2xml($r, $d, $tag);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ($forcetag)
|
||||||
|
$tag = $forcetag;
|
||||||
|
$sp = str_repeat("\t", $d);
|
||||||
|
$res[] = "$sp<$tag";
|
||||||
|
if (isset($r['_a']))
|
||||||
|
{
|
||||||
|
foreach ($r['_a'] as $at=>$av)
|
||||||
|
$res[] = " $at=\"$av\"";
|
||||||
|
}
|
||||||
|
$res[] = ">".((isset($r['_c'])) ? "\n" : '');
|
||||||
|
if (isset($r['_c']))
|
||||||
|
$res[] = $this->ary2xml($r['_c'], $d + 1);
|
||||||
|
elseif (isset($r['_v']))
|
||||||
|
$res[] = $r['_v'];
|
||||||
|
$res[] = (isset($r['_c']) ? $sp : '')."</$tag>\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return implode('', $res);
|
||||||
|
}
|
||||||
|
// Insert element into array
|
||||||
|
|
||||||
|
|
||||||
|
function ins2ary(&$ary, $element, $pos)
|
||||||
|
{
|
||||||
|
$ar1 = array_slice($ary, 0, $pos);
|
||||||
|
$ar1[] = $element;
|
||||||
|
$ary = array_merge($ar1, array_slice($ary, $pos));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
?>
|
?>
|
Reference in New Issue
Block a user