1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
sharingajax.php
См. документацию.
1<?php
2
3namespace Bitrix\Calendar\Controller;
4
5use Bitrix\Calendar\Controller\Filter\RestrictExternalUser;
6use Bitrix\Calendar\Core\Event\Event;
7use Bitrix\Calendar\Core\Base\BaseException;
8use Bitrix\Calendar\Core\Mappers;
9use Bitrix\Calendar\ICal\IcsManager;
10use Bitrix\Calendar\Sharing;
11use Bitrix\Calendar\Sharing\Link;
12use Bitrix\Calendar\Util;
13use Bitrix\Main\Application;
14use Bitrix\Main\Loader;
15use Bitrix\Calendar\Sharing\SharingEventManager;
16use Bitrix\Calendar\Sharing\SharingUser;
17use Bitrix\Crm;
18use Bitrix\Main\ArgumentException;
19use Bitrix\Main\Context;
20use Bitrix\Main\Error;
21use Bitrix\Main\Localization\Loc;
22use Bitrix\Main\Engine\ActionFilter;
23use Bitrix\Main\Type\DateTime;
24use Bitrix\Main\Web\Cookie;
25use Bitrix\Main\Config\Option;
26
27Loc::loadMessages(__FILE__);
28
30{
31 private int $userId;
32
33 protected function init(): void
34 {
35 parent::init();
36
37 $this->userId = \CCalendar::GetUserId();
38 }
39
40 public function configureActions(): array
41 {
42 return [
43 'getUsersAccessibility' => [
44 '-prefilters' => [
45 ActionFilter\Authentication::class,
46 ActionFilter\Csrf::class,
47 ],
48 '+postfilters' => [
50 ],
51 ],
52 'saveEvent' => [
53 '-prefilters' => [
54 ActionFilter\Authentication::class,
55 ActionFilter\Csrf::class,
56 ],
57 '+postfilters' => [
59 ],
60 ],
61 'saveCrmEvent' => [
62 '-prefilters' => [
63 ActionFilter\Authentication::class,
64 ActionFilter\Csrf::class,
65 ],
66 '+postfilters' => [
68 ],
69 ],
70 'deleteEvent' => [
71 '-prefilters' => [
72 ActionFilter\Authentication::class,
73 ActionFilter\Csrf::class,
74 ],
75 '+postfilters' => [
77 ],
78 ],
79 'saveFirstEntry' => [
80 '-prefilters' => [
81 ActionFilter\Authentication::class,
82 ActionFilter\Csrf::class,
83 ],
84 '+postfilters' => [
86 ],
87 ],
88 'getConferenceLink' => [
89 '-prefilters' => [
90 ActionFilter\Authentication::class,
91 ActionFilter\Csrf::class,
92 ],
93 '+postfilters' => [
95 ],
96 ],
97 'getIcsFileContent' => [
98 '-prefilters' => [
99 ActionFilter\Authentication::class,
100 ActionFilter\Csrf::class,
101 ],
102 '+postfilters' => [
103 new ActionFilter\Cors(),
104 ],
105 ],
106 'handleTimelineNotify' => [
107 '-prefilters' => [
108 ActionFilter\Authentication::class,
109 ActionFilter\Csrf::class,
110 ],
111 '+postfilters' => [
112 new ActionFilter\Cors(),
113 ],
114 ],
115 'enableUserSharing' => [
116 '+prefilters' => [
118 ],
119 ],
120 'disableUserSharing' => [
121 '+prefilters' => [
123 ],
124 ],
125 'disableUserLink' => [
126 '+prefilters' => [
128 ],
129 ],
130 'increaseFrequentUse' => [
131 '+prefilters' => [
133 ],
134 ],
135 'generateUserJointSharingLink' => [
136 '+prefilters' => [
138 ],
139 ],
140 'getAllUserLink' => [
141 '+prefilters' => [
143 ],
144 ],
145 ];
146 }
147
155
161 public function enableUserSharingAction(): ?array
162 {
163 $sharing = new Sharing\Sharing($this->userId);
164 $result = $sharing->enable();
165 if (!$result->isSuccess())
166 {
167 $this->addErrors($result->getErrors());
168 return null;
169 }
170
171 return $sharing->getLinkInfo();
172 }
173
179 public function disableUserSharingAction(): ?bool
180 {
181 $sharing = new Sharing\Sharing($this->userId);
182 $result = $sharing->disable();
183 if (!$result->isSuccess())
184 {
185 $this->addErrors($result->getErrors());
186 return null;
187 }
188
189 return true;
190 }
191
198 public function disableUserLinkAction(?string $hash): ?bool
199 {
200 $sharing = new Sharing\Sharing($this->userId);
201 $result = $sharing->deactivateUserLink($hash);
202 if (!$result->isSuccess())
203 {
204 $this->addErrors($result->getErrors());
205
206 return false;
207 }
208
209 return true;
210 }
211
217 public function increaseFrequentUseAction(?string $hash)
218 {
219 $sharing = new Sharing\Sharing($this->userId);
220 $result = $sharing->increaseFrequentUse($hash);
221 if (!$result->isSuccess())
222 {
223 $this->addErrors($result->getErrors());
224
225 return false;
226 }
227
228 return true;
229 }
230
237 public function generateUserJointSharingLinkAction(array $memberIds): ?array
238 {
239 $result = (new Sharing\Sharing($this->userId))->generateUserJointLink($memberIds);
240 if (!$result->isSuccess())
241 {
242 $this->addErrors($result->getErrors());
243
244 return null;
245 }
246
247 return $result->getData();
248 }
249
250 public function getAllUserLinkAction(): ?array
251 {
252 if (Loader::includeModule('intranet') && !\Bitrix\Intranet\Util::isIntranetUser())
253 {
254 return null;
255 }
256
257 return [
258 'userLinks' => (new Sharing\Sharing($this->userId))->getAllUserLinkInfo(),
259 'pathToUser' => Option::get('intranet', 'path_user', '/company/personal/user/#USER_ID#/', '-'),
260 ];
261 }
262
264 {
265 $request = $this->getRequest();
266
267 $userIds = $request->getPost('userIds');
268 $fromTs = $request->getPost('timestampFrom') / 1000;
269 $toTs = $request->getPost('timestampTo') / 1000;
270
271 if (!is_array($userIds) || !$fromTs || !$toTs)
272 {
273 return [];
274 }
275
277 'userIds' => array_map('intval', $userIds),
278 'timestampFrom' => $fromTs,
279 'timestampTo' => $toTs
280 ]))->getUsersAccessibilitySegmentsInUtc();
281 }
282
290 public function saveEventAction(): array
291 {
292 $connection = Application::getConnection();
293 $sqlHelper = $connection->getSqlHelper();
294
295 $result = [];
296 $request = $this->getRequest();
297
298 $userName = $sqlHelper->forSql(trim($request['userName'] ?? ''));
299 $userContact = $sqlHelper->forSql(trim($request['userContact'] ?? ''));
300 $parentLinkHash = $sqlHelper->forSql(trim($request['parentLinkHash'] ?? ''));
301 $ownerId = (int)($request['ownerId'] ?? null);
302 $ownerCreated = ($request['ownerCreated'] ?? null) === 'true';
303
304 $contactDataError = !Sharing\SharingEventManager::validateContactData($userContact);
306 if ($contactDataError || $contactNameError)
307 {
308 $this->addError(new Error(Loc::getMessage('EC_SHARINGAJAX_INCORRECT_CONTACT_DATA')));
309
310 return [
311 'contactDataError' => $contactDataError,
312 'contactNameError' => $contactNameError,
313 ];
314 }
315
317 $link = Link\Factory::getInstance()->getLinkByHash($parentLinkHash);
318
319 if (
320 !$link
321 || !$link->isActive()
322 || !in_array(
323 $link->getObjectType(),
324 [Sharing\Link\Helper::USER_SHARING_TYPE, Sharing\Link\Helper::GROUP_SHARING_TYPE],
325 true
326 )
327 || !$this->checkLinkBelongsOwnerId($link, $ownerId)
328 )
329 {
330 $this->addError(new Error('Link not found'));
331
332 return $result;
333 }
334
335 $userParams = [
336 'NAME' => $userName,
337 'CONTACT_DATA' => $userContact,
338 ];
339 if ($ownerCreated)
340 {
341 $userId = SharingUser::getInstance()->getAnonymousUserForOwner($userParams);
342 }
343 else
344 {
345 $userId = SharingUser::getInstance()->login(true, $userParams);
346 }
347
348
349 if (!$userId)
350 {
351 $this->addError(new Error(Loc::getMessage('EC_SHARINGAJAX_USER_NOT_FOUND')));
352
353 return $result;
354 }
355
356 $eventData = Sharing\SharingEventManager::getEventDataFromRequest($request);
357 $eventData['eventName'] = Sharing\SharingEventManager::getSharingEventNameByUserName($userName);
358
359 $event = Sharing\SharingEventManager::prepareEventForSave($eventData, $userId, $link);
360
361 $sharingEventManager = new Sharing\SharingEventManager($event, $userId, $ownerId, $link);
362 $eventCreateResult = $sharingEventManager->createEvent(false, $userParams['NAME']);
363
364 if ($errors = $eventCreateResult->getErrors())
365 {
366 $this->addError($errors[0]);
367
368 return $result;
369 }
370
372 $event = $eventCreateResult->getData()['event'];
374 $eventLink = $eventCreateResult->getData()['eventLink'];
375
376 Sharing\Analytics::getInstance()->sendMeetingCreated($link);
377
378 // Auto-accepting meeting for owner and members
379 $this->autoAcceptSharingEvent($event->getId(), $ownerId);
380 foreach ($link->getMembers() as $member)
381 {
382 $this->autoAcceptSharingEvent($event->getId(), $member->getId());
383 }
384
386 $event = (new Mappers\Factory())->getEvent()->getById($event->getId());
387
388 $notificationService = null;
389 if (SharingEventManager::isEmailCorrect($userContact))
390 {
391 $notificationService = (new Sharing\Notification\Mail())
392 ->setEventLink($eventLink)
393 ->setEvent($event)
394 ;
395 }
396
397 $notificationService?->notifyAboutMeetingCreated($userContact);
398
399 return [
400 'eventId' => $event->getId(),
401 'eventName' => $event->getName(),
402 'eventLinkId' => $eventLink->getId(),
403 'eventLinkHash' => $eventLink->getHash(),
404 'eventLinkShortUrl' => Sharing\Helper::getShortUrl($eventLink->getUrl()),
405 ];
406 }
407
408 public function saveCrmEventAction(): array
409 {
410 $result = [];
411 $request = $this->getRequest();
412
413 if (!Loader::includeModule('crm'))
414 {
415 $this->addError(new Error('Module crm not found'));
416
417 return $result;
418 }
419
420 $connection = Application::getConnection();
421 $sqlHelper = $connection->getSqlHelper();
422
423 $crmDealLinkHash = $sqlHelper->forSql(trim($request['crmDealLinkHash'] ?? ''));
424 $ownerId = (int)($request['ownerId'] ?? null);
425 $ownerCreated = ($request['ownerCreated'] ?? null) === 'true';
426
428 $crmDealLink = Link\Factory::getInstance()->getLinkByHash($crmDealLinkHash);
429
430 if (
431 !$crmDealLink
432 || !$crmDealLink->isActive()
433 || $crmDealLink->getObjectType() !== Sharing\Link\Helper::CRM_DEAL_SHARING_TYPE
434 || $crmDealLink->getOwnerId() !== $ownerId
435 )
436 {
437 $this->addError(new Error('Link not found'));
438
439 return $result;
440 }
441
442 if (!$crmDealLink->getContactId() || !$crmDealLink->getContactType())
443 {
444 $userName = $sqlHelper->forSql(trim($request['userName'] ?? ''));
445 $userContact = $sqlHelper->forSql(trim($request['userContact'] ?? ''));
446
447 $contactDataError = !Sharing\SharingEventManager::validateContactData($userContact);
448 $contactNameError = !Sharing\SharingEventManager::validateContactName($userName);
449 if ($contactDataError || $contactNameError)
450 {
451 $this->addError(new Error(Loc::getMessage('EC_SHARINGAJAX_INCORRECT_CONTACT_DATA')));
452
453 return [
454 'contactDataError' => $contactDataError,
455 'contactNameError' => $contactNameError,
456 ];
457 }
458 }
459 else
460 {
461 $contactType = $crmDealLink->getContactType();
462 $contactId = $crmDealLink->getContactId();
463 $contactData = \Bitrix\Crm\Service\Container::getInstance()
464 ->getEntityBroker($contactType)
465 ->getById($contactId)
466 ;
467 if (!$contactData)
468 {
469 $this->addError(new Error('Contact not found'));
470
471 return $result;
472 }
473
474 $userName = '';
475 if ($contactType === \CCrmOwnerType::Contact)
476 {
477 $userName = $contactData->getFullName();
478 }
479 elseif ($contactType === \CCrmOwnerType::Company)
480 {
481 $userName = $contactData->getTitle();
482 }
483 $userContact = '';
484 }
485
486 $userParams = [
487 'NAME' => $userName,
488 'CONTACT_DATA' => $userContact,
489 ];
490 if ($ownerCreated)
491 {
492 $userId = SharingUser::getInstance()->getAnonymousUserForOwner($userParams);
493 }
494 else
495 {
496 $userId = SharingUser::getInstance()->login(true, $userParams);
497 }
498
499 $eventData = Sharing\SharingEventManager::getCrmEventDataFromRequest($request);
500 $eventData['eventName'] = Sharing\SharingEventManager::getSharingEventNameByDealId($crmDealLink->getEntityId());
501
502 $event = Sharing\SharingEventManager::prepareEventForSave($eventData, $userId, $crmDealLink);
503
504 $sharingEventManager = new Sharing\SharingEventManager($event, $userId, $ownerId, $crmDealLink);
505 $eventCreateResult = $sharingEventManager->createEvent(false, $userParams['NAME']);
506
507 if ($errors = $eventCreateResult->getErrors())
508 {
509 $this->addError($errors[0]);
510
511 return $result;
512 }
513
515 $event = $eventCreateResult->getData()['event'];
517 $eventLink = $eventCreateResult->getData()['eventLink'];
518
519 Sharing\Analytics::getInstance()->sendMeetingCreated($crmDealLink);
520
521 $dateFrom = $request['dateFrom'] ?? null;
522 $timezone = $request['timezone'] ?? null;
523
525 $eventStart = Util::getDateObject($dateFrom, false, $timezone);
526 $activityName = Loc::getMessage('EC_SHARINGAJAX_ACTIVITY_SUBJECT');
527
528 $crmDealLink->setLastStatus(null);
529 (new Sharing\Link\CrmDealLinkMapper())->update($crmDealLink);
530
531 // Create calendar sharing activity in deal
532 (new Sharing\Crm\ActivityManager($event->getId(), $crmDealLink, $userName, $eventLink))
533 ->setEvent($event)
534 ->createCalendarSharingActivity($activityName, $event->getDescription(), $eventStart)
535 ;
536
537 // Auto-accepting meeting for owner and members
538 $this->autoAcceptSharingEvent($event->getId(), $ownerId);
539 foreach ($crmDealLink->getMembers() as $member)
540 {
541 $this->autoAcceptSharingEvent($event->getId(), $member->getId());
542 }
543
544 //notify client about meeting is auto-accepted
545 if ($crmDealLink->getContactId() > 0)
546 {
547 Crm\Integration\Calendar\Notification\Manager::getSenderInstance($crmDealLink)
548 ->setCrmDealLink($crmDealLink)
549 ->setEvent($event)
550 ->setEventLink($eventLink)
551 ->sendCrmSharingAutoAccepted()
552 ;
553 }
554 else
555 {
556 (new Sharing\Notification\Mail())
557 ->setEventLink($eventLink)
558 ->setEvent($event)
559 ->notifyAboutMeetingCreated($userContact)
560 ;
561 }
562
563 return [
564 'eventId' => $event->getId(),
565 'eventName' => $event->getName(),
566 'eventLinkId' => $eventLink->getId(),
567 'eventLinkHash' => $eventLink->getHash(),
568 'eventLinkShortUrl' => Sharing\Helper::getShortUrl($eventLink->getUrl()),
569 ];
570 }
571
577 public function deleteEventAction(): array
578 {
579 $result = [];
580 $request = $this->getRequest();
581 $eventId = (int)$request['eventId'];
582 $eventLinkHash = Application::getConnection()->getSqlHelper()->forSql($request['eventLinkHash']);
583
585 $eventLink = Link\Factory::getInstance()->getLinkByHash($eventLinkHash);
586 if (
587 !$eventLink
588 || !$eventLink->isActive()
589 || $eventLink->getObjectType() !== Sharing\Link\Helper::EVENT_SHARING_TYPE
590 )
591 {
592 $this->addError(new Error('Link not found'));
593
594 return $result;
595 }
596
598 $event = (new Mappers\Event())->getById($eventId);
599 if (!$event)
600 {
601 $this->addError(new Error(Loc::getMessage('EC_SHARINGAJAX_EVENT_NOT_FOUND')));
602
603 return $result;
604 }
605
606 if ($event->getId() !== $eventLink->getEventId())
607 {
608 $this->addError(new Error(Loc::getMessage('EC_SHARINGAJAX_EVENT_DELETE_ERROR')));
609
610 return $result;
611 }
612
613 $sharingEventManager = new Sharing\SharingEventManager($event, $eventLink->getHostId(), $eventLink->getOwnerId());
614 $eventDeleteResult = $sharingEventManager->deleteEvent();
615
616 if ($eventDeleteResult->getErrors())
617 {
618 $this->addError(new Error(Loc::getMessage('EC_SHARINGAJAX_EVENT_DELETE_ERROR')));
619 }
620 else
621 {
622 $sharingEventManager->deactivateEventLink($eventLink);
623 }
624
625 return $result;
626 }
627
631 public function saveFirstEntryAction()
632 {
633 $cookieName = 'CALENDAR_SHARING_FIRST_PAGE_VISITED';
634 $cookie = new Cookie($cookieName, 'Y', null, false);
635 Context::getCurrent()->getResponse()->addCookie($cookie);
636 }
637
638 public function saveLinkRuleAction(string $linkHash, array $ruleArray): array
639 {
640 $result = [];
641
642 if (Loader::includeModule('intranet') && !\Bitrix\Intranet\Util::isIntranetUser())
643 {
644 $this->addError(new Error('Access denied'));
645
646 return $result;
647 }
648
649 $saveResult = \Bitrix\Calendar\Sharing\Link\Rule\Helper::getInstance()->saveLinkRule($linkHash, $ruleArray);
650
651 if (!$saveResult)
652 {
653 $this->addError(new Error('Error while trying to save rule'));
654 }
655
656 return $result;
657 }
658
659 private function currentUserIsNotResponsible(Sharing\Link\Link $link): bool
660 {
661 if (!Loader::includeModule('crm'))
662 {
663 return false;
664 }
665
666 if (!($link instanceof Sharing\Link\CrmDealLink))
667 {
668 return false;
669 }
670
671 $currentUserId = (new Crm\Service\Context())->getUserId();
672
673 return $this->getAssignedId($link) !== $currentUserId;
674 }
675
676 private function getAssignedId(Sharing\Link\CrmDealLink $link): ?int
677 {
678 $entityBroker = Crm\Service\Container::getInstance()->getEntityBroker(\CCrmOwnerType::Deal);
679 if (!$entityBroker)
680 {
681 return null;
682 }
683
684 $entity = $entityBroker->getById($link->getEntityId());
685 if (!$entity)
686 {
687 return null;
688 }
689
690 return $entity->getAssignedById();
691 }
692
702 public function getConferenceLinkAction(string $eventLinkHash): array
703 {
704 $result = [];
705 $eventLinkHash = Application::getConnection()->getSqlHelper()->forSql($eventLinkHash);
706
708 $eventLink = Link\Factory::getInstance()->getLinkByHash($eventLinkHash);
709 if (!$eventLink || !$eventLink->isActive() || $eventLink->getObjectType() !== Sharing\Link\Helper::EVENT_SHARING_TYPE)
710 {
711 $this->addError(new Error('Link not found'));
712
713 return $result;
714 }
715
716 $conferenceLink = (new Sharing\SharingConference($eventLink))->getConferenceLink();
717
718 if (!$conferenceLink)
719 {
720 $this->addError(new Error('Error while creating conference link'));
721
722 return $result;
723 }
724
725 $result['conferenceLink'] = $conferenceLink;
726
727 return $result;
728 }
729
733 public function getIcsFileContentAction(string $eventLinkHash): string
734 {
735 $result = '';
736 $eventLinkHash = Application::getConnection()->getSqlHelper()->forSql($eventLinkHash);
737
739 $eventLink = Link\Factory::getInstance()->getLinkByHash($eventLinkHash);
740 if (
741 !$eventLink
742 || !$eventLink->isActive()
743 || $eventLink->getObjectType() !== Sharing\Link\Helper::EVENT_SHARING_TYPE
744 )
745 {
746 $this->addError(new Error('Link not found'));
747
748 return $result;
749 }
750
752 $event = (new Mappers\Event())->getById($eventLink->getEventId());
753
754 if (!$event)
755 {
756 $this->addError(new Error(Loc::getMessage('EC_SHARINGAJAX_EVENT_ACCESS_DENIED')));
757
758 return $result;
759 }
760
761 $event->setName(SharingEventManager::getSharingEventNameByUserId($eventLink->getOwnerId()));
762 return IcsManager::getInstance()->getIcsFileContent($event, [
763 'eventUrl' => Sharing\Helper::getShortUrl($eventLink->getUrl()),
764 'conferenceUrl' => Sharing\Helper::getShortUrl($eventLink->getUrl() . Sharing\Helper::ACTION_CONFERENCE),
765 ]);
766 }
767
768 public function getDeletedSharedEventAction(int $entryId): array
769 {
770 if (Loader::includeModule('intranet') && !\Bitrix\Intranet\Util::isIntranetUser())
771 {
772 return [];
773 }
774
775 $event = \CCalendar::getDeletedSharedEvent($entryId);
776 $linkArray = [];
777 if (is_array($event))
778 {
780 $eventId = $entryId === $event['ID'] ? $entryId : $event['PARENT_ID'];
781 $link = (new Sharing\Link\Factory())->getDeletedEventLinkByEventId($eventId);
782 if (!is_null($link))
783 {
784 $linkArray = [
785 'canceledTimestamp' => $link->getCanceledTimestamp(),
786 'externalUserName' => $link->getExternalUserName(),
787 'externalUserId' => $link->getHostId(),
788 ];
789 }
790 }
791
792 return [
793 'entry' => $event,
794 'link' => $linkArray,
795 'userTimezone' => $this->getUserTimezoneName(),
796 ];
797 }
798
799 public function handleTimelineNotifyAction(): array
800 {
801 $result = [];
802
803 if (!Loader::includeModule('crm'))
804 {
805 $this->addError(new Error('Module crm not installed'));
806
807 return $result;
808 }
809
810 $connection = Application::getConnection();
811 $sqlHelper = $connection->getSqlHelper();
812 $request = $this->getRequest();
813 $linkHash = $sqlHelper->forSql(trim($request['linkHash'] ?? ''));
814 $entityType = $sqlHelper->forSql(trim($request['entityType'] ?? ''));
815 $notifyType = $sqlHelper->forSql(trim($request['notifyType']) ?? '');
816 $entityId = (int)($request['entityId'] ?? null);
817 $dateFrom = $request['dateFrom'] ?? null;
818 $timezone = $request['timezone'] ?? null;
819
820
822 $link = Link\Factory::getInstance()->getLinkByHash($linkHash);
823 if (
824 !$link
825 || !$link->isActive()
826 || $link->getObjectId() !== $entityId
827 || $link->getObjectType() !== $entityType
828 )
829 {
830 $this->addError(new Error('Link not found'));
831
832 return $result;
833 }
834
835 if (in_array($notifyType, Sharing\Crm\NotifyManager::NOTIFY_TYPES, true))
836 {
837 (new Sharing\Crm\NotifyManager($link, $notifyType))
838 ->sendSharedCrmActionsEvent(Util::getDateTimestamp($dateFrom, $timezone));
839
840 $link->setLastStatus($notifyType);
841 (new Sharing\Link\CrmDealLinkMapper())->update($link);
842 }
843
844 return $result;
845 }
846
847 public function updateSharingSettingsCollapsedAction(string $collapsed): void
848 {
849 $sharing = new Sharing\Sharing(\CCalendar::GetUserId());
850 $sharing->setSharingSettingsCollapsed($collapsed === 'Y');
851 }
852
853 public function setSortJointLinksByFrequentUseAction(string $sortByFrequentUse): void
854 {
855 $sharing = new Sharing\Sharing(\CCalendar::GetUserId());
856 $sharing->setSortJointLinksByFrequentUse($sortByFrequentUse === 'Y');
857 }
858
859 private function getUserTimezoneName(): string
860 {
861 return \CCalendar::getUserTimezoneName($this->userId);
862 }
863
864 private function autoAcceptSharingEvent(int $eventId, int $userId)
865 {
866 \CCalendarEvent::SetMeetingStatus([
867 'eventId' => $eventId,
868 'userId' => $userId,
869 'status' => 'Y',
870 'sharingAutoAccept' => true,
871 ]);
872 }
873
874 private function checkLinkBelongsOwnerId(Link\Link $link, int $ownerId): bool
875 {
876 return match ($link->getObjectType())
877 {
878 Sharing\Link\Helper::GROUP_SHARING_TYPE => $link->getHostId() === $ownerId,
879 default => $link->getOwnerId() === $ownerId,
880 };
881 }
882}
$connection
Определения actionsdefinitions.php:38
$hash
Определения ajax_redirector.php:8
if(!Loader::includeModule('catalog')) if(!AccessController::getCurrent() ->check(ActionDictionary::ACTION_PRICE_EDIT)) if(!check_bitrix_sessid()) $request
Определения catalog_reindex.php:36
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения check_mail.php:18
generateUserJointSharingLinkAction(array $memberIds)
Определения sharingajax.php:237
disableOptionPayAttentionToNewSharingFeatureAction()
Определения sharingajax.php:151
setSortJointLinksByFrequentUseAction(string $sortByFrequentUse)
Определения sharingajax.php:853
disableUserLinkAction(?string $hash)
Определения sharingajax.php:198
updateSharingSettingsCollapsedAction(string $collapsed)
Определения sharingajax.php:847
increaseFrequentUseAction(?string $hash)
Определения sharingajax.php:217
saveLinkRuleAction(string $linkHash, array $ruleArray)
Определения sharingajax.php:638
static disableOptionPayAttentionToNewSharingFeature()
Определения helper.php:55
static validateContactData(string $userContact)
Определения sharingeventmanager.php:176
static validateContactName(string $userName)
Определения sharingeventmanager.php:187
static getDateObject(string $date=null, ?bool $fullDay=true, ?string $tz='UTC')
Определения util.php:107
static getDateTimestamp(?string $dateFrom, ?string $timezone)
Определения util.php:724
addError(Error $error)
Определения controller.php:1070
addErrors(array $errors)
Определения controller.php:1083
Определения error.php:15
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$result
Определения get_property_values.php:14
$entity
$errors
Определения iblock_catalog_edit.php:74
trait Error
Определения error.php:11
$entityId
Определения payment.php:4
$event
Определения prolog_after.php:141
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
else $userName
Определения order_form.php:75