urfaclient на php

Вопросы по сопутствующим продуктам производства партнеров
Ответить
Аватара пользователя
Chrst
Сообщения: 370
Зарегистрирован: Пт май 11, 2007 09:28
Откуда: Медиахолдинг "ЛеККС"
Контактная информация:

Сообщение Chrst »

ph4n70m_d писал(а):Всем доброго.

Народ подскажите функцию для снятия блокировки пользователя, (не важно, админская блокировка или системная).
Т.к. блокировать блокирует, а разблокировать не хочет О.о.

юзаю функцию <function name="rpcf_block_account" id="0x2037">
Пробовал ставить параметру $block = 0, не помогло...
А как насчет rpcf_save_account //0x2032 ?

Для собственных нужд написал такое:

Код: Выделить всё

function rpcf_set_block_account&#40;$account_id,$block&#41; &#123; // non urfa standart function
                $account = $this->rpcf_get_accountinfo&#40;$account_id&#41;;  //0x2030
                $discount_period_id = 0;
                $dealer_account_id = $account&#91;'dealer_account_id'&#93;;
                $is_blocked = $block;
                $block_start_date = $this->now&#40;&#41;;
                $block_end_date = '2000000000';
                $vat_rate = $account&#91;'vat_rate'&#93;;
                $sale_tax_rate = $account&#91;'sale_tax_rate'&#93;;
                $int_status = $account&#91;'int_status'&#93;;
                $block_recalc_abon = $account&#91;'block_recalc_abon'&#93;;
                $block_recalc_prepaid = $account&#91;'block_recalc_prepaid'&#93;;
                $unlimited = $account&#91;'unlimited'&#93;;
                $credit = $account&#91;'credit'&#93;;
                $this->rpcf_save_account&#40;$account_id, $discount_period_id,   
                         $credit, $is_blocked, $block_start_date, 
                         $block_end_date, $dealer_account_id, $vat_rate, 
                         $sale_tax_rate, $int_status, $block_recalc_abon, 
                         $block_recalc_prepaid, $unlimited&#41;; //0x2032
&#125;

Витька
Сообщения: 236
Зарегистрирован: Вс дек 16, 2007 21:54

Сообщение Витька »

Мне, может, не по глазам, но никак не могу найти в api.xml функции, позволяющей искать конкретный платёж по каким-либо параметрам - например комментарию или "внешнему номеру".
В голову приходят два варианта - прямой поиск в базе либо отчёт по платежам за заведомо большой период с поиском в нём.
Неужели всё правда так печально?

bobr
Сообщения: 29
Зарегистрирован: Ср июл 18, 2007 11:09

Сообщение bobr »

Витька писал(а):Мне, может, не по глазам, но никак не могу найти в api.xml функции, позволяющей искать конкретный платёж по каким-либо параметрам - например комментарию или "внешнему номеру".
В голову приходят два варианта - прямой поиск в базе либо отчёт по платежам за заведомо большой период с поиском в нём.
Неужели всё правда так печально?
Лично я для получения почти любой информации использую прямые запросы в базу, т.к. так намного все гибче получается, и возвращается так, как тебе нужно. Взаимодействия же происходят через урфу.

Витька
Сообщения: 236
Зарегистрирован: Вс дек 16, 2007 21:54

Сообщение Витька »

bobr писал(а):
Витька писал(а):Мне, может, не по глазам, но никак не могу найти в api.xml функции, позволяющей искать конкретный платёж по каким-либо параметрам - например комментарию или "внешнему номеру".
В голову приходят два варианта - прямой поиск в базе либо отчёт по платежам за заведомо большой период с поиском в нём.
Неужели всё правда так печально?
Лично я для получения почти любой информации использую прямые запросы в базу, т.к. так намного все гибче получается, и возвращается так, как тебе нужно. Взаимодействия же происходят через урфу.
Мне кажется, что всё, что можно спросить у ядра, нужно спрашивать именно у него, и только если ядро не умеет отвечать на какой-то вопрос, то тогда лезть в базу. Даже на чтение.

forgotten
Сообщения: 53
Зарегистрирован: Чт авг 28, 2008 08:11

Сообщение forgotten »

Витька писал(а):
bobr писал(а):
Витька писал(а):Мне, может, не по глазам, но никак не могу найти в api.xml функции, позволяющей искать конкретный платёж по каким-либо параметрам - например комментарию или "внешнему номеру".
В голову приходят два варианта - прямой поиск в базе либо отчёт по платежам за заведомо большой период с поиском в нём.
Неужели всё правда так печально?
Лично я для получения почти любой информации использую прямые запросы в базу, т.к. так намного все гибче получается, и возвращается так, как тебе нужно. Взаимодействия же происходят через урфу.
Мне кажется, что всё, что можно спросить у ядра, нужно спрашивать именно у него, и только если ядро не умеет отвечать на какой-то вопрос, то тогда лезть в базу. Даже на чтение.
Вы ошибаетесь. Как раз всё наоборот. Всё что можно сделать без ядра, лучше делать без участия ядра.

ph4n70m_d
Сообщения: 19
Зарегистрирован: Чт май 14, 2009 09:53

Сообщение ph4n70m_d »

Chrst, пасиб :) помогло :)

dwemer
Сообщения: 276
Зарегистрирован: Чт янв 25, 2007 05:59

Сообщение dwemer »

forgotten писал(а):Вы ошибаетесь. Как раз всё наоборот. Всё что можно сделать без ядра, лучше делать без участия ядра.
согласен, только надо понимать что в этом случае получаем:

+ для быстродействия
- для поддержки костылей: в следующих релизах структура данных может поменяться и придется переписывать запросы, а ядро теоретически должно сохранить совместимость по api

wingman
Сообщения: 136
Зарегистрирован: Чт дек 07, 2006 15:36
Контактная информация:

Сообщение wingman »

dwemer писал(а):
forgotten писал(а):Вы ошибаетесь. Как раз всё наоборот. Всё что можно сделать без ядра, лучше делать без участия ядра.
согласен, только надо понимать что в этом случае получаем:

+ для быстродействия
- для поддержки костылей: в следующих релизах структура данных может поменяться и придется переписывать запросы, а ядро теоретически должно сохранить совместимость по api
с переходом с 006 на 007 нам пришлось несколько скриптов, работающих с урфа и пеймент_тул переписывать из-за изменения синтаксиса и API =)

dwemer
Сообщения: 276
Зарегистрирован: Чт янв 25, 2007 05:59

Сообщение dwemer »

wingman писал(а):с переходом с 006 на 007 нам пришлось несколько скриптов, работающих с урфа и пеймент_тул переписывать из-за изменения синтаксиса и API =)
ну.. в условиях нетапа привычные принципы не работают )

edison
Сообщения: 68
Зарегистрирован: Сб авг 15, 2009 11:34

Сообщение edison »

Chrst писал(а):
ph4n70m_d писал(а):Всем доброго.

Народ подскажите функцию для снятия блокировки пользователя, (не важно, админская блокировка или системная).
Т.к. блокировать блокирует, а разблокировать не хочет О.о.

юзаю функцию <function name="rpcf_block_account" id="0x2037">
Пробовал ставить параметру $block = 0, не помогло...
А как насчет rpcf_save_account //0x2032 ?

Для собственных нужд написал такое:

Код: Выделить всё

function rpcf_set_block_account&#40;$account_id,$block&#41; &#123; // non urfa standart function
                $account = $this->rpcf_get_accountinfo&#40;$account_id&#41;;  //0x2030
                $discount_period_id = 0;
                $dealer_account_id = $account&#91;'dealer_account_id'&#93;;
                $is_blocked = $block;
                $block_start_date = $this->now&#40;&#41;;
                $block_end_date = '2000000000';
                $vat_rate = $account&#91;'vat_rate'&#93;;
                $sale_tax_rate = $account&#91;'sale_tax_rate'&#93;;
                $int_status = $account&#91;'int_status'&#93;;
                $block_recalc_abon = $account&#91;'block_recalc_abon'&#93;;
                $block_recalc_prepaid = $account&#91;'block_recalc_prepaid'&#93;;
                $unlimited = $account&#91;'unlimited'&#93;;
                $credit = $account&#91;'credit'&#93;;
                $this->rpcf_save_account&#40;$account_id, $discount_period_id,   
                         $credit, $is_blocked, $block_start_date, 
                         $block_end_date, $dealer_account_id, $vat_rate, 
                         $sale_tax_rate, $int_status, $block_recalc_abon, 
                         $block_recalc_prepaid, $unlimited&#41;; //0x2032
&#125;
Функция интересная, а вот как будет выглядеть плагин для постановки и снятия блокировки самостоятельно пользователем из личного кабинета??

blind_pew
Сообщения: 2
Зарегистрирован: Пт дек 11, 2009 23:41

Сообщение blind_pew »

Подскажите пожалуйста, в указанной функции что есть параметр groups_size
и откуда он берется?

function rpcf_edit_sys_user($user_id,$login,$password,$ip_address,$mask,$groups_size) { //0x4407
$ret=0;
if (!$this->connection->urfa_call(0x4407)) {
print "Error calling function ". __FUNCTION__ ."\n";
return FALSE;
}
$packet = $this->connection->getPacket();
$packet->DataSetInt($user_id);
$packet->DataSetString($login);
$packet->DataSetString($password);
$packet->DataSetIPAddress($ip_address);
$packet->DataSetIPAddress($mask);
$packet->DataSetInt($groups_size);
$this->connection->urfa_send_param($packet);
if ($x = $this->connection->urfa_get_data()){
$ret = $x->DataGetInt();
$this->connection->urfa_get_data();
}
return $ret;
}

blind_pew
Сообщения: 2
Зарегистрирован: Пт дек 11, 2009 23:41

Сообщение blind_pew »

Уже разобрался. Функция оказалось неверной. Вчера добрался до api.xml там,
в качестве groups_size должен передаваться массив аналогичный получаемому из rpcf_get_sys_user. В итоге функция должна выглядеть примерно так:

function rpcf_edit_sys_user($user_id,$login,$password,$ip_address,$mask,$groups) { //0x4407
$ret=0;
if (!$this->connection->urfa_call(0x4407)) {
print "Error calling function ". __FUNCTION__ ."\n";
return FALSE;
}
$packet = $this->connection->getPacket();
$packet->DataSetInt($user_id);
$packet->DataSetString($login);
$packet->DataSetString($password);
$packet->DataSetIPAddress($ip_address);
$packet->DataSetIPAddress($mask);
$packet->DataSetInt(count($groups));
for($i=0; $i<count($groups); $i++)
{
$packet->DataSetInt($groups[$i]['group_id']);
}

$this->connection->urfa_send_param($packet);
if ($x = $this->connection->urfa_get_data()){
$ret = $x->DataGetInt();
$this->connection->urfa_get_data();
}
return $ret;
}

В этом случае данные sys_usera должны меняться нормально (проверил на паролях).

Davion
Сообщения: 267
Зарегистрирован: Чт дек 01, 2005 13:36

Сообщение Davion »

:( пытаюсь выдернуть отчет по трафику урфа пхп клиентом, а он на меня ругается...

Код: Выделить всё

Fatal error&#58; Uncaught exception 'Exception' with message 'Error code 0' in /usr/local/www/cgi-bin/utm5/reliz/page/urfaclient_packet.php&#58;27 Stack trace&#58; #0 /usr/local/www/cgi-bin/utm5/reliz/page/urfaclient_connection.php&#40;126&#41;&#58; URFAClient_Packet->read&#40;&#41; #1 /usr/local/www/cgi-bin/utm5/reliz/page/urfaclient_user5.php&#40;892&#41;&#58; URFAClient_Connection->urfa_get_data&#40;&#41; #2 /usr/local/www/cgi-bin/utm5/reliz/page/traff.php&#40;352&#41;&#58; URFAClient_User5->rpcf_user5_traffic_report&#40;1259614800, 1262031179&#41; #3 /usr/local/www/cgi-bin/utm5/reliz/page/mainright.php&#40;5&#41;&#58; include&#40;'/usr/local/www/...'&#41; #4 /usr/local/www/cgi-bin/utm5/reliz/page/main.php&#40;5&#41;&#58; include&#40;'/usr/local/www/...'&#41; #5 /usr/local/www/cgi-bin/utm5/reliz/index.php&#40;38&#41;&#58; include&#40;'/usr/local/www/...'&#41; #6 &#123;main&#125; thrown in /usr/local/www/cgi-bin/utm5/reliz/page/urfaclient_packet.php on line 27
Куда копать???

dk
Сообщения: 424
Зарегистрирован: Чт авг 10, 2006 08:52

Сообщение dk »

Davion писал(а)::( пытаюсь выдернуть отчет по трафику урфа пхп клиентом, а он на меня ругается...
Было в traffic_report_ex такое же, если запрос слишком долго обрабатывается (в БД), похоже что где-то таймаут срабатывает.

Витька
Сообщения: 236
Зарегистрирован: Вс дек 16, 2007 21:54

Сообщение Витька »

А подскажите, кто знает, функция 0x2037 используется только для установки блокировки? Чтобы снять, нужно save_account использовать?

upd: тред оказался не по глазам :) вопрос снимается.

Ответить