📄 xmlrpcparser.php
字号:
<?php
// $Id: xmlrpcparser.php 1136 2007-11-01 16:57:08Z dugris $
// ------------------------------------------------------------------------ //
// XOOPS - PHP Content Management System //
// Copyright (c) 2000 XOOPS.org //
// <http://www.xoops.org/> //
// ------------------------------------------------------------------------ //
// This program is free software; you can redistribute it and/or modify //
// it under the terms of the GNU General Public License as published by //
// the Free Software Foundation; either version 2 of the License, or //
// (at your option) any later version. //
// //
// You may not change or alter any portion of this comment or credits //
// of supporting developers from this source code or any supporting //
// source code which is considered copyrighted (c) material of the //
// original comment or credit authors. //
// //
// This program is distributed in the hope that it will be useful, //
// but WITHOUT ANY WARRANTY; without even the implied warranty of //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //
// GNU General Public License for more details. //
// //
// You should have received a copy of the GNU General Public License //
// along with this program; if not, write to the Free Software //
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA //
// ------------------------------------------------------------------------ //
// Author: Kazumi Ono (AKA onokazu) //
// URL: http://www.myweb.ne.jp/, http://www.xoops.org/, http://jp.xoops.org/ //
// Project: The XOOPS Project //
// ------------------------------------------------------------------------- //
if (!defined('XOOPS_ROOT_PATH')) {
die("XOOPS root path not defined");
}
require_once XOOPS_ROOT_PATH.'/class/xml/saxparser.php';
require_once XOOPS_ROOT_PATH.'/class/xml/xmltaghandler.php';
/**
* Class RSS Parser
*
* This class offers methods to parse RSS Files
*
* @link http://www.xoops.org/ Latest release of this class
* @package XOOPS
* @copyright Copyright (c) 2001 xoops.org. All rights reserved.
* @author Kazumi Ono <onokazu@xoops.org>
* @version 1.6 ($Date: 2007-11-02 00:57:08 +0800 (Fri, 02 Nov 2007) $) $Revision: 1136 $
* @access public
*/
class XoopsXmlRpcParser extends SaxParser
{
/**
*
*
*
*
* @access private
* @var array
*/
var $_param;
/**
*
*
*
*
* @access private
* @var string
*/
var $_methodName;
/**
*
*
*
*
* @access private
* @var array
*/
var $_tempName;
/**
*
*
*
*
* @access private
* @var array
*/
var $_tempValue;
/**
*
*
*
*
* @access private
* @var array
*/
var $_tempMember;
/**
*
*
*
*
* @access private
* @var array
*/
var $_tempStruct;
/**
*
*
*
*
* @access private
* @var array
*/
var $_tempArray;
/**
*
*
*
*
* @access private
* @var array
*/
var $_workingLevel = array();
/**
* Constructor of the class
*
*
*
*
* @access
* @author
* @see
*/
function XoopsXmlRpcParser(&$input)
{
$this->SaxParser($input);
$this->addTagHandler(new RpcMethodNameHandler());
$this->addTagHandler(new RpcIntHandler());
$this->addTagHandler(new RpcDoubleHandler());
$this->addTagHandler(new RpcBooleanHandler());
$this->addTagHandler(new RpcStringHandler());
$this->addTagHandler(new RpcDateTimeHandler());
$this->addTagHandler(new RpcBase64Handler());
$this->addTagHandler(new RpcNameHandler());
$this->addTagHandler(new RpcValueHandler());
$this->addTagHandler(new RpcMemberHandler());
$this->addTagHandler(new RpcStructHandler());
$this->addTagHandler(new RpcArrayHandler());
}
/**
* This Method starts the parsing of the specified RDF File. The File can be a local or a remote File.
*
* @access
* @author
* @param
* @return
* @see
*/
function setTempName($name)
{
$this->_tempName[$this->getWorkingLevel()] = $name;
}
/**
* This Method starts the parsing of the specified RDF File. The File can be a local or a remote File.
*
* @access
* @author
* @param
* @return
* @see
*/
function getTempName()
{
return $this->_tempName[$this->getWorkingLevel()];
}
/**
* This Method starts the parsing of the specified RDF File. The File can be a local or a remote File.
*
* @access
* @author
* @param
* @return
* @see
*/
function setTempValue($value)
{
if (is_array($value)) {
settype($this->_tempValue, 'array');
foreach ($value as $k => $v) {
$this->_tempValue[$k] = $v;
}
} elseif (is_string($value)) {
if (isset($this->_tempValue)) {
if (is_string($this->_tempValue)) {
$this->_tempValue .= $value;
}
} else {
$this->_tempValue = $value;
}
} else {
$this->_tempValue = $value;
}
}
/**
* This Method starts the parsing of the specified RDF File. The File can be a local or a remote File.
*
* @access
* @author
* @param
* @return
* @see
*/
function getTempValue()
{
return $this->_tempValue;
}
/**
* This Method starts the parsing of the specified RDF File. The File can be a local or a remote File.
*
* @access
* @author
* @param
* @return
* @see
*/
function resetTempValue()
{
unset($this->_tempValue);
}
/**
* This Method starts the parsing of the specified RDF File. The File can be a local or a remote File.
*
* @access
* @author
* @param
* @return
* @see
*/
function setTempMember($name, $value)
{
$this->_tempMember[$this->getWorkingLevel()][$name] = $value;
}
/**
* This Method starts the parsing of the specified RDF File. The File can be a local or a remote File.
*
* @access
* @author
* @param
* @return
* @see
*/
function getTempMember()
{
return $this->_tempMember[$this->getWorkingLevel()];
}
/**
* This Method starts the parsing of the specified RDF File. The File can be a local or a remote File.
*
* @access
* @author
* @param
* @return
* @see
*/
function resetTempMember()
{
$this->_tempMember[$this->getCurrentLevel()] = array();
}
/**
* This Method starts the parsing of the specified RDF File. The File can be a local or a remote File.
*
* @access
* @author
* @param
* @return
* @see
*/
function setWorkingLevel()
{
array_push($this->_workingLevel, $this->getCurrentLevel());
}
/**
* This Method starts the parsing of the specified RDF File. The File can be a local or a remote File.
*
* @access
* @author
* @param
* @return
* @see
*/
function getWorkingLevel()
{
return $this->_workingLevel[count($this->_workingLevel) - 1];
}
/**
* This Method starts the parsing of the specified RDF File. The File can be a local or a remote File.
*
* @access
* @author
* @param
* @return
* @see
*/
function releaseWorkingLevel()
{
array_pop($this->_workingLevel);
}
/**
* This Method starts the parsing of the specified RDF File. The File can be a local or a remote File.
*
* @access
* @author
* @param
* @return
* @see
*/
function setTempStruct($member)
{
$key = key($member);
$this->_tempStruct[$this->getWorkingLevel()][$key] = $member[$key];
}
/**
* This Method starts the parsing of the specified RDF File. The File can be a local or a remote File.
*
* @access
* @author
* @param
* @return
* @see
*/
function getTempStruct()
{
return $this->_tempStruct[$this->getWorkingLevel()];
}
/**
* This Method starts the parsing of the specified RDF File. The File can be a local or a remote File.
*
* @access
* @author
* @param
* @return
* @see
*/
function resetTempStruct()
{
$this->_tempStruct[$this->getCurrentLevel()] = array();
}
/**
* This Method starts the parsing of the specified RDF File. The File can be a local or a remote File.
*
* @access
* @author
* @param
* @return
* @see
*/
function setTempArray($value)
{
$this->_tempArray[$this->getWorkingLevel()][] = $value;
}
/**
* This Method starts the parsing of the specified RDF File. The File can be a local or a remote File.
*
* @access
* @author
* @param
* @return
* @see
*/
function getTempArray()
{
return $this->_tempArray[$this->getWorkingLevel()];
}
/**
* This Method starts the parsing of the specified RDF File. The File can be a local or a remote File.
*
* @access
* @author
* @param
* @return
* @see
*/
function resetTempArray()
{
$this->_tempArray[$this->getCurrentLevel()] = array();
}
/**
* This Method starts the parsing of the specified RDF File. The File can be a local or a remote File.
*
* @access
* @author
* @param
* @return
* @see
*/
function setMethodName($methodName)
{
$this->_methodName = $methodName;
}
/**
* This Method starts the parsing of the specified RDF File. The File can be a local or a remote File.
*
* @access
* @author
* @param
* @return
* @see
*/
function getMethodName()
{
return $this->_methodName;
}
/**
* This Method starts the parsing of the specified RDF File. The File can be a local or a remote File.
*
* @access
* @author
* @param
* @return
* @see
*/
function setParam($value)
{
$this->_param[] = $value;
}
/**
* This Method starts the parsing of the specified RDF File. The File can be a local or a remote File.
*
* @access
* @author
* @param
* @return
* @see
*/
function &getParam()
{
return $this->_param;
}
}
class RpcMethodNameHandler extends XmlTagHandler
{
/**
* This Method starts the parsing of the specified RDF File. The File can be a local or a remote File.
*
* @access
* @author
* @param
* @return
* @see
*/
function getName()
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -