1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
accesscode.php
См. документацию.
1<?php
8
10
11
13{
14 public const
21
22 public const
23 AC_DEPARTMENT = '^(D)(\d+)$',
24 AC_ALL_DEPARTMENT = '^(DR)(\d+)$',
25 AC_INTRANET_USER = '^(IU)(\d+)$',
26 AC_GROUP = '^(G)(\d+)$',
27 AC_USER = '^(U)(\d+)$',
28 AC_SOCNETGROUP = '^(SG)(\d+)(_[AEK])?$',
29 AC_SOCNETUSER = '^(SU)(\d+)(_M)?$',
30 AC_CHAT = '^(CHAT)(\d+)$',
31 AC_ACCESS_DIRECTOR = '^(' . self::ACCESS_DIRECTOR . ')(\d+)?$',
32 AC_ACCESS_EMPLOYEE = '^(' . self::ACCESS_EMPLOYEE . ')(\d+)?$',
33 AC_ACCESS_DEPUTY = '^(' . self::ACCESS_DEPUTY . ')(\d+)?$',
34 AC_ACCESS_TEAM_DIRECTOR = '^(' . self::ACCESS_TEAM_DIRECTOR . ')(\d+)?$',
35 AC_ACCESS_TEAM_EMPLOYEE = '^(' . self::ACCESS_TEAM_EMPLOYEE . ')(\d+)?$',
36 AC_ACCESS_TEAM_DEPUTY = '^(' . self::ACCESS_TEAM_DEPUTY . ')(\d+)?$',
37 AC_STRUCTURE_DEPARTMENT = '^(SND)(\d+)$',
38 AC_ALL_STRUCTURE_DEPARTMENT = '^(SNDR)(\d+)$',
39 AC_STRUCTURE_TEAM = '^(SNT)(\d+)$',
40 AC_ALL_STRUCTURE_TEAM = '^(SNTR)(\d+)$';
41
42 public const
43 TYPE_USER = 'users',
44 TYPE_USER_ALL = 'users_all',
45 TYPE_GROUP = 'groups',
46 TYPE_SOCNETGROUP = 'sonetgroups',
47 TYPE_DEPARTMENT = 'departments',
48 TYPE_ACCESS_DIRECTOR = 'access_director',
49 TYPE_ACCESS_EMPLOYEE = 'access_employee',
50 TYPE_ACCESS_DEPUTY = 'access_deputy',
51 TYPE_ACCESS_TEAM_DIRECTOR = 'access_team_director',
52 TYPE_ACCESS_TEAM_EMPLOYEE = 'access_team_employee',
53 TYPE_ACCESS_TEAM_DEPUTY = 'access_team_deputy',
54 TYPE_CHAT = 'chat',
55 TYPE_OTHER = 'other',
56 TYPE_STRUCTURE_DEPARTMENT = 'structuredepartments',
57 TYPE_STRUCTURE_TEAM = 'structureteams';
58
59 public static $map = [
60 self::AC_DEPARTMENT => self::TYPE_DEPARTMENT,
61 self::AC_ALL_DEPARTMENT => self::TYPE_DEPARTMENT,
62 self::AC_INTRANET_USER => self::TYPE_USER,
63 self::AC_GROUP => self::TYPE_GROUP,
64 self::AC_USER => self::TYPE_USER,
65 self::AC_SOCNETGROUP => self::TYPE_SOCNETGROUP,
66 self::AC_SOCNETUSER => self::TYPE_OTHER,
67 self::AC_CHAT => self::TYPE_CHAT,
68 self::AC_ACCESS_DIRECTOR => self::TYPE_ACCESS_DIRECTOR,
69 self::AC_ACCESS_EMPLOYEE => self::TYPE_ACCESS_EMPLOYEE,
70 self::AC_ACCESS_DEPUTY => self::TYPE_ACCESS_DEPUTY,
71 self::AC_ACCESS_TEAM_DIRECTOR => self::TYPE_ACCESS_TEAM_DIRECTOR,
72 self::AC_ACCESS_TEAM_EMPLOYEE => self::TYPE_ACCESS_TEAM_EMPLOYEE,
73 self::AC_ACCESS_TEAM_DEPUTY => self::TYPE_ACCESS_TEAM_DEPUTY,
74 self::AC_STRUCTURE_DEPARTMENT => self::TYPE_STRUCTURE_DEPARTMENT,
75 self::AC_ALL_STRUCTURE_DEPARTMENT => self::TYPE_STRUCTURE_DEPARTMENT,
76 self::AC_STRUCTURE_TEAM => self::TYPE_STRUCTURE_TEAM,
77 self::AC_ALL_STRUCTURE_TEAM => self::TYPE_STRUCTURE_TEAM,
78 ];
79
80 private $accessCode;
81
82 private $parsed = false;
83 private $entityType = self::TYPE_OTHER;
84 private $entityPrefix = '';
85 private $entityId = 0;
86
91 public static function isValid($code): bool
92 {
93 foreach (self::$map as $pattern => $type)
94 {
95 if (preg_match('/'. $pattern .'/', $code, $matches))
96 {
97 return true;
98 }
99 }
100
101 return false;
102 }
103
107 public function __construct(string $accessCode)
108 {
109 $this->accessCode = $accessCode;
110 $this->parse();
111 }
112
116 public function getSignature(): ?string
117 {
118 if (!$this->parsed)
119 {
120 return null;
121 }
122 return $this->entityPrefix . $this->entityId;
123 }
124
128 public function getEntityType(): string
129 {
130 return $this->entityType;
131 }
132
136 public function getEntityPrefix(): string
137 {
138 return $this->entityPrefix;
139 }
140
144 public function getEntityId(): int
145 {
146 return $this->entityId;
147 }
148
152 private function parse()
153 {
154 foreach (self::$map as $pattern => $type)
155 {
156 if (preg_match('/'. $pattern .'/', $this->accessCode, $matches))
157 {
158 $this->parsed = true;
159 $this->entityType = $type;
160 $this->entityPrefix = (string) $matches[1];
161 if (array_key_exists('2', $matches))
162 {
163 $this->entityId = (int) $matches[2];
164 }
165 return;
166 }
167 }
168 }
169}
$type
Определения options.php:106
const AC_ALL_STRUCTURE_TEAM
Определения accesscode.php:40
const AC_ACCESS_EMPLOYEE
Определения accesscode.php:32
const TYPE_USER_ALL
Определения accesscode.php:44
const AC_STRUCTURE_TEAM
Определения accesscode.php:39
const ACCESS_DIRECTOR
Определения accesscode.php:15
const TYPE_ACCESS_DIRECTOR
Определения accesscode.php:48
const AC_GROUP
Определения accesscode.php:26
const AC_ACCESS_DEPUTY
Определения accesscode.php:33
const AC_INTRANET_USER
Определения accesscode.php:25
const TYPE_ACCESS_DEPUTY
Определения accesscode.php:50
const TYPE_USER
Определения accesscode.php:43
const AC_ALL_DEPARTMENT
Определения accesscode.php:24
const TYPE_SOCNETGROUP
Определения accesscode.php:46
const AC_ACCESS_TEAM_DEPUTY
Определения accesscode.php:36
const ACCESS_EMPLOYEE
Определения accesscode.php:16
const AC_CHAT
Определения accesscode.php:30
const TYPE_ACCESS_TEAM_DIRECTOR
Определения accesscode.php:51
const AC_USER
Определения accesscode.php:27
const AC_ACCESS_TEAM_DIRECTOR
Определения accesscode.php:34
const ACCESS_DEPUTY
Определения accesscode.php:17
const TYPE_DEPARTMENT
Определения accesscode.php:47
const AC_ALL_STRUCTURE_DEPARTMENT
Определения accesscode.php:38
const AC_STRUCTURE_DEPARTMENT
Определения accesscode.php:37
__construct(string $accessCode)
Определения accesscode.php:107
const TYPE_STRUCTURE_DEPARTMENT
Определения accesscode.php:56
const TYPE_ACCESS_TEAM_EMPLOYEE
Определения accesscode.php:52
const TYPE_CHAT
Определения accesscode.php:54
const AC_ACCESS_TEAM_EMPLOYEE
Определения accesscode.php:35
const TYPE_ACCESS_TEAM_DEPUTY
Определения accesscode.php:53
const TYPE_OTHER
Определения accesscode.php:55
const TYPE_STRUCTURE_TEAM
Определения accesscode.php:57
const ACCESS_TEAM_DIRECTOR
Определения accesscode.php:18
const TYPE_GROUP
Определения accesscode.php:45
static $map
Определения accesscode.php:59
const AC_ACCESS_DIRECTOR
Определения accesscode.php:31
const AC_DEPARTMENT
Определения accesscode.php:23
const ACCESS_TEAM_DEPUTY
Определения accesscode.php:20
const AC_SOCNETUSER
Определения accesscode.php:29
static isValid($code)
Определения accesscode.php:91
const ACCESS_TEAM_EMPLOYEE
Определения accesscode.php:19
const TYPE_ACCESS_EMPLOYEE
Определения accesscode.php:49
const AC_SOCNETGROUP
Определения accesscode.php:28
if(!is_null($config))($config as $configItem)(! $configItem->isVisible()) $code
Определения options.php:195
Определения accesscode.php:9
$entityId
Определения payment.php:4
if(!Loader::includeModule('sale')) $pattern
Определения index.php:20
$matches
Определения index.php:22