1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
Provider.php
См. документацию.
1<?php
2
3namespace Bitrix\Socialnetwork\Space\List;
4
5use Bitrix\Main\Result;
6use Bitrix\Socialnetwork\Space\List\Item\Builder;
7use Bitrix\Socialnetwork\Space\List\Item\Space;
8use Bitrix\Socialnetwork\Space\List\Query\Builder as QueryBuilder;
9use Bitrix\Socialnetwork\Space\List\Query\LightweightBuilder;
10
11final class Provider
12{
13 private const DEFAULT_LOAD_LIMIT = 25;
14
15 private int $offset = 0;
16 private Builder $builder;
17
18 public function __construct(private int $userId, private string $mode = Dictionary::FILTER_MODES['all'])
19 {
20 $this->builder = new Builder($this->userId);
21 }
22
23 public function setMode(string $mode): self
24 {
25 $this->mode = $mode;
26
27 return $this;
28 }
29
30 public function setOffset(int $offset): self
31 {
32 $this->offset = $offset;
33
34 return $this;
35 }
36
37 public function getSpaces(): Result
38 {
39 $result = new Result();
40 $limit = self::DEFAULT_LOAD_LIMIT;
41 $queryBuilder =
42 (new QueryBuilder($this->userId))
43 ->addModeFilter($this->mode)
44 ->addPaginationFilter($this->offset, $limit)
45 ;
46
47 $query = $queryBuilder->build();
48
49 $queryResult = $query->exec()->fetchAll();
50
51 $spaces = $this->builder->buildSpacesFromQueryResult($queryResult);
52 $result->setData([
53 'spaces' => $spaces,
54 'hasMoreSpacesToLoad' => count($spaces) === $limit,
55 ]);
56
57 return $result;
58 }
59
60 public function searchSpaces(string $searchString): Result
61 {
62 $result = new Result();
63 $limit = self::DEFAULT_LOAD_LIMIT;
64 $queryBuilder =
65 (new QueryBuilder($this->userId))
66 ->addModeFilter($this->mode)
67 ->addPaginationFilter($this->offset, $limit)
68 ->addSearchFilter($searchString)
69 ;
70
71 $query = $queryBuilder->build();
72
73 $queryResult = $query->exec()->fetchAll();
74
75 $spaces = $this->builder->buildSpacesFromQueryResult($queryResult);
76 $result->setData([
77 'spaces' => $spaces,
78 'hasMoreSpacesToLoad' => count($spaces) === $limit,
79 ]);
80
81 return $result;
82 }
83
84 public function getSpaceById(int $spaceId): ?Space
85 {
86 if ($spaceId === 0)
87 {
88 return $this->getCommonSpace();
89 }
90
91 $query =
92 (new QueryBuilder($this->userId))
93 ->addModeFilter($this->mode)
94 ->addSpaceIdFilter($spaceId)
95 ->build()
96 ;
97
98 $queryResult = $query->exec()->fetchAll();
99
100 $spaces = $this->builder->buildSpacesFromQueryResult($queryResult);
101
102 return $spaces[0] ?? null;
103 }
104
106 public function getSpacesByIds(array $spaceIds): array
107 {
108 $query =
109 (new QueryBuilder($this->userId))
110 ->addModeFilter($this->mode)
111 ->addSpaceIdListFilter($spaceIds)
112 ->addPaginationFilter(0, count($spaceIds))
113 ->build()
114 ;
115
116 $queryResult = $query->exec()->fetchAll();
117
118 return $this->builder->buildSpacesFromQueryResult($queryResult);
119 }
120
121 public function getCommonSpace(): Space
122 {
123 return $this->builder->buildCommonSpace();
124 }
125
127 public function getMySpaceIds(): array
128 {
129 $query =
130 (new LightweightBuilder($this->userId))
131 ->addModeFilter(Dictionary::FILTER_MODES['my'])
132 ->build()
133 ;
134
135 $queryResult = $query->exec()->fetchAll();
136
137 $result = [];
138 foreach ($queryResult as $value)
139 {
140 $result[] = (int)($value['ID'] ?? null);
141 }
142
143 return $result;
144 }
145}
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения check_mail.php:18
__construct(private int $userId, private string $mode=Dictionary::FILTER_MODES['all'])
Определения Provider.php:18
searchSpaces(string $searchString)
Определения Provider.php:60
setMode(string $mode)
Определения Provider.php:23
getSpacesByIds(array $spaceIds)
Определения Provider.php:106
setOffset(int $offset)
Определения Provider.php:30
getSpaceById(int $spaceId)
Определения Provider.php:84
</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
$query
Определения get_search.php:11
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
Определения waybill.php:936