- Модуль: disk
- Путь к файлу: ~/bitrix/modules/disk/lib/baseobject.php
- Класс: BitrixDiskBaseObject
- Вызов: BaseObject::getMembersOfSharing
public function getMembersOfSharing()
{
$realObject = $this->getRealObject();
if(!$realObject)
{
return array();
}
$sharings = $realObject->getSharingsAsReal();
$members = array();
$membersToSharing = array();
foreach($sharings as $sharing)
{
if($sharing->isToDepartmentChild())
{
continue;
}
[$type, $id] = Sharing::parseEntityValue($sharing->getToEntity());
$members[$type][] = $id;
$membersToSharing[$type . '|' . $id] = $sharing;
}
unset($sharing);
$enabledSocialnetwork = Loader::includeModule('socialnetwork');
$entityList = array();
foreach(SharingTable::getListOfTypeValues() as $type)
{
if(empty($members[$type]))
{
continue;
}
if($type == SharingTable::TYPE_TO_USER)
{
$query = UserTable::getList(array(
'select' => array('ID', 'PERSONAL_PHOTO', 'NAME', 'LOGIN', 'LAST_NAME', 'SECOND_NAME'),
'filter' => array('ID' => array_values($members[$type])),
));
while($userRow = $query->fetch())
{
/** @var User $userModel */
$userModel = User::buildFromRow($userRow);
/** @var Sharing $sharing */
$sharing = $membersToSharing[$type . '|' . $userRow['ID']];
$entityList[] = array(
'sharingId' => $sharing->getId(),
'entityId' => Sharing::CODE_USER . $userRow['ID'],
'name' => $userModel->getFormattedName(),
'right' => $sharing->getTaskName(),
'avatar' => $userModel->getAvatarSrc(),
'url' => $userModel->getDetailUrl(),
'type' => 'users',
);
}
}
elseif($type == SharingTable::TYPE_TO_GROUP && $enabledSocialnetwork)
{
$query = CSocNetGroup::getList(array(), array('ID' => array_values($members[$type])), false, false, array(
'ID',
'IMAGE_ID',
'NAME'
));
while($query && $groupRow = $query->fetch())
{
/** @var Sharing $sharing */
$sharing = $membersToSharing[$type . '|' . $groupRow['ID']];
$entityList[] = array(
'sharingId' => $sharing->getId(),
'entityId' => Sharing::CODE_SOCNET_GROUP . $groupRow['ID'],
'name' => Emoji::decode($groupRow['NAME']),
'right' => $sharing->getTaskName(),
'avatar' => Avatar::getGroup($groupRow['IMAGE_ID']),
'type' => 'groups',
);
}
}
elseif($type == SharingTable::TYPE_TO_DEPARTMENT && $enabledSocialnetwork)
{
// intranet structure
$structure = CSocNetLogDestination::getStucture();
foreach(array_values($members[$type]) as $departmentId)
{
if(empty($structure['department']['DR' . $departmentId]))
{
continue;
}
/** @var Sharing $sharing */
$sharing = $membersToSharing[$type . '|' . $departmentId];
$entityList[] = array(
'sharingId' => $sharing->getId(),
'entityId' => Sharing::CODE_DEPARTMENT . $departmentId,
'name' => $structure['department']['DR' . $departmentId]['name'],
'right' => $sharing->getTaskName(),
'avatar' => Avatar::getDefaultGroup(),
'type' => 'department',
);
}
unset($departmentId);
}
elseif($type == SharingTable::TYPE_TO_CHAT)
{
$chatNames = $this->getChatNames(array_values($members[$type]));
foreach ($chatNames as $chat)
{
/** @var Sharing $sharing */
$sharing = $membersToSharing[$type . '|' . $chat['id']];
$entityList[] = [
'sharingId' => $sharing->getId(),
'entityId' => $sharing->getToEntity(),
'name' => $chat['title'],
'right' => $sharing->getTaskName(),
'avatar' => Avatar::getDefaultGroup(),
'type' => 'chat',
];
}
}
}
return $entityList;
}