1C-Bitrix
25.700.0
Загрузка...
Поиск...
Не найдено
registry.php
См. документацию.
1
<?php
2
3
namespace
Bitrix\Main\UserField\Internal;
4
5
use Bitrix\Main\EventManager;
6
use Bitrix\Main\ORM\Entity;
7
11
final
class
Registry
12
{
13
const
EVENT_NAME
=
'onGetUserFieldTypeFactory'
;
14
16
protected
$factories
= [];
17
protected
$itemTypes
= [];
18
20
private
static
$instance;
21
22
private
function
__construct()
23
{
24
$this->
addFactoriesByEvent
();
25
}
26
27
private
function
__clone()
28
{
29
}
30
35
public
static
function
getInstance
():
Registry
36
{
37
if
(!isset(self::$instance))
38
{
39
self::$instance =
new
Registry
;
40
}
41
42
return
self::$instance;
43
}
44
45
public
function
registerFactory
(
TypeFactory
$factory)
46
{
47
$this->factories[$factory->
getCode
()] = $factory;
48
}
49
54
public
function
registerTypeByEntity
(
Entity
$entity
,
array
$type
): void
55
{
56
$this->itemTypes[
$entity
->getName()] =
$type
;
57
}
58
63
public
function
getTypeByEntity
(
Entity
$entity
): ?
array
64
{
65
$entityName =
$entity
->getName();
66
if
(isset($this->itemTypes[$entityName]))
67
{
68
return
$this->itemTypes[$entityName];
69
}
70
71
return
null
;
72
}
73
74
public
function
getFactoryByCode
(
string
$code
): ?
TypeFactory
75
{
76
if
(isset($this->factories[
$code
]))
77
{
78
return
$this->factories[
$code
];
79
}
80
81
return
null
;
82
}
83
84
public
function
getFactoryByTypeDataClass
($typeDataClass): ?
TypeFactory
85
{
86
foreach
($this->factories as $factory)
87
{
88
if
($factory->getTypeDataClass() == $typeDataClass)
89
{
90
return
$factory;
91
}
92
}
93
94
return
null
;
95
}
96
101
public
function
getUserFieldEntityIdByItemEntity
(
Entity
$entity
): ?string
102
{
103
$type
= $this->
getTypeByEntity
($entity);
104
if
(
$type
&&
$type
[
'code'
])
105
{
106
$factory = $this->
getFactoryByCode
(
$type
[
'code'
]);
107
if
($factory)
108
{
109
return
$factory->getUserFieldEntityId(
$type
[
'ID'
]);
110
}
111
}
112
113
return
null
;
114
}
115
116
protected
function
addFactoriesByEvent
(): void
117
{
118
foreach
(
EventManager::getInstance
()->findEventHandlers(
'main'
, static::EVENT_NAME) as $handler)
119
{
120
$eventResult =
ExecuteModuleEventEx
($handler);
121
if
(is_array($eventResult))
122
{
123
foreach
($eventResult as $factory)
124
{
125
if
($factory instanceof
TypeFactory
)
126
{
127
$this->
registerFactory
($factory);
128
}
129
}
130
}
131
}
132
}
133
}
$type
$type
Определения
options.php:106
Bitrix\Main\EventManager\getInstance
static getInstance()
Определения
eventmanager.php:31
Bitrix\Main\UserField\Internal\Registry
Определения
registry.php:12
Bitrix\Main\UserField\Internal\Registry\$itemTypes
$itemTypes
Определения
registry.php:17
Bitrix\Main\UserField\Internal\Registry\addFactoriesByEvent
addFactoriesByEvent()
Определения
registry.php:116
Bitrix\Main\UserField\Internal\Registry\getFactoryByTypeDataClass
getFactoryByTypeDataClass($typeDataClass)
Определения
registry.php:84
Bitrix\Main\UserField\Internal\Registry\getUserFieldEntityIdByItemEntity
getUserFieldEntityIdByItemEntity(Entity $entity)
Определения
registry.php:101
Bitrix\Main\UserField\Internal\Registry\EVENT_NAME
const EVENT_NAME
Определения
registry.php:13
Bitrix\Main\UserField\Internal\Registry\registerFactory
registerFactory(TypeFactory $factory)
Определения
registry.php:45
Bitrix\Main\UserField\Internal\Registry\registerTypeByEntity
registerTypeByEntity(Entity $entity, array $type)
Определения
registry.php:54
Bitrix\Main\UserField\Internal\Registry\getFactoryByCode
getFactoryByCode(string $code)
Определения
registry.php:74
Bitrix\Main\UserField\Internal\Registry\$factories
$factories
Определения
registry.php:16
Bitrix\Main\UserField\Internal\Registry\getTypeByEntity
getTypeByEntity(Entity $entity)
Определения
registry.php:63
Bitrix\Main\UserField\Internal\Registry\getInstance
static getInstance()
Определения
registry.php:35
Bitrix\Main\UserField\Internal\TypeFactory
Определения
typefactory.php:9
Bitrix\Main\UserField\Internal\TypeFactory\getCode
getCode()
array
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения
file_new.php:804
$entity
$entity
Определения
group_bizproc_workflow_delete.php:17
$code
if(!is_null($config))($config as $configItem)(! $configItem->isVisible()) $code
Определения
options.php:195
ExecuteModuleEventEx
ExecuteModuleEventEx($arEvent, $arParams=[])
Определения
tools.php:5214
Bitrix\Main\Entity
Определения
ufield.php:9
bitrix
modules
main
lib
userfield
internal
registry.php
Создано системой
1.14.0