- Модуль: mail
- Путь к файлу: ~/bitrix/modules/mail/lib/mailbox.php
- Класс: BitrixMailMailboxTable
- Вызов: MailboxTable::getTheSharedMailboxes
static function getTheSharedMailboxes($userId = null): array
{
global $USER;
if (!($userId > 0 || (is_object($USER) && $USER->isAuthorized())))
{
return [];
}
if (!($userId > 0))
{
$userId = $USER->getId();
}
static $mailboxes = [];
static $userMailboxes = [];
if (!array_key_exists($userId, $userMailboxes))
{
$userMailboxes[$userId] = [];
(new CAccess)->updateCodes(['USER_ID' => $userId]);
$res = static::getList([
'runtime' => [
new EntityReferenceField(
'ACCESS',
'BitrixMailInternalsMailboxAccessTable',
[
'=this.ID' => 'ref.MAILBOX_ID',
],
[
'join_type' => 'LEFT',
]
),
new EntityReferenceField(
'USER_ACCESS',
'BitrixMainUserAccess',
[
'this.ACCESS.ACCESS_CODE' => 'ref.ACCESS_CODE',
],
[
'join_type' => 'LEFT',
]
),
],
'filter' => [
[
'LOGIC' => 'AND',
'!=USER_ID' => $userId,
'=USER_ACCESS.USER_ID' => $userId,
],
'=ACTIVE' => 'Y',
'=SERVER_TYPE' => 'imap',
],
'order' => [
'ID' => 'DESC',
],
]);
while ($mailbox = $res->fetch())
{
static::normalizeEmail($mailbox);
$mailboxes[$mailbox['ID']] = $mailbox;
$userMailboxes[$userId][] = $mailbox['ID'];
}
}
$result = [];
foreach ($userMailboxes[$userId] as $mailboxId)
{
$result[$mailboxId] = $mailboxes[$mailboxId];
}
return $result;
}