%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/mail/lib/helper/mailbox/ |
| Current File : /home/bitrix/www/bitrix/modules/mail/lib/helper/mailbox/sharedmailboxesmanager.php |
<?php
namespace Bitrix\Mail\Helper\Mailbox;
use Bitrix\Mail\Internals\MailboxAccessTable;
use Bitrix\Mail\MailboxTable;
use Bitrix\Main\Entity\Query\Filter\Expression\Column;
use Bitrix\Main\Entity\ReferenceField;
use Bitrix\Main\ORM\Fields\ExpressionField;
use Bitrix\Main\ORM\Query\Query;
class SharedMailboxesManager
{
public static function getSharedMailboxesCount()
{
$count = static::getBaseQueryForSharedMailboxes()
->addSelect(Query::expr()->countDistinct('MAILBOX_ID'), 'CNT')
->exec()
->fetch();
return !empty($count['CNT']) ? $count['CNT'] : 0;
}
public static function getSharedMailboxesIds()
{
$count = static::getBaseQueryForSharedMailboxes()
->addSelect('MAILBOX_ID')
->addGroup('MAILBOX_ID')
->exec()
->fetchAll();
return array_map('intval', array_column($count, 'MAILBOX_ID'));
}
private static function getBaseQueryForSharedMailboxes()
{
return MailboxAccessTable::query()
->registerRuntimeField('', new ReferenceField('ref', MailboxTable::class, ['=this.MAILBOX_ID' => 'ref.ID'], ['join_type' => 'INNER']))
->where(new ExpressionField('ac', 'CONCAT("U", %s)', 'ref.USER_ID'), '!=', new Column('ACCESS_CODE'))
->where('ref.ACTIVE', 'Y')
->where('ref.LID', SITE_ID);
}
}