
когда делаешь
Код: Выделить всё
$urfa_user5 = $urfa_admin->getURFAClient_User5("login", "password");
Код: Выделить всё
$urfa_user5 = $urfa_admin->getURFAClient_User5("login", "password");
Код: Выделить всё
function rpcf_search_users_light($login="%",$email="%",$fname="%") { //0x1202
$ret=array();
if (!$this->connection->urfa_call(0x1202)) {
print "Error calling function ". __FUNCTION__ ."\n";
return FALSE;
}
$packet = $this->connection->getPacket();
$packet->DataSetString($login);
$packet->DataSetString($email);
$packet->DataSetString($fname);
$this->connection->urfa_send_param($packet);
if ($x = $this->connection->urfa_get_data()){
$ret['success'] = $x->DataGetInt();
$ret['total'] = $x->DataGetInt();
$ret['show_count'] = $x->DataGetInt();
if($ret['show_count']>0){
for($i=0;$i<=$ret['show_count']-1;$i++){
$ret['list'][$i]['id']= $x->DataGetInt();
$ret['list'][$i]['login']= $x->DataGetString();
$ret['list'][$i]['email']= $x->DataGetString();
$ret['list'][$i]['fname']= $x->DataGetString();
}
}
$this->connection->urfa_get_data();
}
return $ret;
}
/*
<function name="rpcf_search_users_ligth" id="0x1202">
<input>
<string name="login" />
<string name="email" />
<string name="fname" />
</input>
<output>
<integer name="success" />
<integer name="total" />
<integer name="show_count" />
<if variable="show_count" value="0" condition="ne">
<for name="i" from="0" count="show_count">
<integer name="id" array_index="i" />
<string name="login" array_index="i" />
<string name="email" array_index="i" />
<string name="name" array_index="i" />
</for>
</if>
</output>
</function>
*/
Код: Выделить всё
Notice: Undefined offset: 3 in /usr/local/www/apache22/data/urfa/URFAClient_Packet.php on line 104
Warning: unpack() [function.unpack]: Type N: not enough input, need 4, have 0 in /usr/local/www/apache22/data/urfa/URFAClient_Packet.php on line 169
Notice: Undefined offset: 4 in /usr/local/www/apache22/data/urfa/URFAClient_Packet.php on line 138
Notice: Undefined offset: 5 in /usr/local/www/apache22/data/urfa/URFAClient_Packet.php on line 138
Notice: Undefined offset: 6 in /usr/local/www/apache22/data/urfa/URFAClient_Packet.php on line 138
Array ( [success] => 0 [total] => 1 [show_count] => 1 [list] => Array ( [1] => Array ( [id] => [login] => [email] => [fname] => ) ) )
Не хватает где то вызова urfa_get_data(), скорее всего внутри for. Поставь сразу после {если не находит, то не выдает. Просто возвращает массив:
Array ( [success] => 0 [total] => 0 [show_count] => 0 )
Вроде все перепроверил, но непонятно. Может недоглядел чего. Посмотрите плиз, свежим взглядом..
Код: Выделить всё
$x = $this->connection->urfa_get_data()
Спасибо! Проблема решилась!ds писал(а):Не хватает где то вызова urfa_get_data(), скорее всего внутри for. Поставь сразу после {если не находит, то не выдает. Просто возвращает массив:
Array ( [success] => 0 [total] => 0 [show_count] => 0 )
Вроде все перепроверил, но непонятно. Может недоглядел чего. Посмотрите плиз, свежим взглядом..Код: Выделить всё
$x = $this->connection->urfa_get_data()
Код: Выделить всё
function rpcf_search_users_light($login="%",$email="%",$fname="%") { //0x1202
$ret=array();
if (!$this->connection->urfa_call(0x1202)) {
print "Error calling function ". __FUNCTION__ ."\n";
return FALSE;
}
$packet = $this->connection->getPacket();
$packet->DataSetString($login);
$packet->DataSetString($email);
$packet->DataSetString($fname);
$this->connection->urfa_send_param($packet);
if ($x = $this->connection->urfa_get_data()){
$ret['success'] = $x->DataGetInt();
$ret['total'] = $x->DataGetInt();
$ret['show_count'] = $x->DataGetInt();
if($ret['show_count']>0){
for($i=0;$i<=$ret['show_count']-1;$i++){
$x = $this->connection->urfa_get_data();
$ret['list'][$i]['id']= $x->DataGetInt();
$ret['list'][$i]['login']= $x->DataGetString();
$ret['list'][$i]['email']= $x->DataGetString();
$ret['list'][$i]['fname']= $x->DataGetString();
}
}
$this->connection->urfa_get_data();
}
return $ret;
}
Код: Выделить всё
rpcf_search_users_ligth
Код: Выделить всё
function rpcf_user5_get_services_info($slink_id) { //-0x4024
$ret=array();
if (!$this->connection->urfa_call(-0x4024)) {
print "Error calling function ". __FUNCTION__ ."\n";
return FALSE;
}
$packet = $this->connection->getPacket();
$packet->DataSetInt($slink_id);
$this->connection->urfa_send_param($packet);
$x = $this->connection->urfa_get_data();
$ret['service_type']=$x->DataGetInt();
$ret['service_id']=$x->DataGetInt();
$ret['service_name']=$x->DataGetString();
$ret['tariff_id']=$x->DataGetInt();
$ret['discounted_in_curr_period']=$x->DataGetDouble();
$ret['cost']=$x->DataGetDouble();
$x = $this->connection->urfa_get_data();
switch ($ret['service_type']){
case "3":
$ret['bytes_in_mbyte']=$x->DataGetInt();
$ret['iptsl_downloaded_size']=$x->DataGetInt();
for ($i=0;$i<=$ret['iptsl_downloaded_size']-1;$i++){
$x = $this->connection->urfa_get_data();
$ret['iptsl_downloaded_size_list'][$i]['tclass']=$x->DataGetString();
$ret['iptsl_downloaded_size_list'][$i]['downloaded']=$x->DataGetLong();
}
$x = $this->connection->urfa_get_data();
$ret['iptsl_old_prepaid_size']=$x->DataGetInt();
for ($i=0;$i<=$ret['iptsl_old_prepaid_size']-1;$i++){
$x = $this->connection->urfa_get_data();
$ret['iptsl_old_prepaid_size_list'][$i]['tclass']=$x->DataGetString();
$ret['iptsl_old_prepaid_size_list'][$i]['downloaded']=$x->DataGetLong();
}
$x = $this->connection->urfa_get_data();
$ret['ipgroup_size']=$x->DataGetInt();
for ($i=0;$i<=$ret['ipgroup_size']-1;$i++){
$x = $this->connection->urfa_get_data();
$ret['ipgroup_size_list'][$i]['item_id']=$x->DataGetInt();
$ret['ipgroup_size_list'][$i]['ip']=$x->DataGetIPAddress();
$ret['ipgroup_size_list'][$i]['mask']=$x->DataGetIPAddress();
$ret['ipgroup_size_list'][$i]['login']=$x->DataGetString();
}
$x = $this->connection->urfa_get_data();
$ret['iptsd_borders_size']=$x->DataGetInt();
for ($i=0;$i<=$ret['iptsd_borders_size']-1;$i++){
$x = $this->connection->urfa_get_data();
$ret['iptsd_borders_size_list'][$i]['tclass_name']=$x->DataGetString();
$ret['iptsd_borders_size_list'][$i]['bytes']=$x->DataGetLong();
$ret['iptsd_borders_size_list'][$i]['cost1']=$x->DataGetDouble();
$ret['iptsd_borders_size_list'][$i]['group_type']=$x->DataGetInt();
}
$x = $this->connection->urfa_get_data();
$ret['iptsd_prepaid_size']=$x->DataGetInt();
for ($i=0;$i<=$ret['iptsd_prepaid_size']-1;$i++){
$x = $this->connection->urfa_get_data();
$ret['iptsd_prepaid_size_list'][$i]['tclass_name_p']=$x->DataGetString();
$ret['iptsd_prepaid_size_list'][$i]['prepaid_p']=$x->DataGetLong();
}
break;
case "6":
$ret['tsl_numbers_size']=$x->DataGetInt();
for ($i=0;$i<=$ret['tsl_numbers_size']-1;$i++){
$x = $this->connection->urfa_get_data();
$ret['tsl_numbers_size_list'][$i]['number']=$x->DataGetString();
$ret['tsl_numbers_size_list'][$i]['login']=$x->DataGetString();
$ret['tsl_numbers_size_list'][$i]['allowed_cid']=$x->DataGetString();
$ret['tsl_numbers_size_list'][$i]['item_id']=$x->DataGetInt();
}
break;
default:
$ret['null_param']=$x->DataGetInt();
break;
}
$this->connection->urfa_get_data();
return $ret;
}
Замечание: у меня на другом сервере с биллингом версииWishmaster писал(а):
Может, кому пригодится, рабочий вариант.
Код: Выделить всё
function rpcf_search_users_light($login="%",$email="%",$fname="%") { //0x1202 $ret=array(); if (!$this->connection->urfa_call(0x1202)) { print "Error calling function ". __FUNCTION__ ."\n"; return FALSE; } $packet = $this->connection->getPacket(); $packet->DataSetString($login); $packet->DataSetString($email); $packet->DataSetString($fname); $this->connection->urfa_send_param($packet); if ($x = $this->connection->urfa_get_data()){ $ret['success'] = $x->DataGetInt(); $ret['total'] = $x->DataGetInt(); $ret['show_count'] = $x->DataGetInt(); if($ret['show_count']>0){ for($i=0;$i<=$ret['show_count']-1;$i++){ $x = $this->connection->urfa_get_data(); $ret['list'][$i]['id']= $x->DataGetInt(); $ret['list'][$i]['login']= $x->DataGetString(); $ret['list'][$i]['email']= $x->DataGetString(); $ret['list'][$i]['fname']= $x->DataGetString(); } } $this->connection->urfa_get_data(); } return $ret; }
в дебаге все пристойно... вроде..ds писал(а):Может ее там просто еще нет? В моем api.xml ее нет: Version:5.2.1-006-release-debian. А в дебаге что?эта функция НЕ работает. Она отрабатывается, но никаких результатов не возвращает. На update7 все ровно.
Код: Выделить всё
core# tail -f ./debug.log |grep 'urfa@192.168.1.56'
Info : Jan 17 23:02:01 RPCConn: Card user <urfa@192.168.1.56> is connecting
Info : Jan 17 23:02:01 RPCConn[SSL]<urfa@192.168.1.56>: Access granted to [SSL]<urfa@192.168.1.56> (UID: -39)
?Debug : Jan 17 23:02:01 RPCConn[SSL]<urfa@192.168.1.56>: SSL type requested: SSLv3(2)
?Debug : Jan 17 23:02:01 RPCConn[SSL]<urfa@192.168.1.56>: Call: 0x1202 (rpcf_search_users_lite)
?Debug : Jan 17 23:02:01 RPCConn[SSL]<urfa@192.168.1.56>: Real Call: 0x1202 (rpcf_search_users_lite)
?Debug : Jan 17 23:02:02 RPCConn[SSL]<urfa@192.168.1.56>: Call 0x1202 (rpcf_search_users_lite) finished...
?Debug : Jan 17 23:02:02 RPCConn[SSL]<urfa@192.168.1.56>: Stream cleared
?Debug : Jan 17 23:02:03 RPCConn[SSL]<urfa@192.168.1.56>: Call: 0x2006 (rpcf_get_userinfo)
?Debug : Jan 17 23:02:03 RPCConn[SSL]<urfa@192.168.1.56>: Real Call: 0x2006 (rpcf_get_userinfo)
?Debug : Jan 17 23:02:03 RPCConn[SSL]<urfa@192.168.1.56>: Call 0x2006 (rpcf_get_userinfo) finished...
?Debug : Jan 17 23:02:03 RPCConn[SSL]<urfa@192.168.1.56>: Stream cleared
Warn : Jan 17 23:02:08 RPCConn[SSL]<urfa@192.168.1.56>: Session closed
?Debug : Jan 17 23:02:08 RPCConn[SSL]<urfa@192.168.1.56>: Session stored for UID -39 from <192.168.1.56>
?Debug : Jan 17 23:02:08 RPCConn[SSL]<urfa@192.168.1.56>: Session closed...
Код: Выделить всё
function rpcf_user5_payments_report($start_date,$end_date) { //-0x4012
$ret=array();
if (!$this->connection->urfa_call(-0x4012)) {
print "Error calling function ". __FUNCTION__ ."\n";
return FALSE;
}
$packet = $this->connection->getPacket();
$packet->DataSetInt($start_date);
$packet->DataSetInt($end_date);
$this->connection->urfa_send_param($packet);
$x = $this->connection->urfa_get_data();
$ret['account_id']=$x->DataGetInt();
$ret['atr_size']=$x->DataGetInt();
$this->connection->urfa_get_data();
for ($i=0;$i<$ret['atr_size'];$i++) {
$x = $this->connection->urfa_get_data();
$payment['actual_date'] = $x->DataGetInt();
$payment['payment_enter_date'] = $x->DataGetInt();
$payment['payment'] = $x->DataGetDouble();
$payment['payment_incurrency'] = $x->DataGetDouble();
$payment['currency_id'] = $x->DataGetInt();
$payment['payment_method_id'] = $x->DataGetInt();
$payment['payment_method'] = $x->DataGetString();
$payment['comment'] = $x->DataGetString();
$ret['payment'][]=$payment;
}
$this->connection->urfa_get_data();
return $ret;
}
Код: Выделить всё
function rpcf_user5_payments_report($start_date,$end_date) { //-0x4012
$ret=array();
if (!$this->connection->urfa_call(-0x4012)) {
print "Error calling function ". __FUNCTION__ ."\n";
return FALSE;
}
$packet = $this->connection->getPacket();
$packet->DataSetInt($start_date);
$packet->DataSetInt($end_date);
$this->connection->urfa_send_param($packet);
$x = $this->connection->urfa_get_data();
$ret['account_id']=$x->DataGetInt();
$ret['atr_size']=$x->DataGetInt();
//$this->connection->urfa_get_data();
for ($i=0;$i<$ret['atr_size'];$i++) {
$x = $this->connection->urfa_get_data();
$payment['actual_date'] = $x->DataGetInt(); //строка 256 - это тут.
$payment['payment_enter_date'] = $x->DataGetInt();
$payment['payment'] = $x->DataGetDouble();
$payment['payment_incurrency'] = $x->DataGetDouble();
$payment['currency_id'] = $x->DataGetInt();
$payment['payment_method_id'] = $x->DataGetInt();
$payment['payment_method'] = $x->DataGetString();
$payment['comment'] = $x->DataGetString();
$ret['payment'][]=$payment;
}
$this->connection->urfa_get_data();
return $ret;
}
Код: Выделить всё
Fatal error: Call to a member function DataGetInt() on a non-object in /usr/local/www/apache22/data/urfa/URFAClient_User5.php on line 256
Код: Выделить всё
function rpcf_user5_payments_report($start_date,$end_date) { //-0x4012
$ret=array();
if (!$this->connection->urfa_call(-0x4012)) {
print "Error calling function ". __FUNCTION__ ."\n";
return FALSE;
}
$packet = $this->connection->getPacket();
$packet->DataSetInt($start_date);
$packet->DataSetInt($end_date);
$this->connection->urfa_send_param($packet);
$x = $this->connection->urfa_get_data();
$ret['account_id']=$x->DataGetInt();
$ret['atr_size']=$x->DataGetInt();
$this->connection->urfa_get_data();
for ($i=0;$i<$ret['atr_size'];$i++) {
$x = $this->connection->urfa_get_data();
$payment['actual_date'] = $x->DataGetInt();
$payment['payment_enter_date'] = $x->DataGetInt();
$payment['payment'] = $x->DataGetDouble();
$payment['payment_incurrency'] = $x->DataGetDouble();
$payment['currency_id'] = $x->DataGetInt();
$payment['payment_method_id'] = $x->DataGetInt();
$payment['payment_method'] = $x->DataGetString();
$payment['comment'] = $x->DataGetString();
$ret['payment'][]=$payment;
}
$this->connection->urfa_get_data();
return $ret;
}
Код: Выделить всё
#!/usr/local/bin/php
<?
require_once("./URFAClient.php");
$sf= new URFAClient_User5('testuser','123456789');
$reports_array=$sf->rpcf_user5_payments_report(0,2000000000);
print_r($reports_array);
?>
Код: Выделить всё
qqq-ppp# ./phptest.sh
^C
qqq-ppp# ./phptest.sh
Код: Выделить всё
Warn : Jan 18 08:48:28 RPCConn[SSL]<testuser@192.168.77.139>: Session closed
?Debug : Jan 18 08:48:28 RPCConn[SSL]<testuser@192.168.77.139>: Session stored for UID 1009 from <192.168.77.139>
?Debug : Jan 18 08:48:28 RPCConn[SSL]<testuser@192.168.77.139>: Session closed...
Info : Jan 18 08:48:28 RPCServer@0.0.0.0: Client connecting: 192.168.77.139:54890
Info : Jan 18 08:48:28 RPCConn: Connection from: 192.168.77.139:54890
Info : Jan 18 08:48:28 RPCConn: Card user <testuser@192.168.77.139> is connecting
Info : Jan 18 08:48:28 RPCConn[SSL]<testuser@192.168.77.139>: Access granted to [SSL]<testuser@192.168.77.139> (UID: 1009)
?Debug : Jan 18 08:48:28 RPCConn[SSL]<testuser@192.168.77.139>: SSL type requested: SSLv3(2)
?Debug : Jan 18 08:48:28 RPCConn[SSL]<testuser@192.168.77.139>: Call: 0xffffbfee (__rpcs_user5_payments_report)
?Debug : Jan 18 08:48:28 RPCConn[SSL]<testuser@192.168.77.139>: Real Call: 0xffffbfee (__rpcs_user5_payments_report)
?Debug : Jan 18 08:48:28 UTM5 DBA: DBAccess instance created
?Debug : Jan 18 08:48:28 DBA:Ctx: Looking for free context
?Debug : Jan 18 08:48:29 DBCtx: <679515136> SQL SELECT query: SELECT id, name FROM payment_methods
?Debug : Jan 18 08:48:29 DBCtx: <679515136> SQL SELECT query: SELECT id, payment_incurrency, currency_id, currency_rate, payment_absolute,actual_date, payment_enter_date, method, who_receive, comments_for_user,comments_for_admins, account_id, payment_ext_number FROM payment_transactions WHERE payment_enter_date>='0' AND payment_enter_date<='2000000000' AND account_id='1011' ORDER BY payment_enter_date DESC
?Debug : Jan 18 08:48:29 DBA:Ctx: Pushing back free context
-Stats : Jan 18 08:48:29 UTM5 DBA: Stats: Uptime: 00:00:01. Events: 0; Errors: 0
?Debug : Jan 18 08:48:29 RPCConn[SSL]<testuser@192.168.77.139>: Call 0xffffbfee (__rpcs_user5_payments_report) finished...
?Debug : Jan 18 08:48:29 RPCConn[SSL]<testuser@192.168.77.139>: Stream cleared
Код: Выделить всё
$this->connection->urfa_get_data();
for ($i=0;$i<$ret['atr_size'];$i++) {
$x = $this->connection->urfa_get_data();