- Модуль: rest
- Путь к файлу: ~/bitrix/modules/rest/lib/usageentity.php
- Класс: BitrixRestUsageEntityTable
- Вызов: UsageEntityTable::register
static function register($entityType, $entityId, $subEntityType, $subEntityName)
{
$entity = static::getEntityInfo($entityType, $entityId);
$getListParameters = [
'filter' => [
'=ENTITY_TYPE' => $entityType,
'=ENTITY_ID' => $entity['ENTITY_ID'],
'=SUB_ENTITY_TYPE' => $subEntityType,
'=SUB_ENTITY_NAME' => $subEntityName,
],
'select' => [
'ID',
],
'limit' => 1,
];
$res = static::getList($getListParameters);
$element = $res->fetch();
if ($element)
{
return $element['ID'];
}
$newEntity = array(
'ENTITY_TYPE' => $entityType,
'ENTITY_ID' => $entity['ENTITY_ID'],
'ENTITY_CODE' => $entity['ENTITY_CODE'],
'SUB_ENTITY_TYPE' => $subEntityType,
'SUB_ENTITY_NAME' => $subEntityName
);
try
{
$res = static::add($newEntity);
return $res->isSuccess() ? $res->getId() : false;
}
catch (SqlQueryException $e)
{
if (mb_strpos($e->getMessage(), 'Duplicate entry') !== false)
{
//Try to get one more time
$res = static::getList($getListParameters);
$element = $res->fetch();
if ($element)
{
return $element['ID'];
}
}
throw $e;
}
}