function rpcf_search_users_new($poles,$patterns,$sel_type) { //0x1205
$ret=array();
if (!$this->connection->urfa_call(0x1205)) {
print "Error calling function ". __FUNCTION__ ."\n";
return FALSE;
}
$packet = $this->connection->getPacket();
$packet->DataSetInt(count($poles));
for ($i=0; $i<count($poles);$i++){
$packet->DataSetInt($poles[$i]);
};
$packet->DataSetInt($sel_type);
$packet->DataSetInt(count($patterns));
for ($i=0;$i<count($patterns);$i++){
$packet->DataSetInt($patterns[$i]['what_id']);
$packet->DataSetInt($patterns[$i]['criteria_id']);
if ($patterns[$i]['what_id']==33) {
$packet->DataSetInt($patterns[$i]['pattern']);
}else{
$packet->DataSetString($patterns[$i]['pattern']);
}
}
$this->connection->urfa_send_param($packet);
if ($x = $this->connection->urfa_get_data()){
$ret['user_data_size']=$x->DataGetInt();
for ($i=0;$i<$ret['user_data_size'];$i++){
$ret[$i]['user_id']=$x->DataGetInt();
$ret[$i]['login']=$x->DataGetString();
$ret[$i]['basic_account']=$x->DataGetInt();
$ret[$i]['full_name']=$x->DataGetString();
$ret[$i]['is_blocked']=$x->DataGetInt();
$ret[$i]['balance']=$x->DataGetDouble();
$ret[$i]['ip_address_size']=$x->DataGetInt();
for ($j=0;$j<$ret[$i]['ip_address_size'];$j++){
$ret[$i]['ip_address'][$j]['ip_groups_count']=$x->DataGetInt();
for ($k=0;$k<$ret[$i]['ip_address'][$j]['ip_groups_count'];$k++){
$ret[$i]['ip_address'][$j]['ip_group'][$k]['type']=$x->DataGetInt();
$ret[$i]['ip_address'][$j]['ip_group'][$k]['ip']=$x->DataGetString();
$ret[$i]['ip_address'][$j]['ip_group'][$k]['mask']=$x->DataGetString();
}
}
for ($j=0;$j<count($poles);$j++){
if ($poles[$j]==4){$ret[$i]['discount_period_id']=$x->DataGetInt()}
if ($poles[$j]==6){$ret[$i]['create_date']=$x->DataGetInt()}
if ($poles[$j]==7){$ret[$i]['last_change_date']=$x->DataGetInt()}
if ($poles[$j]==8){$ret[$i]['who_create']=$x->DataGetInt()}
if ($poles[$j]==9){$ret[$i]['who_change']=$x->DataGetInt()}
if ($poles[$j]==10){$ret[$i]['is_juridical']=$x->DataGetInt()}
if ($poles[$j]==11){$ret[$i]['juridical_address']=$x->DataGetString()}
if ($poles[$j]==12){$ret[$i]['actual_address']=$x->DataGetString()}
if ($poles[$j]==13{$ret[$i]['work_telephone']=$x->DataGetString()}
if ($poles[$j]==14){$ret[$i]['home_telephone']=$x->DataGetString()}
if ($poles[$j]==15){$ret[$i]['mobile_telephone']=$x->DataGetString()}
if ($poles[$j]==16){$ret[$i]['web_page']=$x->DataGetString()}
if ($poles[$j]==17){$ret[$i]['icq_number']=$x->DataGetString()}
if ($poles[$j]==18){$ret[$i]['tax_number']=$x->DataGetString()}
if ($poles[$j]==19){$ret[$i]['kpp_number']=$x->DataGetString()}
if ($poles[$j]==21){$ret[$i]['house_id']=$x->DataGetInt()}
if ($poles[$j]==22){$ret[$i]['flat_number']=$x->DataGetString()}
if ($poles[$j]==23){$ret[$i]['entrance']=$x->DataGetString()}
if ($poles[$j]==24){$ret[$i]['floor']=$x->DataGetString()}
if ($poles[$j]==25){$ret[$i]['email']=$x->DataGetString()}
if ($poles[$j]==26){$ret[$i]['passport']=$x->DataGetString()}
if ($poles[$j]==40){$ret[$i]['district']=$x->DataGetString()}
if ($poles[$j]==41){$ret[$i]['building']=$x->DataGetString()}
}
}
$this->connection->urfa_get_data();
}
return $ret;
}
Не работает
В таком варианте выдает все вплоть до баланса.
Если перед каждым циклом вставить $x=$this->connection->urfa_get_data(); начинает худо-бедно работать. Если вставить в цикле - зацикливается.
А хочецо. Какие идеи?
urfa_get_data() покажи, если первый вариант, то ее нужно иногда вставлять в самых неожиданных местах а если доработанный, тогда одного вызова достаточно, тогда перед return-ом не надо вызывать его во второй раз
ds писал(а):Наконец то доработал функцию urfa_get_data. Теперь вызываем ее только один раз. Остальные повторные вызовы надо убрать. Если вызвать повторно, то функция заблокирутся на чтении. Лучше вызывать вместе с if, чтобы если она вернет false - если ничего не вернулось, не нарушилась логика.
У меня в этих местах выпало с ошибкой:
Parse error: syntax error, unexpected T_VARIABLE, expecting ';' in /usr/home/vadim/urfa/URFAClient_Admin.php on line 2586
Ешё есть подобное в rpcf_search_users_new, может и ещё где-то
Вероятно покочалось при генерации из списка функций. Там в списке они в норме.
Последний раз редактировалось Instruktor Пн мар 30, 2009 15:10, всего редактировалось 2 раза.
И не забывайте что работать в таком виде не будет все равно Потому как часть функций заточена под ООП, часть под процедурную версию, плюс часть функций использует старую версию getdata, часть новую.
Так что автогенерацию всех функций лучше не пользовать, по крайней мере пока проект не доведен до финала
Warning: stream_socket_enable_crypto(): this stream does not support SSL/crypto in /usr/home/vadim/urfa/urfaclient/socket.php on line 49
Auth success. Connected!!!
Error code 0