3namespace Bitrix\Im\V2\Link\Calendar;
6use Bitrix\Im\Model\LinkCalendarIndexTable;
8use Bitrix\Im\V2\Common\ContextCustomer;
9use Bitrix\Im\V2\Entity\Calendar\CalendarError;
10use Bitrix\Im\V2\Link\Push;
11use Bitrix\Im\V2\Message;
12use Bitrix\Im\V2\RelationCollection;
13use Bitrix\Im\V2\Result;
14use Bitrix\Main\Loader;
15use Bitrix\Main\Localization\Loc;
29 $userId = $this->getContext()->getUserId();
32 $calendarLink->setEntity($calendar)->setChatId($chatId)->setAuthorId(
$userId);
41 if (!$sendMessageResult->isSuccess())
43 $result->addErrors($sendMessageResult->getErrors());
46 $systemMessageId = $sendMessageResult->getResult();
48 $calendarLink->setMessageId(
$messageId ?: $systemMessageId);
49 $saveResult = $calendarLink->save();
51 if (!$saveResult->isSuccess())
53 return $result->addErrors($saveResult->getErrors());
57 ->setContext($this->context)
58 ->sendFull($calendarLink, self::ADD_CALENDAR_EVENT, [
'RECIPIENT' => $calendar->getMembersIds()])
68 ->setContext($this->context)
69 ->sendIdOnly($calendar, self::DELETE_CALENDAR_EVENT, [
'CHAT_ID' => $calendar->
getChatId()])
79 LinkCalendarIndexTable::delete($calendarLink->
getPrimaryId());
80 $saveResult = $calendarLink->
save();
82 if (!$saveResult->isSuccess())
84 return $result->addErrors($saveResult->getErrors());
88 ->setContext($this->context)
89 ->sendFull($calendarLink, self::UPDATE_CALENDAR_EVENT, [
'RECIPIENT' => $calendarLink->
getEntity()->getMembersIds()])
99 $saveResult = $calendarLink->
save();
101 if (!$saveResult->isSuccess())
103 return $result->addErrors($saveResult->getErrors());
107 ->setContext($this->context)
108 ->sendFull($calendarLink, self::UPDATE_CALENDAR_EVENT, [
'RECIPIENT' => $calendarLink->
getEntity()->getMembersIds()])
118 if ($calendarCollection->
count() === 0)
123 $saveResult = $calendarCollection->
save();
125 if (!$saveResult->isSuccess())
127 return $result->addErrors($saveResult->getErrors());
132 foreach ($calendarCollection as $calendarItem)
134 $pushRecipient = [
'RECIPIENT' => $calendarItem->getEntity()->getMembersIds()];
136 ->setContext($this->context)
137 ->sendFull($calendarItem, self::UPDATE_CALENDAR_EVENT, $pushRecipient)
146 $currentUserId = $this->getContext()->getUserId();
149 if (!Loader::includeModule(
'calendar'))
154 $chat->setContext($this->context);
156 $randomPostfix = mt_rand() & 1000;
157 $data[
'params'][
'sliderId'] =
"im:chat{$chat->getChatId()}{$randomPostfix}";
158 $data[
'params'][
'createChatId'] = $chat->getId();
160 if ($chat->getEntityType() ===
Chat\ExtendedType::Sonet->value)
162 $data[
'params'][
'type'] =
'group';
163 $data[
'params'][
'ownerId'] = $chat->getEntityId();
168 $users = array_values(array_map(
static fn($item) => [
'id' => (
int)$item,
'entityId' =>
'user'], $userIds));
169 $data[
'params'][
'participantsEntityList'] = $users;
170 $data[
'params'][
'type'] =
'user';
175 $message->setContext($this->context);
177 'CHAT_ID' => $chat->getChatId(),
178 'MESSAGE_ID' =>
$message->getMessageId(),
179 'MESSAGE_TYPE' => $chat->
getType(),
180 'MESSAGE' =>
$message->getMessage(),
181 'AUTHOR_ID' =>
$message->getAuthorId(),
182 'FILES' => $this->getFilesForPrepareText(
$message)
194 'ONLY_INTERNAL_TYPE' =>
true,
195 'CHAT_ID' => $chat->getId(),
196 'IS_HIDDEN' =>
false,
197 'ONLY_INTRANET' =>
true,
200 select: [
'ID',
'USER_ID',
'CHAT_ID']
202 $currentUserId = $this->getContext()->getUserId();
203 $participants[$currentUserId] = $currentUserId;
205 return $participants;
212 $authorId = $this->getContext()->getUserId();
215 'DIALOG_ID' => $dialogId,
218 'FROM_USER_ID' => $authorId,
219 'PARAMS' => [
'CLASS' =>
"bx-messenger-content-item-system"],
220 'URL_PREVIEW' =>
'N',
221 'SKIP_CONNECTOR' =>
'Y',
222 'SKIP_COMMAND' =>
'Y',
223 'SILENT_CONNECTOR' =>
'Y',
224 'SKIP_URL_INDEX' =>
'Y',
240 $filesForPrepare = [];
244 $filesForPrepare[] = [
'name' => $file->getDiskFile()->getName()];
247 return $filesForPrepare;
252 $genderModifier = ($this->getContext()->getUser()->getGender() ===
'F') ?
'_F' :
'';
257 $text .= Loc::getMessage(
258 'IM_CHAT_CALENDAR_REGISTER_FROM_MESSAGE_NOTIFICATION' . $genderModifier .
'_MSGVER_1',
260 '#LINK#' => $calendar->
getEntity()->getUrl(),
261 '#USER_ID#' => $this->getContext()->getUserId(),
269 return Loc::getMessage(
270 'IM_CHAT_CALENDAR_REGISTER_FROM_CHAT_NOTIFICATION' . $genderModifier .
'_MSGVER_1',
272 '#LINK#' => $calendar->
getEntity()->getUrl(),
273 '#USER_ID#' => $this->getContext()->getUserId(),
274 '#EVENT_TITLE#' => $calendar->
getEntity()->getTitle(),
if(! $messageFields||!isset($messageFields['message_id'])||!isset($messageFields['status'])||!CModule::IncludeModule("messageservice")) $messageId
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
static getType($chatData, bool $camelCase=true)
static getDialogId(int $chatId, $userId=null)
const ADD_CALENDAR_MESSAGE_FAILED
const CALENDAR_NOT_INSTALLED
save(bool $isGroupSave=false)
getParticipants(Chat $chat)
const UPDATE_CALENDAR_EVENT
updateCalendarLinks(CalendarCollection $calendarCollection)
updateCalendar(CalendarItem $calendarLink)
unregisterCalendar(CalendarItem $calendar)
updateCalendarLink(CalendarItem $calendarLink)
getFilesForPrepareText(Message $message)
sendMessageAboutCalendar(CalendarItem $calendarLink, int $chatId)
const DELETE_CALENDAR_EVENT
registerCalendar(int $chatId, ?int $messageId, \Bitrix\Im\V2\Entity\Calendar\CalendarItem $calendar)
prepareDataForCreateSlider(Chat $chat, ?Message $message=null)
getMessageText(CalendarItem $calendar)
static find(array $filter, array $order=[], ?int $limit=null, ?Context $context=null, array $select=self::COMMON_FIELDS)
static PrepareText($quoteMessage)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)