<?
AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", Array("AddColorClass", "OnBeforeIBlockElementAddHandler"));
AddEventHandler("iblock", "OnBeforeIBlockElementAdd", Array("AddColorClass", "OnBeforeIBlockElementAddHandler"));
AddEventHandler("iblock", "OnBeforeIBlockElementUpdate", Array("AddBrandClass", "OnBeforeIBlockElementAddHandler"));
AddEventHandler("iblock", "OnBeforeIBlockElementAdd", Array("AddBrandClass", "OnBeforeIBlockElementAddHandler"));
use Bitrix\Highloadblock as HL;
use Bitrix\Main\Entity;
class AddColorClass
{
const CATALOG_IBLOCK_ID = 52; //вместо 12 подставить ID инфоблока Каталога
const CATALOG_IBLOCK_ID_OFFER = 53;
const COLOR_OLD_ID_GOOD = 796;
const COLOR_OLD_ID_OFFER = 835;
const COLOR_NEW_ID_GOOD = 742;
const COLOR_NEW_ID_OFFER = 788;
const COLOR_HB_ID = 3;
public static function translit($str) {
$rus = array('А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я',' ','(',')','.',',','/','"','\'','+','"');
$lat = array('a', 'b', 'v', 'g', 'd', 'e', 'e', 'gh', 'z', 'i', 'y', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh', 'sch', '', 'y', '', 'e', 'yu', 'ya', 'a', 'b', 'v', 'g', 'd', 'e', 'e', 'gh', 'z', 'i', 'y', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh', 'sch', '', 'y', '', 'e', 'yu', 'ya', '-', '', '','-','-','-','','','-','');
return mb_strtolower(str_replace($rus, $lat, $str));
}
function OnBeforeIBlockElementAddHandler(&$arFields)
{
//file_put_contents($_SERVER["DOCUMENT_ROOT"] . "/log.txt", var_export($arFields, true), FILE_APPEND);
if(($arFields["IBLOCK_ID"] == self::CATALOG_IBLOCK_ID))
{
$elementId = $arFields['ID'];
$colorName = '';
//file_put_contents($_SERVER["DOCUMENT_ROOT"] . "/log1.txt", var_export($arFields, true), FILE_APPEND);
foreach ($arFields['PROPERTY_VALUES'][self::COLOR_OLD_ID_GOOD] as $value)
{
if (strlen($value['VALUE'])>0)
$colorName = $value['VALUE'];
//file_put_contents($_SERVER["DOCUMENT_ROOT"] . "/log.txt", var_export($colorName, true), FILE_APPEND);
}
$property_enums = CIBlockPropertyEnum::GetList(Array("DEF"=>"DESC", "SORT"=>"ASC"), Array("IBLOCK_ID"=>self::CATALOG_IBLOCK_ID, "PROPERTY_ID"=>self::COLOR_OLD_ID_GOOD));
$arProp = array();
while($enum_fields = $property_enums->GetNext())
{
$arProp[$enum_fields["ID"]] = $enum_fields["VALUE"];
}
if(isset($arProp[$colorName]) && !empty($arProp[$colorName]))
$colorName = $arProp[$colorName];
if (strlen($colorName)>0)
{
CModule::IncludeModule('highloadblock');
CModule::IncludeModule('iblock');
global $APPLICATION;
$hlblock = HL\HighloadBlockTable::getById(self::COLOR_HB_ID)->fetch();
$entity = HL\HighloadBlockTable::compileEntity($hlblock);
$entity_data_class = $entity->getDataClass();
$name = trim($colorName);
$link_name = AddColorClass::translit($name);
$vendors_res = $entity_data_class::getList(array(
'filter' => array('UF_XML_ID' => $link_name),
'select' => array('ID'),
'order' => array()
));
if($vendors_ob = $vendors_res->Fetch()){}
else
{
$result = $entity_data_class::add(array(
'UF_NAME' => $name,
'UF_XML_ID' => $link_name,
));
}
foreach ($arFields['PROPERTY_VALUES'][self::COLOR_NEW_ID_GOOD] as $k => $value) {
$arFields["PROPERTY_VALUES"][self::COLOR_NEW_ID_GOOD][$k] = array('VALUE' => $link_name);
}
return true;
}
}
if(($arFields["IBLOCK_ID"] == self::CATALOG_IBLOCK_ID_OFFER))
{
$elementId = $arFields['ID'];
$colorName = '';
foreach ($arFields['PROPERTY_VALUES'][self::COLOR_OLD_ID_OFFER] as $value)
{
if (strlen($value['VALUE'])>0)
$colorName = $value['VALUE'];
}
$property_enums = CIBlockPropertyEnum::GetList(Array("DEF"=>"DESC", "SORT"=>"ASC"), Array("IBLOCK_ID"=>self::CATALOG_IBLOCK_ID_OFFER, "PROPERTY_ID"=>self::COLOR_OLD_ID_OFFER));
$arProp = array();
while($enum_fields = $property_enums->GetNext())
{
$arProp[$enum_fields["ID"]] = $enum_fields["VALUE"];
}
if(isset($arProp[$colorName]) && !empty($arProp[$colorName]))
$colorName = $arProp[$colorName];
if (strlen($colorName)>0)
{
CModule::IncludeModule('highloadblock');
CModule::IncludeModule('iblock');
global $APPLICATION;
$hlblock = HL\HighloadBlockTable::getById(self::COLOR_HB_ID)->fetch();
$entity = HL\HighloadBlockTable::compileEntity($hlblock);
$entity_data_class = $entity->getDataClass();
$name = trim($colorName);
$link_name = AddColorClass::translit($name);
$vendors_res = $entity_data_class::getList(array(
'filter' => array('UF_XML_ID' => $link_name),
'select' => array('ID'),
'order' => array()
));
if($vendors_ob = $vendors_res->Fetch()){}
else
{
$result = $entity_data_class::add(array(
'UF_NAME' => $name,
'UF_XML_ID' => $link_name,
));
}
foreach ($arFields['PROPERTY_VALUES'][self::COLOR_NEW_ID_OFFER] as $k => $value) {
$arFields["PROPERTY_VALUES"][self::COLOR_NEW_ID_OFFER][$k] = array('VALUE' => $link_name);
}
return true;
}
}
return;
}
}
class AddBrandClass
{
const CATALOG_IBLOCK_ID = 52; //вместо 12 подставить ID инфоблока Каталога
const COLOR_OLD_ID_GOOD = 794;
const COLOR_NEW_ID_GOOD = 784;
const COLOR_HB_ID = 4;
public static function translit($str) {
$rus = array('А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я',' ','(',')','.',',','/','"','\'','+','"');
$lat = array('a', 'b', 'v', 'g', 'd', 'e', 'e', 'gh', 'z', 'i', 'y', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh', 'sch', '', 'y', '', 'e', 'yu', 'ya', 'a', 'b', 'v', 'g', 'd', 'e', 'e', 'gh', 'z', 'i', 'y', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's', 't', 'u', 'f', 'h', 'c', 'ch', 'sh', 'sch', '', 'y', '', 'e', 'yu', 'ya', '-', '', '','-','-','-','','','-','');
return mb_strtolower(str_replace($rus, $lat, $str));
}
function OnBeforeIBlockElementAddHandler(&$arFields)
{
//file_put_contents($_SERVER["DOCUMENT_ROOT"] . "/log.txt", var_export($arFields, true), FILE_APPEND);
if(($arFields["IBLOCK_ID"] == self::CATALOG_IBLOCK_ID))
{
$elementId = $arFields['ID'];
$colorName = '';
//file_put_contents($_SERVER["DOCUMENT_ROOT"] . "/log1.txt", var_export($arFields, true), FILE_APPEND);
foreach ($arFields['PROPERTY_VALUES'][self::COLOR_OLD_ID_GOOD] as $value)
{
if (strlen($value['VALUE'])>0)
$colorName = $value['VALUE'];
//file_put_contents($_SERVER["DOCUMENT_ROOT"] . "/log.txt", var_export($colorName, true), FILE_APPEND);
}
$property_enums = CIBlockPropertyEnum::GetList(Array("DEF"=>"DESC", "SORT"=>"ASC"), Array("IBLOCK_ID"=>self::CATALOG_IBLOCK_ID, "PROPERTY_ID"=>self::COLOR_OLD_ID_GOOD));
$arProp = array();
while($enum_fields = $property_enums->GetNext())
{
$arProp[$enum_fields["ID"]] = $enum_fields["VALUE"];
}
if(isset($arProp[$colorName]) && !empty($arProp[$colorName]))
$colorName = $arProp[$colorName];
if (strlen($colorName)>0)
{
CModule::IncludeModule('highloadblock');
CModule::IncludeModule('iblock');
global $APPLICATION;
$hlblock = HL\HighloadBlockTable::getById(self::COLOR_HB_ID)->fetch();
$entity = HL\HighloadBlockTable::compileEntity($hlblock);
$entity_data_class = $entity->getDataClass();
$name = trim($colorName);
$link_name = AddColorClass::translit($name);
$vendors_res = $entity_data_class::getList(array(
'filter' => array('UF_XML_ID' => $link_name),
'select' => array('ID'),
'order' => array()
));
if($vendors_ob = $vendors_res->Fetch()){}
else
{
$result = $entity_data_class::add(array(
'UF_NAME' => $name,
'UF_XML_ID' => $link_name,
));
}
foreach ($arFields['PROPERTY_VALUES'][self::COLOR_NEW_ID_GOOD] as $k => $value) {
$arFields["PROPERTY_VALUES"][self::COLOR_NEW_ID_GOOD][$k] = array('VALUE' => $link_name);
}
return true;
}
}
return;
}
}
?>
|