Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/mail/lib/integration/ai/ |
Upload File : |
<?php namespace Bitrix\Mail\Integration\AI; use Bitrix\Mail\MailMessageTable; use Bitrix\Main\ArgumentException; use Bitrix\Main\Event; use Bitrix\Mail\Helper\Message\MessageThreadLoader; use Bitrix\Mail; use Bitrix\Main\Engine\CurrentUser; use Bitrix\Main\ObjectPropertyException; use Bitrix\Main\SystemException; final class Controller { public static function onContextGetMessages(Event $event): array { $moduleId = $event->getParameter('module'); $contextId = $event->getParameter('id'); $contextParameters = $event->getParameter('params'); $isAddedQuote = filter_var(($contextParameters['isAddedQuote'] ?? null), FILTER_VALIDATE_BOOLEAN); $messageId = $contextParameters['messageId']; $messageIds = $contextParameters['messageIds']; if (!$moduleId || !$contextId) { return ['messages' => []]; } if (!self::isNeededMailMessageContext($moduleId, $contextId, $isAddedQuote, $messageId, $messageIds)) { return ['messages' => []]; } if (!$messageIds) { $messageThreadLoader = new MessageThreadLoader($messageId); $messageThreadLoader->loadFullThreadMessageIds(); $messageIds = $messageThreadLoader->getThreadMessageIds(); } if (!$messageIds) { return ['messages' => []]; } return self::loadMessages($messageIds); } private static function isNeededMailMessageContext( string $moduleId, string $contextId, bool $isAddedQuote, ?int $messageId = null, ?array $messageIds = null, ): bool { if ($moduleId !== 'mail' || $isAddedQuote !== false) { return false; } if (!str_starts_with($contextId, 'mail_reply') && !str_starts_with($contextId, 'crm_mail_reply')) { return false; } if ($messageId < 0 && empty($messageIds)) { return false; } return true; } /** * @param int[] $messageIds * @return array */ private static function loadMessages(array $messageIds): array { $userId = CurrentUser::get()->getId(); $messageIds = array_filter($messageIds, function ($item) { return filter_var($item, FILTER_VALIDATE_INT) !== false; }); if (empty($messageIds)) { return ['messages' => []]; } $message = MailMessageTable::query() ->setSelect(['*']) ->where('ID', end($messageIds)) ->exec() ->fetch() ; if (!$message || !Mail\Helper\Message::hasAccess($message, $userId)) { return ['messages' => []]; } $messages[] = [ 'content' => $message['BODY']] ; return [ 'messages' => $messages, ]; } }