Проблема с импортом цвета

День добрый, импортирую товары через родной csv.php.
Появилась проблема, когда дошел до импорта цветов — они просто не импортируются.

Обрабатываемая строка csv
9207,Canon-034bk drum (9458b001),assets/images/products/cartridges/034Bk Drum.jpg,0,cyan
Ссылка вида
core/components/minishop2/import/csv.php?file=assets/temp/cartridges/csv/prices/c1_p_0.csv&fields=id,alias,gallery,price,color&update=1&key=id&source=7&delimeter=,&debug=1
Результат

[2016-01-18 02:56:08] (INFO @ /core/components/minishop2/import/csv.php)

Trying to set time limit = 600 sec: done
[2016-01-18 02:56:08] (INFO @ /core/components/minishop2/import/csv.php)

Raw data for import: 
Array
(
    [0] => 9207
    [1] => Canon-034bk drum (9458b001)
    [2] => assets/images/products/cartridges/034Bk Drum.jpg
    [3] => 0
    [4] => cyan
)
[2016-01-18 02:56:08] (INFO @ /core/components/minishop2/import/csv.php)

Array with importing data: 
Array
(
    [id] => 9207
    [alias] => Canon-034bk drum (9458b001)
    [price] => 0
    [color] => cyan
    [class_key] => msProduct
    [context_key] => web
    [tvs] => 
)
[2016-01-18 02:56:08] (INFO @ /core/components/minishop2/import/csv.php)

SELECT msProduct.id FROM `modx_site_content` AS `msProduct` JOIN `modx_ms2_products` `Data` ON msProduct.id = Data.id WHERE `Data`.`id` = :0 
Array
(
    [/:0\b/] => 9207
)
[2016-01-18 02:56:08] (INFO @ /core/components/minishop2/import/csv.php)

SQL query for check for duplicate: 
SELECT msProduct.id FROM `modx_site_content` AS `msProduct` JOIN `modx_ms2_products` `Data` ON msProduct.id = Data.id WHERE `Data`.`id` = 9207 
[2016-01-18 02:56:08] (INFO @ /core/components/minishop2/import/csv.php)

Key id = 9207 has duplicate.
[2016-01-18 02:56:08] (WARN @ /home/user/domains/domain.ru/public_html/core/model/modx/modresource.class.php : 893)

PHP notice: Undefined index: parent
[2016-01-18 02:56:08] (INFO @ /core/components/minishop2/import/csv.php)

DELETE FROM `modx_register_messages` WHERE  ( `modx_register_messages`.`topic` = :0 AND `modx_register_messages`.`id` = :1 )  
Array
(
    [/:0\b/] => 1
    [/:1\b/] => 'd26b10ca0de48de1619fcefc39d00d64'
)
[2016-01-18 02:56:08] (INFO @ /core/components/minishop2/import/csv.php)

Successful update: 
Array
(
    [id] => 9207
    [type] => document
    [contentType] => text/html
    [alias] => canon-034bk-drum-(9458b001)
    [published] => 1
    [pub_date] => 0
    [unpub_date] => 0
    [parent] => 472
    [isfolder] => 
    [richtext] => 1
    [template] => 11
    [menuindex] => 192
    [searchable] => 1
    [cacheable] => 1
    [createdby] => 1
    [createdon] => 2015-11-02 22:06:33
    [editedby] => 1
    [editedon] => 2016-01-18 02:56:08
    [deleted] => 
    [deletedon] => 0
    [deletedby] => 0
    [publishedon] => 2015-11-02 22:06:33
    [publishedby] => 1
    [donthit] => 
    [privateweb] => 
    [privatemgr] => 
    [content_dispo] => 0
    [hidemenu] => 
    [class_key] => msProduct
    [context_key] => web
    [content_type] => 1
    [uri] => url/canon-034bk-drum-(9458b001)
    [uri_override] => 0
    [hide_children_in_tree] => 0
    [show_in_tree] => 0
    [preview_url] => http://domain.ru/url/canon-034bk-drum-(9458b001)
)
[2016-01-18 02:56:08] (INFO @ /core/components/minishop2/import/csv.php)

Importing images:
Array
(
    [0] => assets/images/products/cartridges/034Bk Drum.jpg
)
[2016-01-18 02:56:08] (WARN @ /home/user/domains/domain.ru/public_html/core/components/minishop2/processors/mgr/gallery/upload.class.php : 119)

PHP notice: Undefined index: CONTENT_TYPE
[2016-01-18 02:56:08] (ERROR @ /core/components/minishop2/import/csv.php)

Error on upload "assets/images/products/cartridges/034Bk Drum.jpg": 
Array
(
    [0] => Такое изображение уже есть в галерее товара.
)
[2016-01-18 02:56:08] (INFO @ /core/components/minishop2/import/csv.php)

You in debug mode, so we process only 1 row. Time: 0.2029140 s
P.S.: Надо было сначала воспользоваться поиском)

modx.pro/help/5834/#comment-42228
Параметров должно быть 2 или больше, решил это таким некрасивым способом:

Обрабатываемая строка csv
9207,Canon-034bk drum (9458b001),assets/images/products/cartridges/034Bk Drum.jpg,0,cyan,undefined
Ссылка вида
core/components/minishop2/import/csv.php?file=assets/temp/cartridges/csv/prices/c1_p_0.csv&fields=id,alias,gallery,price,color,color&update=1&key=id&source=7&delimeter=,&debug=1
Александр
18 января 2016, 03:16
modx.pro
1 554
0

Комментарии: 1

Василий Наумкин
18 января 2016, 06:27
+2
Старый баг в скрипте — он рассчитывает, что для импорта свойств-массивов (цвет, теги и размеры) будет 2 или больше значения. Если же значение одно, то просто пропускает.

Вот тут импортируемое значение превращается в массив только если встречается второй раз. Можно попробовать добавить условие с проверкой типа, что-то вроде:
if ($v == 'color') {
	if (!isset($data[$v])) {
		$data[$v] = array();
	}
	$data[$v][] = $csv[$k];
}
Не проверял, но вроде в этом проблема, насколько я помню.
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1