1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
Collab.php
См. документацию.
1<?php
2
3declare(strict_types=1);
4
5namespace Bitrix\Socialnetwork\Collab;
6
7use Bitrix\Main\Engine\Response\Converter;
8use Bitrix\Main\Type\Contract\Arrayable;
9use Bitrix\Socialnetwork\Collab\Property\Feature;
10use Bitrix\Socialnetwork\Collab\Property\Option;
11use Bitrix\Socialnetwork\Collab\Property\Permission;
12use Bitrix\Socialnetwork\Collab\Url\UrlManager;
13use Bitrix\Socialnetwork\Item\Workgroup;
14
15class Collab extends Workgroup
16{
17 public function setAdditionInfo(string $key, ?Arrayable $value): static
18 {
19 $this->fields['ADDITIONAL_INFO'][$key] = $value;
20
21 return $this;
22 }
23
24 public function getAdditionalInfo(): array
25 {
26 return $this->fields['ADDITIONAL_INFO'] ?? [];
27 }
28
29 public function setOptions(Option ...$options): void
30 {
31 $this->fields['OPTIONS'] = $options;
32 }
33
35 public function getOptions(): array
36 {
37 return $this->fields['OPTIONS'] ?? [];
38 }
39
40 public function getOptionValue(string $name): mixed
41 {
42 foreach ($this->getOptions() as $option)
43 {
44 if ($option->name === $name)
45 {
46 return $option->value;
47 }
48 }
49
50 return null;
51 }
52
53 public function setFeatures(Feature ...$features): void
54 {
55 $this->fields['FEATURES'] = $features;
56 }
57
59 public function getFeatures(): array
60 {
61 return $this->fields['FEATURES'] ?? [];
62 }
63
64 public function setPermissions(Permission ...$permissions): void
65 {
66 $this->fields['PERMISSIONS'] = $permissions;
67 }
68
69 public function getUrl(): string
70 {
71 return UrlManager::getCollabUrl($this);
72 }
73
75 public function getPermissions(): array
76 {
77 return $this->fields['PERMISSIONS'] ?? [];
78 }
79
81 public function toJson($options = 0): array
82 {
83 $data = parent::toArray();
84
85 $data['OPTIONS'] = $this->mapProperty(...$this->getOptions());
86 $data['FEATURES'] = $this->mapProperty(...$this->getFeatures());
87 $data['ADDITIONAL_INFO'] = $this->mapAdditionalInfo();
88 $data['URL'] = $this->getUrl();
89
90 $converter = Converter::toJson();
91
92 $data = $converter->process($data);
93
94 $data[$converter->process('PERMISSIONS')] = $this->mapProperty(...$this->getPermissions());
95
96 return $data;
97 }
98
99 public function toArray(): array
100 {
101 $data = parent::toArray();
102
103 $data['OPTIONS'] = $this->mapProperty(...$this->getOptions());
104 $data['FEATURES'] = $this->mapProperty(...$this->getFeatures());
105 $data['PERMISSIONS'] = $this->mapProperty(...$this->getPermissions());
106 $data['ADDITIONAL_INFO'] = $this->mapAdditionalInfo();
107 $data['URL'] = $this->getUrl();
108
109 return $data;
110 }
111
112 protected function mapProperty(Arrayable ...$args): array
113 {
114 $data = [];
115 foreach ($args as $arg)
116 {
117 $data = array_merge($data, $arg->toArray());
118 }
119
120 return $data;
121 }
122
123 protected function mapAdditionalInfo(): array
124 {
125 $info = [];
126
127 foreach ($this->getAdditionalInfo() as $key => $value)
128 {
129 $info[$key] = $value?->toArray();
130 }
131
132 return $info;
133 }
134}
getOptionValue(string $name)
Определения Collab.php:40
toJson($options=0)
Определения Collab.php:81
setPermissions(Permission ... $permissions)
Определения Collab.php:64
mapProperty(Arrayable ... $args)
Определения Collab.php:112
setOptions(Option ... $options)
Определения Collab.php:29
setAdditionInfo(string $key, ?Arrayable $value)
Определения Collab.php:17
setFeatures(Feature ... $features)
Определения Collab.php:53
$options
Определения commerceml2.php:49
$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
if($NS['step']==6) if( $NS[ 'step']==7) if(COption::GetOptionInt('main', 'disk_space', 0) > 0) $info
Определения backup.php:924
$name
Определения menu_edit.php:35
if(empty($signedUserToken)) $key
Определения quickway.php:257
$option
Определения options.php:1711