Comments 6
Спасибо за идею и статью.
Пытаюсь воспроизвести, но не соображу, как подключить новый класс drupal.xmlrpc.class.php. Через include() в коде клиента?

Подскажите, пожалуйста.
Чтобы быстро проверить как это всё работает, можно сделать так:

в файле cli_longrun_example.php (пример бота в проекте XMPPHP) пишем:

require_once 'drupal.xmlrpc.class.php';
$drpc = new drupalxmlrpc( $conf );


Дальше, в цикле обработки сообщений, после строк
case 'chat':
case 'message':


Пишем что-то типа такого:

/// отвечаем только на сообщения НЕ нулевой длины
if ( mb_strlen(trim($pl['body']), 'utf-8') > 0) {

drpc->user_login('[LOGIN]','[PASS]');

/// сохраняем присланное сообщение
$nid = $drpc->node_save($pl['from'], $pl['body']);

/// отвечаем приславшему, сообщение о добавлении.
/// хорошая идея отправлять вместо сообщения ссылку на сайт
/// для этого используйте $nid: example.com/node/$nid
$conn->message( $pl['from'], 'MESSAGE POSTED' );

}


Причем, заметим, что логин происходит каждый раз, когда приходит сообщение.
Отлично. Этот этап я прошел :) Но сообщение не сохраняет, увы. В чем может быть проблема?

Скажите, а define('_DEFAULT_PATH', '/services/xmlrpc'); должно указывать на /sites/all/modules/services/xmlrpc? Или на каталог xmlrpc, в который я положил библиотеку xmlrpc?

(Еще в Drupal ведь есть /includes/xmlrpc.inc. Она не может заменить xmlrpc.inc из библиотеки xmlrpc?)
Если поможет разобраться: $nid выводит «Didn't receive 200 OK from remote server. (HTTP/1.1 404 Not Found)»
_DEFAULT_PATH — это путь по которому будут отправляться на серевер запросы RPC. Этот путь, думаю, менять не стоит, по умолчанию он именно такой.

Заменять не нужно, достаточно активировать модуль и установить авторизацию НЕ (!) по ключу

Чтобы узнать в чём проблема, попробуйте следующее:

1) сделайте простенький index.php примерно следующего содержания:

<?
require_once 'drupal.xmlrpc.class.php';

$conf = array(
'serv' => '[SERVER_ADDR]',
'port' => 80,
);

$drpc = new drupalxmlrpc( $conf );

$result = $drpc->connect;

print_r($result);
?>


2) поменяйте значение константы __DEBUG на единицу в файле drupal.xmlrpc.class.php.

3) откройте ваш index.php через www

4) В случае успеха, попробуйте залогиниться с помощью $drpc->user_login

5) И последним шагом проверяйте создание нод: $drpc->node_save

По выводимым ошибкам определить проблему труда не составит.
Only those users with full accounts are able to leave comments. Log in, please.