<?php


/**
 * Система управления сайтом HostCMS v. 5.xx
 * Copyright © 2005-2008 ООО "Хостмэйк" (Hostmake LLC), http://www.hostcms.ru
 *
 * Обработчик импорта данных из csv-файлов.
 * 
 * Файл: /admin/shop/action/import_price_list_load_data_csv.php
 * 
 * @author Hostmake LLC
 * @version 5.2
 */
if (class_exists('typograph'))
{
	$typograph = & singleton('typograph');
}

$shop_groups_parent_id = to_int($_REQUEST['shop_groups_parent_id']);

/* Идентификатор магазина */
$shop_shops_id = to_int($_REQUEST['shop_shops_id']);

// Выбираем данные о магазине
$row_shop = $shop->GetShop($shop_shops_id);

if (!$row_shop)
{
	show_error_message($GLOBALS['MSG_shops']['error_show_group']);
	do_html_footer_admin();
}

// Наименование магазина
$shop_name = htmlspecialchars($row_shop['shop_shops_name']);

// Определяем размеры картинок

$Image = & singleton('Image');

// Проверяем существование модуля Списки
if (class_exists('lists'))
{
	$lists = & singleton('lists');
}

$File = & singleton('File');

$admin_forms_fields = new admin_forms_fields();
?>
<h1><?php echo $GLOBALS['MSG_shops']['import_price_list_title']?></h1>
<p>
<a
href="<?php echo $admin_forms_fields->GetHtmlCallDoLoadAjax('/admin/shop/shop.php', "&shop_groups_parent_id=0&shop_shops_id=$shop_shops_id", 65, 'load_data')?>"
onclick="<?php echo $admin_forms_fields->GetOnClickCallDoLoadAjax('/admin/shop/shop.php', "&shop_groups_parent_id=0&shop_shops_id=$shop_shops_id", 65, 'load_data')?>"
><?php echo $GLOBALS['MSG_shops']['show_shop']?> &quot;<?php echo $shop_name?>&quot;</a>
</p>
<?php


// Принимаем переданные параметры
$param_array = array ();

// Проверяем каким образом нам необходимо принять данные
if (!isset ($_GET['get_param']))
{
	// Данные передаются через POST
	$param_array = to_array($_POST);
	// Проверяем необходимость очистки таблиц
	if ($param_array['import_price_action_items'] == 0)
	{
		// Удаляем все группы и товары для данного магазина
		$shop->DeleteAllItemsCatalogAndGroups($shop_shops_id);
	}
}
else
{
	// Данные передаются методом GET, получаем сериализованный массив
	$param_array = unserialize(urldecode(to_str($_GET['get_param'])));
}

// Тип файла
$import_price_type = to_int($param_array['import_price_type']);

// Флаг для первой строки
$import_price_name_field_f = false;
if (isset ($param_array['import_price_name_field_f']))
{
	$import_price_name_field_f = $param_array['import_price_name_field_f'];
}

// ID родительской группы
if (isset ($param_array['import_price_parent_group_id']))
{
	$import_price_parent_group_id = to_int($param_array['import_price_parent_group_id']);
}
else
{
	$import_price_parent_group_id = false;
}

// Разделитель
$import_price_separator_value = to_str($param_array['import_price_separator_value']);

// Ограничитель
$import_price_stop_value = to_str($param_array['import_price_stop_value']);

// Количество полей
$count_field = to_int($param_array['count_field']);

// Действие над существующими товарами
$import_price_action_items = to_int($param_array['import_price_action_items']);

// Путь к файлу изображения
$import_price_list_images_path = to_str($param_array['import_price_list_images_path']);

// Удалять изображения для товаров при обновлении
if (isset ($param_array['import_price_action_delete_image']))
{
	$import_price_list_action_delete_image = true;
}
else
{
	$import_price_list_action_delete_image = false;
}

// Если из WEB-а
if (strpos(strtolower($import_price_list_images_path), 'http://') === 0)
{
	$images_path = $import_price_list_images_path;
}
else
{
	// Проверяем наличие слэша в начале пути
	if (substr($import_price_list_images_path, 0, 1) == '/')
	{
		// Обрезаем первый слэш
		$import_price_list_images_path = substr($import_price_list_images_path, 1);
	}

	$images_path = CMS_FOLDER . $import_price_list_images_path;

	if (substr($images_path, strlen($images_path) - 1, 1) != '/')
	{
		// Проверяем, если последний симол равен "\"
		if (substr($images_path, strlen($images_path) - 1, 1) == '\\')
		{
			$images_path = substr($images_path, 0, strlen($images_path) - 1) . '/';
		}
		else
		{
			$images_path .= '/';
		}
	}
}

// Максимальное время выполнения (загрузки)
$import_price_max_time = to_float($param_array['import_price_max_time']);

// Проверяем не равно ли время 0 (возможно нам передали пустоту)
if ($import_price_max_time < 1)
{
	// По умолчанию устанавливаем 30 сек
	$import_price_max_time = 20;
}

// Разбираем полученный массив - выбираем из него поля
$field_array = array ();
foreach ($param_array as $key => $value)
{
	// Проверяем является ли элемент полем и содержит ли значение
	if ((strpos($key, "_") === false) && (strpos($key, 'field') !== false) && $value != '')
	{
		// Добавляем даннное поле в ассоциативный массив (ключ - наим. поля, значение массив с порядковыми номерами полей)
		$field_array[$value][] = str_replace('field', '', $key);
	}
}

// Открываем временный файл
$file_name = to_str($param_array['file_name']);

// Путь к временному файлу + его имя
$floadfile = $file_name;

if (is_file($floadfile)) /*&& 1 != 1*/
{
	// Открываем файл для импорта
	$fp = fopen($floadfile, 'rb');
	if ($fp)
	{
		// Проверяем наличие переданной позиции курсора
		if (isset ($param_array['pointer_position']))
		{
			// Переводим курсор на необходимую позицию
			fseek($fp, to_int($param_array['pointer_position']));
		}
		// Обрабатываем файл с начала
		else
		{
			// Проверяем содержит ли первая строка имена файлов, если да - не включаем ее в загрузку
			if ($import_price_name_field_f != false)
			{
				// Читаем первую строку из файла для перемещения указателя
				fgetcsv($fp, 100000, $import_price_separator_value, $import_price_stop_value);
			}
		}

		// Обрабатываем данные из csv-файла и загружаем их
		$rows_str = array ();

		// Счетчики для количества элементов и групп

		// Проверяем не передано ли кол-во вставленных товаров через GET
		if (isset ($param_array['count_insert_item']))
		{
			$count_insert_item = $param_array['count_insert_item'];
		}
		else
		{
			$count_insert_item = 0;
		}

		// Проверяем не передано ли кол-во вставленных товаров через GET
		if (isset ($param_array['count_update_item']))
		{
			$count_update_item = $param_array['count_update_item'];
		}
		else
		{
			$count_update_item = 0;
		}

		// Проверяем не передано ли кол-во через GET
		$count_dir = to_int($param_array['count_dir']);

		// Количество итераций
		$it = 0;

		$kernel = & singleton('kernel');

		// Вычисляем время начала обработки файла
		$begin_time = $kernel->getmicrotime();

		// Переменная для отчета по результатам импорта
		$report_message = '';

		// В цикле обрабатываем файл
		while (!feof($fp))
		{
			// Обрабатываем строку csv-файла и помещаем ее в массив
			$rows_str = fgetcsv($fp, 10000, $import_price_separator_value, $import_price_stop_value);

			// Если пустая строка - пропускаем
			if (!is_array($rows_str) || (count($rows_str) == 1 && empty ($rows_str[0])))
			{
				continue;
			}

			// Массивы для полей и их значений дополнительных свойств
			$query_field_array1 = array ();
			$query_field_value_array1 = array ();

			// Переменные для полей и их значений таблицы связи товаров и цен
			$query_field_array2 = array ();
			$query_field_value_array2 = array ();

			// Переменные для полей и их значений таблицы товаров
			$query_field_array3 = array ();
			$query_field_value_array3 = array ();

			// Переменная для записи значения группы для товара
			if ($import_price_parent_group_id != 0)
			{
				$query_field_value_group = $import_price_parent_group_id;
			}
			else
			{
				$query_field_value_group = false;
			}

			// Идентификатор текущей группы
			$current_group = $import_price_parent_group_id;

			// Наименование файла изображения
			$catalog_image = '';

			// Счетчик для путей групп. До начала цикла - обнуляем счетчик
			$group_path_counter = 0;

			// Счетчик для групп. До начала цикла - обнуляем счетчик
			$group_counter = 0;

			// В цикле заполняем массивы
			for ($i = 0; $i < $count_field; $i++)
			{
				// Передано ли описание каталога
				$key_descr = array_search('shop_groups_description', $param_array);

				// Передано описание
				if ($key_descr !== false)
				{
					// Номер поля
					if (ereg("field([0-9]*)$", $key_descr, $preg) !== false)
					{
						$field_num = $preg[1];
					}
					else
					{
						$field_num = false;
					}
				}
				else
				{
					$field_num = false;					
				}

				// Проверяем, относится ли поле к дополнительным свойствам
				if (ereg("^prop-([0-9]*)$", to_str($param_array['field' . $i]), $regs))
				{
					// Выбираем информацию о данном дополнительном свойстве для товара
					$row_prop = $shop->GetPropretyOfItems(to_int($regs[1]));
					if ($row_prop)
					{
						$properties_type = $row_prop['shop_list_of_properties_type'];

						/* Проверяем является ли данное свойство списком */
						if ($properties_type == 2)
						{
							if (class_exists('lists'))
							{
								$list_id = $row_prop['lists_id'];
								$list_value = to_str($rows_str[$i]);

								// Проверяем есть ли данное значение в списке
								$row_list_item = $lists->GetListItemIfIssetValue($list_id, $list_value);

								// Значение есть в списке значений списка
								if ($row_list_item)
								{
									$lists_items_id = $row_list_item['lists_items_id'];
								}
								// Данного значения нет - добавляем его
								elseif ($list_value != '')
								{
									$lists_items_id = $lists->insert_lists_items(0, 0, $list_id, $list_value, 0, '');
								}
								else
								{
									$lists_items_id = '';
								}

								if ($lists_items_id)
								{
									// Имя поля - в массив, Значение поля - в массив значений
									$query_field_array1[] = $regs[1];
									$query_field_value_array1[] = $lists_items_id;
								}
							}
						}
						else
						{
							// Имя поля - в массив
							$query_field_array1[] = $regs[1];

							// Значение поля - в массив значений
							if (isset ($rows_str[$i]))
							{
								$query_field_value_array1[] = $rows_str[$i];
							}
						}
					}
				}
				// Проверяем, относится ли поле к ценам для товара
				elseif (ereg("price-([0-9]*)$", to_str($param_array['field' . $i]), $regs))
				{
					// Имя поля - в массив
					$query_field_array2[] = $regs[1];

					// Значение поля - в массив значений
					if (isset ($rows_str[$i]))
					{
						$query_field_value_array2[] = $rows_str[$i];
					}
				}
				// Данное поле из таблицы товаров
				else
				{
					// Проверяем группа ли это
					if (to_str($param_array['field' . $i]) == 'shop_groups_id') // поле - id группы
					{
						$group_id = to_int($rows_str[$i]);

						// Проверяем наличие данной группы (если id не равен 0)
						if ($group_id != 0)
						{
							$result_gr = $shop->GetGroup($group_id, array (
								'cache_off' => 'true'
							));
						}

						// Если группа с таким id существует
						if ((isset ($result_gr) && $result_gr != false) || $group_id == 0)
						{
							// Идентификатор группы помещаем в значение, делаем данную группу текущей
							$query_field_value_group = $group_id;
							$current_group = $group_id;

							// Обновляем информацию о группе//
							// Информация о группе
							$group_row = $shop->GetGroup($group_id, array (
								'cache_off' => true
							));

							if ($group_row)
							{
								$param = array ();
								$param['shop_shops_id'] = $shop_shops_id;
								$param['group_id'] = $group_id;
								$param['parent_id'] = $group_row['shop_groups_parent_id'];
								$param['shop_groups_name'] = $group_row['shop_groups_name'];
								// Новый путь для группы
								$param['shop_groups_path'] = $group_row['shop_groups_path'];

								// Вставляем описание группы, если передано
								if ($field_num !== false && to_str($rows_str[$field_num]) != '')
								{
									$param['shop_groups_description'] = to_str($rows_str[$field_num]);
								}
								else
								{
									$param['shop_groups_description'] = '';
								}

								$param['shop_groups_image'] = $group_row['shop_groups_image'];
								$param['shop_groups_small_image'] = $group_row['shop_groups_small_image'];
								$param['shop_groups_big_image_width'] = $group_row['shop_groups_big_image_width'];
								$param['shop_groups_big_image_height'] = $group_row['shop_groups_big_image_height'];
								$param['shop_groups_small_image_width'] = $group_row['shop_groups_small_image_width'];
								$param['shop_groups_small_image_height'] = $group_row['shop_groups_small_image_height'];
								$param['shop_groups_cml_id'] = $group_row['shop_groups_cml_id'];
								$param['shop_groups_order'] = $group_row['shop_groups_order'];
								$param['shop_groups_indexation'] = $group_row['shop_groups_indexation'];
								$param['shop_groups_seo_title'] = $group_row['shop_groups_seo_title'];
								$param['shop_groups_seo_description'] = $group_row['shop_groups_seo_description'];
								$param['shop_groups_seo_keywords'] = $group_row['shop_groups_seo_keywords'];

								// Обновляем информацию о данной группе
								$shop->InsertGroup($param);
							}
						}
					}
					// Поле содержит значение для группы
					elseif (to_str($param_array['field' . $i]) == 'shop_groups_value')
					{
						$group_value = to_str($rows_str[$i]);
						
						// Если значение группы не пустота
						if (trim($group_value) != '')
						{	
							// Проверяем наличие группы с таким именем в данном магазине в текущей рубрике
							$result_group_with_value = $shop->GetGroupWithValue($group_value, $current_group, $shop_shops_id);

							if ($result_group_with_value)
							{
								// Обновляем описание группы, если передано, иначе - оставляем прежнее
								if ($field_num !== false && to_str($rows_str[$field_num]) != '')
								{
									$description = to_str($rows_str[$field_num]);
								}
								else
								{
									$description = $result_group_with_value['shop_groups_description'];
								}

								// Проверяем наличие пути для данной группы
								if (isset ($field_array['shop_groups_path'][$group_counter]))
								{
									// Индекс для элемента массива, содержащего путь для этой группы
									$field_index = $field_array['shop_groups_path'][$group_counter];
									// Проверяем совпадение путей
									if (to_str($rows_str[$field_index]) != '' and $result_group_with_value['shop_groups_path'] != to_str($rows_str[$field_index]))
									{
										// Проверяем существование группы с таким путем
										$result_group_with_path = $shop->GetGroupWithPath(to_str($rows_str[$field_index]), $current_group, $shop_shops_id);

										if ($result_group_with_path)
										{
											$group_id = $result_group_with_path['shop_groups_id'];
										}
										else
										{
											// Пути не равны - обновляем информацию для данной группы
											$param = array ();
											$param['shop_shops_id'] = $shop_shops_id;
											$param['group_id'] = $result_group_with_value['shop_groups_id'];
											$param['parent_id'] = $current_group;
											$param['shop_groups_name'] = $result_group_with_value['shop_groups_name'];
											// Новый путь для группы
											$param['shop_groups_path'] = to_str($rows_str[$field_index]);
											$param['shop_groups_description'] = $description;
											$param['shop_groups_image'] = $result_group_with_value['shop_groups_image'];
											$param['shop_groups_order'] = $result_group_with_value['shop_groups_order'];
											$param['shop_groups_indexation'] = $result_group_with_value['shop_groups_indexation'];
											$param['shop_groups_seo_title'] = $result_group_with_value['shop_groups_seo_title'];
											$param['shop_groups_seo_description'] = $result_group_with_value['shop_groups_seo_description'];
											$param['shop_groups_seo_keywords'] = $result_group_with_value['shop_groups_seo_keywords'];

											// Обновляем информацию о данной группе
											$shop->InsertGroup($param);
											// Запоминаем id группы
											$group_id = $result_group_with_value['shop_groups_id'];
										}
									}
									else
									{
										// Уже существует группа с данным наименованием в подгруппе - запоминаем id группы
										$group_id = $result_group_with_value['shop_groups_id'];
										
										// Обновляем информацию о группе//
							// Информация о группе
							$group_row = $shop->GetGroup($group_id, array (
								'cache_off' => true
							));

							if ($group_row)
							{
								$param = array ();
								$param['shop_shops_id'] = $shop_shops_id;
								$param['group_id'] = $group_id;
								$param['parent_id'] = $group_row['shop_groups_parent_id'];
								$param['shop_groups_name'] = $group_row['shop_groups_name'];
								// Новый путь для группы
								$param['shop_groups_path'] = $group_row['shop_groups_path'];

								// Вставляем описание группы, если передано
								if ($field_num !== false && to_str($rows_str[$field_num]) != '')
								{
									$param['shop_groups_description'] = to_str($rows_str[$field_num]);
								}
								else
								{
									$param['shop_groups_description'] = '';
								}

								$param['shop_groups_image'] = $group_row['shop_groups_image'];
								$param['shop_groups_small_image'] = $group_row['shop_groups_small_image'];
								$param['shop_groups_big_image_width'] = $group_row['shop_groups_big_image_width'];
								$param['shop_groups_big_image_height'] = $group_row['shop_groups_big_image_height'];
								$param['shop_groups_small_image_width'] = $group_row['shop_groups_small_image_width'];
								$param['shop_groups_small_image_height'] = $group_row['shop_groups_small_image_height'];
								$param['shop_groups_cml_id'] = $group_row['shop_groups_cml_id'];
								$param['shop_groups_order'] = $group_row['shop_groups_order'];
								$param['shop_groups_indexation'] = $group_row['shop_groups_indexation'];
								$param['shop_groups_seo_title'] = $group_row['shop_groups_seo_title'];
								$param['shop_groups_seo_description'] = $group_row['shop_groups_seo_description'];
								$param['shop_groups_seo_keywords'] = $group_row['shop_groups_seo_keywords'];

								// Обновляем информацию о данной группе
								$shop->InsertGroup($param);
							}
									}
								}
								else
								{
									// Уже существует группа с данным наименованием в подгруппе - запоминаем id группы
									$group_id = $result_group_with_value['shop_groups_id'];
									
									// Обновляем информацию о группе//
							// Информация о группе
							$group_row = $shop->GetGroup($group_id, array (
								'cache_off' => true
							));

							if ($group_row)
							{
								$param = array ();
								$param['shop_shops_id'] = $shop_shops_id;
								$param['group_id'] = $group_id;
								$param['parent_id'] = $group_row['shop_groups_parent_id'];
								$param['shop_groups_name'] = $group_row['shop_groups_name'];
								// Новый путь для группы
								$param['shop_groups_path'] = $group_row['shop_groups_path'];

								// Вставляем описание группы, если передано
								if ($field_num !== false && to_str($rows_str[$field_num]) != '')
								{
									$param['shop_groups_description'] = to_str($rows_str[$field_num]);
								}
								else
								{
									$param['shop_groups_description'] = '';
								}

								$param['shop_groups_image'] = $group_row['shop_groups_image'];
								$param['shop_groups_small_image'] = $group_row['shop_groups_small_image'];
								$param['shop_groups_big_image_width'] = $group_row['shop_groups_big_image_width'];
								$param['shop_groups_big_image_height'] = $group_row['shop_groups_big_image_height'];
								$param['shop_groups_small_image_width'] = $group_row['shop_groups_small_image_width'];
								$param['shop_groups_small_image_height'] = $group_row['shop_groups_small_image_height'];
								$param['shop_groups_cml_id'] = $group_row['shop_groups_cml_id'];
								$param['shop_groups_order'] = $group_row['shop_groups_order'];
								$param['shop_groups_indexation'] = $group_row['shop_groups_indexation'];
								$param['shop_groups_seo_title'] = $group_row['shop_groups_seo_title'];
								$param['shop_groups_seo_description'] = $group_row['shop_groups_seo_description'];
								$param['shop_groups_seo_keywords'] = $group_row['shop_groups_seo_keywords'];

								// Обновляем информацию о данной группе
								$shop->InsertGroup($param);
							}
								}

								// В значение для поля и в значение текущей группы - пишем id группы
								$query_field_value_group = $group_id;
								$current_group = $group_id;
							}
							// Группы не существует - необходимо ее добавить
							else
							{
								// Вставляем группу с данным именем
								$param = array ();

								// Вставляем описание группы, если передано
								if ($field_num !== false && to_str($rows_str[$field_num]) != '')
								{
									$param['shop_groups_description'] = to_str($rows_str[$field_num]);
								}

								$param['shop_groups_name'] = $group_value;
								$param['shop_shops_id'] = $shop_shops_id;
								$param['shop_groups_parent_id'] = $current_group;
								$param['shop_groups_indexation'] = 0;

								// Проверяем наличие пути
								if (isset ($rows_str[to_str($field_array['shop_groups_path'][$group_counter])]))
								{
									$param['shop_groups_path'] = to_str($rows_str[to_str($field_array['shop_groups_path'][$group_counter])]);
								}

								$group_id = $shop->InsertGroup($param);
								// Идентификатор вставленной группы помещаем в значение
								$query_field_value_group = $group_id;
								$current_group = $group_id;

								// Увеличиваем число загруженных разделов для отчета
								$count_dir++;
							}
						}

						// Отработали с группой - наращиваем счетчик для групп
						$group_counter++;
					}
					// Поле содержит путь для группы
					elseif (to_str($param_array['field' . $i]) == 'shop_item_parent_mark')
					{
						// Получаем артикул родительского товара
						$parent_mark = to_str($rows_str[$i]);

						$item_res = $shop->GetItemByParam(array (
							'shop_items_catalog_marking' => $parent_mark
						));

						if ($item_res)
						{
							$item_row = mysql_fetch_assoc($item_res);

							// Получаем идентификатор родительского товара
							$parent_item_id = $item_row['shop_items_catalog_item_id'];

							$query_field_array3[] = "shop_items_catalog_modification_id";
							$query_field_value_array3[] = to_int($parent_item_id);
						}
					}
					elseif (to_str($param_array['field' . $i]) == 'shop_groups_path')
					{
						$group_path = to_str($rows_str[$i]);

						// Проверяем было ли для группы указано имя
						if ($group_path != '' && !isset ($field_array['shop_groups_value'][$group_path_counter]))
						{
							// Имя для группы не было указано, работаем с путем - проверяем наличие группы с таким путем
							$result_group_with_path = $shop->GetGroupWithPath($group_path, $current_group, $shop_shops_id);
							if ($result_group_with_path)
							{
								// Уже существует группа с данным путем в подгруппе - запоминаем id группы
								$group_id = $result_group_with_path['shop_groups_id'];
								// В значение для поля и в значение текущей группы - пишем id группы
								$query_field_value_group = $group_id;
								$current_group = $group_id;
							}
							// Группы с таким путем нет
							else
							{
								// Добавляем группу с данным путем, в качестве имени тоже указываем путь
								$param = array ();

								// Вставляем описание группы, если передано
								if ($field_num !== false && to_str($rows_str[$field_num]) != '')
								{
									$param['shop_groups_description'] = to_str($rows_str[$field_num]);
								}

								$param['shop_groups_name'] = $group_path;
								$param['shop_groups_path'] = $group_path;
								$param['shop_shops_id'] = $shop_shops_id;
								$param['shop_groups_parent_id'] = $current_group;
								$param['shop_groups_indexation'] = 0;
								$group_id = $shop->InsertGroup($param);
								// Идентификатор вставленной группы помещаем в значение
								$query_field_value_group = $group_id;
								$current_group = $group_id;

								// Увеличиваем число загруженных разделов для отчета
								$count_dir++;
							}
						}

						// Отработали с путем для группы - наращиваем счетчик для путей
						$group_path_counter++;
					}
					// Поле не относится к группе - это товар
					else
					{
						// Проверяем поле на пустоту (пустое поле - не загружаем!)
						if (to_str($param_array['field' . $i]) != '')
						{
							// Значение поля - в массив значений
							if (isset ($rows_str[$i]))
							{
								// Имя поля - в массив
								$query_field_array3[] = to_str($param_array['field' . $i]);

								/* Проверяем, цена ли это */
								if (to_str($param_array['field' . $i]) == 'shop_items_catalog_price')
								{
									$query_field_value_array3[] = $shop->ConvertPrice($rows_str[$i]);
								}
								elseif (to_str($param_array['field' . $i]) == 'shop_currency_international_name')
								{
									/* Добавляем пустое значение, чтобы не допустить рассинхронизацию */
									$query_field_value_array3[] = '';

									/* Пробуем определить идентификатор валюты по её международному названию */
									$currencies = $shop->GetCurrencyByInternationalName($rows_str[$i]);

									if ($currencies)
									{
										$param_array['shop_currency_id'] = $currencies[0]['shop_currency_id'];
									}
								}
								elseif (to_str($param_array['field' . $i]) == 'shop_producers_list_value')
								{
									$query_field_value_array3[] = '';
									$producers = $shop->GetProducerByName($rows_str[$i], $row_shop['shop_shops_id']);
									if ($producers && count($producers) > 0)
									{
										$param_array['shop_producers_list_id'] = $producers[0]['shop_producers_list_id'];
									}
									else
									{
										// Ни один производитель с таким именем не найден, добавляем.
										$producer_param = array ();
										$producer_param['shops_id'] = $row_shop['shop_shops_id'];
										$producer_param['name'] = $rows_str[$i];

										// Добавление нового производителя.
										$shop_producers_list_id = $shop->InsertProducer($producer_param);
										if ($shop_producers_list_id)
										{
											$param_array['shop_producers_list_id'] = $shop_producers_list_id;
										}
									}
								}
								elseif (to_str($param_array['field' . $i]) == 'shop_sallers_name')
								{
									$query_field_value_array3[] = '';
									$sellers = $shop->GetSellerByName($rows_str[$i], $row_shop['shop_shops_id']);
									if ($sellers && count($sellers) > 0)
									{
										$param_array['shop_sallers_id'] = $sellers[0]['shop_sallers_id'];
									}
									else
									{
										// Ни один продавец с таким именем не найден, добавляем.
										$seller_param = array ();
										$seller_param['shop_sallers_name'] = $rows_str[$i];
										$seller_param['shop_shops_id'] = $row_shop['shop_shops_id'];

										// Добавление нового продавца.
										$shop_seller_id = $shop->InsertSeller($seller_param);

										if ($shop_seller_id)
										{
											$param_array['shop_sallers_id'] = $shop_seller_id;
										}
									}
								}
								// Импорт элемента "Единицы измерения" из CSV-файла
								elseif (to_str($param_array['field' . $i]) == 'shop_mesures_value')
								{
									$query_field_value_array3[] = '';

									// Проверяем, существует ли единица измерения переданная из CSV в базе
									$wanted_mesure_name = quote_smart($rows_str[$i]);

									$mesure_data_row = $shop->GetMesuresByLike($wanted_mesure_name);

									//$param_array['field'.$i] = 'shop_mesures_id';

									if ($mesure_data_row)
									{
										// Единица измерения найдена, добавляем ее идентификатор в массив значений
										$shop_mesures_id = $mesure_data_row['shop_mesures_id'];
									}
									else
									{
										// Единица измерения не найдена, добавляем
										$shop_mesures_id = $shop->InsertMesure(array (
											'name' => $wanted_mesure_name
										));
									}

									$param_array['shop_mesures_id'] = $shop_mesures_id;

									$query_field_array3[] = "shop_mesures_id";
									$query_field_value_array3[] = $shop_mesures_id;
								}
								else
								{
									/* Проверяем является ли данное поле изображением */
									/*if (to_str($param_array['field'.$i]) == 'shop_items_catalog_image')
									{
									$catalog_image = $rows_str[$i];
									$query_field_value_array3[] = '';
									}
									else
									{*/
									/* Проверяем, нужно ли типографировать */
									if (isset ($param_array["f_$i" . "_typograph"]) && class_exists('typograph'))
									{
										/* Оптическое выравниваение*/
										$optical_alignment = isset ($param_array["f_{$i}_optical_alignment"]);

										/* Типографируем */
										$rows_str[$i] = $typograph->ProcessTypographic($rows_str[$i], $optical_alignment);
									}

									$query_field_value_array3[] = $rows_str[$i];
									/*}*/
								}

								if ($param_array['field' . $i] == 'shop_currency_id')
								{
									$query_field_array3[] = "shop_currency_id";
									$query_field_value_array3[] = to_int($rows_str[$i]);
								}

								if (to_str($param_array['field' . $i]) == 'shop_items_catalog_image')
								{
									$catalog_image = $rows_str[$i];
									//$query_field_value_array3[] = '';
								}

								if ($param_array['field' . $i] == 'shop_items_catalog_small_image')
								{
									$catalog_small_image = $rows_str[$i];
								}

							}
						}
					}
				} // Окончание проверки (условие, когда поле относится к полям товара)
			}

			// Валюта "по умолчанию" для товара
			if (!in_array('shop_currency_id', $query_field_array3))
			{
				// Выбираем валюту по умолчанию для магазина
				if ($row = $shop->GetDefaultCurrency())
				{
					$query_field_array3[] = "shop_currency_id";
					$query_field_value_array3[] = $row['shop_currency_id'];
				}
			}

			// Проверяем был ли добавлен идентификатор производителя, если нет - добавляем.
			if (isset ($param_array['shop_producers_list_id']))
			{
				$query_field_array3[] = "shop_producers_list_id";
				$query_field_value_array3[] = to_int($param_array['shop_producers_list_id']);
			}

			// Проверяем был ли добавлен идентификатор продавца, если нет - добавляем.
			if (isset ($param_array['shop_sallers_id']))
			{
				// Удвоение, т.к. ниже режится в имени "shop_"
				$query_field_array3[] = "shop_shop_sallers_id";
				$query_field_value_array3[] = to_int($param_array['shop_sallers_id']);
			}

			// id товара пока не существует
			$catalog_item_id = 0;

			// Разбираем массив для товара
			if (count($query_field_array3) > 0 && count($query_field_value_array3) > 0)
			{
				$param = array ();

				// id магазина
				$param['shops_id'] = $shop_shops_id;

				// id группы
				if ($query_field_value_group !== false)
				{
					$param['groups_id'] = $query_field_value_group;
				}

				// В цикле обрабатываем значения полей и формируем массив для передачи в метод
				for ($i = 0; $i < count($query_field_array3); $i++)
				{
					if (isset ($query_field_value_array3[$i]))
					{
						// Отбрасываем "shop_" от наименования поля
						if (ereg("^shop_([A-z0-9_]+)$", $query_field_array3[$i], $field))
						{
							// Проверяем, если дальше поле содержит "items_catalog_", отбрасываем и эту часть
							if (ereg("^items_catalog_([A-z0-9_]+)$", $field[1], $field_item))
							{
								$param[$field_item[1]] = $query_field_value_array3[$i];
							}
							// Иначе - ничего не отбрасываем
							else
							{
								$param[$field[1]] = $query_field_value_array3[$i];
							}
						}
					}
				}

				// Флаг того, что такой элемент уже существует. По умолчанию товар не найден
				$catalog_old_row = false;

				// Проверяем, что нам необходимо делать с уже существующими товарами
				// Если передан явно идентификатор (сделаем одну проверку), или передан путь элемента и его родительская группа (сделаем вторую проверку).
				if ($import_price_action_items != 0 && (isset ($param['item_id']) || (isset ($param['path']) && isset ($param['groups_id'])))) // Старые товары не удалялись и есть переданный id товара
				{
					if (isset ($param['item_id']))
					{
						// Проверяем наличие товара в базе с таким ID
						$catalog_old_row = $shop->GetItem($param['item_id']);
					}
				}

				/* Если по идентификатору товар не нашли */
				if (!$catalog_old_row)
				{
					$GetItemParam = array ();

					// Проверяем наличие данного товара в базе по пути, родительской группе и магазину
					if (isset ($param['groups_id']))
					{
						$GetItemParam['shop_groups_id'] = to_int($param['groups_id']);
					}

					if (isset ($param['path'])) // нужно, чтобы не создать в $param пустой элемент с path
					{
						$GetItemParam['shop_items_catalog_path'] = to_str($param['path']);

						$GetItemParam['shop_shops_id'] = to_int($param['shops_id']);

						/* Получаем ресурс по заданным условиям */
						$catalog_old_resource_by_path = $shop->GetItemByParam($GetItemParam);
					}
					else
					{
						// Поиск не производили, т.к. путь не был передан
						$catalog_old_resource_by_path = false;
					}

					/* Если нашли товар по пути, группе и магазину */
					if ($catalog_old_resource_by_path && mysql_num_rows($catalog_old_resource_by_path) == 1)
					{
						// Получаем строку с данными об элементе, выбранном по условиям
						$catalog_old_row = mysql_fetch_assoc($catalog_old_resource_by_path);

						// Устанавливаем идентификатор товара на старое значение
						$param['item_id'] = $catalog_old_row['shop_items_catalog_item_id'];
					}
					else /* Ищем товар по артикулу и ID магазина */ {
						$GetItemParam = array ();

						// Поиск по артиклу только тогда, когда он не пустой
						if (trim(to_str($param['marking'])) != '')
						{
							$GetItemParam['shop_items_catalog_marking'] = to_str($param['marking']);
							$GetItemParam['shop_shops_id'] = to_int($param['shops_id']);
							/* Получаем ресурс по заданным условиям */
							$catalog_old_resource_by_name = $shop->GetItemByParam($GetItemParam);
						}
						else
						{
							$catalog_old_resource_by_name = false;
						}

						/* Если нашли товар по артикулу и магазину
						Сравнение на 1, т.к. нельзя будет обновить несколько товаров
						данными об одном текущем товаре */
						if ($catalog_old_resource_by_name && mysql_num_rows($catalog_old_resource_by_name) == 1)
						{
							// Получаем строку с данными об элементе, выбранном по условиям
							$catalog_old_row = mysql_fetch_assoc($catalog_old_resource_by_name);

							// Устанавливаем идентификатор товара на старое значение
							$param['item_id'] = $catalog_old_row['shop_items_catalog_item_id'];
						}
						elseif (trim(to_str($param['marking'])) == '') /* По артикулу не нашли, ищем товар по наименованию, при этом по наименованию ищем только тогда, когда артикул был пустым */
						{
							// Временно убрано, т.к. поиск по названию может давать дубликаты из-за одинаковых названий в прайсе
							if (false)
							{
								$GetItemParam = array ();
								$GetItemParam['shop_items_catalog_name'] = to_str($param['name']);

								if (isset ($param['groups_id']))
								{
									$GetItemParam['shop_groups_id'] = to_int($param['groups_id']);
								}
								$GetItemParam['shop_shops_id'] = to_int($param['shops_id']);

								/* Получаем ресурс по заданным условиям */
								$catalog_old_resource_by_name = $shop->GetItemByParam($GetItemParam);

								/* Если нашли товар по названию, группе и магазину
								Сравнение на 1, т.к. нельзя будет обновить несколько товаров
								данными об одном текущем товаре */
								if ($catalog_old_resource_by_name && mysql_num_rows($catalog_old_resource_by_name) == 1)
								{
									// Получаем строку с данными об элементе, выбранном по условиям
									$catalog_old_row = mysql_fetch_assoc($catalog_old_resource_by_name);

									// Устанавливаем идентификатор товара на старое значение
									$param['item_id'] = $catalog_old_row['shop_items_catalog_item_id'];
								}
							}
						}
					}
				}

				// Товар выбран из базы.
				if ($catalog_old_row)
				{
					// Проверяем, есть ли необходимость обновлять товар.
					if ($import_price_action_items == 1)
					{
						// при обновлении указываем на тип работы с картинками - удаляем или нет.
						$param['delete_image'] = $import_price_list_action_delete_image;

						$catalog_item_id = $shop->UpdateItem($param);

						// Увеличиваем число обновленных элементов для отчета
						if ($catalog_item_id && $catalog_item_id != -1)
						{
							$count_update_item++;

							// Вставка тегов (меток)
							if (isset ($param['label']))
							{
								$array['tags'] = $param['label'];
								$array['shop_items_catalog_item_id'] = $catalog_item_id;
								$shop->InsertItemsCatalogTags($array);
							}
						}
					}
				}
				else
				{
					// Передано имя товара
					if (trim(to_str($param['name'])) != '')
					{
						// Осуществляем вставку товара
						$catalog_item_id = $shop->InsertItem($param);

						// Вставка тегов (меток)
						if (isset ($param['label']))
						{
							$array['tags'] = $param['label'];
							$array['shop_items_catalog_item_id'] = $catalog_item_id;
							$shop->InsertItemsCatalogTags($array);
						}

						// Увеличиваем число вставленных элементов для отчета
						if ($catalog_item_id && $catalog_item_id != -1)
						{
							$count_insert_item++;
						}
					}
				}

				/* Товар был вставлен - нам известен его id */
				if ($catalog_item_id && $catalog_item_id != -1)
				{
					/* Проверяем наличие файла изображения для товара */
					if (!empty ($catalog_image) && file_exists($images_path . $catalog_image) || strpos(strtolower($catalog_image), 'http://') === 0 || strpos(strtolower($images_path), 'http://') === 0)
					{
						/* Копируем данный файл */
						/*
						WARNING! copy() не используем, т.к. в качестве пути к файлу может быть указан url
						*/

						if (strpos(strtolower($catalog_image), 'http://') === 0)
						{
							// Загружаем файл с внешнего сервера
							$filecontent = @ file_get_contents($catalog_image);
						}
						elseif (strpos(strtolower($images_path), 'http://') === 0)
						{
							// Загружаем файл с внешнего сервера
							$filecontent = @ file_get_contents($images_path . $catalog_image);
						}
						else
						{
							$filecontent = $File->GetFileContent($images_path . $catalog_image);
						}

						if ($filecontent)
						{
							/* Определяем расширение файла */
							$exp = $kernel->GetExtension($catalog_image);

							/* Имя нового файла */
							$shop_items_catalog_image = 'shop_items_catalog_image' . $catalog_item_id . '.' . $exp;

							/* Создаем директорию для хранения файла */
							$uploaddir = $shop->CreateDirectory($shop_shops_id, "item_catalog_$catalog_item_id");

							if ($fp_img = fopen($uploaddir . $shop_items_catalog_image, 'w'))
							{
								fwrite($fp_img, $filecontent);
								fclose($fp_img);
								@ chmod($uploaddir . $shop_items_catalog_image, CHMOD_FILE);

								if ($exp == 'jpg' || $exp == 'jpeg')
								{
									if (!$Image->ResizeToFileEx($uploaddir . $shop_items_catalog_image, to_int($row_shop['shop_image_big_max_width']), to_int($row_shop['shop_image_big_max_height']), $uploaddir .
										$shop_items_catalog_image, JPG_QUALITY))
									{
										show_error_message($GLOBALS['MSG_shops']['error_setup_picture']);
									}

									/* Устанавливаем права доступа к файлу */
									@ chmod($uploaddir . $shop_items_catalog_image, CHMOD_FILE);

									/* Если не передан флаг ватермарка для маленькой картинки - то копируем ее
									до наложения ватермарка */
									if (!$row_shop['shop_watermark_default_use_small'])
									{
										/* Делаем уменьшенный файл */
										if (!$Image->ResizeToFileEx($uploaddir . $shop_items_catalog_image, to_int($row_shop['shop_image_small_max_width']), to_int($row_shop['shop_image_small_max_height']), $uploaddir .
											"small_" . $shop_items_catalog_image, JPG_QUALITY))
										{
											show_error_message($GLOBALS['MSG_shops']['error_setup_picture']);
										}

										/* Устанавливаем права доступа к файлу малой картинки */
										@ chmod($uploaddir . "small_" . $shop_items_catalog_image, CHMOD_FILE);
									}

									/* Накладываем Watermark */
									if ($row_shop['shop_watermark_default_use_big'])
									{
										/* Определяем путь к watermark'у */
										$watermark_uploaddir = $shop->CreateDirectory($shop_shops_id, "watermarks");

										/* Получаем путь к watermark файлу */
										if ($row_shop && $watermark_uploaddir)
										{
											$watermark_file = to_str($row_shop['shop_watermark_file']);
										}
										else
										{
											$watermark_file = '';
										}

										/* Если указан ватермарк для магазина */
										if (!empty ($watermark_file))
										{
											$watermark_file = $watermark_uploaddir . $watermark_file;
											$result = $Image->CopyImgWithWatermark($uploaddir . $shop_items_catalog_image, $uploaddir .
											$shop_items_catalog_image, $watermark_file, to_str($row_shop['shop_watermark_default_position_x']), to_str($row_shop['shop_watermark_default_position_y']));

											if (!$result)
											{
												show_error_message($GLOBALS['MSG_shops']['items_add_form_image_watermark_apply_error']);
											}
										}
									}

									/* Если  передан флаг ватермарка для маленькой картинки - то
									копируем ее после наложения ватермарка */
									if ($row_shop['shop_watermark_default_use_small'])
									{
										/* Делаем уменьшенный файл */
										if (!$Image->ResizeToFileEx($uploaddir . $shop_items_catalog_image, to_int($row_shop['shop_image_small_max_width']), to_int($row_shop['shop_image_small_max_height']), $uploaddir .
											"small_" . $shop_items_catalog_image, JPG_QUALITY))
										{
											show_error_message($GLOBALS['MSG_shops']['error_setup_picture']);
										}

										/* Устанавливаем права доступа к файлу малой картинки */
										@ chmod($uploaddir . "small_" . $shop_items_catalog_image, CHMOD_FILE);
									}

									/* Делаем уменьшенный файл */
									if (!$Image->ResizeToFileEx($uploaddir . $shop_items_catalog_image, to_int($row_shop['shop_image_small_max_width']), to_int($row_shop['shop_image_small_max_height']), $uploaddir .
										"small_" . $shop_items_catalog_image, JPG_QUALITY))
									{
										show_error_message($GLOBALS['MSG_shops']['error_setup_picture']);
									}

									/* Устанавливаем права доступа к файлу малой картинки */
									@ chmod($uploaddir . "small_" . $shop_items_catalog_image, CHMOD_FILE);
								}
								elseif ($exp == 'gif' || $exp = 'png')
								{
									// Копируем оригинал как малую картинку
									$fname = $uploaddir . "small_" . $shop_items_catalog_image;

									// Получаем содержимое оригинала
									$filecontent_orig = $File->GetFileContent($uploaddir . $shop_items_catalog_image);
									if ($filecontent_orig)
									{
										if ($fp_img = fopen($fname, 'w'))
										{
											fwrite($fp_img, $filecontent_orig);
											fclose($fp_img);
											@ chmod($fname, CHMOD_FILE);
										}
									}
								}

								/* Обновляем картинку для элемнта, если не пустое имя картинки, или указано обновлять картинки на пустые */
								if (!empty ($shop_items_catalog_image) || ($import_price_list_action_delete_image && empty ($shop_items_catalog_image)))
								{
									// Обновляем информацию об изображении для товара.
									$shop->UpdateImageForItem($shop_shops_id, $catalog_item_id, $shop_items_catalog_image);
								}
							}
							else
							{
								$message_about_file .= "<p>\''{$GLOBALS['MSG_shops']['error_criate_write_file']}'\'.$uploaddir.$shop_items_catalog_image</p>";
							}
						}
						else
						{
							show_error_message('Ошибка загрузки файла ' . $filecontent);
						}
					}

					if (!empty ($catalog_small_image) && file_exists($images_path . $catalog_small_image) || (isset ($catalog_small_image) && strpos(strtolower($catalog_small_image), 'http://') === 0) || (isset ($catalog_small_image) && strpos(strtolower($images_path), 'http://') === 0))
					{
						/* Копируем данный файл */
						/*
						WARNING! copy() не используем, т.к. в качестве пути к файлу может быть указан url
						*/

						if (strpos(strtolower($catalog_small_image), 'http://') === 0)
						{
							// Загружаем файл с внешнего сервера
							$filecontent = @ file_get_contents($catalog_small_image);
						}
						elseif (strpos(strtolower($images_path), 'http://') === 0)
						{
							// Загружаем файл с внешнего сервера
							$filecontent = @ file_get_contents($images_path . $catalog_small_image);
						}
						else
						{
							$filecontent = $File->GetFileContent($images_path . $catalog_small_image);
						}

						if ($filecontent)
						{
							/* Определяем расширение файла */
							$exp = $kernel->GetExtension($catalog_small_image);

							/* Имя нового файла */
							$shop_items_catalog_image_small = 'small_shop_items_catalog_image' . $catalog_item_id . '.' . $exp;

							/* Создаем директорию для хранения файла */
							$uploaddir = $shop->CreateDirectory($shop_shops_id, "item_catalog_$catalog_item_id");

							if ($fp_img = fopen($uploaddir . $shop_items_catalog_image_small, 'w'))
							{
								fwrite($fp_img, $filecontent);
								fclose($fp_img);
								@ chmod($uploaddir . $shop_items_catalog_image_small, CHMOD_FILE);

								if ($exp == 'jpg' || $exp == 'jpeg')
								{
									if (!$Image->ResizeToFileEx($uploaddir . $shop_items_catalog_image_small, to_int($row_shop['shop_image_small_max_width']), to_int($row_shop['shop_image_small_max_height']), $uploaddir .
										$shop_items_catalog_image_small, JPG_QUALITY))
									{
										show_error_message($GLOBALS['MSG_shops']['error_setup_picture']);
									}

									/* Устанавливаем права доступа к файлу */
									@ chmod($uploaddir . $shop_items_catalog_image_small, CHMOD_FILE);

									/* Если не передан флаг ватермарка для маленькой картинки - то копируем ее
									до наложения ватермарка */
									/*if (!$row_shop['shop_watermark_default_use_small'])
									{
									//										 Делаем уменьшенный файл
									if (!$Image->ResizeToFileEx($uploaddir.$shop_items_catalog_image_small,
									to_int($row_shop['shop_image_small_max_width']),
									to_int($row_shop['shop_image_small_max_height']),
									$uploaddir."small_".$shop_items_catalog_image_small, JPG_QUALITY))
									{
									show_error_message($GLOBALS['MSG_shops']['error_setup_picture']);
									}
									
									//										 Устанавливаем права доступа к файлу малой картинки
									@chmod($uploaddir."small_".$shop_items_catalog_image_small, CHMOD_FILE);
									}*/

									/* Накладываем Watermark */
									/*if ($row_shop['shop_watermark_default_use_small'])
									{
									//										 Определяем путь к watermark'у
									$watermark_uploaddir = $shop->CreateDirectory($shop_shops_id, "watermarks");
									
									//										 Получаем путь к watermark файлу
									if ($row_shop && $watermark_uploaddir)
									{
									$watermark_file = to_str($row_shop['shop_watermark_file']);
									}
									else
									{
									$watermark_file = '';
									}
									
									//										 Если указан ватермарк для магазина
									if (!empty($watermark_file))
									{
									$watermark_file = $watermark_uploaddir.$watermark_file;
									$result = $Image->CopyImgWithWatermark($uploaddir.$shop_items_catalog_image_small,
									$uploaddir.$shop_items_catalog_image_small,
									$watermark_file,
									to_str($row_shop['shop_watermark_default_position_x']),
									to_str($row_shop['shop_watermark_default_position_y']));
									
									if (!$result)
									{
									show_error_message($GLOBALS['MSG_shops']['items_add_form_image_watermark_apply_error']);
									}
									}
									}*/

									/* Если  передан флаг ватермарка для маленькой картинки - то
									копируем ее после наложения ватермарка */
									if ($row_shop['shop_watermark_default_use_small'])
									{
										/* Делаем уменьшенный файл */
										if (!$Image->ResizeToFileEx($uploaddir . $shop_items_catalog_image_small, to_int($row_shop['shop_image_small_max_width']), to_int($row_shop['shop_image_small_max_height']), $uploaddir .
											$shop_items_catalog_image_small, JPG_QUALITY))
										{
											show_error_message($GLOBALS['MSG_shops']['error_setup_picture']);
										}

										/* Устанавливаем права доступа к файлу малой картинки */
										@ chmod($uploaddir . $shop_items_catalog_image_small, CHMOD_FILE);
									}
								}
								elseif ($exp == 'gif' || $exp = 'png')
								{
									// Копируем оригинал как малую картинку
									$fname = $uploaddir . $shop_items_catalog_image_small;

									// Получаем содержимое оригинала
									$filecontent_orig = $File->GetFileContent($uploaddir . $shop_items_catalog_image_small);
									if ($filecontent_orig)
									{
										if ($fp_img = fopen($fname, 'w'))
										{
											fwrite($fp_img, $filecontent_orig);
											fclose($fp_img);
											@ chmod($fname, CHMOD_FILE);
										}
									}
								}

								/* Обновляем картинку для элемнта, если не пустое имя картинки, или указано обновлять картинки на пустые */
								if (!empty ($shop_items_catalog_image_small) || ($import_price_list_action_delete_image && empty ($shop_items_catalog_image_small)))
								{
									// Обновляем информацию об изображении для товара.
									$shop->UpdateImageForItem($shop_shops_id, $catalog_item_id, '', $shop_items_catalog_image_small);
								}
							}
							else
							{
								$message_about_file .= "<p>\''{$GLOBALS['MSG_shops']['error_criate_write_file']}'\'.$uploaddir.$shop_items_catalog_image_small</p>";
							}
						}
						else
						{
							show_error_message('Ошибка загрузки файла ' . $filecontent);
						}
					}

					/* Разбираем массив для дополнительных свойств */
					if (count($query_field_array1) > 0 && count($query_field_value_array1) > 0)
					{
						// В цикле обрабатываем значения полей и формируем массив для передачи в метод
						for ($i = 0; $i < count($query_field_array1); $i++)
						{
							if (isset ($query_field_array1[$i]) and isset ($query_field_value_array1[$i]))
							{
								$param_prop = array ();
								// id вставленного товара в массив
								$param_prop['shop_items_catalog_item_id'] = $catalog_item_id;
								$param_prop['shop_list_of_properties_id'] = $query_field_array1[$i];
								$param_prop['shop_properties_items_value'] = $query_field_value_array1[$i];

								// Выбираем информацию о данном дополнительном свойстве для товара
								$row_prop = $shop->GetPropretyOfItems($param_prop['shop_list_of_properties_id']);
								if ($row_prop)
								{
									$properties_type = $row_prop['shop_list_of_properties_type'];

									// Проверяем, если дополнительное свойство типа файл, данный файл необходимо загрузить
									if ($properties_type == 1)
									{
										// Значение поля shop_properties_items_value переносим в поле shop_properties_items_file, т.к. в поле shop_properties_items_value хранится оригинальное имя файла
										$param_prop['shop_properties_items_file'] = $param_prop['shop_properties_items_value'];

										// Затираем данные
										$param_prop['shop_properties_items_value'] = '';

										/* Файл начинается с HTTP или проверяем наличие файла в ФС */
										if (strpos(strtolower($param_prop['shop_properties_items_file']), 'http://') === 0 || is_file($images_path . $param_prop['shop_properties_items_file']))
										{
											// Файл из сети
											if (strpos(strtolower($param_prop['shop_properties_items_file']), 'http://') === 0)
											{
												// Загружаем файл с внешнего сервера
												$filecontent = @ file_get_contents($param_prop['shop_properties_items_file']);
											}
											else
											{
												$filecontent = $File->GetFileContent($images_path . $param_prop['shop_properties_items_file']);
											}

											if ($filecontent)
											{
												/* Создаем директорию для хранения файла */
												$uploaddir = $shop->CreateDirectory($shop_shops_id, "item_catalog_$catalog_item_id");

												/* Определяем расширение файла */
												$exp = $kernel->GetExtension($param_prop['shop_properties_items_file']);

												/* Имя нового файла */
												$shop_property_file = 'shop_property_file_' . $catalog_item_id . "_" . $param_prop['shop_list_of_properties_id'] . '.' . $exp;

												if ($fp_prop = fopen($uploaddir . $shop_property_file, 'w'))
												{
													fwrite($fp_prop, $filecontent);
													fclose($fp_prop);

													/* Устанавливаем права доступа к файлу */
													@ chmod($uploaddir . $shop_property_file, CHMOD_FILE);
													$param_prop['shop_properties_items_file'] = $shop_property_file;
												}

												/* Проверяем является ли данный файл - файлом изображения с расширением jpg */
												if ($exp == 'jpg' || $exp == 'jpeg')
												{
													$fname = $uploaddir . $shop_property_file;
													$fname_small = $uploaddir . 'small_' . $shop_property_file;

													$param_prop['shop_properties_items_file_small'] = 'small_' . $shop_property_file;

													/* Уменьшаем большую картинку до максимального размера */
													if (!$Image->ResizeToFileEx($fname, to_int($row_shop['shop_image_small_max_width']), to_int($row_shop['shop_image_small_max_height']), $fname_small, JPG_QUALITY))
													{
														show_error_message($GLOBALS['MSG_shops']['error_setup_picture']);
													}

													/* Устанавливаем права доступа к файлу */
													@ chmod($fname, CHMOD_FILE);

													/* Если не передан флаг ватермарка для маленькой картинки - то копируем ее
													до наложения ватермарка */
													if ($row_shop['shop_watermark_default_use_small'])
													{
														/* Уменьшаем маленькую картинку до максимального размера */
														if (!$Image->ResizeToFileEx($fname, to_int($row_shop['shop_image_small_max_width']), to_int($row_shop['shop_image_small_max_height']), $fname_small, JPG_QUALITY))
														{
															show_error_message($GLOBALS['MSG_shops']['error_setup_picture']);
														}

														/* Устанавливаем права доступа к файлу */
														@ chmod($fname_small, CHMOD_FILE);
													}

													/* Накладываем Watermark */
													if ($row_shop['shop_watermark_default_use_big'])
													{
														/* Определяем путь к watermark'у */
														$watermark_uploaddir = $shop->CreateDirectory($shop_shops_id, "watermarks");

														if ($watermark_uploaddir)
														{
															if ($row_shop)
															{
																$watermark_file = to_str($row_shop['shop_watermark_file']);
															}
															else
															{
																$watermark_file = '';
															}

															/* Если указан ватермарк для магазина */
															if (!empty ($watermark_file))
															{
																$watermark_file = $watermark_uploaddir . $watermark_file;
																$result = $Image->CopyImgWithWatermark($fname, $fname, $watermark_file, to_str($row_shop["shop_watermark_default_position_x"]), to_str($row_shop["shop_watermark_default_position_y"]));

																if (!$result)
																{
																	show_error_message($GLOBALS['MSG_shops']['items_add_form_image_watermark_apply_error']);
																}
															}
														}
													}

													/* Если  передан флаг ватермарка для маленькой картинки - то копируем ее после наложения ватермарка */
													if ($row_shop['shop_watermark_default_use_small'])
													{
														if (!$Image->ResizeToFileEx($fname, to_int($row_shop['shop_image_small_max_width']), to_int($row_shop['shop_image_small_max_height']), $fname_small, JPG_QUALITY))
														{
															show_error_message($GLOBALS['MSG_shops']['error_setup_picture']);
														}

														/* Устанавливаем права доступа к файлу малой картинки */
														@ chmod($fname_small, CHMOD_FILE);
													}
												}
											}
											// Не смогли скопировать файл - дополнительное свойство не пишем
											else
											{
												$param_prop = array ();
											}
										}
										// Файла нет - дополнительное свойство не пишем
										else
										{
											$param_prop = array ();
										}
									}
								}

								// Осуществляем вставку значения дополнительного свойства для товара
								$shop->InsertPropertiesItem($param_prop);
							}
						}
					} // окончания цикла по обработке массива для дополнительных свойствах

					// Разбираем массив для цен товара
					if (count($query_field_array2) > 0 && count($query_field_value_array2) > 0)
					{
						// В цикле обрабатываем значения полей и формируем массив для передачи в метод
						for ($i = 0; $i < count($query_field_array2); $i++)
						{
							$param_price = array ();

							// id вставленного товара в массив
							$param_price['shop_items_catalog_item_id'] = $catalog_item_id;
							$param_price['shop_list_of_prices_id'] = $query_field_array2[$i];
							$param_price['shop_prices_to_item_value'] = $query_field_value_array2[$i];

							// Проверяем, что нам необходимо cделать с уже существующими дополнительными свойствами
							if ($import_price_action_items != 0) // Старые данные не удалялись
							{
								// При необходимости обновляем данные
								if ($import_price_action_items == 1)
								{
									$shop->UpdateItemPrice($param_price);
								}
							}
							else
							{
								// Осуществляем вставку значения дополнительного свойства для товара
								$shop->InsertPricesToItem($param_price);
							}
						} // end for
					} // окончания цикла по обработке массива для дополнительных свойствах

				} // окончание условия наличия вставленного (обновленного товара)

				unset ($param['image']);

			}
			// Наращиваем кол-во итераций
			$it++;
			// Вычисляем сколько времени было потрачено на выполнение итераций
			$current_work_time = $kernel->getmicrotime() - $begin_time;
			// Вычисляем сколько мы в среднем тратим на одну итерацию
			$time_on_iteration = $current_work_time / $it;

			// Сравниваем кол-во потраченного времени (в среднем) с максимальным временем выполнения
			if (($time_on_iteration * $it +3) > $import_price_max_time)
			{
				// Прерываем цикл - делаем перезагрузку страницы

				// Помещаем в массив остальные необходимые параметры
				$get_param = $param_array;

				// Запоминаем текущую позицию курсора в файле
				$get_param['pointer_position'] = ftell($fp);

				// Количество обработанных элементов
				$get_param['count_insert_item'] = $count_insert_item;
				$get_param['count_update_item'] = $count_update_item;
				$get_param['count_dir'] = $count_dir;

				// Закрываем файл
				@ fclose($fp);

				// Сериализуем массив
				$get_param_serialize = urlencode(serialize($get_param));

				/* Такое же сообщение есть ниже */
				show_message($GLOBALS['MSG_shops']['download_elements'] . ' ' . $GLOBALS['MSG_shops']['count_insert_item'] . ' &#151; <b>' . $count_insert_item . '</b>. ' .
				$GLOBALS['MSG_shops']['count_update_item'] . ' &#151; <b>' . $count_update_item . '</b>. ' .
				$GLOBALS['MSG_shops']['create_catalog'] . ' &#151; <b>' . $count_dir . "</b>.");

				// Перезагружаем страницу
				$location = addslashes("shop.php?action=import_data&shop_shops_id=" . $shop_shops_id . "&get_param=" . $get_param_serialize);
				/* Выводим сообщение о том, что следущий этап произойдет через 1 секунду */
?>
				<?php echo $GLOBALS['MSG_shops']['msg_download_price'];?>
				
				<script language="JavaScript" type="text/javascript">
				function set_location()
				{
					var cmsrequest = '/admin/shop/shop.php?action=import_data&shop_shops_id=<?php echo $shop_shops_id?>&get_param=<?php echo addslashes($get_param_serialize)?>';

					// Отправляем запрос backend-у
					sendRequest(cmsrequest, 'post', callbackfunction_DoLoadAjax);

					<?php


				/*=$admin_forms_fields->GetOnClickCallDoLoadAjax('/admin/shop/shop.php', "&shop_shops_id=".$shop_shops_id."&get_param=".$get_param_serialize, 0, 'import_data')
				*/
?>
				}
				setTimeout('set_location()', 3000);
				</script>
				<?php


				return;

				//do_html_footer_admin();
				//exit;
			}
		} // окончание обработки файла

		// Закрываем файл
		@ fclose($fp);

		echo $GLOBALS['MSG_shops']['count_insert_item'] . ' &#151; <b>' . $count_insert_item . '</b><br/>';
		echo $GLOBALS['MSG_shops']['count_update_item'] . ' &#151; <b>' . $count_update_item . '</b><br/>';
		echo $GLOBALS['MSG_shops']['create_catalog'] . ' &#151; <b>' . $count_dir . '</b><br/>';
	}
	else
	{
		show_error_message($GLOBALS['MSG_shops']['error_open_bakfile']);
	}

	@ unlink($floadfile);
}
else
{
	show_error_message($GLOBALS['MSG_shops']['error_open_bakfile']);
}
//*/
return true;
?>