1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
CollabInviteRule.php
См. документацию.
1<?php
2
3declare(strict_types=1);
4
5namespace Bitrix\SocialNetwork\Collab\Access\Rule;
6
7use Bitrix\Main\Access\AccessibleItem;
8use Bitrix\Main\Access\Rule\AbstractRule;
9use Bitrix\Main\Localization\Loc;
10use Bitrix\Socialnetwork\Permission\User\UserModel;
11use Bitrix\SocialNetwork\Collab\Access\CollabAccessController;
12use Bitrix\SocialNetwork\Collab\Access\Model\CollabModel;
13use Bitrix\SocialNetwork\Collab\Access\Rule\Trait\CanInviteTrait;
14use Bitrix\SocialNetwork\Collab\Access\Rule\Trait\GetOptionTrait;
15use Bitrix\SocialNetwork\Collab\Access\Rule\Trait\GetRoleTrait;
16use Bitrix\Socialnetwork\Collab\Control\Option\Type\WhoCanInviteOption;
17use Bitrix\Socialnetwork\Collab\Permission\UserRole;
18use Bitrix\Socialnetwork\Collab\User\User;
19
21{
22 use GetOptionTrait;
23 use GetRoleTrait;
24 use CanInviteTrait;
25
27 protected $controller;
28
30 protected $user;
31
32 public function execute(AccessibleItem $item = null, $params = null): bool
33 {
34 if (!$item instanceof CollabModel)
35 {
36 $this->controller->addError(static::class, 'Wrong instance');
37
38 return false;
39 }
40
41 if ($this->user->isAdmin())
42 {
43 return true;
44 }
45
46 if ($this->user->getUserId() === $item->getOwnerId())
47 {
48 return true;
49 }
50
51 $canInvite = $this->getCollabOption($item->getId(), WhoCanInviteOption::DB_NAME);
52 if (empty($canInvite))
53 {
54 $this->controller->addError(
55 static::class,
56 Loc::getMessage('SOCIALNETWORK_COLLAB_INVITE_RULE_PERMISSION_DENIED')
57 );
58
59 return false;
60 }
61
62 if ($canInvite === UserRole::EMPLOYEE)
63 {
64 if (!$this->user->isIntranet())
65 {
66 $this->controller->addError(
67 static::class,
68 Loc::getMessage('SOCIALNETWORK_COLLAB_INVITE_RULE_PERMISSION_DENIED')
69 );
70
71 return false;
72 }
73
74 if (!$this->user->isMember($item->getId()))
75 {
76 $this->controller->addError(
77 static::class,
78 Loc::getMessage('SOCIALNETWORK_COLLAB_INVITE_RULE_PERMISSION_DENIED')
79 );
80
81 return false;
82 }
83
84 return true;
85 }
86
87 $userRole = $this->getUserRole($item->getId(), $this->user->getUserId());
88
89 if (empty($userRole))
90 {
91 $this->controller->addError(
92 static::class,
93 Loc::getMessage('SOCIALNETWORK_COLLAB_INVITE_RULE_PERMISSION_DENIED')
94 );
95
96 return false;
97 }
98
99 if ($userRole > $canInvite)
100 {
101 $this->controller->addError(
102 static::class,
103 Loc::getMessage('SOCIALNETWORK_COLLAB_INVITE_RULE_PERMISSION_DENIED')
104 );
105
106 return false;
107 }
108
109 if ($this->canInvite($this->user, $item))
110 {
111 return true;
112 }
113
114 $this->controller->addError(
115 static::class,
116 Loc::getMessage('SOCIALNETWORK_COLLAB_INVITE_RULE_PERMISSION_DENIED_BY_USERS')
117 );
118
119 return false;
120 }
121}
execute(AccessibleItem $item=null, $params=null)
Определения CollabInviteRule.php:32
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
Определения template.php:799