urfaclient на php

Вопросы по сопутствующим продуктам производства партнеров
Ответить
hcube
Сообщения: 14
Зарегистрирован: Вт фев 10, 2009 16:33

Сообщение hcube »

Просто отлинкует. Чтобы прилинковать, надо использовать функцию 3019 - link_user_tariff.

Причем последняя не _линкует_ тариф. Она только ставит его в очередь на подлинковку. Потом из админки можно оную линковку утвердить - но это уже другая команда.

[anomality]
Сообщения: 11
Зарегистрирован: Чт фев 19, 2009 09:48
Откуда: Абакан, Россия

Сообщение [anomality] »

короче на самом деле проще дождаться конца месяца :)

South
Сообщения: 21
Зарегистрирован: Чт фев 12, 2009 14:12
Откуда: С-Петербург
Контактная информация:

Сообщение South »

ds а постучись в аську 159655 еще раз я потерял твой номер ... Ты авторизовался и всеее :-)

Systemnick
Сообщения: 14
Зарегистрирован: Пт янв 30, 2009 16:10
Откуда: Россия

Сообщение Systemnick »

hcube писал(а):Чтобы прилинковать, надо использовать функцию 3019 - link_user_tariff.

Причем последняя не _линкует_ тариф. Она только ставит его в очередь на подлинковку. Потом из админки можно оную линковку утвердить - но это уже другая команда.
Чё-то не совсем понял, то есть как утвердить?
У меня всё сразу линкуется. Делаю так:
rpcf_link_user_tariff, затем для каждой необходимой услуги rpcf_add_service_to_user. Разве ещё что-то нужно утверждать?

hcube
Сообщения: 14
Зарегистрирован: Вт фев 10, 2009 16:33

Сообщение hcube »

Ну, у нас просто выбранный тариф утверждается вручную, поэтому вторая функция не используется.

Вот еще функция в копилку...

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

function rpcf_get_all_services_for_user($account_id)
{
    $ret=array();
    if (!urfa_call(0x2700)) {
	// print "Error calling function ". __FUNCTION__ ."\n";
	return FALSE;
    }

    $packet = new Packet(); 
    $packet->DataSetInt($account_id); // account_id
    urfa_send_param($packet); 
    $x = urfa_get_data(); 

    $slink_id_cnt =  $x->DataGetInt();

    for&#40;$i = 0; $i < $slink_id_cnt; $i++&#41; 
    &#123;
	$x = urfa_get_data&#40;&#41;;

	$temp&#91;'service_id'&#93; = $x->DataGetInt&#40;&#41;;
	if&#40;$temp&#91;'service_id'&#93; != -1&#41;
	&#123;
            $temp&#91;'service_type_array'&#93; = $x->DataGetInt&#40;&#41;;
 	     $temp&#91;'service_name_array'&#93; = $x->DataGetString&#40;&#41;;
 	     $temp&#91;'tariff_name_array'&#93; = $x->DataGetString&#40;&#41;;
	     $temp&#91;'service_cost_array'&#93; = $x->DataGetDouble&#40;&#41;;
            $temp&#91;'slink_id_array'&#93; = $x->DataGetInt&#40;&#41;;
            $temp&#91;'discount_period_id_array'&#93; = $x->DataGetInt&#40;&#41;;

	&#125;
	else
	&#123;
	     $temp&#91;'service_id_array'&#93; = $x->DataGetInt&#40;&#41;;
            $temp&#91;'service_type_array'&#93; = $x->DataGetInt&#40;&#41;;
 	     $temp&#91;'service_name_array'&#93; = $x->DataGetString&#40;&#41;;
 	     $temp&#91;'tariff_name_array'&#93; = $x->DataGetString&#40;&#41;;
	     $temp&#91;'service_cost_array'&#93; = $x->DataGetDouble&#40;&#41;;
            $temp&#91;'slink_id_array'&#93; = $x->DataGetInt&#40;&#41;;
            $temp&#91;'discount_period_id_array'&#93; = $x->DataGetInt&#40;&#41;;
	&#125;
	$ret&#91;$i&#93; = $temp;
    &#125;    
    return $ret;
&#125;

Kayfolom
Сообщения: 746
Зарегистрирован: Вс фев 12, 2006 17:15

Сообщение Kayfolom »

hcube, эта функция уже есть - http://wiki.flintnet.ru/doku.php?id=fun ... _id_0x2700

Lelik85
Сообщения: 76
Зарегистрирован: Вт апр 18, 2006 16:14

Сообщение Lelik85 »

Функция rpcf_add_service_to_user еще не реализована?

hcube
Сообщения: 14
Зарегистрирован: Вт фев 10, 2009 16:33

Сообщение hcube »

Наверное, правильно было бы привести семпл работы с URFAClient библиотекой, ну хотя бы на проверку логина юзера, с использованием одной функции.

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

	function rpcf_user5_change_password_service&#40;$slink_id, $item_id, $old_password, $new_password, $new_password_ret&#41; &#123; //-0x4025
		$ret=array&#40;&#41;;
		if &#40;!$this->connection->urfa_call&#40;-0x4025&#41;&#41; &#123;
			print "Error calling function ". __FUNCTION__ ."\n";
			return FALSE;
		&#125;
		$packet = $this->connection->getPacket&#40;&#41;;
		$packet->DataSetInt&#40;$slink_id&#41;;
		$packet->DataSetInt&#40;$item_id&#41;;
		$packet->DataSetString&#40;$old_password&#41;;
		$packet->DataSetString&#40;$new_password&#41;;
		$packet->DataSetString&#40;$new_password_ret&#41;;
		$this->connection->urfa_send_param&#40;$packet&#41;;
		if &#40;$x = $this->connection->urfa_get_data&#40;&#41;&#41; &#123;
			$ret&#91;'status'&#93; = $x->DataGetInt&#40;&#41;;
		&#125;
		return $ret;
	&#125;
Последний раз редактировалось hcube Вт мар 03, 2009 12:10, всего редактировалось 1 раз.

Аватара пользователя
BlackJack
Сообщения: 35
Зарегистрирован: Чт янв 29, 2009 08:56
Откуда: Voskresensk

Сообщение BlackJack »

можно мне последнюю сборку Urfa на РНР плиззз??? a.kislov@ncv.ru

Roland
Сообщения: 1
Зарегистрирован: Ср фев 25, 2009 07:49

Сообщение Roland »

Не удобней ли было бы создать проект на sf.net, к примеру. В тикетах народ писал бы функции, которые добавил, они бы переносились в проект. И всем гораздо проще было бы иметь последний список функций из svn :) Давайте сделаем? Скиньте мне тоже плиз это чудо на alevkin[[d][o][g]]gmail.com

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

http://wiki.flintnet.ru/doku.php и есть такой проект

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

что-то я не понял.
Кто мне расскажет, что я делаю не так?
Хочу использовать rpcf_get_ipgroup
Вызываю:
$ipg=$urfa_admin->rpcf_get_ipgroup(2814);
работает.
$ipg=$urfa_admin->rpcf_get_ipgroup($ipg_id);
не работает.
Error calling function rpcf_add_to_ipgroup

mikkey finn
Сообщения: 1612
Зарегистрирован: Пт ноя 10, 2006 15:23

Сообщение mikkey finn »

кстати о птичках. Каковы условия повторного вызова?
А то делаю:
$i=1;
while ($i<3) {
$new_ip=$urfa_admin->rpcf_get_free_ips_for_house($house);
print $new_ip['free_ips'][0]['ips_ip']."\n";
$i++;
}
стабильно получаю только один(первый) адрес. Повторно - Error calling function BLABLABLA.
В логах ведра примерно такое:
ERROR : Mar 12 14:27:44 RPCServer@0.0.0.0: Exception in rpcf_get_free_ips_for_house: #22

Причем без разницы, какая функция идет второй. Можно получить сначала свободный адрес, потому пытаться получить инфо о существующей IP-группе(добавить новую, удалить старую) - будет ошибка.
Полный лог ядра в этот момент(дебаг-лог)

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

 Info  &#58; Mar 12 14&#58;27&#58;44 RPCConn<init@10.10.0.9>&#58; Access granted to <init@10.10.0.9> &#40;UID&#58; -1&#41;
?Debug &#58; Mar 12 14&#58;27&#58;44 RPCConn<init@10.10.0.9>&#58; Call&#58; 0x2813 &#40;rpcf_get_free_ips_for_house&#41;
?Debug &#58; Mar 12 14&#58;27&#58;44 RPCConn<init@10.10.0.9>&#58; Real Call&#58; 0x2813 &#40;rpcf_get_free_ips_for_house&#41;
?Debug &#58; Mar 12 14&#58;27&#58;44 DBCtx&#58; <138657792> SQL SELECT query&#58; SELECT id, ip_zone_id, connect_date, post_code, country, region, city, street, number, building, additional_ip_zones_key FROM houses WHERE id='30'
?Debug &#58; Mar 12 14&#58;27&#58;44 DBCtx&#58; <138657792> SQL SELECT query&#58; SELECT net, mask, gateway FROM ip_zones_detail WHERE ip_zone_id='19'
?Debug &#58; Mar 12 14&#58;27&#58;44 DBCtx&#58; <138657792> SQL SELECT query&#58; SELECT id, ip_group_id, ip FROM ip_groups WHERE &#40;168457994&mask&#41;=&#40;ip&&#40;-1&#41;&mask&#41; AND is_deleted=0
?Debug &#58; Mar 12 14&#58;27&#58;44 DBCtx&#58; <138657792> SQL SELECT query&#58; SELECT name FROM ip_zones WHERE id='19'
?Debug &#58; Mar 12 14&#58;27&#58;44 RPCConn<init@10.10.0.9>&#58; Call 0x2813 &#40;rpcf_get_free_ips_for_house&#41; finished...
?Debug &#58; Mar 12 14&#58;27&#58;44 RPCConn<init@10.10.0.9>&#58; Stream cleared
?Debug &#58; Mar 12 14&#58;27&#58;44 RPCConn<init@10.10.0.9>&#58; Call&#58; 0x2813 &#40;rpcf_get_free_ips_for_house&#41;
?Debug &#58; Mar 12 14&#58;27&#58;44 RPCConn<init@10.10.0.9>&#58; Real Call&#58; 0x2813 &#40;rpcf_get_free_ips_for_house&#41;
 ERROR &#58; Mar 12 14&#58;27&#58;44 RPCServer@0.0.0.0&#58; Exception in rpcf_get_free_ips_for_house&#58; #22
?Debug &#58; Mar 12 14&#58;27&#58;44 RPCConn<init@10.10.0.9>&#58; Call 0x2813 &#40;rpcf_get_free_ips_for_house&#41; finished...
?Debug &#58; Mar 12 14&#58;27&#58;44 RPCConn<init@10.10.0.9>&#58; Stream cleared
 Warn  &#58; Mar 12 14&#58;27&#58;44 RPCConn<init@10.10.0.9>&#58; Session closed
?Debug &#58; Mar 12 14&#58;27&#58;44 RPCConn<init@10.10.0.9>&#58; Session stored for UID -1 from <10.10.0.9>
?Debug &#58; Mar 12 14&#58;27&#58;44 RPCConn<init@10.10.0.9>&#58; Session closed...
А если вставить в цикл создание нового объекта URFAClientAdmin - то все пройдет нормально...
Есть шансы на избавление от геморроя, при которых достаточно один раз в начале скрипта подключиться, потом просто дергать функции не озадачиваясь пересозданием объекта?

ctyz
Сообщения: 30
Зарегистрирован: Пн фев 09, 2009 11:24

Сообщение ctyz »

mikkey finn писал(а): Есть шансы на избавление от геморроя, при которых достаточно один раз в начале скрипта подключиться, потом просто дергать функции не озадачиваясь пересозданием объекта?
скорей всего нужно просто подождать релиза от ds

Аватара пользователя
ds
Сообщения: 380
Зарегистрирован: Пн сен 18, 2006 14:06

Сообщение ds »

mikkey finn писал(а):что-то я не понял.
Кто мне расскажет, что я делаю не так?
Хочу использовать rpcf_get_ipgroup
Вызываю:
$ipg=$urfa_admin->rpcf_get_ipgroup(2814);
работает.
$ipg=$urfa_admin->rpcf_get_ipgroup($ipg_id);
не работает.
Error calling function rpcf_add_to_ipgroup
Можешь выложить код всех этих функций? + rpcf_get_free_ips_for_house, я посмотрю что не так. и еще urfa_get_data

Ответить