Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Количество приглашений в друзья

00 голосов
7
Как вывести количество приглашений пользователя в друзья? Нашел только вывод количества друзей определенного пользователя.

Код
<? 
     $res = CSocNetUserRelations::GetList(array("ID" => "DESC"), array("SECOND_USER_ID" => $entityId, "RELATION" => "F"), false, false, array("ID")); 
          while($ar_fields = $res->GetNext()) 
             { 
               //print_r($ar_fields); 
               $ar_fields_count[] = $ar_fields["ID"]; 
             } 
          $ar_fields_new = count($ar_fields_count); 
 ?> 
          <p>Друзей <?=$ar_fields_new?> </p>
спросил 30 Авг, 13 от Veronix (140 баллов)

7 Ответы

00 голосов
Цитата
Watemark пишет:
"RELATION" => "F"

См. http://dev.1c-bitrix.ru/api_help/socialnetwork/classes/CSocNetUserRelations/GetList.php
Цитата
RELATION - тип связи: SONET_RELATIONS_FRIEND - пользователи являются друзьями, SONET_RELATIONS_REQUEST - один из пользователей направил другому предложение дружбы, SONET_RELATIONS_BAN - один из пользователей внес другого в черный список,
Константы описаны так:
define("SONET_RELATIONS_FRIEND", "F");
define("SONET_RELATIONS_REQUEST", "Z");
define("SONET_RELATIONS_BAN", "B");
ответил 30 Авг, 13 от Ly (4,580 баллов)
00 голосов
Извиняюсь, но все-равно не могу разобраться. А можно на примере кода, если не сложно. Спасибо заранее.
ответил 19 Ноя, 13 от Veronix (140 баллов)
00 голосов
Код
$USER_ID = 12345;

CModule::IncludeModule('socialnetwork');

// кто хочет подружиться с этим юзером
$res = CSocNetUserRelations::GetList(
   array(),
   array(
      'SECOND_USER_ID' => $USER_ID,
      'RELATION' => SONET_RELATIONS_REQUEST,
   ),
   false,
   false,
   array('FIRST_USER_ID', 'DATE_UPDATE')
);
while ($el = $res->Fetch())
   echo '<pre>'.print_r($el, true).'</pre>';

// с кем хочет подружиться этот юзер
$res = CSocNetUserRelations::GetList(
   array(),
   array(
      'FIRST_USER_ID' => $USER_ID,
      'RELATION' => SONET_RELATIONS_REQUEST,
   ),
   false,
   false,
   array('SECOND_USER_ID', 'DATE_UPDATE')
);
while ($el = $res->Fetch())
   echo '<pre>'.print_r($el, true).'</pre>';
 
ответил 28 Фев, 14 от Ly (4,580 баллов)
00 голосов
Если нужно просто кол-во приглашений, сделайте запрос с группировкой:

Код
$USER_ID = 12345;

CModule::IncludeModule('socialnetwork');

$res = CSocNetUserRelations::GetList(
   array(),
   array(
      'SECOND_USER_ID' => $USER_ID,
      'RELATION' => SONET_RELATIONS_REQUEST,
   ),
   array('SECOND_USER_ID')
);
if ($el = $res->Fetch())
   echo $el['CNT'];
 
ответил 20 Июнь, 14 от Ly (4,580 баллов)
00 голосов
Под количеством приглашений следует понимать количество ещё не принятых приглашений. Если приглашение принято, у него меняется тип (с SONET_RELATIONS_REQUEST на SONET_RELATIONS_FRIEND), если отвергнуто, оно удаляется из базы.
ответил 19 Окт, 14 от Ly (4,580 баллов)
00 голосов
Спасибо большое!!!
ответил 18 Фев, 15 от Veronix (140 баллов)
00 голосов
На всякий случай, если кому-то понадобиться, вывод количества приглашений пользователя в друзья (не по конкретному ID).

Код
<? 
     $USER_ID = $GLOBALS["USER"]->GetID();

CModule::IncludeModule('socialnetwork');

$res = CSocNetUserRelations::GetList(
   array(),
   array(
      'SECOND_USER_ID' => $USER_ID,
      'RELATION' => SONET_RELATIONS_REQUEST,
   ),
   array('SECOND_USER_ID')
);
if ($el = $res->Fetch())
   
$arResult["SONET_RELATIONS_REQUEST"] += intval($el["CNT"]); 
 ?>

<p><?=$arResult["SONET_RELATIONS_REQUEST"]?></p>
 
Еще раз, спасибо Дмитрию за помощь!
P.S. Есть еще вопрос, если есть приглашения, то вывести результат в скобках, если нет приглашений, то ничего вообще не выводить.
ответил 28 Май, 15 от Veronix (140 баллов)

Похожие вопросы

0 голосов
1 ответ
спросил 25 Окт, 17 от аноним
0 голосов
0 ответов
0 голосов
1 ответ
0 голосов
2 ответов