5use Bitrix\Mail\Internals\MessageAccessTable;
6use \Bitrix\Crm\ActivityTable;
28 $this->userId = $userId;
29 $this->message = $message;
30 $this->storage = $storage;
35 $storage = new \Bitrix\Mail\Storage\MessageAccess();
36 return new self($userId, $message, $storage);
41 $messageStorage = new \Bitrix\Mail\Storage\Message();
42 $message = $messageStorage->getMessage(
$messageId);
43 return self::createForMessage($message, $userId);
54 $userId =
$USER->GetID();
58 throw new \Bitrix\Main\SystemException(
'message access: user id error');
61 return $message instanceof \Bitrix\Mail\Item\Message
62 ? self::createForMessage($message, $userId)
63 : self::createByMessageId((
int)$message, $userId);
68 return (
bool)self::getUserMailbox($this->getMessage()->getMailboxId(), $this->getUserId());
73 return ActivityTable::getList([
79 '==ID' => $activityId,
85 public function getEntitiesForType($entityType):
array
87 $collection = $this->getCollection($this->getMessage());
92 foreach ($collection as $item)
94 if ($item->getEntityType() === $entityType)
96 $bindings[] = $item->getEntityId();
107 public function canViewMessage(): bool
114 $collection = $this->getCollection($this->getMessage());
117 foreach ($collection as $item)
119 switch ($item->getEntityType())
121 case self::ENTITY_TYPE_IM_CHAT:
127 case self::ENTITY_TYPE_CALENDAR_EVENT:
149 private function getUserId(): int
154 private function getStorage(): IMessageAccessStorage
159 private function getCollection(\Bitrix\Mail\Item\Message $item): \Bitrix\Mail\Collection\MessageAccess
161 return $this->
getStorage()->getCollectionForMessage($item);
164 private static function getUserMailbox(
int $mailboxId,
int $userId)
if(! $messageFields||!isset($messageFields['message_id'])||!isset($messageFields['status'])||!CModule::IncludeModule("messageservice")) $messageId
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
static checkAccessForChat(int $chatId, int $userId)
static checkAccessForCalendarEvent(int $calendarEventId, int $userId)
static getUserMailbox($mailboxId, $userId=null)
static createForMessage(\Bitrix\Mail\Item\Message $message, int $userId)
const ENTITY_TYPE_CALENDAR_EVENT
__construct(int $userId, \Bitrix\Mail\Item\Message $message, IMessageAccessStorage $storage)
static createForCurrentUser($message)
const ENTITY_TYPE_IM_CHAT
static getCrmEntityOwner($activityId)
static createByMessageId(int $messageId, int $userId)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
getStorage(array $config)
if(empty($decryptedData)) $storage