- Модуль: catalog
- Путь к файлу: ~/bitrix/modules/catalog/lib/controller/productform.php
- Класс: BitrixCatalogControllerProductForm
- Вызов: ProductForm::createBrandAction
public function createBrandAction(array $fields): ?array
{
$iblockId = (int)$fields['iblockId'];
$name = $fields['name'];
if (empty($name))
{
$this->addError(new Error("Empty name"));
return null;
}
if (!Loader::includeModule('highloadblock') || !Loader::includeModule('iblock'))
{
$this->addError(new Error("Modules is not included"));
return null;
}
if (!CIBlockSectionRights::UserHasRightTo($iblockId, 0, 'section_element_bind'))
{
$this->addError(new Error("User has no permissions to create product"));
return null;
}
$propertySettings = PropertyTable::getList([
'select' => ['ID', 'USER_TYPE_SETTINGS'],
'filter' => [
'=IBLOCK_ID' => $iblockId,
'=ACTIVE' => 'Y',
'=CODE' => 'BRAND_FOR_FACEBOOK',
],
'limit' => 1,
])
->fetch()
;
if (!$propertySettings)
{
return null;
}
$propertySettings['USER_TYPE_SETTINGS'] = (
$userTypeSettings = CheckSerializedData($propertySettings['USER_TYPE_SETTINGS'])
? unserialize($propertySettings['USER_TYPE_SETTINGS'], ['allowed_classes' => false])
: array()
);
if (empty($userTypeSettings['TABLE_NAME']))
{
return null;
}
$table = HLHighloadBlockTable::getList(
array(
'select' => array('TABLE_NAME', 'NAME', 'ID'),
'filter' => array('=TABLE_NAME' => $userTypeSettings['TABLE_NAME'])
)
)->fetch();
$xmlId = Random::getString(16);
$brandEntity = HLHighloadBlockTable::compileEntity($table);
$brandEntityClass = $brandEntity->getDataClass();
$resultAdd = $brandEntityClass::add([
'UF_NAME' => $name,
'UF_XML_ID' => $xmlId,
]);
if (!$resultAdd->isSuccess())
{
$this->addErrors($resultAdd->getErrors());
return null;
}
return [
'id' => $xmlId,
];
}