- Модуль: catalog
- Путь к файлу: ~/bitrix/modules/catalog/lib/model/entity.php
- Класс: BitrixCatalogModelEntity
- Вызов: Entity::add
static function add(array $data): ORMDataAddResult
{
$result = new ORMDataAddResult();
$entity = static::getEntity();
static::normalize($data);
if (Event::existEventHandlers($entity, ORMDataDataManager::EVENT_ON_BEFORE_ADD))
{
$event = new Event(
$entity,
ORMDataDataManager::EVENT_ON_BEFORE_ADD,
$data
);
$event->send();
$event->mergeData($data);
if ($event->getErrors($result))
return $result;
}
static::prepareForAdd($result, null, $data);
if (!$result->isSuccess())
return $result;
unset($result);
if (Event::existEventHandlers($entity, ORMDataDataManager::EVENT_ON_ADD))
{
$event = new Event(
$entity,
ORMDataDataManager::EVENT_ON_ADD,
$data
);
$event->send();
unset($event);
}
$result = $entity->getTablet()->add($data['fields']);
$success = $result->isSuccess();
if ($success)
{
$data['fields'] = $result->getData();
if ($entity->fieldsCount > 0)
$entity->setEntityCacheItem((int)$result->getId(), $result->getData(), false);
}
if (Event::existEventHandlers($entity, ORMDataDataManager::EVENT_ON_AFTER_ADD))
{
$event = new Event(
$entity,
ORMDataDataManager::EVENT_ON_AFTER_ADD,
[
'id' => $result->getId(),
'fields' => $data['fields'],
'external_fields' => $data['external_fields'],
'actions' => $data['actions'],
'success' => $success
]
);
$event->send();
unset($event);
}
if ($success && !empty($data['actions']))
static::runAddExternalActions($result->getId(), $data);
unset($success, $entity);
return $result;
}