public function service() { $app = JFactory::getApplication(); $params = JComponentHelper::getParams('com_xmlrpc'); $plugin = $params->get('plugin', 'joomla'); JPluginHelper::importPlugin('xmlrpc', strtolower($plugin)); $allCalls = $app->triggerEvent('onGetWebServices'); if(count($allCalls) < 1){ JError::raiseError(404, JText::_('COM_XMLRPC_SERVICE_WAS_NOT_FOUND')); } $methodsArray = array(); foreach ($allCalls as $calls) { $methodsArray = array_merge($methodsArray, $calls); } @mb_regex_encoding('UTF-8'); @mb_internal_encoding('UTF-8'); require_once dirname(__FILE__).'/libraries/phpxmlrpc/xmlrpc.php'; require_once dirname(__FILE__).'/libraries/phpxmlrpc/xmlrpcs.php'; require_once (JPATH_SITE.'/components/com_content/helpers/route.php'); JTable::addIncludePath(JPATH_ADMINISTRATOR.'/components/com_content/tables'); $xmlrpc = new xmlrpc_server($methodsArray, false); $xmlrpc->functions_parameters_type = 'phpvals'; $encoding = 'UTF-8'; $xmlrpc->xml_header($encoding); $GLOBALS['xmlrpc_internalencoding'] = $encoding; $xmlrpc->setDebug($params->get('debug', JDEBUG)); @ini_set( 'display_errors', $params->get('display_errors', 0)); $data = file_get_contents('php://input'); if(empty($data)){ JError::raiseError(403, JText::_('COM_XMLRPC_INVALID_REQUEST')); } $xmlrpc->service($data); jexit(); }
public function display($cachable = false, $urlparams = array()) { $mainframe = JFactory::getApplication(); $methodsArray = $this->_getServices(); $xmlrpcServer = new xmlrpc_server($methodsArray, false); // allow casting to be defined by that actual values passed $xmlrpcServer->functions_parameters_type = 'phpvals'; // define UTF-8 as the internal encoding for the XML-RPC server $defaultEncoding = 'UTF-8'; $xmlrpcServer->xml_header($defaultEncoding); $xmlrpc_internalencoding = $defaultEncoding; // debug level $xmlrpcServer->setDebug(0); // start the service $xmlrpcServer->service(); exit; }
public function import() { global $xmlrpcString, $xmlrpcBase64, $xmlrpc_internalencoding; /* $db = JFactory::getDBO(); $query = $db->getQuery(true); $query->select($db->quoteName('element')); $query->from($db->quoteName('#__extensions')); $query->where($db->quoteName('type') . ' = ' . $db->quote('library')); $query->where($db->quoteName('element') . ' = ' . $db->quote('xmlrpc')); $query->where($db->quoteName('enabled') . ' = 1'); $db->setQuery($query); if ($db->loadResult() == null) { echo '<?xml version="1.0"?> <methodResponse><params><param><value><array><data><value><struct> <member><name>code</name><value><int>15</int></value></member> <member><name>string</name><value><string>XMLRC not supported</string></value></member> </struct></value></data></array></value></param></params></methodResponse>'; return; } */ $app = JFactory::getApplication(); $params = JComponentHelper::getParams('com_j2xml'); $xmlrpcServer = new xmlrpc_server(array('j2xml.import' => array('function' => 'plgXMLRPCJ2XMLServices::import', 'docstring' => 'Import articles from xml file', 'signature' => array(array($xmlrpcString, $xmlrpcBase64, $xmlrpcString, $xmlrpcString)))), false); // allow casting to be defined by that actual values passed $xmlrpcServer->functions_parameters_type = 'phpvals'; // define UTF-8 as the internal encoding for the XML-RPC server $xmlrpcServer->xml_header('UTF-8'); $xmlrpc_internalencoding = 'UTF-8'; // debug level $xmlrpcServer->setDebug($params->get('debug')); // start the service $xmlrpcServer->service(); }
require_once JPATH_BASE . DS . 'includes' . DS . 'framework.php'; // We want to echo the errors so that the xmlrpc client has a chance to capture them in the payload JError::setErrorHandling(E_ERROR, 'die'); JError::setErrorHandling(E_WARNING, 'echo'); JError::setErrorHandling(E_NOTICE, 'echo'); // create the mainframe object $mainframe =& JFactory::getApplication('xmlrpc'); // Ensure that this application is enabled if (!$mainframe->getCfg('xmlrpc_server')) { JError::raiseError(403, 'XML-RPC Server not enabled.'); } // Includes the required class file for the XML-RPC Server jimport('phpxmlrpc.xmlrpc'); jimport('phpxmlrpc.xmlrpcs'); // load all available remote calls JPluginHelper::importPlugin('xmlrpc'); $allCalls = $mainframe->triggerEvent('onGetWebServices'); $methodsArray = array(); foreach ($allCalls as $calls) { $methodsArray = array_merge($methodsArray, $calls); } $xmlrpcServer = new xmlrpc_server($methodsArray, false); // allow casting to be defined by that actual values passed $xmlrpcServer->functions_parameters_type = 'phpvals'; // define UTF-8 as the internal encoding for the XML-RPC server $xmlrpcServer->xml_header($mainframe->getEncoding()); $xmlrpc_internalencoding = $mainframe->getEncoding(); // debug level $xmlrpcServer->setDebug(0); // start the service $xmlrpcServer->service();
/** * Takes the xmlrpc object and generates the response to be set back * @param {xmlrpc_server} $server XML-RPC Server instance * @param {xmlrpcresp} $r XML-RPC Response object to relay to client * @return {string} Response to be sent to the client */ protected function generateErrorResponse(xmlrpc_server $server, xmlrpcresp $r) { $this->response->addHeader('Content-Type', $r->content_type); $this->response->addHeader('Vary', 'Accept-Charset'); $payload = $server->xml_header(); if (empty($r->payload)) { $r->serialize(); } $payload = $payload . $r->payload; return $payload; }