Здравствуйте, уважаемые знатоки.
Вопрос по использованию функции: rpcf_search_users_new. Например, ставлю задачу: поиск абонентов в названии, которых присутствует словосочетание <full>. Через интерфейс администратора получаю результат: 3 записи.
Теперь через PHP:
Вход и выход функции мне понятен. Начинаю использовать:
....
$poles=array();
$patterns[0]['criteria_id']='1'; //Like
$patterns[0]['what_id']='5'; //По полю фул_найм
$patterns[0]['pattern']='full'; // Содержание
$search=$urfa_admin->rpcf_search_users_new($poles,$patterns,0);
foreach ($search as $current)
{
print_r($current);
echo '</BR>';
}
В результате три пустые записи (по числу найденных абонентов):
Array ( [user_id] => [login] => [basic_account] => [full_name] => [is_blocked] => [balance] => 0 [ip_address_size] => )
....
Array ( [user_id] => [login] => [basic_account] => [full_name] => [is_blocked] => [balance] => 0 [ip_address_size] => )
При этом имеются следующие предупреждения:
Notice: Undefined offset: 1 in /usr/local/www/data/npui2/urfaphp/URFAClient_Packet.php on line 103
Warning: unpack() [function.unpack]: Type N: not enough input, need 4, have 0 in /usr/local/www/data/npui2/urfaphp/URFAClient_Packet.php on line 171
Notice: Undefined offset: 2 in /usr/local/www/data/npui2/urfaphp/URFAClient_Packet.php on line 137
......
Notice: Undefined offset: 7 in /usr/local/www/data/npui2/urfaphp/URFAClient_Packet.php on line 103
Warning: unpack() [function.unpack]: Type N: not enough input, need 4, have 0 in /usr/local/www/data/npui2/urfaphp/URFAClient_Packet.php on line 171
По моему мнению, ошибки возникают в(rpcf_search_users_new) при попытке чтения данных полученных с помощью urfa_get_data():
// Функция сделана для новой(правильной) реализации urfa_get_data()
function rpcf_search_users_new($poles,$patterns,$sel_type) { //0x1205
…..
….
$this->connection->urfa_send_param($packet);
if ($x = $this->connection->urfa_get_data()){
$ret['user_data_size']=$x->DataGetInt(); //Прочитано верно = 3
for ($i=0;$i<$ret['user_data_size'];$i++){
$ret[$i]['user_id']=$x->DataGetInt(); //Здесь ошибка: Type N: not enough input, need 4, have 0
.....
Другими словами данные (кроме 'user_data_size') от клиента нет-ап не поступили. Аналогично работает rpcf_search_users_light(). Такие простые фу-ии, как rpcf_add_account работают идеально.
Кстати: в файле URFAClient_Admin.php не было функции: rpcf_search_users_new. Ее я скопировал с сайта разработчика и добавил в файл самостоятельно.
Буду благодарен за помощь в решении проблемы.