====== Преобразование строчных дополнительных свойств в списочные ======
/**
* Преобразование строчных дополнительных свойств в списочные
* Создает копии доп. свойств типа "Список"
* Создает список с названием доп. свойств
* Создает значения для доп. свойств
*
* Требует Kad_Property
*
* @author Kuts Artem, KAD::Systems (©) 2014
* @date 23-05-2014
*/
// Массив с ID дополнительных свойств, которые будут преобразованы
$aProperties = array(69, 70, 71, 72, 73, 75);
// ID Интернет-магазина
$shop_id = 1;
$oShop = Core_Entity::factory('shop', $shop_id);
foreach ($aProperties as $property_id)
{
$oProperty = Core_Entity::factory('property', $property_id);
$oList = Core_Entity::factory('list');
$oList->queryBuilder()->where('site_id', '=', CURRENT_SITE)->where('name', '=', $oProperty->name);
$oList = $oList->find();
if (!$oList->id)
{
$oList = Core_Entity::factory('list');
$oList->name = $oProperty->name;
$oList->site_id = CURRENT_SITE;
$oList->save();
}
$list_id = $oList->id;
// Ищем новое свойство или создаем
$oNewProperty = Core_Entity::factory('property');
$oNewProperty->queryBuilder()
->where('name', '=', $oProperty->name)
->where('id', '!=', $property_id);
$oNewProperty = $oNewProperty->find();
if (!$oNewProperty->id)
{
$oNewProperty = Core_Entity::factory('property');
$oNewProperty->name = $oProperty->name;
$oNewProperty->type = 3;
$oNewProperty->list_id = $list_id;
$oNewProperty->tag_name = $oProperty->tag_name . "_list";
$oNewProperty->sorting = $oProperty->sorting;
$oNewProperty->property_dir_id = $oProperty->property_dir_id;
$oNewProperty->save();
$oNewProperty->add(clone $oProperty->Shop_Item_Property);
}
$property_new_id = $oNewProperty->id;
// Получить все товары
$oItems = Core_Entity::factory('shop_item');
$aoItems = $oItems->findAll();
// Пройтись по каждому
foreach ($aoItems as $oItem)
{
// Получить значение доп. свойства
$oValue = Kad_Property::getValue($oItem, $property_id);
if ($oValue && $oValue->value != "")
{
$value = $oValue->value;
$value = ucfirst($value);
// Проверить наличие значения в списке
$oValue = Core_Entity::factory('list_item');
$oValue->queryBuilder()->where('list_id', '=', $list_id)->where('value', '=', $value);
$oValue = $oValue->find();
// Добавить, если нет
if (!$oValue->id)
{
$oValue = Core_Entity::factory('list_item');
$oValue->list_id = $list_id;
$oValue->value = $value;
$oValue->save();
}
// Установить значение для товара
if ($oValue->id)
{
Kad_Property::setValue($oItem, $property_new_id, $oValue->id);
echo $oItem->id . " " . $oItem->name . " OK
";
}
}
}
}
?>
Страницу создал Артем Куц 12.07.16 в 18:18