1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
grouplinkmapper.php
См. документацию.
1<?php
2
3namespace Bitrix\Calendar\Sharing\Link;
4
5use Bitrix\Calendar\Sharing\Link\Joint\JointLinkMapper;
6use Bitrix\Calendar\Sharing\Link;
7use Bitrix\Main\UserTable;
8use Bitrix\Main\Web\Json;
9
11{
12 protected const DEFAULT_SELECT = ['*', 'MEMBERS', 'MEMBERS.USER', 'MEMBERS.IMAGE'];
13
17 public function convertToArray($sharingLink): array
18 {
19 $baseArray = parent::convertToArray($sharingLink);
20
21 if (!($baseArray['isJoint'] ?? null))
22 {
23 $baseArray['members'][] = $this->getMemberByUserId($sharingLink->getHostId())->toArray();
24 }
25
26 return array_merge($baseArray, [
27 'groupId' => $sharingLink->getGroupId(),
28 'slotSize' => $sharingLink->getSlotSize(),
29 'rule' => (new Rule\Mapper())->convertToArray($sharingLink->getSharingRule()),
30 'hostId' => $sharingLink->getHostId(),
31 // rewrite field, cause ownerId for group link is group ID, but we need hostId here (creator of link)
32 'userIds' => array_merge(
33 [$sharingLink->getHostId()],
34 array_map(static fn ($member) => $member['id'], $baseArray['members'])
35 ),
36 ]);
37 }
38
39 protected function getOptionsArray($entity): array
40 {
41 $options = [];
42
43 if (!empty($entity->getSlotSize()))
44 {
45 $options['slotSize'] = $entity->getSlotSize();
46 }
47
48 return $options;
49 }
50
51 protected function getSpecificFields($entity): array
52 {
53 return [
54 'MEMBERS_HASH' => $entity->getMembersHash(),
55 'HOST_ID' => $entity->getHostId(),
56 ];
57 }
58
59 protected function getEntityClass(): string
60 {
61 return GroupLink::class;
62 }
63
64 protected function convertToObject($objectEO): ?GroupLink
65 {
66 $sharingGroupLink = (new GroupLink())
67 ->setId($objectEO->getId())
68 ->setGroupId($objectEO->getObjectId())
69 ->setDateCreate($objectEO->getDateCreate())
70 ->setDateExpire($objectEO->getDateExpire())
71 ->setActive($objectEO->getActive())
72 ->setHash($objectEO->getHash())
73 ->setMembersHash($objectEO->getMembersHash())
74 ->setFrequentUse($objectEO->getFrequentUse())
75 ->setHostId($objectEO->getHostId())
76 ;
77
78 if ($objectEO->getMembers()?->count() > 0)
79 {
80 $sharingGroupLink->setMembers((new Member\Manager())->createMembersFromEntityObject($objectEO->getMembers()));
81 }
82
83 $options = Json::decode($objectEO->getOptions() ?? '');
84 if (!empty($options['slotSize']))
85 {
86 $sharingGroupLink->setSlotSize($options['slotSize']);
87 }
88
89 $rule = (new Rule\Factory())->getRuleBySharingLink($sharingGroupLink);
90 $sharingGroupLink->setSharingRule($rule);
91
92 return $sharingGroupLink;
93 }
94
95 private function getMemberByUserId($userId): ?Link\Member\Member
96 {
97 $user = UserTable::query()
98 ->where('ID', $userId)
99 ->where('IS_REAL_USER', 'Y')
100 ->setSelect(['NAME', 'LAST_NAME', 'ID', 'PERSONAL_PHOTO'])
101 ->exec()
102 ->fetchObject()
103 ;
104 $avatar = '';
105 if (!empty($user->getPersonalPhoto()))
106 {
107 $file = \CFile::ResizeImageGet(
108 $user->getPersonalPhoto(),
109 ['width' => 100, 'height' => 100],
111 );
112 $avatar = !empty($file['src']) ? $file['src'] : '';
113 }
114
115 $member = new Link\Member\Member();
116 $member
117 ->setId($user->getId())
118 ->setName($user->getName())
119 ->setLastName($user->getLastName())
120 ->setAvatar($avatar)
121 ;
122
123 return $member;
124 }
125
126 protected function getEntityName(): string
127 {
128 return 'Calendar sharing group link';
129 }
130}
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения check_mail.php:18
$options
Определения commerceml2.php:49
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$entity
const BX_RESIZE_IMAGE_EXACT
Определения constants.php:12
$user
Определения mysql_to_pgsql.php:33