Переезд из версии 5.1.10-017 в 5.2.1-007

Технические вопросы по UTM 5.0
Alexis
Сообщения: 7
Зарегистрирован: Пт мар 05, 2010 10:56

Сообщение Alexis »

dk, подскажи пожалуйста, а как функция add_service_to_tariff будет выглядеть для urfaclient_php, который на wiki лежит?

Буду очень благодарен, т.к. очень нужно, а сам я в php пока не силён.

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

Сообщение dk »

Alexis писал(а):dk, подскажи пожалуйста, а как функция add_service_to_tariff будет выглядеть для urfaclient_php, который на wiki лежит?

Буду очень благодарен, т.к. очень нужно, а сам я в php пока не силён.
У меня оно выглядит так. Реально из них использовались типы 1-2-3, другие лучше потестировать. В вики вперемешку старый и новый форматы вызова, тут новый.

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

	function add_service_to_tariff($param) { // 0x3014
		$ret=array();
		if (!$this->connection->urfa_call(0x3014)) {
			print "Error calling function ". __FUNCTION__ ."\n";
			return FALSE;
		}
		$packet = $this->connection->getPacket();
		$packet->DataSetInt( $param['tariff_id'] );
		$packet->DataSetInt( $param['parent_id'] );
		$packet->DataSetString( $param['service_name'] );
		$packet->DataSetInt( $param['service_type'] );
		$packet->DataSetString( $param['comment'] );
		$packet->DataSetInt( $param['link_by_default'] );
		$packet->DataSetInt( $param['is_dynamic'] );
		if ( $param['service_type'] == '1' ) {
			$packet->DataSetDouble( $param['cost'] );
		}
		if ( $param['service_type'] == '2' ) {
			$packet->DataSetDouble( $param['cost'] );
			$packet->DataSetInt( $param['periodic_type'] );
			$packet->DataSetInt( $param['discount_method'] );
			$packet->DataSetInt( $param['start_date'] );
			$packet->DataSetInt( $param['expire_date'] );
		}
		if ( $param['service_type'] == '3' ) {
			$packet->DataSetDouble( $param['cost'] );
			$packet->DataSetInt( $param['periodic_type'] );
			$packet->DataSetInt( $param['discount_method'] );
			$packet->DataSetInt( $param['start_date'] );
			$packet->DataSetInt( $param['expire_date'] );
			$packet->DataSetInt( $param['null_service_prepaid'] );
			$packet->DataSetInt( count($param['tlass_b']) );
			foreach ( $param['tlass_b'] as $i ) {
				$packet->DataSetInt( $i['tclass_b'] );
				$packet->DataSetLong( $i['size_b'] );
				$packet->DataSetDouble( $i['cost_b'] );
			}
			$packet->DataSetInt( count($param['tclass_p']) );
			foreach ( $param['tclass_p'] as $i ) {
				$packet->DataSetInt( $i['tclass_p'] );
				$packet->DataSetLong( $i['size_p'] );
			}
			$packet->DataSetInt( count($param['tcid']) );
			foreach ( $param['tcid'] as $i ) {
				$packet->DataSetInt( $i['tcid'] );
				$packet->DataSetInt( $i['gid'] );
			}
		}
		if ( $param['service_type'] == '4' ) {
			$packet->DataSetDouble( $param['cost'] );
			$packet->DataSetInt( $param['periodic_type'] );
			$packet->DataSetInt( $param['discount_method'] );
			$packet->DataSetInt( $param['start_date'] );
			$packet->DataSetInt( $param['expire_date'] );
			$packet->DataSetInt( $param['null_service_prepaid'] );
			$packet->DataSetInt( count($param['cost']) );
			foreach ( $param['cost'] as $i ) {
				$packet->DataSetDouble( $i['cost'] );
				$packet->DataSetInt( $i['id'] );
			}
			$packet->DataSetInt( count($param['net']) );
			foreach ( $param['net'] as $i ) {
				$packet->DataSetIPAddress( $i['net'] );
				$packet->DataSetIPAddress( $i['mask'] );
			}
		}
		if ( $param['service_type'] == '6' ) {
			$packet->DataSetDouble( $param['cost'] );
			$packet->DataSetInt( $param['periodic_type'] );
			$packet->DataSetInt( $param['discount_method'] );
			$packet->DataSetInt( $param['start_date'] );
			$packet->DataSetInt( $param['expire_date'] );
			$packet->DataSetInt( $param['radius_sessions_limit'] );
			$packet->DataSetInt( count($param['directions']) );
			foreach ( $param['directions'] as $i ) {
				$packet->DataSetInt( count($param['borders,i']) );
				foreach ( $i['borders'] as $j ) {
					$packet->DataSetLong( $j['borders'][0] );
					$packet->DataSetDouble( $j['borders'][1] );
				}
				$packet->DataSetInt( $i['directions'] );
				$packet->DataSetInt( count($param['timeranges,i']) );
				foreach ( $i['timeranges'] as $j ) {
					$packet->DataSetInt( $j['timeranges'][0] );
					$packet->DataSetDouble( $j['timeranges'][1] );
				}
			}
			$packet->DataSetLong( $param['interval_size'] );
			$packet->DataSetLong( $param['free_time'] );
			$packet->DataSetLong( $param['first_interval'] );
			$packet->DataSetLong( $param['first_interval_around'] );
			$packet->DataSetLong( $param['incremental_interval'] );
			$packet->DataSetDouble( $param['fixed_call_cost'] );
		}
		if ( $param['service_type'] == '5' ) {
			$packet->DataSetDouble( $param['cost'] );
			$packet->DataSetInt( $param['periodic_type'] );
			$packet->DataSetInt( $param['discount_method'] );
			$packet->DataSetInt( $param['start_date'] );
			$packet->DataSetInt( $param['expire_date'] );
			$packet->DataSetInt( $param['null_service_prepaid'] );
			$packet->DataSetString( $param['pool_name'] );
			$packet->DataSetInt( $param['max_timeout'] );
			$packet->DataSetString( $param['login_prefix'] );
			$packet->DataSetInt( count($param['cost']) );
			foreach ( $param['cost'] as $i ) {
				$packet->DataSetDouble( $i['cost'] );
				$packet->DataSetInt( $i['id'] );
			}
		}
		$this->connection->urfa_send_param($packet);
		$this->connection->urfa_get_data();
	}

Alexis
Сообщения: 7
Зарегистрирован: Пт мар 05, 2010 10:56

Сообщение Alexis »

Огромное спасибо.

Ответить