dk, подскажи пожалуйста, а как функция add_service_to_tariff будет выглядеть для urfaclient_php, который на wiki лежит?
Буду очень благодарен, т.к. очень нужно, а сам я в php пока не силён.
Переезд из версии 5.1.10-017 в 5.2.1-007
У меня оно выглядит так. Реально из них использовались типы 1-2-3, другие лучше потестировать. В вики вперемешку старый и новый форматы вызова, тут новый.Alexis писал(а):dk, подскажи пожалуйста, а как функция add_service_to_tariff будет выглядеть для urfaclient_php, который на wiki лежит?
Буду очень благодарен, т.к. очень нужно, а сам я в php пока не силён.
Код: Выделить всё
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();
}