1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
Builder.php
См. документацию.
1<?php
2
4
14
15final class Builder
16{
17 private AvatarManager $avatarManager;
18 public function __construct(private int $userId)
19 {
20 $this->avatarManager = new AvatarManager();
21 }
22
24 public function buildSpacesFromQueryResult(array $queryResult): array
25 {
26 $spaces = [];
27 $counter = Counter::getInstance($this->userId);
28
29 foreach ($queryResult as $value)
30 {
31 $imageId = (int) ($value['IMAGE_ID'] ?? 0);
32 if ($imageId)
33 {
34 $avatar = $this->avatarManager->getImageAvatar($imageId);
35 }
36 else
37 {
38 $avatar = $this->avatarManager->getIconAvatar($value['AVATAR_TYPE'] ?? '');
39 }
40
41 $visibilityType = Dictionary::SPACE_VISIBILITY_TYPES['open'];
42 if ($value['OPENED'] === 'N')
43 {
44 $visibilityType = Dictionary::SPACE_VISIBILITY_TYPES['closed'];
45 }
46 if ($value['VISIBLE'] === 'N')
47 {
48 $visibilityType = Dictionary::SPACE_VISIBILITY_TYPES['secret'];
49 }
50
51 $userRole = (new UserRoleManager())->getUserRole($value['ROLE'], $value['ROLE_INIT_BY_TYPE']);
52
53 $recentActivityData =
54 (new RecentActivityData())
55 ->setSpaceId($value['ID'])
56 ->setUserId($this->userId)
57 ->setTypeId($value['RECENT_ACTIVITY_TYPE_ID'] ?? null)
58 ->setEntityId($value['RECENT_ACTIVITY_ENTITY_ID'] ?? null)
59 ->setDateTime($value['RECENT_ACTIVITY_DATE'] ?? null)
60 ->setSecondaryEntityId($value['RECENT_ACTIVITY_SECONDARY_ENTITY_ID'] ?? null)
61 ;
62
63 $permissions = [
64 'canLeave' => Access::canLeave(['groupId' => $value['ID']])
65 ];
66
67 $spaces[] =
68 (new Space())
69 ->setId($value['ID'])
70 ->setName($value['NAME'])
71 ->setIsPinned((int)($value['PIN_ID']) > 0 && $userRole === Dictionary::USER_ROLES['member'])
72 ->setAvatar($avatar)
73 ->setVisibilityType($visibilityType)
74 ->setCounter($counter->getTotal($value['ID']))
75 ->setUserRole($userRole)
76 ->setFollow(\CSocNetSubscription::isUserSubscribed($this->userId, 'SG' . $value['ID']))
77 ->setRecentActivityData($recentActivityData)
78 ->setPermissions($permissions)
79 ;
80 }
81
82 return $this->fillRecentActivityDescription($spaces);
83 }
84
85 private function fillRecentActivityDescription(array $spaces): array
86 {
87 $collector = new Collector(Collector::getDefaultProviders());
89 foreach ($spaces as $space)
90 {
91 $data = $space->getRecentActivityData();
92 if ($data instanceof RecentActivityData)
93 {
94 $collector->addRecentActivityData($data);
95 }
96 }
97
98 $collector->fillData();
99
100 return $spaces;
101 }
102
103 public function buildCommonSpace(): Space
104 {
105 $counter = Counter::getInstance($this->userId);
106
107 $commonSpace =
108 (new Space())
109 ->setId(0)
110 ->setName(Loc::getMessage('SOCIALNETWORK_SPACES_LIST_COMMON_SPACE_NAME'))
111 ->setIsPinned(false)
112 ->setAvatar($this->avatarManager->getIconAvatar('common-space'))
113 ->setVisibilityType(Dictionary::SPACE_VISIBILITY_TYPES['open'])
114 ->setCounter($counter->getTotal(0))
115 ->setUserRole(Dictionary::USER_ROLES['member'])
116 ->setFollow(true)
117 ->setRecentActivityData($this->getCommonSpaceRecentActivityData())
118 ;
119
120 if ($commonSpace->getRecentActivityData()->getId() <= 0)
121 {
122 $commonSpace->getRecentActivityData()->setDateTime(new \Bitrix\Main\Type\DateTime());
123 }
124
125 return $this->fillRecentActivityDescription([$commonSpace])[0];
126 }
127
128 private function getCommonSpaceRecentActivityData(): RecentActivityData
129 {
130 return (new Service())->get($this->userId, 0);
131 }
132}
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения check_mail.php:18
static getInstance()
Определения application.php:98
buildSpacesFromQueryResult(array $queryResult)
Определения Builder.php:24
__construct(private int $userId)
Определения Builder.php:18
$data['IS_AVAILABLE']
Определения .description.php:13
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
Определения accesscode.php:9
Определения collection.php:2
$counter
Определения options.php:5