Esempio n. 1
0
	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();
	}
Esempio n. 2
0
 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();
 }
Esempio n. 4
0
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;
 }