urfaclient на php

Вопросы по сопутствующим продуктам производства партнеров
Ответить
bobr
Сообщения: 29
Зарегистрирован: Ср июл 18, 2007 11:09

Сообщение bobr »

Kayfolom писал(а):bobr, может $address = "127.0.0.1" и $port = "11758" не зашивать в класс, а перенести в параметры конструкторов
Да, поправильному нужно переопределять конструкторы даже если класс наследуется, чтобы всегда нужно было передавать параметры при создании. Насчет вывода ошибок: можешь дописать в методе URFAClient_Exception::__construct() их вывод как echo $message; например.

Wishmaster
Сообщения: 309
Зарегистрирован: Сб апр 16, 2005 11:44

Сообщение Wishmaster »

ds писал(а):

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

$this->connection->urfa_get_data();
for &#40;$i=0;$i<$ret&#91;'atr_size'&#93;;$i++&#41; &#123;
         $x = $this->connection->urfa_get_data&#40;&#41;; 
До for и после for убери вызовы
$this->connection->urfa_get_data();
Спасибо огромное! Помогло.

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

Сообщение Kayfolom »

Вопрос немного не в тему, но вдруг...
Как сохранить экземпляр класса в текущей сессии, и самое главное - как его в дальнейшем использовать?

Вот к примеру:
$urfa_user5 = $urfa_admin->getURFAClient_User5("login", "password");
$_SESSION[URFA][URFA_INTERFACE]=$urfa_user5;
потом нужно вызывать функции класса, но как - ума не приложу. Не силен я в php, а чтение документации не привело меня к решению.

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

Сообщение ds »

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

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

Сообщение Kayfolom »

ds писал(а):Не, так не получится. Экземпляр класса разрушается при завершении скрипта, т.е. при каждом обновлении страницы будет создаваться новый экз-р, а по окончании работы скрипта, когда все ф-ции отработают, он будет автоматом разрушен.
Спасибо, все понял. А каким образом тогда использовать классы urfa к примеру в личном кабинете? На каждой странице авторизовываться в билинге заново?

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

Сообщение ds »

Ну да. Также как и при работе например с mysql.

Pulse
Сообщения: 945
Зарегистрирован: Вт окт 03, 2006 12:58

Сообщение Pulse »

skey есть в официальном клиенте... но я с ним так и не разобрался

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

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

вести сессии/кукесы?
Свою таблицу с идентификатором(ЛС)/сессией?

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

Сообщение Davion »

:roll: коллеги поделитесь пожалуйста наиболее полной сборкой функций!

starchik
Сообщения: 461
Зарегистрирован: Сб ноя 22, 2008 22:07

Сообщение starchik »

Davion писал(а)::roll: коллеги поделитесь пожалуйста наиболее полной сборкой функций!
так в первом посте есть ссылка на самую последнюю сборку.

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

Сообщение ds »

starchik писал(а):
Davion писал(а)::roll: коллеги поделитесь пожалуйста наиболее полной сборкой функций!
так в первом посте есть ссылка на самую последнюю сборку.
Я пока не добавил последних функций с форума.

Wishmaster
Сообщения: 309
Зарегистрирован: Сб апр 16, 2005 11:44

Сообщение Wishmaster »

2 ds:

Чтоб удобнее было добавлять, выложу все, что сделал одним паком:

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

	function rpcf_user5_service_report&#40;$start_date,$end_date&#41; &#123; //-0x4011
		$ret=array&#40;&#41;;
		if &#40;!$this->connection->urfa_call&#40;-0x4011&#41;&#41; &#123;
			print "Error calling function ". __FUNCTION__ ."\n";
			return FALSE;
		&#125;
		$packet = $this->connection->getPacket&#40;&#41;;
		$packet->DataSetInt&#40;$start_date&#41;;
		$packet->DataSetInt&#40;$end_date&#41;;
		$this->connection->urfa_send_param&#40;$packet&#41;;
		if &#40;$x = $this->connection->urfa_get_data&#40;&#41;&#41; &#123;
			$ret&#91;'aids_size'&#93; = $x->DataGetInt&#40;&#41;;
			for &#40;$i=0;$i<$ret&#91;'aids_size'&#93;;$i++&#41; &#123;
				$x = $this->connection->urfa_get_data&#40;&#41;;
				$services&#91;'asr_size'&#93; = $x->DataGetInt&#40;&#41;;
				for&#40;$j=0;$j<$services&#91;'asr_size'&#93;;$j++&#41;&#123;
				$x = $this->connection->urfa_get_data&#40;&#41;;
				$services&#91;'asr_size_array'&#93;&#91;$j&#93;&#91;'account_id'&#93; = $x->DataGetInt&#40;&#41;;
				$services&#91;'asr_size_array'&#93;&#91;$j&#93;&#91;'discount_date'&#93; = $x->DataGetInt&#40;&#41;;
				$services&#91;'asr_size_array'&#93;&#91;$j&#93;&#91;'discount'&#93; = $x->DataGetDouble&#40;&#41;;
				$services&#91;'asr_size_array'&#93;&#91;$j&#93;&#91;'discount_with_tax'&#93; = $x->DataGetDouble&#40;&#41;;
				$services&#91;'asr_size_array'&#93;&#91;$j&#93;&#91;'service_name'&#93; = $x->DataGetString&#40;&#41;;
				$services&#91;'asr_size_array'&#93;&#91;$j&#93;&#91;'service_type'&#93; = $x->DataGetInt&#40;&#41;;
				$services&#91;'asr_size_array'&#93;&#91;$j&#93;&#91;'comment'&#93; = $x->DataGetString&#40;&#41;;
				&#125;
				$ret&#91;'services'&#93;&#91;&#93;=$services;
			&#125;
			$this->connection->urfa_get_data&#40;&#41;;
		&#125;
		return $ret;
	&#125;

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

		function rpcf_user5_payments_report&#40;$start_date,$end_date&#41; &#123; //-0x4012
		$ret=array&#40;&#41;;
		if &#40;!$this->connection->urfa_call&#40;-0x4012&#41;&#41; &#123;
			print "Error calling function ". __FUNCTION__ ."\n";
			return FALSE;
		&#125;
		$packet = $this->connection->getPacket&#40;&#41;;
		$packet->DataSetInt&#40;$start_date&#41;;
		$packet->DataSetInt&#40;$end_date&#41;;
		$this->connection->urfa_send_param&#40;$packet&#41;;
		$x = $this->connection->urfa_get_data&#40;&#41;;
		$ret&#91;'account_id'&#93;=$x->DataGetInt&#40;&#41;;
		$ret&#91;'atr_size'&#93;=$x->DataGetInt&#40;&#41;;
		for &#40;$i=0;$i<$ret&#91;'atr_size'&#93;;$i++&#41; &#123;
			$payment&#91;'actual_date'&#93; = $x->DataGetInt&#40;&#41;;
			$payment&#91;'payment_enter_date'&#93; = $x->DataGetInt&#40;&#41;;
			$payment&#91;'payment'&#93; = $x->DataGetDouble&#40;&#41;;
			$payment&#91;'payment_incurrency'&#93; = $x->DataGetDouble&#40;&#41;;
			$payment&#91;'currency_id'&#93; = $x->DataGetInt&#40;&#41;;
			$payment&#91;'payment_method_id'&#93; = $x->DataGetInt&#40;&#41;;
			$payment&#91;'payment_method'&#93; = $x->DataGetString&#40;&#41;;
			$payment&#91;'comment'&#93; = $x->DataGetString&#40;&#41;;
			$ret&#91;'payment'&#93;&#91;&#93;=$payment;
			
		&#125;
		$this->connection->urfa_get_data&#40;&#41;;
		return $ret;
	&#125;

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

	function rpcf_user5_get_services_info&#40;$slink_id&#41; &#123; //-0x4024
		$ret=array&#40;&#41;;
		if &#40;!$this->connection->urfa_call&#40;-0x4024&#41;&#41; &#123;
			print "Error calling function ". __FUNCTION__ ."\n";
			return FALSE;
		&#125;
		$packet = $this->connection->getPacket&#40;&#41;;
		$packet->DataSetInt&#40;$slink_id&#41;;
		$this->connection->urfa_send_param&#40;$packet&#41;;
		$x = $this->connection->urfa_get_data&#40;&#41;;
		$ret&#91;'service_type'&#93;=$x->DataGetInt&#40;&#41;;
		$ret&#91;'service_id'&#93;=$x->DataGetInt&#40;&#41;;
		$ret&#91;'service_name'&#93;=$x->DataGetString&#40;&#41;;
		$ret&#91;'tariff_id'&#93;=$x->DataGetInt&#40;&#41;;
		$ret&#91;'discounted_in_curr_period'&#93;=$x->DataGetDouble&#40;&#41;;
		$ret&#91;'cost'&#93;=$x->DataGetDouble&#40;&#41;;
		$x = $this->connection->urfa_get_data&#40;&#41;;
		switch &#40;$ret&#91;'service_type'&#93;&#41;&#123;
			case "3"&#58;
				$ret&#91;'bytes_in_mbyte'&#93;=$x->DataGetInt&#40;&#41;;
				$ret&#91;'iptsl_downloaded_size'&#93;=$x->DataGetInt&#40;&#41;;
				for &#40;$i=0;$i<=$ret&#91;'iptsl_downloaded_size'&#93;-1;$i++&#41;&#123;
					$x = $this->connection->urfa_get_data&#40;&#41;;
					$ret&#91;'iptsl_downloaded_size_list'&#93;&#91;$i&#93;&#91;'tclass'&#93;=$x->DataGetString&#40;&#41;;
					$ret&#91;'iptsl_downloaded_size_list'&#93;&#91;$i&#93;&#91;'downloaded'&#93;=$x->DataGetLong&#40;&#41;;
				&#125;
				$x = $this->connection->urfa_get_data&#40;&#41;;
				$ret&#91;'iptsl_old_prepaid_size'&#93;=$x->DataGetInt&#40;&#41;;
				for &#40;$i=0;$i<=$ret&#91;'iptsl_old_prepaid_size'&#93;-1;$i++&#41;&#123;
					$x = $this->connection->urfa_get_data&#40;&#41;;
					$ret&#91;'iptsl_old_prepaid_size_list'&#93;&#91;$i&#93;&#91;'tclass'&#93;=$x->DataGetString&#40;&#41;;
					$ret&#91;'iptsl_old_prepaid_size_list'&#93;&#91;$i&#93;&#91;'downloaded'&#93;=$x->DataGetLong&#40;&#41;;
				&#125;
				$x = $this->connection->urfa_get_data&#40;&#41;;
				$ret&#91;'ipgroup_size'&#93;=$x->DataGetInt&#40;&#41;;
				for &#40;$i=0;$i<=$ret&#91;'ipgroup_size'&#93;-1;$i++&#41;&#123;
					$x = $this->connection->urfa_get_data&#40;&#41;;
					$ret&#91;'ipgroup_size_list'&#93;&#91;$i&#93;&#91;'item_id'&#93;=$x->DataGetInt&#40;&#41;;
					$ret&#91;'ipgroup_size_list'&#93;&#91;$i&#93;&#91;'ip'&#93;=$x->DataGetIPAddress&#40;&#41;;
					$ret&#91;'ipgroup_size_list'&#93;&#91;$i&#93;&#91;'mask'&#93;=$x->DataGetIPAddress&#40;&#41;;
					$ret&#91;'ipgroup_size_list'&#93;&#91;$i&#93;&#91;'login'&#93;=$x->DataGetString&#40;&#41;;
				&#125;
				$x = $this->connection->urfa_get_data&#40;&#41;;
				$ret&#91;'iptsd_borders_size'&#93;=$x->DataGetInt&#40;&#41;;
				for &#40;$i=0;$i<=$ret&#91;'iptsd_borders_size'&#93;-1;$i++&#41;&#123;
					$x = $this->connection->urfa_get_data&#40;&#41;;
					$ret&#91;'iptsd_borders_size_list'&#93;&#91;$i&#93;&#91;'tclass_name'&#93;=$x->DataGetString&#40;&#41;;
					$ret&#91;'iptsd_borders_size_list'&#93;&#91;$i&#93;&#91;'bytes'&#93;=$x->DataGetLong&#40;&#41;;
					$ret&#91;'iptsd_borders_size_list'&#93;&#91;$i&#93;&#91;'cost1'&#93;=$x->DataGetDouble&#40;&#41;;
					$ret&#91;'iptsd_borders_size_list'&#93;&#91;$i&#93;&#91;'group_type'&#93;=$x->DataGetInt&#40;&#41;;
				&#125;
				$x = $this->connection->urfa_get_data&#40;&#41;;
				$ret&#91;'iptsd_prepaid_size'&#93;=$x->DataGetInt&#40;&#41;;
				for &#40;$i=0;$i<=$ret&#91;'iptsd_prepaid_size'&#93;-1;$i++&#41;&#123;
					$x = $this->connection->urfa_get_data&#40;&#41;;
					$ret&#91;'iptsd_prepaid_size_list'&#93;&#91;$i&#93;&#91;'tclass_name_p'&#93;=$x->DataGetString&#40;&#41;;
					$ret&#91;'iptsd_prepaid_size_list'&#93;&#91;$i&#93;&#91;'prepaid_p'&#93;=$x->DataGetLong&#40;&#41;;
				&#125;
			break;
			case "6"&#58;
				$ret&#91;'tsl_numbers_size'&#93;=$x->DataGetInt&#40;&#41;;
				for &#40;$i=0;$i<=$ret&#91;'tsl_numbers_size'&#93;-1;$i++&#41;&#123;
					$x = $this->connection->urfa_get_data&#40;&#41;;
					$ret&#91;'tsl_numbers_size_list'&#93;&#91;$i&#93;&#91;'number'&#93;=$x->DataGetString&#40;&#41;;
					$ret&#91;'tsl_numbers_size_list'&#93;&#91;$i&#93;&#91;'login'&#93;=$x->DataGetString&#40;&#41;;
					$ret&#91;'tsl_numbers_size_list'&#93;&#91;$i&#93;&#91;'allowed_cid'&#93;=$x->DataGetString&#40;&#41;;
					$ret&#91;'tsl_numbers_size_list'&#93;&#91;$i&#93;&#91;'item_id'&#93;=$x->DataGetInt&#40;&#41;;
				&#125;
			break;
			default&#58;
				$ret&#91;'null_param'&#93;=$x->DataGetInt&#40;&#41;;
			break;
		&#125;
		$this->connection->urfa_get_data&#40;&#41;;
		return $ret;
	&#125;

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

		function rpcf_user5_dhs_report&#40;$start_date,$end_date&#41; &#123; //-0x4017
		$ret=array&#40;&#41;;
		if &#40;!$this->connection->urfa_call&#40;-0x4017&#41;&#41; &#123;
			print "Error calling function ". __FUNCTION__ ."\n";
			return FALSE;
		&#125;
		$packet = $this->connection->getPacket&#40;&#41;;
		$packet->DataSetInt&#40;$start_date&#41;;
		$packet->DataSetInt&#40;$end_date&#41;;
		$this->connection->urfa_send_param&#40;$packet&#41;;
		if &#40;$x = $this->connection->urfa_get_data&#40;&#41;&#41; &#123;
			$ret&#91;'dhs_log_size'&#93; = $x->DataGetInt&#40;&#41;;
			for &#40;$i=0;$i<$ret&#91;'dhs_log_size'&#93;;$i++&#41; &#123;
				$x = $this->connection->urfa_get_data&#40;&#41;;
				$session&#91;'id'&#93; = $x->DataGetInt&#40;&#41;;
				$session&#91;'account_id'&#93; = $x->DataGetInt&#40;&#41;;
				$session&#91;'slink_id'&#93; = $x->DataGetInt&#40;&#41;;
				$session&#91;'recv_date'&#93; = $x->DataGetInt&#40;&#41;;
				$session&#91;'last_update_date'&#93; = $x->DataGetInt&#40;&#41;;
				$session&#91;'framed_ip'&#93; = $x->DataGetInt&#40;&#41;;
				$session&#91;'nas_port'&#93; = $x->DataGetInt&#40;&#41;;
				$session&#91;'acct_session_id'&#93; = $x->DataGetString&#40;&#41;;
				$session&#91;'nas_port_type'&#93; = $x->DataGetInt&#40;&#41;;
				$session&#91;'uname'&#93; = $x->DataGetString&#40;&#41;;
				$session&#91;'service_type'&#93; = $x->DataGetInt&#40;&#41;;
				$session&#91;'framed_protocol'&#93; = $x->DataGetInt&#40;&#41;;
				$session&#91;'nas_ip'&#93; = $x->DataGetInt&#40;&#41;;
				$session&#91;'nas_id'&#93; = $x->DataGetString&#40;&#41;;
				$session&#91;'acct_status_type'&#93; = $x->DataGetInt&#40;&#41;;
				$session&#91;'acct_inp_pack'&#93; = $x->DataGetLong&#40;&#41;;
				$session&#91;'acct_inp_oct'&#93; = $x->DataGetLong&#40;&#41;;
				$session&#91;'acct_out_pack'&#93; = $x->DataGetLong&#40;&#41;;
				$session&#91;'acct_out_oct'&#93; = $x->DataGetLong&#40;&#41;;
				$session&#91;'acct_sess_time'&#93; = $x->DataGetLong&#40;&#41;;
				$session&#91;'dhs_sessions_detail_size'&#93; = $x->DataGetInt&#40;&#41;;
					for&#40;$j=0;$j<$session&#91;'dhs_sessions_detail_size'&#93;;$j++&#41; &#123;
						$session&#91;'dhs_sessions_detail_list'&#93;&#91;$j&#93;&#91;'trange_id'&#93; = $x->DataGetInt&#40;&#41;;
						$session&#91;'dhs_sessions_detail_list'&#93;&#91;$j&#93;&#91;'account_id'&#93; = $x->DataGetInt&#40;&#41;;
						$session&#91;'dhs_sessions_detail_list'&#93;&#91;$j&#93;&#91;'duration'&#93; = $x->DataGetLong&#40;&#41;;
						$session&#91;'dhs_sessions_detail_list'&#93;&#91;$j&#93;&#91;'base_cost'&#93; = $x->DataGetDouble&#40;&#41;;
						$session&#91;'dhs_sessions_detail_list'&#93;&#91;$j&#93;&#91;'sum_cost'&#93; = $x->DataGetDouble&#40;&#41;;
					&#125;
				$ret&#91;'sessions'&#93;&#91;&#93;=$session;
			&#125;
			$this->connection->urfa_get_data&#40;&#41;;
		&#125;
		return $ret;
	&#125;

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

Сообщение Kayfolom »

С нетерпением ждем очередной сборки ;)
Может какой svn забабахать под этот чудесный проект?

starchik
Сообщения: 461
Зарегистрирован: Сб ноя 22, 2008 22:07

Сообщение starchik »

да......теперь бы все собрать в один пакет, урфа и морду на пхп)))

TEPbEP
Сообщения: 12
Зарегистрирован: Пт май 27, 2005 12:31

Сообщение TEPbEP »

bobr писал(а):Вот, черновая, но вполне рабочая реализация на классах того, что есть. Все довольно гибко и красиво %) ("себя не похвалишь..." :lol: ). В будущем, если ds поделится (скинь мне в личку свой ICQ), можно это легко переделать под парсер api.xml (уже в уме вижу хорошую реализацию).

Юзать через классы URFAClient_Admin и URFAClient_User5 (как? смотреть в test.php)

http://rapidshare.com/files/183110944/urfa.zip.html
http://dump.ru/file/1427143
ссылки недоступны %(

Ответить