Пробую написать функцию из админки rpcf_traffic_report_ex, но что то не работает, выскакивает ошибка:
Warning: unpack() [function.unpack]: Type N: not enough input, need 4, have 0 in /srv/apache/urfa/lib/urfa/URFAClient_Packet.php on line 171
может кто сталкивался с подобной проблемой, либо это в функции ошибка? код функции:
Вроде завелось с новой urfa_get_data, но явно заметно смещение индекса массива в самой функции, возвращаемые данные смещаются в значениях. Так же выскакивают следующие ошибки:
Warning: unpack() [function.unpack]: Type d: not enough input, need 8, have 4 in /srv/apache/urfa/lib/urfa/URFAClient_Packet.php on line 181
Notice: Undefined offset: 45 in /srv/apache/urfa/lib/urfa/URFAClient_Packet.php on line 104
Warning: unpack() [function.unpack]: Type N: not enough input, need 4, have 0 in /srv/apache/urfa/lib/urfa/URFAClient_Packet.php on line 173
function rpcf_add_telephony_service($service) { //0x5055
if (!$this->connection->urfa_call(0x5055)) {
print "Error calling function ". __FUNCTION__ ."\n";
return FALSE;
}
$packet = $this->connection->getPacket();
$packet->DataSetInt($service['parent_id']);
$packet->DataSetInt($service['tariff_id']);
$packet->DataSetInt($service['service_id']);
$packet->DataSetString($service['service_name']);
$packet->DataSetString($service['comment']);
$packet->DataSetInt($service['link_by_default']);
$packet->DataSetDouble($service['cost']);
$packet->DataSetInt($service['discount_method']);
$packet->DataSetInt($service['start_date']);
$packet->DataSetInt($service['expire_date']);
$packet->DataSetInt($service['radius_sessions_limit']);
$packet->DataSetInt($service['count']);
for ($i=0;$i<$service['count'];$i++) {
$packet->DataSetInt($service[$i]['borders_count']);
for ($j=0;$j<$service[$i]['borders_count'];$j++) {
$packet->DataSetInt($service[$i]['borders'][$j]['tarif_quantity']);//
$packet->DataSetDouble($service[$i]['borders'][$j]['cost']);
}
$packet->DataSetInt($service[$i]['directions']);
$packet->DataSetInt($service[$i]['timerange_count']);
//Нужен цикл если параметров >1.
$packet->DataSetInt($service[$i]['timerange']['timerange_id']);
$packet->DataSetDouble((float)$service[$i]['timerange']['cost']);
}
$packet->DataSetLong($service['unit_size']);
$packet->DataSetLong($service['free_time']);
$packet->DataSetLong($service['first_interval']);
$packet->DataSetLong($service['first_interval_around']);
$packet->DataSetLong($service['incremental_interval']);
$packet->DataSetDouble($service['fixed_call_cost']);
$this->connection->urfa_send_param($packet);
if ($x = $this->connection->urfa_get_data()) {
$service_id = $x->DataGetInt();
}
return $service_id;
}
Собственно вот но есть одна проблема, при передаче свыше 509 направлений urfa_send_param отрабатывает но утмка вылетает с исключением #22 в rpcf_add_telephony_service, как это побороть я незнаю, повидимому нужно как то оное передавать немного по другому когда парметров достаточно много.... если оное не исправить то особого толку в этой функции нету.... т.к. 509 это маловато собственно.
ds - помоги если время есть:)