Показаны сообщения с ярлыком bitrix. Показать все сообщения
Показаны сообщения с ярлыком bitrix. Показать все сообщения

вторник, 29 июля 2014 г.

Bitrix. Добавить пользователя в группу социальной сети

При использовании битрикса и системы "Портал Битрикс24" может потребоваться добавить пользователя в группу социальной сети. Сделать это можно при помощи CSocNetUserToGroup::Add():
function addUserToGroup ($userId, $groupId)
{
    global $APPLICATION;

    //1 - это id пользователя, от имени которого будет добавлен пользователь
    //в нашей системе, 1 - это id пользователя "Администратор"
    $initiatedByUserId = CUser::GetID() ? CUser::GetID() : 1;

    $arFields = array(
        "USER_ID" => $userId,
        "GROUP_ID" => $groupId,
        "ROLE" => SONET_ROLES_USER,
        "=DATE_CREATE" => $GLOBALS["DB"]->CurrentTimeFunction(),
        "=DATE_UPDATE" => $GLOBALS["DB"]->CurrentTimeFunction(),
        "INITIATED_BY_TYPE" => SONET_INITIATED_BY_USER,
        "INITIATED_BY_USER_ID" => $initiatedByUserId,
        "MESSAGE" => false,
    );
    
    $rs = CSocNetUserToGroup::Add($arFields);
    if ($rs === false) {
        echo 'Пользователь #' . $userId . ' не добавлен в группу #' . $groupId;
        if ($e = $APPLICATION->GetException()) {
            echo 'Error code: ' . $e->id . '; error message: ' . $e->msg;
        }
    } else {
        echo 'Пользователь #' . $userId . ' добавлен в группу #' . $groupId;
    }
}

Bitrix. Удалить пользователя из группы социальной сети

В битриксе может потребоваться удалить пользователя из группы социальной сети. Сделать это можно при помощи CSocNetUserToGroup::DeleteRelation($userId, $groupId):
$deleteUserId = 2149; // ID пользователя
$deleteGroupId = 114;  // ID группы

if (CSocNetUserToGroup::DeleteRelation($deleteUserId, $deleteGroupId)) {
    echo 'Пользователь #' . $deleteUserId . ' удален из группы';
} else {
    echo 'Не удалось удалить пользователя #' . $deleteUserId . ' из группы';

    //Также желательно выводить сообщения об ошибке, 
    //чтобы понять, что помешало удалить пользователя
    if ($e = $APPLICATION->GetException()) {
        echo 'Error code: ' . $e->id . '; error message: ' . $e->msg;
    }
}

В битриксе сообщения об ошибке можно получить при помощи $e = $APPLICATION->GetException(). Это выражение запишет в $e объект, который содержит поля id и msg. Эта информация может оказаться полезной, чтобы понять, что пошло не так.
Вот, к примеру, при удалении пользователей из группы возникла ошибка:
Error code: ERROR_NO_MEMBER_REQUEST; error message: Record was not found

Эта ошибка значит, что не удалось найти в группе социальной сети пользователя, чтобы его оттуда удалить.

Bitrix. Получить список пользователей группы социальной сети

Для получения списка пользователей группы в социальной сети битрикса можно использовать CSocNetUserToGroup::GetList():
$rsUsers = CSocNetUserToGroup::GetList(
    array("ID" => "ASC"),
    array("GROUP_ID" => 100) //Указать ID группы в социальной сети
);

while($arGroupUser = $rsUsers->Fetch()) {
    var_dump($arGroupUser);
}

Обязательно обратите внимание на структуру данных, помещаемых в переменную $arGroupUser:
array(9) {
  ["ID"]=>
  string(3) "133"
  ["USER_ID"]=>
  string(4) "1770"
  ["GROUP_ID"]=>
  string(3) "114"
  ["ROLE"]=>
  string(1) "A"
  ["DATE_CREATE"]=>
  string(19) "15.04.2014 17:55:23"
  ["DATE_UPDATE"]=>
  string(19) "15.04.2014 17:55:23"
  ["INITIATED_BY_TYPE"]=>
  string(1) "U"
  ["INITIATED_BY_USER_ID"]=>
  string(4) "1770"
  ["MESSAGE"]=>
  NULL
}

Для получения идентификатора пользователя нам здесь нужно использовать не $arGroupUser["ID"], а такое выражение: $arGroupUser["USER_ID"].