<?php
/**
* XOOPS XMLRPC
*
* 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.
*
* @copyright (c) 2000-2016 XOOPS Project (www.xoops.org)
* @license GNU GPL 2 (http://www.gnu.org/licenses/gpl-2.0.html)
* @package core
* @since 2.0.0
*/
define('XOOPS_XMLRPC', 1);
include __DIR__ . '/mainfile.php';
error_reporting(0);
include_once $GLOBALS['xoops']->path('class/xml/rpc/xmlrpctag.php');
include_once $GLOBALS['xoops']->path('class/xml/rpc/xmlrpcparser.php');
$GLOBALS['xoopsLogger']->activated = false;
$response = new XoopsXmlRpcResponse();
$http_raw_post_data = file_get_contents('php://input');
$parser = new XoopsXmlRpcParser(rawurlencode($http_raw_post_data));
if (!$parser->parse()) {
$response->add(new XoopsXmlRpcFault(102));
} else {
/* @var XoopsModuleHandler $module_handler */
$module_handler = xoops_getHandler('module');
$module = $module_handler->getByDirname('news');
if (!is_object($module)) {
$response->add(new XoopsXmlRpcFault(110));
} else {
$methods = explode('.', $parser->getMethodName());
switch ($methods[0]) {
case 'blogger':
include_once $GLOBALS['xoops']->path('class/xml/rpc/bloggerapi.php');
break;
case 'metaWeblog':
include_once $GLOBALS['xoops']->path('class/xml/rpc/metaweblogapi.php');
$rpc_api = new MetaWeblogApi($parser->getParam(), $response, $module);
break;
case 'mt':
include_once $GLOBALS['xoops']->path('class/xml/rpc/movabletypeapi.php');
$rpc_api = new MovableTypeApi($parser->getParam(), $response, $module);
break;
case 'xoops':
default:
include_once $GLOBALS['xoops']->path('class/xml/rpc/xoopsapi.php');
$rpc_api = new XoopsApi($parser->getParam(), $response, $module);
break;
}
$method = $methods[1];
if (!method_exists($rpc_api, $method)) {
$response->add(new XoopsXmlRpcFault(107));
} else {
$rpc_api->$method();
}
}
}
$payload =& $response->render();
header('Server: XOOPS XML-RPC Server');
header('Content-type: text/xml');
header('Content-Length: ' . strlen($payload));
echo $payload;
|