public function writeOutput() { if ($this->isFault()) { XMLRPC_error($this->faultCode, $this->faultString); } elseif ($this->returnValue == null) { // TODO: Can we return nothing throuh xmlrpc? // TODO: Why is XMLRPC_prepare going nuts with an empty string passed? XMLRPC_response(XMLRPC_prepare("void")); } else { $type = $this->returnValue->getType(); if ($type == Types::DATE) { $convertedValue = XMLRPC_convert_timestamp_to_iso8601($this->returnValue->getValue()); } else { $convertedValue = $this->returnValue->getValue(); } XMLRPC_response(XMLRPC_prepare($convertedValue)); } }
function openthesaurus_searchSynonyms($query) { $start = getmicrotime(); $items = array(); $query_str = sprintf("\n\t\tSELECT words.id AS word_id, word, meaning_id\n\t\tFROM words, word_meanings, meanings\n\t\tWHERE \n\t\t\tword = '%s' AND\n\t\t\twords.id = word_meanings.word_id AND\n\t\t\tword_meanings.meaning_id = meanings.id AND\n\t\t\tmeanings.hidden = 0\n\t\n\t\tUNION\n\n\t\tSELECT words.id AS word_id, word, meaning_id\n\t\tFROM words, word_meanings, meanings\n\t\tWHERE \n\t\t\tlookup = '%s' AND\n\t\t\twords.id = word_meanings.word_id AND\n\t\t\tword_meanings.meaning_id = meanings.id AND\n\t\t\tmeanings.hidden = 0\n\n\t\tORDER BY word", myaddslashes($query), myaddslashes($query), myaddslashes($query), myaddslashes($query)); $db = new DB_Thesaurus(); $db->query($query_str); $synmatches = 1; if ($db->nf() == 0) { $item['words'] = array(); $items[] = $item; } while ($db->next_record()) { $mid = $db->f('meaning_id'); $item['words'] = getSynsetWithUsage($db->f('meaning_id'), 1); $items[] = $item; } $_GET['search'] = 1; # otherwise logSearch ignores the search logSearch($db, $query, $db->nf(), 0, getEndTimer(), 1); XMLRPC_response(XMLRPC_prepare($items), KD_XMLRPC_USERAGENT); }
function mt_publishPost($params) { global $loq; if ($loq->userauth($params[1], $params[2])) { // password accepted ob_start(); XMLRPC_response(XMLRPC_prepare(true), WEBLOG_XMLPRPC_USERAGENT); } else { XMLRPC_error("301", "The username and password you entered was not accepted. Please try again.", WEBLOG_XMLRPC_USERAGENT); } }
function sayHello($params) { $result = 'Привет, ' . $params[0] . '!'; XMLRPC_response(XMLRPC_prepare($result), WEBLOG_XMLRPC_USERAGENT); }
// Налоги и сборы, в % $taxes = array('НДС' => 18, 'Налог с продаж' => 5, 'Обработка заказа' => 10); // XML-PRC сервер require 'xmlrpc.php'; // Включим отладку define('XMLRPC_DEBUG', true); // Декларация методов и назначение методам функций $xmlrpc_methods = array('eshop.getDeliveryMethods' => 'getDeliveryMethods', 'eshop.calculateOrder' => 'calculateOrder'); // Обработка запроса $xmlrpc_request = XMLRPC_parse($HTTP_RAW_POST_DATA); $methodName = XMLRPC_getMethodName($xmlrpc_request); $params = XMLRPC_getParams($xmlrpc_request); if (isset($xmlrpc_methods[$methodName])) { // Вызов метода $result = $xmlrpc_methods[$methodName]($params); XMLRPC_response(XMLRPC_prepare($result), WEBLOG_XMLRPC_USERAGENT); } else { // Ошибка: Нет такого метода XMLRPC_error('2', "Метод '{$methodName}' не найден.", WEBLOG_XMLRPC_USERAGENT); } // ----------------------------- Бизнес - логика ----------------------------- // Функция возвращает методы доставки function getDeliveryMethods($params) { global $deliveryMethods; return $deliveryMethods; } // Функция возвращает расчет стоимости заказа function calculateOrder($params) { global $deliveryMethods, $deliveryCost, $taxes;
function metaWeblog_getRecentPosts($count) { // SPEC: metaWeblog.getRecentPosts (postid, username, password[, count]) returns struct $posts = array(); foreach ($this->ParentDocument->getChildren($count) as $d) { $posts[] = $this->_convertDocumentToStruct($d); } XMLRPC_response(XMLRPC_prepare($posts), IMPCMS_USERAGENT); }