<?php

/**
 * Система управления сайтом HostCMS v. 5.xx
 * Copyright © 2005-2010 ООО "Хостмэйк" (Hostmake LLC), http://www.hostcms.ru
 *
 * Обработчик импорта данных из csv-файлов.
 *
 * Файл: /admin/shop/action/import_price_list_load_data_csv.php
 *
 * @author Hostmake LLC
 * @version 5.x
 */

if (class_exists('typograph'))
{
	$typograph = & singleton('typograph');
}

$DateClass = & singleton('DateClass');

$DataBase = & singleton('DataBase');

$warehouse = & singleton('warehouse');

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

// Получаем информацию о магазине
$shop_row = $shop->GetShop($shop_shops_id, array('cache_off' => true));

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

$array_inserted_groups_id = array();
$array_inserted_items_id = array();
$array_updated_items_id = array();

$not_create_small_image = false;

// Получаем из базы идентификаторы всех групп и товаров, чтобы знать сколько мы добавили новых/обновили старых
$sql = "SELECT shop_groups_id FROM `shop_groups_table` WHERE `shop_shops_id`='$shop_shops_id'";

$groups_data_res = $DataBase->query($sql);

if($groups_data_res)
{
	while($groups_data_row = mysql_fetch_assoc($groups_data_res))
	{
		$array_inserted_groups_id[] = $groups_data_row['shop_groups_id'];
	}
}

$sql = "SELECT shop_items_catalog_item_id FROM `shop_items_catalog_table` WHERE `shop_shops_id`='$shop_shops_id'";

$items_data_res = $DataBase->query($sql);

if($items_data_res)
{
	while($items_data_row = mysql_fetch_assoc($items_data_res))
	{
		$array_inserted_items_id[] = $items_data_row['shop_items_catalog_item_id'];
	}
}

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

$admin_forms_fields = new admin_forms_fields();

if(!defined("AUTO_IMPORT"))
{
	$onclick_ext = 'onclick="'.$admin_forms_fields->GetOnClickCallDoLoadAjax('/admin/shop/shop.php', "&shop_shops_id=$shop_shops_id", 65, 'load_data').'"';
}
else
{
	$onclick_ext = '';
}

?>
<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_shops_id=$shop_shops_id", 65, 'load_data')?>"
	<?php echo $onclick_ext?>><?php echo $GLOBALS['MSG_shops']['show_shop']?>
&quot;<?php echo $shop_name?>&quot;</a></p>
<?php

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

// Проверяем каким образом нам необходимо принять данные
if (!isset ($_REQUEST['get_param']))
{
	// Данные передаются через POST
	$param_array = $_POST;

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


$shop_groups_parent_id = to_int($param_array['import_price_parent_group_id']);

// Дополнительный путь для изображений
$import_price_list_images_path = $param_array['import_price_list_images_path'];

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

$import_price_action_delete_image = to_int($param_array['import_price_action_delete_image']);

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

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

// Массив соответствий
$conformity_array = array();

// Разбираем переданный нам массив соответствий полей CSV полям магазина
foreach($param_array as $field => $value)
{
	if(mb_strpos($field, "field") === 0)
	{
		$conformity_array[] = $value;
	}
}

// Текущая группа магазина равна группе указаной в форме импорта
$current_group_id = $shop_groups_parent_id;

// Текущий товар магазина равен 0
$current_item_id = 0;

$alternative_file_pointer = to_str($param_array['alternative_file_pointer']);

if($alternative_file_pointer != '' && $param_array['file_name'] == '')
{
	$param_array['file_name'] = CMS_FOLDER . $alternative_file_pointer;
}

$fp = fopen($param_array['file_name'], "rb");

if (isset ($param_array['pointer_position']))
{
	// Переводим курсор на необходимую позицию
	fseek($fp, to_int($param_array['pointer_position']));
}
else
{
	// Если первая строка - имена полей, пропускаем ее
	if(to_int($param_array['import_price_name_field_f']))
	{
		fgetcsv($fp, 0, $param_array['import_price_separator_value'], $param_array['import_price_stop_value']);
	}
}

// Инициализируем массив с данными импорта текущего товара
$current_item_data_array = array();

// Использование водяного знака для большого изображения
$shop_watermark_default_use_big = $shop_row['shop_watermark_default_use_big'];

// Максимальная ширина файла большого изображения для группы товаров
$shop_image_big_max_width_group = $shop_row['shop_image_big_max_width_group'];

// Максимальная высота файла большого изображения для группы товаров
$shop_image_big_max_height_group = $shop_row['shop_image_big_max_height_group'];

// Использование водяного знака для малого изображения
$shop_watermark_default_use_small = $shop_row['shop_watermark_default_use_small'];

// Позиция водяного знака по оси Х
$shop_watermark_default_position_x = $shop_row['shop_watermark_default_position_x'];

// Позиция водяного знака по оси У
$shop_watermark_default_position_y = $shop_row['shop_watermark_default_position_y'];

// Максимальная ширина файла малого изображения для группы товаров
$shop_image_small_max_width_group = $shop_row['shop_image_small_max_width_group'];

// Максимальная высота файла малого изображения для группы товаров
$shop_image_small_max_height_group = $shop_row['shop_image_small_max_height_group'];

// Параметры картинок для товара
$shop_image_small_max_width = $shop_row['shop_image_small_max_width'];

$shop_image_big_max_width = $shop_row['shop_image_big_max_width'];

$shop_image_small_max_height = $shop_row['shop_image_small_max_height'];

$shop_image_big_max_height = $shop_row['shop_image_big_max_height'];

$item_warehouses_rest = array();

$external_property_array = array();

$external_property_small_array = array();

$additional_groups_for_item = array();

$special_price_array = array();

// Массив с данными об электронном товаре
$eItemsDataArray = array();

// Артикул основного товара для сопутствующего
$related_item_mark = false;

// Необходимо определить значение константы UPLOADDIR, если константа не определена, нужно искать нужное значение в текущем сайте
if (!defined('UPLOADDIR'))
{
	$site_row = $site->GetSite($shop_row['site_id']);

	$uploaddir = $site_row['site_uploaddir'];
}
else
{
	$uploaddir = UPLOADDIR;
}

// Формируем путь к файлу водяного знака
$watermark_file = CMS_FOLDER . $uploaddir . "shop_" . $shop_shops_id . "/watermarks/" . $shop_row['shop_watermark_file'];

if(!is_file($watermark_file))
{
	$watermark_file = '';
}

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

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

$count_current_iteration = 0;

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


$search_event_indexation = to_bool($param_array['search_event_indexation']);


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

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

$kernel = & singleton('kernel');

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

mb_internal_encoding("UTF-8");

// Цикл по строкам CSV-файла
while(!feof($fp))
{
	// Если импорт не в UTF-8
	if (strtoupper($_REQUEST['import_price_encoding']) != 'UTF-8'
	&& defined('ALT_SITE_LOCALE'))
	{
		setlocale(LC_ALL, ALT_SITE_LOCALE);
	}

	$current_csv_line_array = fgetcsv($fp, 0, $param_array['import_price_separator_value'], $param_array['import_price_stop_value']);

	setlocale(LC_ALL, SITE_LOCAL);
	// Локаль для чисел
	setlocale(LC_NUMERIC, 'POSIX');

	// Перекодируем
	$current_csv_line_array = CorrectToEncoding($current_csv_line_array, 'UTF-8', $_REQUEST['import_price_encoding']);

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

	if($current_csv_line_array)
	{
		foreach($current_csv_line_array as $key => $data)
		{
			// Убираем лишние пробелы
			$data = trim($data);

			// Не пропускаем пустые поля, кроме полей изображений для товара, т.к. у них особая обработка ниже
			if(isset($conformity_array[$key]) &&
			($data != ''
			|| $conformity_array[$key] == 'shop_items_catalog_image'
			|| $conformity_array[$key] == 'shop_items_catalog_small_image'))
			{
				switch($conformity_array[$key])
				{
					// Поля группы товаров
					case 'shop_groups_id':

					// Передан идентификатор группы товаров
					if(to_int($data) > 0)
					{
						// Валидный ID, проверяем, есть ли группа с таким ID в базе данных
						if($shop->GetGroup($data, array('cache_off' => true)))
						{
							// Такая группа есть, делаем ее текущей
							$current_group_id = $data;
						}
					}
					break;

					case 'shop_groups_value':

					// Нам передали название группы товаров, проверяем, передали ли нам CML_ID родительской группы товаров
					if(($need_key = array_search("shop_shop_groups_parent_cml_id", $conformity_array)) !== false
					&& to_str($current_csv_line_array[$need_key]) != '')
					{
						if($current_csv_line_array[$need_key] == 'ID00000000')
						{
							// Группа корневая, данных о ней в базе нет, прописываем вручную
							$group_row = array('shop_groups_id' => 0);
						}
						else
						{
							// Передали, проверяем наличие группы с таким CML_ID в магазине
							$group_row = $shop->GetGroupIdByCmlId($current_csv_line_array[$need_key], $shop_shops_id);

							if($group_row === false)
							{
								$group_row = array('shop_groups_id' => 0);
							}
						}

						// Родительская группа обнаружена, проверяем, есть ли в данной родительской группе группа с переданным нам именем
						$group_with_value_row = $shop->GetGroupWithValue($data, $group_row['shop_groups_id'], $shop_shops_id);

						if($group_with_value_row)
						{
							// Группа обнаружена, делаем ее текущей
							$current_group_id = $group_with_value_row['shop_groups_id'];
						}
						else
						{
							// Группа не обнаружена, вставляем ее и делаем текущей
							$current_group_id = $shop->InsertGroup(array('shop_groups_name' => $data, 'shop_groups_parent_id' => $group_row['shop_groups_id'], 'shop_shops_id' => $shop_shops_id));

							if(!in_array($current_group_id, $array_inserted_groups_id))
							{
								$count_dir++;
								$array_inserted_groups_id[] = $current_group_id;
							}
						}
					}
					else
					{
						if($data != '')
						{
							// Проверяем, есть ли группа с переданным нам именем в текущей группе
							$group_with_value_row = $shop->GetGroupWithValue($data, $current_group_id, $shop_shops_id);

							if($group_with_value_row)
							{
								// Такая группа существует, делаем ее текущей
								$current_group_id = $group_with_value_row['shop_groups_id'];
							}
							else
							{
								// Такая группа не существует, добавляем ее и делаем текущей
								$current_group_id = $shop->InsertGroup(array('shop_groups_name' => $data, 'shop_groups_parent_id' => $current_group_id, 'shop_shops_id' => $shop_shops_id));
								if(!in_array($current_group_id, $array_inserted_groups_id))
								{
									$count_dir++;
									$array_inserted_groups_id[] = $current_group_id;
								}
							}
						}
					}


					break;

					case 'shop_groups_path':
					// Необходимо проверить, существует ли текущая группа группа в магазине и получить её родительскую группу
					$current_group_row = $shop->GetGroup($current_group_id, array (
					'cache_off' => true
					));

					if($current_group_row && $data != '')
					{
						// Передан путь для группы, проверяем существует ли в магазине группа с таким путем
						$group_row = $shop->GetGroupWithPath($data, $current_group_row['shop_groups_parent_id'], $shop_shops_id);

						if($group_row)
						{
							// Группа с таким путем существует, делаем ее текущей
							$current_group_id = $group_row['shop_groups_id'];
						}
						else
						{
							// Группы с таким путем не существует, обновляем путь для текущей группы
							$shop->InsertGroup(array('group_id' => $current_group_id, 'shop_groups_path' => $data, 'shop_shops_id' => $shop_shops_id));
						}
					}

					break;

					case 'shop_groups_order':

					// Передан порядок сортировки группы, необходимо обновить данные в БД
					$shop->InsertGroup(array('group_id' => $current_group_id, 'shop_groups_order' => $data, 'shop_shops_id' => $shop_shops_id));

					break;

					case 'shop_groups_description':

					// Передано описание группы товаров, необходимо обновить описание текущей группы товаров
					$shop->InsertGroup(array('group_id' => $current_group_id, 'shop_groups_description' => $data, 'shop_shops_id' => $shop_shops_id));

					break;

					case 'shop_groups_seo_title':

					// Передано SEO Title для группы, обновляем информацию для текущей группы
					$shop->InsertGroup(array('group_id' => $current_group_id, 'shop_groups_seo_title' => $data, 'shop_shops_id' => $shop_shops_id));

					break;

					case 'shop_groups_seo_description':

					// Передано SEO Description для группы, обновляем информацию для текущей группы
					$shop->InsertGroup(array('group_id' => $current_group_id, 'shop_groups_seo_description' => $data, 'shop_shops_id' => $shop_shops_id));

					break;

					case 'shop_groups_seo_keywords':

					// Передано SEO Keywords для группы, обновляем информацию для текущей группы
					$shop->InsertGroup(array('group_id' => $current_group_id, 'shop_groups_seo_keywords' => $data, 'shop_shops_id' => $shop_shops_id));

					break;

					case 'shop_groups_activity':

					// Передана активность для группы, обновляем информацию для текущей группы
					$shop->InsertGroup(array('group_id' => $current_group_id, 'shop_groups_activity' => $data, 'shop_shops_id' => $shop_shops_id));

					break;


					// Большое изображение группы товаров
					case 'shop_groups_image':

					if($current_group_id)
					{
							// Передана большая картинка для группы товаров

							$admin_load_files_array = array();

							// Отдельно для метода PathMkdiк, ибо он не любит CMS_FOLDER
							$group_images_dir_for_mkdir_special = $shop->GetGroupDir($current_group_id);

							// Формируем путь к каталогу изображений группы товаров
							$group_images_dir = CMS_FOLDER . $group_images_dir_for_mkdir_special;

							// Формируем путь к файлу источнику, если таковой существует
							$big_image_file_source = $import_price_list_images_path . $data;

							if(mb_strpos(mb_strtolower($big_image_file_source), "http://") === 0)
							{
								// Файл из HTTP
								$big_file_content = file_get_contents($big_image_file_source);
							}
							else
							{
								$big_image_file_source = CMS_FOLDER . $big_image_file_source;

								// Локальный файл, не нужно брать его содержимое.
								$big_file_content = false;
							}

							if(exif_imagetype($big_image_file_source) === false)
							{
								$not_create_small_image = true;
							}
							else
							{
								$not_create_small_image = false;
							}

							if(($big_file_content === false
							&& is_file($big_image_file_source))
							|| ($big_file_content !== false))
							{
								// Получаем оригинальное имя файла большого изображения
								$original_file_name_big_image = basename($big_image_file_source);

								// Формируем путь к целевому файлу, если в настройках магазина сказано изменять имена загружаемых файлов, формируем имя вручную, иначе, оставляем оригинальное имя
								if(to_int($shop_row['shop_shops_file_name_conversion']) == 1)
								{
									// Стоит галочка "Изменять названия загружаемых файлов"
									$big_image_extension = mb_strtolower($kernel->GetExtension($data));
									$big_image_file_target = $group_images_dir . 'shop_group_image' . $current_group_id . '.' . $big_image_extension;
									$big_image_group_name = 'shop_group_image' . $current_group_id . '.' . $big_image_extension;

									// Флаг "Нужно конвертировать" используется далее
									$need_to_convert = true;
								}
								else
								{
									// Галочка "Изменять названия загружаемых файлов" не стоит
									$big_image_file_target = $group_images_dir . basename($data);
									$big_image_group_name = basename($data);
									$need_to_convert = false;
								}

								// Нам передали данные, можно создавать папку

								// Создаем каталог изображений группы товаров, если его не существует
								$kernel->PathMkdir($group_images_dir_for_mkdir_special);

								// Формируем массив параметров метода AdminFormFiles
								$admin_load_files_array = array();

								// Параметры большого изображения
								$admin_load_files_array['max_width_big_image'] = $shop_image_big_max_width_group;
								$admin_load_files_array['max_height_big_image'] = $shop_image_big_max_height_group;
								$admin_load_files_array['isset_big_image'] = 1;
								$admin_load_files_array['path_source_big_image'] = $big_image_file_source;
								$admin_load_files_array['original_file_name_big_image'] = $original_file_name_big_image;
								$admin_load_files_array['path_target_big_image'] = $big_image_file_target;

								// Параметры малого изображения
								$admin_load_files_array['max_width_small_image'] = $shop_image_small_max_width_group;
								$admin_load_files_array['max_height_small_image'] = $shop_image_small_max_height_group;

								// Путь к файлу водяного знака
								$admin_load_files_array['watermark_file_path'] = $watermark_file;

								// Использование водяного знака в изображениях
								$admin_load_files_array['used_watermark_big_image'] = $shop_watermark_default_use_big;
								$admin_load_files_array['used_watermark_small_image'] = $shop_watermark_default_use_small;

								//  Координаты водяного знака
								$admin_load_files_array['watermark_position_x'] = $shop_watermark_default_position_x;
								$admin_load_files_array['watermark_position_y'] = $shop_watermark_default_position_y;


								if(!$not_create_small_image)
								{
									// Проверяем, передан ли нам файл малого изображения
									if(in_array("shop_groups_small_image", $conformity_array))
									{
										// Малое изображение передано, не нужно создавать малое из большого
										$admin_load_files_array['use_big_image'] = 0;
									}
									else
									{
										// Малое изображение не передано, создаем его из большого
										$admin_load_files_array['use_big_image'] = 1;

										// Источник малого изображения равен, в данном случае, источнику большого изображения
										$admin_load_files_array['path_source_small_image'] = $admin_load_files_array['path_source_big_image'];

										// Нужно генерировать имена
										if($need_to_convert)
										{
											// Определяем расширение файла
											$small_image_extension = mb_strtolower($kernel->GetExtension($data));
											$small_image_file_target = $group_images_dir . 'small_shop_group_image' . $current_group_id . '.' . $small_image_extension;
											$small_image_group_name = 'small_shop_group_image' . $current_group_id . '.' . $small_image_extension;
										}
										// Не нужно генерировать имена
										else
										{
											// В данном случае даже если сказано сохранять оригинальные имена файлов необходимо добавить к имени малого файла приставку "small_", ибо малое создается из большого и имеет заведомо такое же название что и файл большого изображения
											$small_image_file_target = $group_images_dir . "small_" . $original_file_name_big_image;
											$small_image_group_name = "small_" . $original_file_name_big_image;
										}

										// Формируем целевое имя файла малого изображения
										$admin_load_files_array['path_target_small_image'] = $small_image_file_target;

										// Оригинальное имя файла малого изображения равно оригинальному имени файла большого изображения
										$admin_load_files_array['original_file_name_small_image'] = $small_image_file_target;
									}
								}
								else
								{
									$admin_load_files_array['use_big_image'] = 0;
									$admin_load_files_array['path_source_small_image'] = '';
									$admin_load_files_array['path_target_small_image'] = '';
									$admin_load_files_array['original_file_name_small_image'] = '';
									unset($not_create_small_image);
								}

								// Если файл из HTTP, необходимо скопировать его в локальный временный файл для работы с ним, каталог для файла тот же что и для конечных файлов
								if($big_file_content)
								{
									// Получаем имя временного файла
									$big_image_http_temp_file = tempnam($group_images_dir, '');

									// Переопределяем пути к источникам изображений
									$admin_load_files_array['path_source_big_image'] = $big_image_http_temp_file;

									if(isset($admin_load_files_array['path_source_small_image']))
									{
										$admin_load_files_array['path_source_small_image'] = $big_image_http_temp_file;
									}

									// Пишем данные во временный файл
									$f_p = fopen($big_image_http_temp_file, "w");

									if($f_p)
									{
										fwrite($f_p, $big_file_content);
										fclose($f_p);
									}

									$big_file_content = NULL;
								}

								$admin_load_files_array['preserve_aspect_ratio_for_big_image'] = $shop_row['shop_shops_default_save_proportions'];
								$admin_load_files_array['preserve_aspect_ratio_for_small_image'] = $shop_row['shop_shops_default_save_proportions'];

								if($admin_load_files_array['path_source_big_image'] != $admin_load_files_array['path_target_big_image'])
								{
									// Необходимо проверить, есть ли у импортируемой нами группы старые файлы изображений, если они есть их нужно удалить
									$current_group_old_data_row = $shop->GetGroup($current_group_id, array('cache_off' => true));

									$old_big_image_full_path = $group_images_dir . $current_group_old_data_row['shop_groups_image'];
									$old_small_image_full_path = $group_images_dir . $current_group_old_data_row['shop_groups_small_image'];

									if($current_group_old_data_row['shop_groups_image'] != '')
									{
										// Большое изображение существует, необходимо удалить его
										if(is_file($old_big_image_full_path))
										{
											@unlink($old_big_image_full_path);
										}
									}

									if($current_group_old_data_row['shop_groups_small_image'] != '')
									{
										// Малое изображение существует, необходимо удалить его
										if(is_file($old_small_image_full_path))
										{
											@unlink($old_small_image_full_path);
										}
									}


									// Грузим файлы
									$result_download_files = $kernel->AdminLoadFiles($admin_load_files_array);
								}
								else
								{
									$result_download_files = array('big_image' => false, 'small_image' => false);
								}

								// Нужно удалить временный файл
								if(isset($big_image_http_temp_file))
								{
									if(is_file($big_image_http_temp_file))
									{
										@unlink($big_image_http_temp_file);
									}
								}

								if ($result_download_files['big_image'])
								{
									// Если операция завершилась успешно необходимо получить сведения о размерах изображения
									if(file_exists($big_image_file_target) && filesize($big_image_file_target))
									{
										$group_big_image_sizes = getimagesize($big_image_file_target);

										$group_big_image_width = to_int($group_big_image_sizes[0]);
										$group_big_image_height = to_int($group_big_image_sizes[1]);
									}
									else
									{
										$group_big_image_width = $shop_image_big_max_width_group;

										$group_big_image_height = $shop_image_big_max_height_group;
									}

									// Операции с файлами успешно завершены, необходимо обновить данные в базе
									$query = "UPDATE `shop_groups_table` SET `shop_groups_image`='$big_image_group_name', `shop_groups_big_image_width`='$group_big_image_width', `shop_groups_big_image_height`='$group_big_image_height' WHERE `shop_groups_id`='$current_group_id'";

									$DataBase->query($query);
								}

								if ($result_download_files['small_image'] && isset($small_image_group_name))
								{
									// Если операция завершилась успешно необходимо получить сведения о размерах изображения
									if(file_exists($small_image_file_target) && filesize($small_image_file_target))
									{
										$group_small_image_sizes = getimagesize($small_image_file_target);

										$group_small_image_width = to_int($group_small_image_sizes[0]);
										$group_small_image_height = to_int($group_small_image_sizes[1]);
									}
									else
									{
										$group_small_image_width = $shop_image_small_max_width_group;

										$group_small_image_height = $shop_image_small_max_height_group;
									}

									// Операции с файлами успешно завершены, необходимо обновить данные в базе
									$query = "UPDATE `shop_groups_table` SET `shop_groups_small_image`='$small_image_group_name', `shop_groups_small_image_width`='$group_small_image_width', `shop_groups_small_image_height`='$group_small_image_height' WHERE `shop_groups_id`='$current_group_id'";

									$DataBase->query($query);
								}
							}


					}

					break;

					case 'shop_groups_small_image':


					// Передан файл малого изображения для группы товаров
					if ($current_group_id)
					{
						$admin_load_files_array = array();


						// Отдельно для метода PathMkdir, ибо он не любит CMS_FOLDER
						$group_images_dir_for_mkdir_special = $shop->GetGroupDir($current_group_id);


						// Формируем путь к каталогу изображений группы товаров
						$group_images_dir = CMS_FOLDER . $group_images_dir_for_mkdir_special;


						// Формируем путь к файлу источнику, если таковой существует
						$small_image_file_source = $import_price_list_images_path . $data;


						if (mb_strpos(mb_strtolower($small_image_file_source), "http://") === 0)
						{
							// Файл из HTTP
							$small_file_content = file_get_contents($small_image_file_source);
						}
						else
						{
							$small_image_file_source = CMS_FOLDER . $small_image_file_source;

							// Локальный файл, не нужно брать его содержимое.
							$small_file_content = false;
						}

						if(($small_file_content === false
						&& is_file($small_image_file_source))
						|| $small_file_content !== false)
						{
							// Получаем оригинальное имя файла большого изображения
							$original_file_name_small_image = basename($small_image_file_source);

							// Формируем путь к целевому файлу, если в настройках магазина сказано изменять имена загружаемых файлов, формируем имя вручную, иначе, оставляем оригинальное имя
							if (to_int($shop_row['shop_shops_file_name_conversion']) == 1)
							{
								// Стоит галочка "Изменять названия загружаемых файлов"
								$small_image_extension = mb_strtolower($kernel->GetExtension($data));
								$small_image_file_target = $group_images_dir . 'small_shop_group_image' . $current_group_id . '.' . $small_image_extension;
								$small_image_group_name = 'small_shop_group_image' . $current_group_id . '.' . $small_image_extension;
								// Флаг "Нужно конвертировать" используется далее
								$need_to_convert = true;
							}
							else
							{
								// Галочка "Изменять названия загружаемых файлов" не стоит
								$small_image_file_target = $group_images_dir . 'small_' . basename($data);
								$small_image_group_name = 'small_' . basename($data);
								$need_to_convert = false;
							}
							// Нам передали данные, можно создавать папку

							// Создаем каталог изображений группы товаров, если его не существует
							$kernel->PathMkdir($group_images_dir_for_mkdir_special);

							// Формируем массив параметров метода AdminFormFiles
							$admin_load_files_array = array();


							// Параметры большого изображения
							$admin_load_files_array['max_width_big_image'] = 0;
							$admin_load_files_array['max_height_big_image'] = 0;
							$admin_load_files_array['isset_big_image'] = false;


							// Параметры малого изображения
							$admin_load_files_array['max_width_small_image'] = $shop_image_small_max_width_group;
							$admin_load_files_array['max_height_small_image'] = $shop_image_small_max_height_group;


							// Путь к файлу водяного знака
							$admin_load_files_array['watermark_file_path'] = $watermark_file;


							// Использование водяного знака в изображениях
							$admin_load_files_array['used_watermark_big_image'] = $shop_watermark_default_use_big;
							$admin_load_files_array['used_watermark_small_image'] = $shop_watermark_default_use_small;


							//  Координаты водяного знака
							$admin_load_files_array['watermark_position_x'] = $shop_watermark_default_position_x;
							$admin_load_files_array['watermark_position_y'] = $shop_watermark_default_position_y;

							// Малое изображение передано, не нужно создавать его из большого
							$admin_load_files_array['use_big_image'] = false;

							// Источник малого изображения равен, в данном случае, источнику большого изображения
							$admin_load_files_array['path_source_small_image'] = $small_image_file_source;

							/*// Нужно генерировать имена
							if ($need_to_convert)
							{
								// Определяем расширение файла
								$small_image_extension = mb_strtolower($kernel->GetExtension($data));
								$small_image_file_target = $group_images_dir . 'small_shop_group_image' . $current_group_id . '.' . $small_image_extension;
								$small_image_group_name = 'small_shop_group_image' . $current_group_id . '.' . $small_image_extension;
							}
							// Не нужно генерировать имена
							else
							{
								$small_image_file_target = $group_images_dir . $original_file_name_small_image;
								$small_image_group_name = $original_file_name_small_image;
							}*/

							// Формируем целевое имя файла малого изображения
							$admin_load_files_array['path_target_small_image'] = $small_image_file_target;

							// Оригинальное имя файла малого изображения равно оригинальному имени файла большого изображения
							$admin_load_files_array['original_file_name_small_image'] = $small_image_file_target;
							// }

							// Если файл из HTTP, необходимо скопировать его в локальный временный файл для работы с ним, каталог для файла тот же что и для конечных файлов
							if ($small_file_content)
							{
								// Получаем имя временного файла
								$small_image_http_temp_file = tempnam($group_images_dir, '');


								$admin_load_files_array['path_source_small_image'] = $small_image_http_temp_file;


								// Пишем данные во временный файл
								$f_p = fopen($small_image_http_temp_file, "w");


								if ($f_p)
								{
									fwrite($f_p, $small_file_content);
									fclose($f_p);
								}


								$small_file_content = NULL;
							}


							$admin_load_files_array['preserve_aspect_ratio_for_big_image'] = $shop_row['shop_shops_default_save_proportions'];
							$admin_load_files_array['preserve_aspect_ratio_for_small_image'] = $shop_row['shop_shops_default_save_proportions'];


							if($admin_load_files_array['path_source_small_image'] != $admin_load_files_array['path_target_small_image'])
							{
								// Необходимо проверить, есть ли у импортируемой нами группы старые файлы изображений, если они есть их нужно удалить
								$current_group_old_data_row = $shop->GetGroup($current_group_id, array('cache_off' => true));


								$old_small_image_full_path = $group_images_dir . $current_group_old_data_row['shop_groups_small_image'];


								if ($current_group_old_data_row['shop_groups_small_image'] != '')
								{
									// Малое изображение существует, необходимо удалить его
									if (is_file($old_small_image_full_path))
									{
										@unlink($old_small_image_full_path);
									}
								}

								// Грузим файлы
								$result_download_files = $kernel->AdminLoadFiles($admin_load_files_array);
							}
							else
							{
								$result_download_files = array('small_image' => false);
							}

							// Нужно удалить временный файл
							if (isset($small_image_http_temp_file))
							{
								if (is_file($small_image_http_temp_file))
								{
									@unlink($small_image_http_temp_file);
								}
							}


							if ($result_download_files['small_image'] && isset($small_image_group_name))
							{
								// Если операция завершилась успешно необходимо получить сведения о размерах изображения

								if (file_exists($small_image_file_target) && filesize($small_image_file_target))
								{
									$group_small_image_sizes = getimagesize($small_image_file_target);


									$group_small_image_width = to_int($group_small_image_sizes[0]);
									$group_small_image_height = to_int($group_small_image_sizes[1]);
								}
								else
								{
									$group_small_image_width = $shop_image_small_max_width_group;


									$group_small_image_height = $shop_image_small_max_height_group;
								}


								// Операции с файлами успешно завершены, необходимо обновить данные в базе
								$query = "UPDATE `shop_groups_table` SET `shop_groups_small_image`='$small_image_group_name', `shop_groups_small_image_width`='$group_small_image_width', `shop_groups_small_image_height`='$group_small_image_height' WHERE `shop_groups_id`='$current_group_id'";


								$DataBase->query($query);
							}
						}
					}

					break;

					// CML_ID
					case 'shop_groups_cml_id':

					$group_row = $shop->GetGroupIdByCmlId($data, $shop_shops_id);

					if($group_row)
					{
						// Такая группа есть, делаем ее текущей
						$current_group_id = $group_row['shop_groups_id'];
					}
					else
					{
						// Необходимо обновить информацию о текущей группе
						$shop->InsertGroup(array('group_id' => $current_group_id, 'shop_shops_id' => $shop_shops_id, 'shop_groups_cml_id' => $data));
					}

					break;

					case 'shop_shop_groups_parent_cml_id':

					// Передан идентификатор родительской группы товаров, необходимо найти родительскую группу товаров по идентификатору CML_ID и присвоить текущей группе нового родителя
					$group_row = $shop->GetGroupIdByCmlId($data, $shop_shops_id);

					if($group_row)
					{
						// Такая группа есть, делаем ее родительской относительно текущей группы
						$shop->InsertGroup(array('shop_shops_id' => $shop_shops_id,'group_id' => $current_group_id, 'shop_groups_parent_id' => $group_row['shop_groups_id']));
					}


					break;

					// Валюта
					case 'shop_currency_id':

					// Проверяем, существует ли данная валюта в базе, если нет, идентификатор не передаем
					$currency_row = $shop->GetCurrency($data, array('cache_off' => true));

					if($currency_row)
					{
						$current_item_data_array['currency_id'] = $data;
					}

					break;

					// Налог
					case 'shop_tax_id':

					// Проверяем, существует ли данный налог в базе, если нет, идентификатор не передаем
					$tax_row = $shop->GetTax($data);

					if($tax_row)
					{
						$current_item_data_array['tax_id'] = $data;
					}

					break;

					// Производитель
					case 'shop_producers_list_id':

					$producer_row = $shop->GetProducer($data, array('cache_off' => true));

					if($producer_row)
					{
						$current_item_data_array['producers_list_id'] = $data;
					}

					break;


					case 'shop_producers_list_value':

					// Передано название производителя, проверяем, если есть в базе производитель с таким названием

					$producer_row = $shop->GetProducerByName($data, $shop_shops_id);

					if($producer_row && isset($producer_row[0]))
					{
						$current_item_data_array['producers_list_id'] = $producer_row[0]['shop_producers_list_id'];
					}
					else
					{
						// Производитель не обнаружен по имени, добавляем его в базу и ассоциируем с товаром
						$current_item_data_array['producers_list_id'] = $shop->InsertProducer(array('shops_id' => $shop_shops_id, 'name' => $data));
					}


					break;

					// Продавец
					case 'shop_shop_sallers_id':

					// Передан идентификактор продавца, проверяем, есть ли такой продавец в базе, если есть ассоциируем его с товаром, иначе, не ассоциируем
					$seller_row = $shop->GetSeller($data, array('cache_off' => true));

					if($seller_row)
					{
						$current_item_data_array['shop_sallers_id'] = $data;
					}

					break;

					// Sales notes
					case 'shop_items_catalog_yandex_market_sales_notes':

					$current_item_data_array['shop_items_catalog_yandex_market_sales_notes'] = $data;

					break;

					case 'shop_sallers_name':

					// Передано название продавца, необходимо найти его в базе по имени, если не нашли добавляем его в базу и ассоциируем с товаром, если нашли просто ассоциируем
					$saller_row = $shop->GetSellerByName($data, $shop_shops_id);

					if($saller_row && isset($saller_row[0]))
					{
						$current_item_data_array['shop_sallers_id'] = $saller_row[0]['shop_sallers_id'];
					}
					else
					{
						$current_item_data_array['shop_sallers_id'] = $shop->InsertSeller($data, $shop_shops_id);
					}

					break;

					// Единица измерения
					case 'shop_mesures_id':

					// Передан идентификатор единицы измерения, ищем в базе, если находим единицу измерения в базе по переданному идентификатору, значит ассоциируем ее с товаром, иначе не ассоциируем
					$mesures_row = $shop->GetMesure($data, array('cache_off' => true));

					if($mesures_row)
					{
						$current_item_data_array['mesures_id'] = $data;
					}

					break;

					// Единица измерения
					case 'additional_group':

					$additional_groups_for_item[] = $data;

					break;

					case 'shop_mesures_value':

					// Передано название единицы измерения, необходимо проверить, есть ли в базе единица измерения с таким названием, если есть ассоциируем ее с товаром, иначе добавляем и ассоциируем ее с товаром
					$mesures_row = $shop->GetMesuresByName($data);

					if($mesures_row)
					{
						$current_item_data_array['mesures_id'] = $mesures_row['shop_mesures_id'];
					}
					else
					{
						$current_item_data_array['mesures_id'] = $shop->InsertMesure(array('name' => $data));
					}

					break;

					// Товар
					case 'shop_items_catalog_item_id':

					// Передан идентификатор товара, проверяем, есть ли в базе данный товар, если есть, значит идет обновление данного товара с текущими данными, иначе идет добавление нового товара
					$item_row = $shop->GetItem($data, array('cache_off' => true));

					if($item_row)
					{
						$current_item_data_array['item_id'] = $data;
						$current_item_id = $data;
					}

					break;

					case 'shop_items_catalog_name':

					// Передано название товара
					$current_item_data_array['name'] = $data;

					break;

					case 'shop_items_catalog_marking':

					// Передан артикул товара, ищем товар в базе с подобным артикулом, если нашли значит обновляем товар, если нет, значит вставляем новый товар

					if($data != '')
					{
					
						$item_row = $shop->GetItemByParam(array('shop_items_catalog_marking' => $data, 'shop_shops_id' => $shop_shops_id));

						if ($item_row && mysql_num_rows($item_row) > 0)
						{
							$item_row = mysql_fetch_assoc($item_row);
							$current_item_data_array['marking'] = $data;
							$current_item_data_array['item_id'] = $item_row['shop_items_catalog_item_id'];
							$current_item_id = $current_item_data_array['item_id'];
						}
						else
						{
							$current_item_data_array['marking'] = $data;
						}
					}

					break;

					case 'shop_shop_items_catalog_date_time':

					if($data != '')
					{
						// Передано дата/время добавления товара, проверяем ее на соответствие стандарту времени MySQL
						if (ereg("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})", $data))
						{
							// Формат соответствует, передаем в параметр
							$current_item_data_array['shop_items_catalog_date_time'] = $data;
						}
						else
						{
							// Формат не соответствует, необходимо попробовать привести его к стандартному
							$current_item_data_array['shop_items_catalog_date_time'] = $DateClass->datetime_format_sql($data);
						}
					}

					break;

					case 'shop_items_catalog_description':

					// Передано описание товара
					$current_item_data_array['description'] = $data;

					break;


					case 'shop_items_catalog_text':

					// Передан текст товара
					$current_item_data_array['text'] = $data;

					break;

					// Передан файл большого изображения для товара
					case 'shop_items_catalog_image':

					// Ставим флаг о передаче нам большого изображения
					$big_image_was_sended = $data;

					break;

					// Передан файл малого изображения для товара
					case 'shop_items_catalog_small_image':

					$small_image_was_sended = $data;

					break;

					// Переданы метки товара
					case 'shop_items_catalog_label':

					$tags_was_sended = $data;

					break;


					case 'shop_items_catalog_weight':

					// Передан вес товара
					$current_item_data_array['weight'] = $data;

					break;

					case 'shop_items_catalog_price':

					// Передана цена товара
					$current_item_data_array['price'] = $shop->ConvertPrice($data);

					break;

					case 'shop_items_catalog_is_active':

					// Передана активность товара
					$current_item_data_array['is_active'] = $data;

					break;

					case 'shop_items_catalog_order':

					// Передан порядок сортировки товара
					$current_item_data_array['order'] = $data;

					break;

					case 'shop_items_catalog_path':

					if($data != '')
					{
						// Передан путь товара, необходимо проверить, существует ли товар с таким путем в текущей директории, если да, обновляем его, иначе добавляем как новый
						$item_row = $shop->GetItemByParam(array('shop_shops_id' => $shop_shops_id, 'shop_groups_id' => $current_group_id, 'shop_items_catalog_path' => $data));

						if($item_row && ($item_row = mysql_fetch_assoc($item_row)) !== false)
						{
							$current_item_data_array['item_id'] = $item_row['shop_items_catalog_item_id'];

							$current_item_id = $current_item_data_array['item_id'];

							$current_item_data_array['path'] = $data;
						}
						else
						{
							$current_item_data_array['path'] = $data;
						}
					}


					break;


					case 'shop_items_catalog_seo_title':

					// Передано поле SEO Title товара
					$current_item_data_array['seo_title'] = $data;

					break;

					case 'shop_items_catalog_seo_description':

					// Передано поле SEO Description товара
					$current_item_data_array['seo_description'] = $data;

					break;

					case 'shop_items_catalog_seo_keywords':

					// Передано поле SEO Keywords товара
					$current_item_data_array['seo_keywords'] = $data;

					break;

					case 'shop_items_catalog_indexation':

					// Передан флаг индексации товара
					$current_item_data_array['indexation'] = $data;

					break;

					case 'shop_shop_items_catalog_yandex_market_allow':

					// Передан флаг яндекс маркета
					$current_item_data_array['shop_items_catalog_yandex_market_allow'] = $data;

					break;

					case 'shop_shop_items_catalog_rambler_pokupki_allow':

					// Передан флаг рамблер покупки
					$current_item_data_array['shop_items_catalog_rambler_pokupki_allow'] = $data;

					break;

					case 'shop_shop_items_catalog_yandex_market_bid':

					// Передан флаг рамблер покупки
					$current_item_data_array['shop_items_catalog_rambler_pokupki_allow'] = $data;

					break;

					case 'shop_shop_items_catalog_yandex_market_cid':

					// Передан яндекс маркет CID
					$current_item_data_array['shop_items_catalog_yandex_market_cid'] = $data;

					break;

					case 'shop_item_parent_mark':

					if($data)
					{
						// Смотрим, передан ли собственный артикул
						$need_key = array_search("shop_items_catalog_marking", $conformity_array);

						$parent_item_row = $shop->GetItemByParam(array('shop_shops_id' => $shop_shops_id, 'shop_items_catalog_marking' => $data));

						if($need_key)
						{
							// Передан
							$need_key = to_str($current_csv_line_array[$need_key]);

							if($need_key == '' || ($need_key != '' && $need_key != to_str($data)))
							{
								// Артикулы не равны, можно записывать
								if($parent_item_row)
								{
									$parent_item_row = mysql_fetch_assoc($parent_item_row);

									// Нашли родительский товар
									$current_item_data_array['shop_items_catalog_modification_id'] = $parent_item_row['shop_items_catalog_item_id'];
								}
							}
							else
							{
								// Артикулы равны, товар не может быть модификацией самому себе!
								show_error_message(sprintf($GLOBALS['MSG_shops']['shop_upload_csv_marking_error'], $need_key));
							}
						}
						else
						{
							// Передан артикул родительского товара
							if($parent_item_row)
							{
								$parent_item_row = mysql_fetch_assoc($parent_item_row);

								// Нашли родительский товар
								$current_item_data_array['shop_items_catalog_modification_id'] = $parent_item_row['shop_items_catalog_item_id'];
							}
						}
					}

					break;

					// Передан идентификатор пользователя сайта
					case 'site_users_id':

					$current_item_data_array['site_users_id'] = $data;

					break;

					// Передан артикул родительского товара для сопутствующего товара
					case 'shop_item_parent_soput':

					// Этот товар - сопутствующий для товара с артикулом $data

					//echo "Передан артикул родительского товара для сопутствующего: $data<br/>";
					$related_item_mark = $data;

					break;

					// Передано название электронного товара
					case 'shop_eitem_name':

					$eItemsDataArray['shop_eitem_name'] = $data;

					break;

					// Передан текст электронного товара
					case 'shop_eitems_text':

					$eItemsDataArray['shop_eitems_text'] = $data;

					break;

					// Передан файл электронного товара
					case 'shop_eitems_file':

					$eItemsDataArray['shop_eitems_file'] = $data;

					break;

					// Передано коичество электронного товара
					case 'shop_eitem_count':

					$eItemsDataArray['shop_eitem_count'] = $data;

					break;


					case 'shop_shop_items_catalog_putend_date':

					// Передана дата завершения публикации, проверяем ее на соответствие стандарту времени MySQL
					if (ereg("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})", $data))
					{
						// Формат соответствует, передаем в параметр
						$current_item_data_array['shop_items_catalog_putend_date'] = $data;
					}
					else
					{
						// Формат не соответствует, необходимо попробовать привести его к стандартному
						$current_item_data_array['shop_items_catalog_putend_date'] = $DateClass->datetime_format_sql($data);
					}

					break;

					case 'shop_shop_items_catalog_putoff_date':

					// Передана дата публикации, проверяем ее на соответствие стандарту времени MySQL
					if (ereg("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})", $data))
					{
						// Формат соответствует, передаем в параметр
						$current_item_data_array['shop_items_catalog_putoff_date'] = $data;
					}
					else
					{
						// Формат не соответствует, необходимо попробовать привести его к стандартному
						$current_item_data_array['shop_items_catalog_putoff_date'] = $DateClass->datetime_format_sql($data);
					}

					break;

					case 'shop_shop_items_catalog_type':

					// Передан тип товара
					$current_item_data_array['shop_items_catalog_type'] = $data;

					break;

					case 'shop_special_prices_from':

					if($data != '')
					{
						// Передано условие специальной цены товара
						$special_price_array['shop_special_prices_from'] = $data;
					}


					break;

					case 'shop_special_prices_to':

					if($data != '')
					{
						// Передано условие специальной цены товара
						$special_price_array['shop_special_prices_to'] = $data;
					}


					break;

					case 'shop_special_prices_price':

					if($data != '')
					{
						// Передано условие специальной цены товара
						$special_price_array['shop_special_prices_price'] = $data;
					}

					break;

					case 'shop_special_prices_percent':

					if($data != '')
					{
						// Передано условие специальной цены товара
						$special_price_array['shop_special_prices_percent'] = $data;
					}


					break;

					case 'shop_items_cml_id':

					// Передан CML_ID идентификатор товара, необходимо проверить, существует ли такой товар в БД

					$current_item_data_array['shop_items_cml_id'] = $data;

					if(!isset($current_item_data_array['item_id']))
					{
						$item_res = $shop->GetItemByParam(array('shop_items_cml_id' => $data, 'shop_shops_id' => $shop_shops_id));

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

							$current_item_data_array['item_id'] = $item_row['shop_items_catalog_item_id'];
							$current_item_id = $item_row['shop_items_catalog_item_id'];
						}
					}

					break;

					// Соответствие для поля не задано, возможно выбран пункт "Не загружать", либо это дополнительное свойство
					default:


					// Если $data == '' значит поле не нужно загружать, иначе поле является дополнительным свойством

					if($data != '')
					{

						$property_name = $conformity_array[$key];

						if(mb_strpos($property_name, "price-") === 0)
						{
							// Дополнительная цена товара

							$price_id = explode("-", $property_name);

							$external_price_array[$price_id[1]] = $data;
						}

						// обработка остатка товара на различных складах, в данном случае просто сохраняем все данные в массив, т.к. вставка товара идет ниже
						if(mb_strpos($property_name, "warehouse-") === 0)
						{
							$warehouse_id = explode("-", $property_name);

							$item_warehouses_rest[$warehouse_id[1]] = $data;
						}


						if(mb_strpos($property_name, "propsmall-") === 0)
						{
							$prop_arr = explode("-", $property_name);

							$external_property_small_array[$prop_arr[1]] = $data;
						}


						if(mb_strpos($property_name, "prop-") === 0)
						{
							// Дополнительное свойство товара

							$prop_arr = explode("-", $property_name);

							// необходимо получить в массив все дополнительные свойства а также их значения, т.к. вставка товара происходит ниже
							$external_property_array[$prop_arr[1]] = $data;
						}



						if(mb_strpos($property_name, "prop_group-") === 0)
						{
							// Дополнительное свойство группы товаров


							// Дополнительные свойства вставляются для текущей группы
							$group_prop_arr = explode("-", $property_name);

							$group_property_id = $group_prop_arr[1];

							// Получаем информацию о дополнительном свойстве группы товаров
							$group_property_row = $shop->GetPropretyOfGroup($group_property_id);

							if($group_property_row)
							{
								// Свойство обнаружено
								switch(to_int($group_property_row['shop_properties_group_type']))
								{
									case 0:
										// Строка

										$shop->InsertPropertiesGroupValue(array(
										'shop_properties_group_value_value' => $data,
										'shop_properties_group_value_value_small' => '',
										'shop_properties_group_value_file' => '',
										'shop_properties_group_value_file_small' => '',
										'shop_properties_group_id' => $group_property_row['shop_properties_group_id'],
										'shop_groups_id' => $current_group_id
										));

									break;

									case 1:
										// Файл

										// Отдельно для метода PathMkdiк, ибо он не любит CMS_FOLDER
										$group_images_dir_for_mkdir_special = $shop->GetGroupDir($current_group_id);

										// Формируем путь к каталогу изображений группы товаров
										$group_images_dir = CMS_FOLDER . $group_images_dir_for_mkdir_special;

										// Формируем путь к файлу источнику, если таковой существует
										$big_image_file_source = $import_price_list_images_path . $data;

										if(mb_strpos(mb_strtolower($big_image_file_source), "http://") === 0)
										{
											// Файл из HTTP
											$big_file_content = file_get_contents($big_image_file_source);
										}
										else
										{
											$big_image_file_source = CMS_FOLDER . $big_image_file_source;

											// Локальный файл, не нужно брать его содержимое.
											$big_file_content = false;
										}

										if(exif_imagetype($big_image_file_source) === false)
										{
											$not_create_small_image = true;
										}
										else
										{
											$not_create_small_image = false;
										}

										// Получаем оригинальное имя файла большого изображения
										$original_file_name_big_image = basename($big_image_file_source);

										// Формируем путь к целевому файлу, если в настройках магазина сказано изменять имена загружаемых файлов, формируем имя вручную, иначе, оставляем оригинальное имя
										if(to_int($shop_row['shop_shops_file_name_conversion']) == 1)
										{
											// Стоит галочка "Изменять названия загружаемых файлов"
											$big_image_extension = mb_strtolower($kernel->GetExtension($data));
											$big_image_file_target = $group_images_dir . 'shop_property_file_' .  $group_property_id . '_' . $current_group_id . '.' . $big_image_extension;
											$big_image_group_name = 'shop_property_file_' .  $group_property_id . '_' . $current_group_id . '.' . $big_image_extension;

											// Флаг "Нужно конвертировать" используется далее
											$need_to_convert = true;
										}
										else
										{
											// Галочка "Изменять названия загружаемых файлов" не стоит
											$big_image_file_target = $group_images_dir . basename($data);
											$big_image_group_name = basename($data);
											$need_to_convert = false;
										}

										// Нам передали данные, можно создавать папку

										// Создаем каталог изображений группы товаров, если его не существует
										$kernel->PathMkdir($group_images_dir_for_mkdir_special);

										// Формируем массив параметров метода AdminFormFiles
										$admin_load_files_array = array();

										// Параметры большого изображения
										$admin_load_files_array['max_width_big_image'] = $group_property_row['shop_properties_group_default_big_width'];
										$admin_load_files_array['max_height_big_image'] = $group_property_row['shop_properties_group_default_big_height'];
										$admin_load_files_array['isset_big_image'] = 1;
										$admin_load_files_array['path_source_big_image'] = $big_image_file_source;
										$admin_load_files_array['original_file_name_big_image'] = $original_file_name_big_image;
										$admin_load_files_array['path_target_big_image'] = $big_image_file_target;

										// Параметры малого изображения
										$admin_load_files_array['max_width_small_image'] = $group_property_row['shop_properties_group_default_small_width'];
										$admin_load_files_array['max_height_small_image'] = $group_property_row['shop_properties_group_default_small_height'];

										// Путь к файлу водяного знака
										$admin_load_files_array['watermark_file_path'] = $watermark_file;

										// Использование водяного знака в изображениях
										$admin_load_files_array['used_watermark_big_image'] = $shop_watermark_default_use_big;
										$admin_load_files_array['used_watermark_small_image'] = $shop_watermark_default_use_small;

										//  Координаты водяного знака
										$admin_load_files_array['watermark_position_x'] = $shop_watermark_default_position_x;
										$admin_load_files_array['watermark_position_y'] = $shop_watermark_default_position_y;

										if(!isset($not_create_small_image))
										{
											// Малое изображение не передано, создаем его из большого
											$admin_load_files_array['use_big_image'] = 1;

											// Источник малого изображения равен, в данном случае, источнику большого изображения
											$admin_load_files_array['path_source_small_image'] = $admin_load_files_array['path_source_big_image'];

											// Нужно генерировать имена
											if($need_to_convert)
											{
												// Определяем расширение файла
												$small_image_extension = mb_strtolower($kernel->GetExtension($data));
												$small_image_file_target = $group_images_dir . 'small_shop_property_file_' . $group_property_id . '_' . $current_group_id . '.' . $small_image_extension;
												$small_image_group_name = 'small_shop_property_file_' . $group_property_id . '_' . $current_group_id . '.' . $small_image_extension;
											}
											// Не нужно генерировать имена
											else
											{
												// В данном случае даже если сказано сохранять оригинальные имена файлов необходимо добавить к имени малого файла приставку "small_", ибо малое создается из большого и имеет заведомо такое же название что и файл большого изображения
												$small_image_file_target = $group_images_dir . "small_" . $original_file_name_big_image;
												$small_image_group_name = "small_" . $original_file_name_big_image;
											}

											// Формируем целевое имя файла малого изображения
											$admin_load_files_array['path_target_small_image'] = $small_image_file_target;

											// Оригинальное имя файла малого изображения равно оригинальному имени файла большого изображения
											$admin_load_files_array['original_file_name_small_image'] = $small_image_file_target;
											// }
										}
										else
										{
											$admin_load_files_array['use_big_image'] = 0;

											$admin_load_files_array['path_source_small_image'] = '';

											$admin_load_files_array['path_target_small_image'] = '';

											$admin_load_files_array['original_file_name_small_image'] = '';

											unset($not_create_small_image);
										}



										// Если файл из HTTP, необходимо скопировать его в локальный временный файл для работы с ним, каталог для файла тот же что и для конечных файлов
										if($big_file_content)
										{
											// Получаем имя временного файла
											$big_image_http_temp_file = tempnam($group_images_dir, '');

											// Переопределяем пути к источникам изображений
											$admin_load_files_array['path_source_big_image'] = $big_image_http_temp_file;

											if(isset($admin_load_files_array['path_source_small_image']))
											{
												$admin_load_files_array['path_source_small_image'] = $big_image_http_temp_file;
											}

											// Пишем данные во временный файл
											$f_p = fopen($big_image_http_temp_file, "w");

											if($f_p)
											{
												fwrite($f_p, $big_file_content);
												fclose($f_p);
											}

											$big_file_content = NULL;
										}

										$admin_load_files_array['preserve_aspect_ratio_for_big_image'] = $shop_row['shop_shops_default_save_proportions'];
										$admin_load_files_array['preserve_aspect_ratio_for_small_image'] = $shop_row['shop_shops_default_save_proportions'];


										if($admin_load_files_array['path_source_big_image'] != $admin_load_files_array['path_target_big_image'])
										{
											// Необходимо проверить, есть ли у импортируемой нами группы старые файлы изображений, если они есть их нужно удалить
											//$current_group_old_data_row = $shop->GetGroup($current_group_id);

											$sql = "SELECT * FROM `shop_properties_group_value_table`
											WHERE `shop_groups_id`='$current_group_id'
											AND `shop_properties_group_id`='{$group_property_row['shop_properties_group_id']}'";

											$old_property_group_files = $DataBase->query($sql);

											if($old_property_group_files)
											{
												$old_property_group_files_row = mysql_fetch_assoc($old_property_group_files);

												if($old_property_group_files_row['shop_properties_group_value_file'] != '')
												{
													// Было задано старое большое изображение дополнительного свойства
													if(is_file($group_images_dir . $old_property_group_files_row['shop_properties_group_value_file']))
													{
														@unlink($group_images_dir . $old_property_group_files_row['shop_properties_group_value_file']);
													}
												}

												if($old_property_group_files_row['shop_properties_group_value_file_small'] != '')
												{
													// Было задано старое малое изображение дополнительного свойства
													if(is_file($group_images_dir . $old_property_group_files_row['shop_properties_group_value_file_small']))
													{
														@unlink($group_images_dir . $old_property_group_files_row['shop_properties_group_value_file_small']);
													}
												}
											}

											// Грузим файлы
											$result_download_files = $kernel->AdminLoadFiles($admin_load_files_array);
										}
										else
										{
											$result_download_files = array('big_image' => false, 'small_image' => false);
										}

										// Нужно удалить временный файл
										if(isset($big_image_http_temp_file))
										{
											if(is_file($big_image_http_temp_file))
											{
												@unlink($big_image_http_temp_file);
											}
										}

										if (!$result_download_files['big_image'])
										{
											// Операции с файлами успешно завершены, необходимо обновить данные в базе
											$big_image_group_name = '';
										}

										if (!$result_download_files['small_image'])
										{
											// Операции с файлами успешно завершены, необходимо обновить данные в базе
											$small_image_group_name = '';
										}

										$shop->InsertPropertiesGroupValue(array(
										'shop_groups_id' => $current_group_id,
										'shop_properties_group_id' => $group_property_row['shop_properties_group_id'],
										'shop_properties_group_value_value' => '',
										'shop_properties_group_value_value_small' => '',
										'shop_properties_group_value_file' => $big_image_group_name,
										'shop_properties_group_value_file_small' => $small_image_group_name
										));

									break;

									case 2:
										// Список

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

											// Необходимо проверить, существует ли переданное значение среди значений списка
											$list_item_value_row = $lists->GetListItemIfIssetValue($group_property_row['lists_id'], $data);

											if($list_item_value_row)
											{
												// Значение свойства обнаружено
												$lists_items_id = $list_item_value_row['lists_items_id'];
											}
											else
											{
												// Значение свойства не обнаружено, необходимо добавить значение
												$lists_items_id = $lists->InsertListItem(array(
												'lists_id' => $group_property_row['lists_id'],
												'lists_items_value' => $data
												));
											}

											$shop->InsertPropertiesGroupValue(array(
											'shop_properties_group_value_value' => $lists_items_id,
											'shop_properties_group_value_value_small' => '',
											'shop_properties_group_value_file' => '',
											'shop_properties_group_value_file_small' => '',
											'shop_properties_group_id' => $group_property_row['shop_properties_group_id'],
											'shop_groups_id' => $current_group_id
											));
										}

									break;

									case 3:
										// Большое текстовое поле

										$shop->InsertPropertiesGroupValue(array(
										'shop_properties_group_value_value' => $data,
										'shop_properties_group_value_value_small' => '',
										'shop_properties_group_value_file' => '',
										'shop_properties_group_value_file_small' => '',
										'shop_properties_group_id' => $group_property_row['shop_properties_group_id'],
										'shop_groups_id' => $current_group_id
										));

									break;

									case 4:
										// Визуальный редактор

										$shop->InsertPropertiesGroupValue(array(
										'shop_properties_group_value_value' => $data,
										'shop_properties_group_value_value_small' => '',
										'shop_properties_group_value_file' => '',
										'shop_properties_group_value_file_small' => '',
										'shop_properties_group_id' => $group_property_row['shop_properties_group_id'],
										'shop_groups_id' => $current_group_id
										));

									break;

									case 5:
										// Дата

										// Проверяем дату на соответствие стандарту времени MySQL
										if (!ereg("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $data))
										{
											// Формат не соответствует, необходимо попробовать привести его к стандартному
											$data = $DateClass->date_format_sql($data);
										}

										$shop->InsertPropertiesGroupValue(array(
										'shop_properties_group_value_value' => $data,
										'shop_properties_group_value_value_small' => '',
										'shop_properties_group_value_file' => '',
										'shop_properties_group_value_file_small' => '',
										'shop_properties_group_id' => $group_property_row['shop_properties_group_id'],
										'shop_groups_id' => $current_group_id
										));

									break;

									case 6:
										// ДатаВремя


										// Проверяем ДатуВремя на соответствие стандарту времени MySQL
										if (!ereg("^([0-9]{4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{1,2}):([0-9]{1,2}):([0-9]{1,2})", $data))
										{
											// Формат не соответствует, необходимо попробовать привести его к стандартному
											$data = $DateClass->datetime_format_sql($data);
										}

										$shop->InsertPropertiesGroupValue(array(
										'shop_properties_group_value_value' => $data,
										'shop_properties_group_value_value_small' => '',
										'shop_properties_group_value_file' => '',
										'shop_properties_group_value_file_small' => '',
										'shop_properties_group_id' => $group_property_row['shop_properties_group_id'],
										'shop_groups_id' => $current_group_id
										));

									break;

									case 7:
										// Флажок

										$shop->InsertPropertiesGroupValue(array(
										'shop_properties_group_value_value' => $data,
										'shop_properties_group_value_value_small' => '',
										'shop_properties_group_value_file' => '',
										'shop_properties_group_value_file_small' => '',
										'shop_properties_group_id' => $group_property_row['shop_properties_group_id'],
										'shop_groups_id' => $current_group_id
										));

									break;

									default:
									break;
								}
							}
						}
					}

					break;
				}
			}
		}
	}

	if(count($current_item_data_array) > 0)
	{
		// Заполняем дополнительную информацию о товаре, независящую от переданных нам в CSV параметров

		// Группу явно указываем только для нового товара,
		// либо если группа не равна 0
		if ($current_item_id == 0 || $current_group_id != 0)
		{
			$current_item_data_array['groups_id'] = $current_group_id;
		}

		$current_item_data_array['shops_id'] = $shop_shops_id;

		if(!isset($current_item_data_array['item_id']))
		{
			$current_item_data_array['item_id'] = $current_item_id;
		}

		if (isset($current_item_data_array['name']) && $current_item_data_array['name'] != ''
		// add 12-05-2010, инц. 000037588
		|| $current_item_id)
		{
			// Проверка на электронный товар
			if(count($eItemsDataArray) > 0)
			{
				// Товар электронный
				$current_item_data_array['shop_items_catalog_type'] = 1;
			}

			// Обработка ключевых слов группы //
			if (isset($current_item_data_array['seo_keywords'])
			&& $current_item_data_array['seo_keywords'] == '')
			{
				if (class_exists('Tag'))
				{
					$Tag = & singleton('Tag');
					$kernel = & singleton('kernel');

					// Вставка тэгов автоматически разрешена
					if ($shop_row && $shop_row['shop_shops_apply_keywords_automatic'] == 1)
					{
						$tmp_str = '';

						$tmp_str .= isset($current_item_data_array['name']) ? ' ' . $current_item_data_array['name'] : '';
						$tmp_str .= isset($current_item_data_array['description']) ? ' ' . $current_item_data_array['description'] : '';
						$tmp_str .= isset($current_item_data_array['text']) ? ' ' . $current_item_data_array['text'] : '';

						// получаем хэш названия и описания группы
						$array_text = $kernel->ClearHtml($tmp_str, array ('hash_function' => 'crc32'));

						$array_text = array_unique($array_text);

						// Получаем список меток
						$tags_result = $Tag->GetAllTags();

						// Есть хотя бы одна метка
						if (mysql_num_rows($tags_result))
						{
							$coeff_intersect = array ();

							while ($tag_row = mysql_fetch_assoc($tags_result))
							{
								// получаем хэш тэга
								$array_tags = $kernel->ClearHtml($tag_row['tag_name'], array (
								'hash_function' => 'crc32'
								));

								// получаем коэффициент схожести текста каталога с тэгом
								$array_tags = array_unique($array_tags);

								// Текст метки меньше текста товара, т.к. должна входить метка в текст товара, а не наоборот
								if (count($array_text) >= count($array_tags))
								{
									// Расчитываем пересечение
									$intersect = count(array_intersect($array_text, $array_tags));

									if (count($array_tags) != 0)
									{
										$coefficient = $intersect / count($array_tags);
									}
									else
									{
										$coefficient = 0;
									}

									// Найдено полное вхождение
									if ($coefficient == 1)
									{
										// Если тэг еще не учтен
										if (!in_array($tag_row['tag_name'], $coeff_intersect))
										{
											// Добавляем в массив
											$coeff_intersect[] = $tag_row['tag_name'];
										}
									}
								}
							}

							// Найдено соответствие с тэгами
							if (count($coeff_intersect) > 0)
							{
								$tags_was_sended = implode(", ", $coeff_intersect);
							}
						}
					}
				}
			}

			/* if(!isset($current_item_data_array['item_id']) && !isset($current_item_data_array['shop_items_cml_id']))
			{
				$current_item_data_array['']
			} */


			$current_item_data_array['search_event_indexation'] = $search_event_indexation;

			if($search_event_indexation &&
			isset($current_item_data_array['groups_id'])
			&& $current_item_data_array['groups_id'] != 0)
			{

				$result = $shop->IndexationShopGroups(0, 1, $current_item_data_array['groups_id']);

				if (count($result) != 0)
				{
					$Search = & singleton('Search');

					$line = each($result);

					if (isset ($line['value'][1]))
					{
						$Search->Delete_search_words($line['value'][1], $line['value'][4]);
						$Search->Insert_search_word($result);
					}
				}
			}

			$alreadyIssetItem = FALSE;

			// Необходимо проверить, если товар уже существует в базе и параметр $param_array['import_price_action_items'] == 2, мы не должны обновлять товар
			if($param_array['import_price_action_items'] == 2)
			{
				if(!$shop->GetItem(to_int($current_item_data_array['item_id']), array('cache_off' => true)))
				{
					// Производим вставку товаров
					$current_item_id = $shop->InsertItem($current_item_data_array);
				}
				else
				{
					$alreadyIssetItem = TRUE;
				}
			}
			else
			{
				// Производим вставку товаров
				$current_item_id = $shop->InsertItem($current_item_data_array);
			}

			// Указано обновлять сущ. товары или не обновлять (==2) и товар не существовал
			if ($param_array['import_price_action_items'] != 2 || !$alreadyIssetItem)
			{
				if($related_item_mark)
				{
					// Товар $current_item_id - сопутствующий товару с артикулом $related_item_mark
					$base_item_row = $shop->GetItemByParam(array(
						'shop_items_catalog_marking' => $related_item_mark,
						'shop_shops_id' => $shop_shops_id
					));

					if($base_item_row)
					{
						$base_item_row = mysql_fetch_assoc($base_item_row);

						// Проверяем на существование сопутствующего товара
						$sql = "SELECT * FROM `shop_intermediate_table`
						WHERE `shop_items_catalog_item_id`='{$base_item_row['shop_items_catalog_item_id']}'
						AND `sho_shop_items_catalog_item_id`='$current_item_id'";

						$inter_result = $DataBase->query($sql);

						if(!mysql_num_rows($inter_result))
						{
							$shop->InsertTyingProducts(array(
								'shop_items_catalog_item_id' => $base_item_row['shop_items_catalog_item_id'],
								'sho_shop_items_catalog_item_id' => $current_item_id,
								'shop_intermediate_count' => 1,
							));
						}
					}

					$related_item_mark = false;
				}

				// необходимо вставить остатки по складам
				if(count($item_warehouses_rest) > 0)
				{
					foreach($item_warehouses_rest as $warehouse_id => $warehouse_rest)
					{
						$warehouse->InsertWarehouseItems(array(
							'shop_warehouse_id' => $warehouse_id,
							'shop_items_catalog_item_id' => $current_item_id,
							'shop_warehouse_items_count' => $warehouse_rest
						));
					}
				}

				// Необходимо вставить специальную цену для товара
				if(count($special_price_array) > 0)
				{
					$special_price_array['shop_items_catalog_item_id'] = $current_item_id;

					if(!isset($special_price_array['shop_special_prices_price']))
					{
						$special_price_array['shop_special_prices_price'] = 0;
					}

					$shop_special_prices_from = to_int($special_price_array['shop_special_prices_from']);
					$shop_special_prices_to = to_int($special_price_array['shop_special_prices_to']);

					// Проверяем - идет ли обновление?
					$sql = "SELECT * FROM `shop_special_prices_table`
					WHERE `shop_special_prices_from`='$shop_special_prices_from'
					AND `shop_special_prices_to`='$shop_special_prices_to'
					AND `shop_items_catalog_item_id`='$current_item_id'";

					$sp_result = $DataBase->query($sql);

					if($sp_result && mysql_num_rows($sp_result) > 0)
					{
						$sp_row = mysql_fetch_assoc($sp_result);

						$special_price_array['shop_special_prices_id'] = $sp_row['shop_special_prices_id'];
					}

					$shop->InsertSpecialPrice($special_price_array);

					$special_price_array = array();
				}

				// Необходимо пробежаться по всем дополнительным группам для товара, и раскидать по ним ярлыки
				if(count($additional_groups_for_item) > 0)
				{
					foreach($additional_groups_for_item as $group_cml_id)
					{
						// Ищем группу в магазине с таким CML_ID
						$result = $shop->GetGroupIdByCmlId($group_cml_id, $shop_shops_id);

						if($result)
						{
							// Нужно проверить, существует ли ярлык на данный товар в данной группе
							if(mysql_num_rows($shop->GetItemByParam(array(
							'shop_groups_id' => to_int($result['shop_groups_id']),
							'shop_items_catalog_shortcut_id' => $current_item_id,
							'shop_shops_id' => $shop_shops_id
							))) == 0)
							{
								// не существует - нужно добавить
								$shop->InsertItem(array('groups_id' => to_int($result['shop_groups_id']), 'shop_items_catalog_shortcut_id' => $current_item_id, 'shops_id' => $shop_shops_id));
							}
						}
					}
				}

				if(!in_array($current_item_id, $array_inserted_items_id))
				{
					$count_insert_item++;
					$array_inserted_items_id[] = $current_item_id;
				}
				elseif(!in_array($current_item_id, $array_updated_items_id))
				{
					$array_updated_items_id[] = $current_item_id;
					$count_update_item++;
				}

				// Нам передали метки товара
				if(isset($tags_was_sended) && $tags_was_sended)
				{
					// Вставка меток
					$shop->InsertItemsCatalogTags(array(
					'tags' => $tags_was_sended,
					'shop_items_catalog_item_id' => $current_item_id
					));

					// Сброс флага
					$tags_was_sended = false;
				}

				if(isset($current_item_data_array['shop_items_catalog_type'])
				&& $current_item_data_array['shop_items_catalog_type'] == 1)
				{
					$eitem_file_string = to_str($eItemsDataArray['shop_eitems_file']);

					// Конкатенируем переданный путь с внешним путем из формы импорта
					$file_full_path = CMS_FOLDER . $import_price_list_images_path . $eitem_file_string;

					$eitem_path = $uploaddir . 'shop_' . $shop_shops_id . '/eitems/item_catalog_' . $current_item_id . '/';

					// Создаем каталоги
					$kernel->PathMkdir($eitem_path);

					// Необходимо скопировать данный файл в систему управления, построим путь к результирующему файлу электронного товара

					$sExt = $kernel->GetExtension($eitem_file_string);

					// Вставляем электронный товар
					$iEItemID = $shop->InsertEItem(array(
					'shop_items_catalog_item_id' => $current_item_id,
					'shop_eitem_name' => to_str($eItemsDataArray['shop_eitem_name']),
					'shop_eitem_value' => to_str($eItemsDataArray['shop_eitems_text']),
					'shop_eitem_filename' => /*basename($eitem_file_string)*/'',
					'shop_eitem_count' => to_str($eItemsDataArray['shop_eitem_count'])
					));

					$eitem_target_path = CMS_FOLDER . $eitem_path . $iEItemID . ($sExt == '' ? '' : '.' . $sExt);

					if(is_file($file_full_path))
					{
						// Копируем файл электронного товара в папку
						if(!@copy($file_full_path, $eitem_target_path))
						{
							$eitem_file_string = '';
						}
					}

					if($eitem_file_string)
					{
						$shop->InsertEItem(array(
							'shop_eitem_id' => $iEItemID,
							'shop_eitem_filename' => basename($eitem_file_string)
						));
					}

					// Сбрасываем массив
					$eItemsDataArray = array();
				}

				// Проверяем, были ли нам переданы изображения товара
				if(isset($big_image_was_sended) && $big_image_was_sended !== false)
				{
					// Забираем данные
					$data = $big_image_was_sended;

					// Сбрасываем флаг
					$big_image_was_sended = false;

					$admin_load_files_array = array();

					// Отдельно для метода PathMkdir, ибо он не любит CMS_FOLDER
					$item_images_dir_for_mkdir_special = $shop->GetItemDir($current_item_id);

					// Формируем путь к каталогу изображений группы товаров
					$item_images_dir = CMS_FOLDER . $item_images_dir_for_mkdir_special;

					// Формируем путь к файлу источнику, если таковой существует
					$big_image_file_source = $import_price_list_images_path . $data;

					if(mb_strpos(mb_strtolower($big_image_file_source), "http://") === 0)
					{
						// Файл из HTTP
						$big_file_content = file_get_contents($big_image_file_source);
					}
					else
					{
						$big_image_file_source = CMS_FOLDER . $big_image_file_source;

						// Локальный файл, не нужно брать его содержимое.
						$big_file_content = false;
					}

					if(is_file($big_image_file_source)
					&& exif_imagetype($big_image_file_source) === false)
					{
						$not_create_small_image = true;
					}
					else
					{
						$not_create_small_image = false;
					}

					// Получаем оригинальное имя файла большого изображения
					$original_file_name_big_image = basename($big_image_file_source);

					// Формируем путь к целевому файлу, если в настройках магазина сказано изменять имена загружаемых файлов, формируем имя вручную, иначе, оставляем оригинальное имя
					if(to_int($shop_row['shop_shops_file_name_conversion']) == 1)
					{
						// Стоит галочка "Изменять названия загружаемых файлов"
						$big_image_extension = mb_strtolower($kernel->GetExtension($data));
						$big_image_file_target = $item_images_dir . 'shop_items_catalog_image' . $current_item_id . '.' . $big_image_extension;
						$big_image_item_name = 'shop_items_catalog_image' . $current_item_id . '.' . $big_image_extension;

						// Флаг "Нужно конвертировать" используется далее
						$need_to_convert = true;
					}
					else
					{
						// Галочка "Изменять названия загружаемых файлов" не стоит
						$big_image_file_target = $item_images_dir . basename($data);
						$big_image_item_name = basename($data);
						$need_to_convert = false;
					}

					// Начинаем операцию с файлами только если:
					// файл локальный И он существует,
					// либо файл из сетевого источника
					if(($big_file_content === false
					&& is_file($big_image_file_source))
					|| ($big_file_content !== false))
					{
						// Нам передали данные, можно создавать папку

						// Создаем каталог изображений группы товаров, если его не существует
						$kernel->PathMkdir($item_images_dir_for_mkdir_special);

						// Формируем массив параметров метода AdminFormFiles
						$admin_load_files_array = array();

						$admin_load_files_array['max_width_big_image'] = $shop_image_big_max_width;
						$admin_load_files_array['max_height_big_image'] = $shop_image_big_max_height;
						$admin_load_files_array['isset_big_image'] = 1;
						$admin_load_files_array['path_source_big_image'] = $big_image_file_source;
						$admin_load_files_array['original_file_name_big_image'] = $original_file_name_big_image;
						$admin_load_files_array['path_target_big_image'] = $big_image_file_target;

						// Параметры малого изображения
						$admin_load_files_array['max_width_small_image'] = $shop_image_small_max_width;
						$admin_load_files_array['max_height_small_image'] = $shop_image_small_max_height;

						// Путь к файлу водяного знака
						$admin_load_files_array['watermark_file_path'] = $watermark_file;

						// Использование водяного знака в изображениях
						$admin_load_files_array['used_watermark_big_image'] = $shop_watermark_default_use_big;
						$admin_load_files_array['used_watermark_small_image'] = $shop_watermark_default_use_small;

						if($not_create_small_image === false)
						{
							//  Координаты водяного знака
							$admin_load_files_array['watermark_position_x'] = $shop_watermark_default_position_x;
							$admin_load_files_array['watermark_position_y'] = $shop_watermark_default_position_y;

							// Проверяем, передан ли нам файл малого изображения
							if(in_array("shop_items_catalog_small_image", $conformity_array))
							{
								// Малое изображение передано, не нужно создавать малое из большого
								$admin_load_files_array['use_big_image'] = 0;
							}
							else
							{
								// Малое изображение не передано, создаем его из большого
								$admin_load_files_array['use_big_image'] = 1;

								// Источник малого изображения равен, в данном случае, источнику большого изображения
								$admin_load_files_array['path_source_small_image'] = $admin_load_files_array['path_source_big_image'];

								// Нужно генерировать имена
								if($need_to_convert)
								{
									// Определяем расширение файла
									$small_image_extension = mb_strtolower($kernel->GetExtension($data));
									$small_image_file_target = $item_images_dir . 'small_shop_items_catalog_image' . $current_item_id . '.' . $small_image_extension;
									$small_image_item_name = 'small_shop_items_catalog_image' . $current_item_id . '.' . $small_image_extension;
								}
								// Не нужно генерировать имена
								else
								{
									// В данном случае даже если сказано сохранять оригинальные имена файлов необходимо добавить к имени малого файла приставку "small_", ибо малое создается из большого и имеет заведомо такое же название что и файл большого изображения
									$small_image_file_target = $item_images_dir . "small_" . $original_file_name_big_image;
									$small_image_item_name = "small_" . $original_file_name_big_image;
								}

								// Формируем целевое имя файла малого изображения
								$admin_load_files_array['path_target_small_image'] = $small_image_file_target;

								// Оригинальное имя файла малого изображения равно оригинальному имени файла большого изображения
								$admin_load_files_array['original_file_name_small_image'] = $small_image_file_target;
							}
						}
						else
						{
							$admin_load_files_array['use_big_image'] = 0;

							$admin_load_files_array['path_source_small_image'] = '';

							$admin_load_files_array['path_target_small_image'] = '';

							$admin_load_files_array['original_file_name_small_image'] = '';

							unset($not_create_small_image);
						}

						// Если файл из HTTP, необходимо скопировать его в локальный временный файл для работы с ним, каталог для файла тот же что и для конечных файлов
						if($big_file_content)
						{
							// Получаем имя временного файла
							$big_image_http_temp_file = tempnam($item_images_dir, '');

							// Переопределяем пути к источникам изображений
							$admin_load_files_array['path_source_big_image'] = $big_image_http_temp_file;

							if(isset($admin_load_files_array['path_source_small_image']))
							{
								$admin_load_files_array['path_source_small_image'] = $big_image_http_temp_file;
							}

							// Пишем данные во временный файл
							$f_p = fopen($big_image_http_temp_file, "w");

							if($f_p)
							{
								fwrite($f_p, $big_file_content);
								fclose($f_p);
							}

							$big_file_content = NULL;
						}

						$admin_load_files_array['preserve_aspect_ratio_for_big_image'] = $shop_row['shop_shops_default_save_proportions'];
						$admin_load_files_array['preserve_aspect_ratio_for_small_image'] = $shop_row['shop_shops_default_save_proportions'];

						if($admin_load_files_array['path_source_big_image'] != $admin_load_files_array['path_target_big_image'])
						{
							// Необходимо проверить, есть ли у импортируемой нами группы старые файлы изображений, если они есть их нужно удалить
							$current_item_old_data_row = $shop->GetItem($current_item_id, array('cache_off' => true));

							$old_big_image_full_path = $item_images_dir . $current_item_old_data_row['shop_items_catalog_image'];
							$old_small_image_full_path = $item_images_dir . $current_item_old_data_row['shop_items_catalog_small_image'];

							if($current_item_old_data_row['shop_items_catalog_image'] != '')
							{
								// Большое изображение существует, необходимо удалить его
								if(is_file($old_big_image_full_path))
								{
									@unlink($old_big_image_full_path);
								}
							}

							if($current_item_old_data_row['shop_items_catalog_small_image'] != '')
							{
								// Малое изображение существует, необходимо удалить его
								if(is_file($old_small_image_full_path))
								{
									@unlink($old_small_image_full_path);
								}
							}

							// Грузим файлы
							$result_download_files = $kernel->AdminLoadFiles($admin_load_files_array);
						}
						else
						{
							$result_download_files = array('big_image' => false, 'small_image' => false);
						}

						// Нужно удалить временный файл
						if(isset($big_image_http_temp_file))
						{
							if(is_file($big_image_http_temp_file))
							{
								@unlink($big_image_http_temp_file);
							}
						}

						if ($result_download_files['big_image'])
						{
							// Если операция завершилась успешно необходимо получить сведения о размерах изображения
							if(file_exists($big_image_file_target) && filesize($big_image_file_target))
							{
								$item_big_image_sizes = getimagesize($big_image_file_target);

								$item_big_image_width = to_int($item_big_image_sizes[0]);
								$item_big_image_height = to_int($item_big_image_sizes[1]);
							}
							else
							{
								$item_big_image_width = $shop_image_big_max_width;
								$item_big_image_height = $shop_image_big_max_height;
							}

							// Операции с файлами успешно завершены, необходимо обновить данные в базе
							$query = "UPDATE `shop_items_catalog_table` SET `shop_items_catalog_image`='$big_image_item_name', `shop_items_catalog_big_image_width`='$item_big_image_width', `shop_items_catalog_big_image_height`='$item_big_image_height' WHERE `shop_items_catalog_item_id`='$current_item_id'";

							$DataBase->query($query);
						}

						if ($result_download_files['small_image'] && isset($small_image_item_name))
						{
							// Если операция завершилась успешно необходимо получить сведения о размерах изображения
							if(file_exists($small_image_file_target) && filesize($small_image_file_target))
							{
								$item_small_image_sizes = getimagesize($small_image_file_target);

								$item_small_image_width = to_int($item_small_image_sizes[0]);
								$item_small_image_height = to_int($item_small_image_sizes[1]);
							}
							else
							{
								$item_small_image_width = $shop_image_small_max_width;
								$item_small_image_height = $shop_image_small_max_height;
							}


							// Операции с файлами успешно завершены, необходимо обновить данные в базе
							$query = "UPDATE `shop_items_catalog_table` SET `shop_items_catalog_small_image`='$small_image_item_name', `shop_items_catalog_small_image_width`='$item_small_image_width', `shop_items_catalog_small_image_height`='$item_small_image_height' WHERE `shop_items_catalog_item_id`='$current_item_id'";

							$DataBase->query($query);
						}
					}
					// Удаляем картинку если указано удалять картинки и картинка передана но файла картинки не существует
					elseif($import_price_action_delete_image)
					{
						delOldFile($current_item_id, 'shop_items_catalog_image');
					}
				}
				// Удаляем картинку если указано удалять картинки и картинка не передана
				elseif($import_price_action_delete_image)
				{
					delOldFile($current_item_id, 'shop_items_catalog_image');
				}

				if(isset($small_image_was_sended) && $small_image_was_sended && !$not_create_small_image)
				{
					// Забираем данные
					$data = $small_image_was_sended;

					// Сбрасывем флаг
					$small_image_was_sended = false;

					$admin_load_files_array = array();

					// Отдельно для метода PathMkdir, ибо он не любит CMS_FOLDER
					$item_images_dir_for_mkdir_special = $shop->GetItemDir($current_item_id);

					// Формируем путь к каталогу изображений группы товаров
					$item_images_dir = CMS_FOLDER . $item_images_dir_for_mkdir_special;

					// Формируем путь к файлу источнику, если таковой существует
					$small_image_file_source = $import_price_list_images_path . $data;

					if(mb_strpos(mb_strtolower($small_image_file_source), "http://") === 0)
					{
						// Файл из HTTP
						$small_file_content = file_get_contents($small_image_file_source);
					}
					else
					{
						$small_image_file_source = CMS_FOLDER . $small_image_file_source;

						// Локальный файл, не нужно брать его содержимое.
						$small_file_content = false;
					}

					// Начинаем операцию с файлами только если:
					// файл локальный И он существует,
					// либо файл из сетевого источника
					if(($small_file_content === false
					&& is_file($small_image_file_source))
					|| ($small_file_content !== false))
					{
						// Получаем оригинальное имя файла большого изображения
						$original_file_name_small_image = basename($small_image_file_source);

						// Формируем путь к целевому файлу, если в настройках магазина сказано изменять имена загружаемых файлов, формируем имя вручную, иначе, оставляем оригинальное имя
						if(to_int($shop_row['shop_shops_file_name_conversion']) == 1)
						{
							// Стоит галочка "Изменять названия загружаемых файлов"
							$small_image_extension = mb_strtolower($kernel->GetExtension($data));
							$small_image_file_target = $item_images_dir . 'shop_group_image' . $current_item_id . '.' . $small_image_extension;
							$small_image_item_name = 'shop_group_image' . $current_item_id . '.' . $small_image_extension;

							// Флаг "Нужно конвертировать" используется далее
							$need_to_convert = true;
						}
						else
						{
							// Галочка "Изменять названия загружаемых файлов" не стоит
							$small_image_file_target = $item_images_dir . basename($data);
							$small_image_item_name = basename($data);
							$need_to_convert = false;
						}

						// Нам передали данные, можно создавать папку

						// Создаем каталог изображений группы товаров, если его не существует
						$kernel->PathMkdir($item_images_dir_for_mkdir_special);

						// Формируем массив параметров метода AdminFormFiles
						$admin_load_files_array = array();

						// Параметры большого изображения
						$admin_load_files_array['max_width_big_image'] = 0;
						$admin_load_files_array['max_height_big_image'] = 0;
						$admin_load_files_array['isset_big_image'] = false;

						// Параметры малого изображения
						$admin_load_files_array['max_width_small_image'] = $shop_image_small_max_width;
						$admin_load_files_array['max_height_small_image'] = $shop_image_small_max_height;

						// Путь к файлу водяного знака
						$admin_load_files_array['watermark_file_path'] = $watermark_file;

						// Использование водяного знака в изображениях
						$admin_load_files_array['used_watermark_big_image'] = $shop_watermark_default_use_big;
						$admin_load_files_array['used_watermark_small_image'] = $shop_watermark_default_use_small;

						//  Координаты водяного знака
						$admin_load_files_array['watermark_position_x'] = $shop_watermark_default_position_x;
						$admin_load_files_array['watermark_position_y'] = $shop_watermark_default_position_y;


						// Малое изображение передано, не нужно создавать его из большого
						$admin_load_files_array['use_big_image'] = false;

						// Источник малого изображения равен, в данном случае, источнику большого изображения
						$admin_load_files_array['path_source_small_image'] = $small_image_file_source;

						// Нужно генерировать имена
						if($need_to_convert)
						{
							// Определяем расширение файла
							$small_image_extension = mb_strtolower($kernel->GetExtension($data));
							$small_image_file_target = $item_images_dir . 'small_shop_items_catalog_image' . $current_item_id . '.' . $small_image_extension;
							$small_image_item_name = 'small_shop_items_catalog_image' . $current_item_id . '.' . $small_image_extension;
						}
						// Не нужно генерировать имена
						else
						{
							$small_image_file_target = $item_images_dir . $original_file_name_small_image;
							$small_image_item_name = $original_file_name_small_image;
						}

						// Формируем целевое имя файла малого изображения
						$admin_load_files_array['path_target_small_image'] = $small_image_file_target;

						// Оригинальное имя файла малого изображения равно оригинальному имени файла большого изображения
						$admin_load_files_array['original_file_name_small_image'] = $small_image_file_target;
						// }

						// Если файл из HTTP, необходимо скопировать его в локальный временный файл для работы с ним, каталог для файла тот же что и для конечных файлов
						if($small_file_content)
						{
							// Получаем имя временного файла
							$small_image_http_temp_file = tempnam($item_images_dir, '');

							$admin_load_files_array['path_source_small_image'] = $small_image_http_temp_file;

							// Пишем данные во временный файл
							$f_p = fopen($small_image_http_temp_file, "w");

							if($f_p)
							{
								fwrite($f_p, $small_file_content);
								fclose($f_p);
							}

							$small_file_content = NULL;
						}

						$admin_load_files_array['preserve_aspect_ratio_for_big_image'] = $shop_row['shop_shops_default_save_proportions'];
						$admin_load_files_array['preserve_aspect_ratio_for_small_image'] = $shop_row['shop_shops_default_save_proportions'];


						if($admin_load_files_array['path_source_small_image'] != $admin_load_files_array['path_target_small_image'])
						{
							// Необходимо проверить, есть ли у импортируемой нами группы старые файлы изображений, если они есть их нужно удалить
							$current_group_old_data_row = $shop->GetItem($current_item_id, array('cache_off' => true));

							$old_small_image_full_path = $item_images_dir . $current_group_old_data_row['shop_items_catalog_small_image'];

							if($current_group_old_data_row['shop_items_catalog_small_image'] != '')
							{
								// Малое изображение существует, необходимо удалить его
								if(is_file($old_small_image_full_path))
								{
									@unlink($old_small_image_full_path);
								}
							}

							// Грузим файлы
							$result_download_files = $kernel->AdminLoadFiles($admin_load_files_array);
						}
						else
						{
							$result_download_files = array('small_image' => false);
						}

						// Нужно удалить временный файл
						if(isset($small_image_http_temp_file))
						{
							if(is_file($small_image_http_temp_file))
							{
								@unlink($small_image_http_temp_file);
							}
						}

						if ($result_download_files['small_image'] && isset($small_image_item_name))
						{
							// Если операция завершилась успешно необходимо получить сведения о размерах изображения
							if(file_exists($small_image_file_target) && filesize($small_image_file_target))
							{
								$item_small_image_sizes = getimagesize($small_image_file_target);

								$item_small_image_width = to_int($item_small_image_sizes[0]);
								$item_small_image_height = to_int($item_small_image_sizes[1]);
							}
							else
							{
								$item_small_image_width = $shop_image_small_max_width;

								$item_small_image_height = $shop_image_small_max_height;
							}

							// Операции с файлами успешно завершены, необходимо обновить данные в базе
							$query = "UPDATE `shop_items_catalog_table` SET `shop_items_catalog_small_image`='$small_image_item_name', `shop_items_catalog_small_image_width`='$item_small_image_width', `shop_items_catalog_small_image_height`='$item_small_image_height' WHERE `shop_items_catalog_item_id`='$current_item_id'";

							$DataBase->query($query);
						}
					}
					// Удаляем картинку если указано удалять картинки и картинка передана но файла картинки не существует
					elseif($import_price_action_delete_image)
					{
						delOldFile($current_item_id, 'shop_items_catalog_small_image');
					}
				}
				// Удаляем картинку если указано удалять картинки и картинка не передана
				elseif($import_price_action_delete_image)
				{
					delOldFile($current_item_id, 'shop_items_catalog_small_image');
				}

				// Дополнительные свойства товара
				foreach($external_property_array AS $item_property_id => $item_property_value)
				{
					// Проверяем, передано ли нам малое изображение
					if(isset($external_property_small_array[$item_property_id])
					&& to_str($external_property_small_array[$item_property_id]) != '')
					{
						// Т.к. ниже будет идти собственный цикл foreach для малых изображений,
						// удаляем текущее, во избежание обработки лишних итераций
						$small_image_source = true;
					}
					else
					{
						$small_image_source = false;
					}

					// Необходимо проверить, доступно ли дополнительное свойство родительской группе товара
					if(!$shop->IssetPropertyForGroup(
					array('shop_groups_id' => $current_group_id,
								'shop_list_of_properties_id' => $item_property_id,
								'shop_shops_id' => $shop_shops_id)))
					{
						// Свойство недоступно, делаем его доступным
						$shop->InsertPropertyForGroup(array(
						'shop_groups_id' => $current_group_id,
						'shop_list_of_properties_id' => $item_property_id,
						'shop_shops_id' => $shop_shops_id
						));
					}

					// Получаем информацию о текущем дополнительном свойстве товара
					$item_property_row = $shop->GetPropretyOfItems($item_property_id);

					switch(to_int($item_property_row['shop_list_of_properties_type']))
					{
						case 0:
							// Строка
							$shop->InsertPropertiesItem(array(
							'shop_items_catalog_item_id' => $current_item_id,
							'shop_list_of_properties_id' => $item_property_id,
							'shop_properties_items_value' => $item_property_value,
							'shop_properties_items_value_small' => '',
							'shop_properties_items_file' => '',
							'shop_properties_items_file_small' => ''
							));
						break;

						case 1:
							// Файл

							// Отдельно для метода PathMkdiк, ибо он не любит CMS_FOLDER
							$item_images_dir_for_mkdir_special = $shop->GetItemDir($current_item_id);

							// Формируем путь к каталогу изображений группы товаров
							$item_images_dir = CMS_FOLDER . $item_images_dir_for_mkdir_special ;

							// Формируем путь к файлу источнику, если таковой существует
							$big_image_file_source = $import_price_list_images_path . $item_property_value;

							if(mb_strpos(mb_strtolower($big_image_file_source), "http://") === 0)
							{
								// Файл из HTTP
								$big_file_content = file_get_contents($big_image_file_source);
							}
							else
							{
								$big_image_file_source = CMS_FOLDER . $big_image_file_source;

								// Локальный файл, не нужно брать его содержимое.
								$big_file_content = false;
							}



							// Проверяем, если это НЕ картинка, малое изображение создавать нет смысла, иначе получается дублирование данных

							if(is_file($big_image_file_source))
							{
								if(exif_imagetype($big_image_file_source) === false)
								{
									$not_create_small_image = true;
								}
								else
								{
									$not_create_small_image = false;
								}
							}
							else
							{
								if($big_file_content)
								{
									$not_create_small_image = false;
								}
								else
								{
									$not_create_small_image = true;
								}
							}

							// Получаем оригинальное имя файла большого изображения
							$original_file_name_big_image = basename($big_image_file_source);

							// Формируем путь к целевому файлу, если в настройках магазина сказано изменять имена загружаемых файлов, формируем имя вручную, иначе, оставляем оригинальное имя
							if(to_int($shop_row['shop_shops_file_name_conversion']) == 1)
							{
								// Стоит галочка "Изменять названия загружаемых файлов"
								$big_image_extension = mb_strtolower($kernel->GetExtension($item_property_value));
								$big_image_file_target = $item_images_dir . 'shop_property_file_' .  $current_item_id . '_' . $item_property_row['shop_list_of_properties_id'] . '.' . $big_image_extension;
								$big_image_item_name = 'shop_property_file_' . $current_item_id . '_' . $item_property_row['shop_list_of_properties_id'] . '.' . $big_image_extension;

								// Флаг "Нужно конвертировать" используется далее
								$need_to_convert = true;
							}
							else
							{
								// Галочка "Изменять названия загружаемых файлов" не стоит
								$big_image_file_target = $item_images_dir . basename($item_property_value);
								$big_image_item_name = basename($item_property_value);
								$need_to_convert = false;
							}

							// Нам передали данные, можно создавать папку

							// Создаем каталог изображений группы товаров, если его не существует
							$kernel->PathMkdir($item_images_dir_for_mkdir_special);

							// Формируем массив параметров метода AdminFormFiles
							$admin_load_files_array = array();

							// Параметры большого изображения
							$admin_load_files_array['max_width_big_image'] = $item_property_row['shop_list_of_properties_default_big_width'];
							$admin_load_files_array['max_height_big_image'] = $item_property_row['shop_list_of_properties_default_big_height'];
							$admin_load_files_array['isset_big_image'] = 1;
							$admin_load_files_array['path_source_big_image'] = $big_image_file_source;
							$admin_load_files_array['original_file_name_big_image'] = $original_file_name_big_image;
							$admin_load_files_array['path_target_big_image'] = $big_image_file_target;

							// Параметры малого изображения
							$admin_load_files_array['max_width_small_image'] = $item_property_row['shop_list_of_properties_default_small_width'];
							$admin_load_files_array['max_height_small_image'] = $item_property_row['shop_list_of_properties_default_small_height'];

							// Путь к файлу водяного знака
							$admin_load_files_array['watermark_file_path'] = $watermark_file;

							// Использование водяного знака в изображениях
							$admin_load_files_array['used_watermark_big_image'] = $shop_watermark_default_use_big;
							$admin_load_files_array['used_watermark_small_image'] = $shop_watermark_default_use_small;

							//  Координаты водяного знака
							$admin_load_files_array['watermark_position_x'] = $shop_watermark_default_position_x;
							$admin_load_files_array['watermark_position_y'] = $shop_watermark_default_position_y;

							// Большое изображение является картинкой, и малое изображение не передано
							if($not_create_small_image === false
							&& $small_image_source === false)
							{
								$admin_load_files_array['use_big_image'] = 1;

								// Источник малого изображения равен, в данном случае, источнику большого изображения
								$admin_load_files_array['path_source_small_image'] = $admin_load_files_array['path_source_big_image'];


								// Нужно генерировать имена
								if($need_to_convert)
								{
									// Определяем расширение файла
									$small_image_extension = mb_strtolower($kernel->GetExtension($item_property_value));
									$small_image_file_target = $item_images_dir . 'small_shop_property_file_' . $current_item_id . '_' . $item_property_row['shop_list_of_properties_id'] . '.' . $small_image_extension;
									$small_image_item_name = 'small_shop_property_file_' . $current_item_id . '_' . $item_property_row['shop_list_of_properties_id'] . '.' . $small_image_extension;
								}
								// Не нужно генерировать имена
								else
								{
									// В данном случае даже если сказано сохранять оригинальные имена файлов необходимо добавить к имени малого файла приставку "small_", ибо малое создается из большого и имеет заведомо такое же название что и файл большого изображения
									$small_image_file_target = $item_images_dir . "small_" . $original_file_name_big_image;
									$small_image_item_name = "small_" . $original_file_name_big_image;
								}

								// Формируем целевое имя файла малого изображения
								$admin_load_files_array['path_target_small_image'] = $small_image_file_target;

								// Оригинальное имя файла малого изображения равно оригинальному имени файла большого изображения
								$admin_load_files_array['original_file_name_small_image'] = $small_image_file_target;
							}
							// Большое изображение не является картинкой, не из чего создавать малое
							else
							{
								$admin_load_files_array['use_big_image'] = 0;

								$admin_load_files_array['path_source_small_image'] = '';

								$small_image_file_target = '';

								$small_image_item_name = '';
							}


							// Если файл из HTTP, необходимо скопировать его в локальный временный файл для работы с ним, каталог для файла тот же что и для конечных файлов
							if($big_file_content)
							{

								// Получаем имя временного файла
								$big_image_http_temp_file = tempnam($item_images_dir, '');

								// Переопределяем пути к источникам изображений
								$admin_load_files_array['path_source_big_image'] = $big_image_http_temp_file;

								if(isset($admin_load_files_array['path_source_small_image']))
								{
									$admin_load_files_array['path_source_small_image'] = $big_image_http_temp_file;
								}

								// Пишем данные во временный файл
								$f_p = fopen($big_image_http_temp_file, "w");

								if($f_p)
								{
									fwrite($f_p, $big_file_content);
									fclose($f_p);
								}

								$big_file_content = NULL;
							}

							$admin_load_files_array['preserve_aspect_ratio_for_big_image'] = $shop_row['shop_shops_default_save_proportions'];
							$admin_load_files_array['preserve_aspect_ratio_for_small_image'] = $shop_row['shop_shops_default_save_proportions'];

							if($admin_load_files_array['path_source_big_image'] != $admin_load_files_array['path_target_big_image'])
							{
								$sql = "SELECT * FROM `shop_properties_items_table`
												WHERE `shop_items_catalog_item_id`='$current_item_id'
												AND `shop_list_of_properties_id`='$item_property_id'";

								$old_property_item_files = $DataBase->query($sql);

								if($old_property_item_files)
								{
									$old_property_item_files_row = mysql_fetch_assoc($old_property_item_files);

									if($old_property_item_files_row['shop_properties_items_file'] != '')
									{
										// Было задано старое большое изображение дополнительного свойства
										if(is_file($item_images_dir . $old_property_item_files_row['shop_properties_items_file']))
										{
											@unlink($item_images_dir . $old_property_item_files_row['shop_properties_items_file']);
										}
									}

									if($old_property_item_files_row['shop_properties_items_file_small'] != '')
									{
										// Было задано старое малое изображение дополнительного свойства
										if(is_file($item_images_dir . $old_property_item_files_row['shop_properties_items_file_small']))
										{
											@unlink($item_images_dir . $old_property_item_files_row['shop_properties_items_file_small']);
										}
									}
								}

								// Грузим файлы
								$result_download_files = $kernel->AdminLoadFiles($admin_load_files_array);
							}
							else
							{
								$result_download_files = array('big_image' => false, 'small_image' => false);
							}

							// Нужно удалить временный файл
							if(isset($big_image_http_temp_file))
							{
								if(is_file($big_image_http_temp_file))
								{
									@unlink($big_image_http_temp_file);
								}
							}

							if (!$result_download_files['big_image'])
							{
								$big_image_item_name = '';
							}

							if (!$result_download_files['small_image'])
							{
								$small_image_item_name = '';
							}

							if($big_image_item_name)
							{

								$shop->InsertPropertiesItem(array(
								'shop_items_catalog_item_id' => $current_item_id,
								'shop_list_of_properties_id' => $item_property_id,
								'shop_properties_items_value' => $big_image_item_name,
								'shop_properties_items_value_small' => $small_image_item_name,
								'shop_properties_items_file' => $big_image_item_name,
								'shop_properties_items_file_small' => $small_image_item_name
								));
							}


						break;

						case 2:
							// Список

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

								// Необходимо проверить, существует ли переданное значение среди значений списка
								$list_item_value_row = $lists->GetListItemIfIssetValue($item_property_row['lists_id'], $item_property_value);

								if($list_item_value_row)
								{
									// Значение свойства обнаружено
									$lists_items_id = $list_item_value_row['lists_items_id'];
								}
								else
								{
									// Значение свойства не обнаружено, необходимо добавить значение
									$lists_items_id = $lists->InsertListItem(array(
									'lists_id' => $item_property_row['lists_id'],
									'lists_items_value' => $item_property_value
									));
								}

								$shop->InsertPropertiesItem(array(
								'shop_items_catalog_item_id' => $current_item_id,
								'shop_list_of_properties_id' => $item_property_id,
								'shop_properties_items_value' => $lists_items_id,
								'shop_properties_items_value_small' => '',
								'shop_properties_items_file' => '',
								'shop_properties_items_file_small' => ''
								));
							}

						break;

						case 3:
							// Большое текстовое поле

							$shop->InsertPropertiesItem(array(
							'shop_items_catalog_item_id' => $current_item_id,
							'shop_list_of_properties_id' => $item_property_id,
							'shop_properties_items_value' => $item_property_value,
							'shop_properties_items_value_small' => '',
							'shop_properties_items_file' => '',
							'shop_properties_items_file_small' => ''
							));
						break;

						case 4:
							// Визуальный редактор

							$shop->InsertPropertiesItem(array(
							'shop_items_catalog_item_id' => $current_item_id,
							'shop_list_of_properties_id' => $item_property_id,
							'shop_properties_items_value' => $item_property_value,
							'shop_properties_items_value_small' => '',
							'shop_properties_items_file' => '',
							'shop_properties_items_file_small' => ''
							));
						break;

						case 5:
							// Дата

							$shop->InsertPropertiesItem(array(
							'shop_items_catalog_item_id' => $current_item_id,
							'shop_list_of_properties_id' => $item_property_id,
							'shop_properties_items_value' => $item_property_value,
							'shop_properties_items_value_small' => '',
							'shop_properties_items_file' => '',
							'shop_properties_items_file_small' => ''
							));
						break;

						case 6:
							// ДатаВремя

							$shop->InsertPropertiesItem(array(
							'shop_items_catalog_item_id' => $current_item_id,
							'shop_list_of_properties_id' => $item_property_id,
							'shop_properties_items_value' => $item_property_value,
							'shop_properties_items_value_small' => '',
							'shop_properties_items_file' => '',
							'shop_properties_items_file_small' => ''
							));
						break;

						case 7:
							// Флажок

							$shop->InsertPropertiesItem(array(
							'shop_items_catalog_item_id' => $current_item_id,
							'shop_list_of_properties_id' => $item_property_id,
							'shop_properties_items_value' => $item_property_value,
							'shop_properties_items_value_small' => '',
							'shop_properties_items_file' => '',
							'shop_properties_items_file_small' => ''
							));
						break;

						default:
						break;
					}
				}

				// Обрабатываем отдельный массив для малых изображений допсвойств типа "Файл"
				foreach($external_property_small_array as $property_id => $item_property_value)
				{
					// Получаем информацию о текущем дополнительном свойстве товара
					$item_property_row = $shop->GetPropretyOfItems($property_id);

					// Отдельно для метода PathMkdiк, ибо он не любит CMS_FOLDER
					$item_images_dir_for_mkdir_special = $shop->GetItemDir($current_item_id);

					// Формируем путь к каталогу изображений группы товаров
					$item_images_dir = CMS_FOLDER . $item_images_dir_for_mkdir_special ;

					// Формируем путь к файлу источнику, если таковой существует
					$small_image_file_source = $import_price_list_images_path . $item_property_value;

					if(mb_strpos(mb_strtolower($small_image_file_source), "http://") === 0)
					{
						// Файл из HTTP
						$small_file_content = file_get_contents($small_image_file_source);
					}
					else
					{
						$small_image_file_source = CMS_FOLDER . $small_image_file_source;

						// Локальный файл, не нужно брать его содержимое.
						$small_file_content = false;
					}

					// Получаем оригинальное имя файла малого изображения
					$original_file_name_small_image = basename($small_image_file_source);

					// Формируем путь к целевому файлу, если в настройках магазина сказано изменять имена загружаемых файлов, формируем имя вручную, иначе, оставляем оригинальное имя
					if(to_int($shop_row['shop_shops_file_name_conversion']) == 1)
					{
						// Стоит галочка "Изменять названия загружаемых файлов"
						$small_image_extension = mb_strtolower($kernel->GetExtension($item_property_value));
						$small_image_file_target = $item_images_dir . 'small_shop_property_file_' .  $current_item_id . '_' . $item_property_row['shop_list_of_properties_id'] . '.' . $small_image_extension;
						$small_image_item_name = 'small_shop_property_file_' . $current_item_id . '_' . $item_property_row['shop_list_of_properties_id'] . '.' . $small_image_extension;

						// Флаг "Нужно конвертировать" используется далее
						$need_to_convert = true;
					}
					else
					{
						// Галочка "Изменять названия загружаемых файлов" не стоит
						$small_image_file_target = $item_images_dir . basename($item_property_value);
						$small_image_item_name = basename($item_property_value);
						$need_to_convert = false;
					}

					// Нам передали данные, можно создавать папку

					// Создаем каталог изображений группы товаров, если его не существует
					$kernel->PathMkdir($item_images_dir_for_mkdir_special);

					// Формируем массив параметров метода AdminFormFiles
					$admin_load_files_array = array();

					// Параметры большого изображения
					$admin_load_files_array['max_width_big_image'] = 0;
					$admin_load_files_array['max_height_big_image'] = 0;
					$admin_load_files_array['isset_big_image'] = 0;
					$admin_load_files_array['path_source_big_image'] = '';
					$admin_load_files_array['original_file_name_big_image'] = '';
					$admin_load_files_array['path_target_big_image'] = '';

					// Параметры малого изображения
					$admin_load_files_array['max_width_small_image'] = $item_property_row['shop_list_of_properties_default_small_width'];
					$admin_load_files_array['max_height_small_image'] = $item_property_row['shop_list_of_properties_default_small_height'];

					// Путь к файлу водяного знака
					$admin_load_files_array['watermark_file_path'] = $watermark_file;

					// Использование водяного знака в изображениях
					$admin_load_files_array['used_watermark_big_image'] = 0;
					$admin_load_files_array['used_watermark_small_image'] = $shop_watermark_default_use_small;

					//  Координаты водяного знака
					$admin_load_files_array['watermark_position_x'] = $shop_watermark_default_position_x;
					$admin_load_files_array['watermark_position_y'] = $shop_watermark_default_position_y;

					/* // Большое изображение является картинкой, и малое изображение не передано
					if(!isset($not_create_small_image)
					&& $small_image_source === false)
					{ */
					$admin_load_files_array['use_big_image'] = 0;

					// Источник малого изображения
					$admin_load_files_array['path_source_small_image'] = $small_image_file_source;

					// Формируем целевое имя файла малого изображения
					$admin_load_files_array['path_target_small_image'] = $small_image_file_target;

					// Оригинальное имя файла малого изображения равно оригинальному имени файла большого изображения
					$admin_load_files_array['original_file_name_small_image'] = $small_image_item_name;

					/* }
					// Большое изображение не является картинкой, не из чего создавать малое
					else
					{
						$admin_load_files_array['use_big_image'] = 0;

						$admin_load_files_array['path_source_small_image'] = '';

						$small_image_file_target = '';

						$small_image_item_name = '';

						unset($not_create_small_image);
					} */


					// Если файл из HTTP, необходимо скопировать его в локальный временный файл для работы с ним, каталог для файла тот же что и для конечных файлов
					if($small_file_content)
					{
						// Получаем имя временного файла
						$small_image_http_temp_file = tempnam($item_images_dir, '');

						// Переопределяем пути к источникам изображений
						$admin_load_files_array['path_source_big_image'] = $small_image_http_temp_file;

						if(isset($admin_load_files_array['path_source_small_image']))
						{
							$admin_load_files_array['path_source_small_image'] = $small_image_http_temp_file;
						}

						// Пишем данные во временный файл
						$f_p = fopen($small_image_http_temp_file, "w");

						if($f_p)
						{
							fwrite($f_p, $small_file_content);
							fclose($f_p);
						}

						$small_file_content = NULL;
					}

					$admin_load_files_array['preserve_aspect_ratio_for_big_image'] = $shop_row['shop_shops_default_save_proportions'];
					$admin_load_files_array['preserve_aspect_ratio_for_small_image'] = $shop_row['shop_shops_default_save_proportions'];


					if($admin_load_files_array['path_source_small_image'] != $admin_load_files_array['path_target_small_image'])
					{
						$sql = "SELECT * FROM `shop_properties_items_table`
									WHERE `shop_items_catalog_item_id`='$current_item_id'
									AND `shop_list_of_properties_id`='$property_id'";

						$old_property_item_files = $DataBase->query($sql);

						if($old_property_item_files)
						{
							$old_property_item_files_row = mysql_fetch_assoc($old_property_item_files);

							if($old_property_item_files_row['shop_properties_items_file_small'] != '')
							{
								// Было задано старое малое изображение дополнительного свойства
								if(is_file($item_images_dir . $old_property_item_files_row['shop_properties_items_file_small']))
								{
									@unlink($item_images_dir . $old_property_item_files_row['shop_properties_items_file_small']);
								}
							}
						}

						// Грузим файлы
						$kernel->AdminLoadFiles($admin_load_files_array);
					}

					// Нужно удалить временный файл
					if(isset($small_image_http_temp_file))
					{
						if(is_file($small_image_http_temp_file))
						{
							@unlink($small_image_http_temp_file);
						}
					}

					if($result = $shop->GetValueItemProperty($current_item_id, $property_id))
					{
						$shop->UpdatePropertiesItem(array(
							'shop_properties_items_id' => $result['shop_properties_items_id'],
							'shop_items_catalog_item_id' => $result['shop_items_catalog_item_id'],
							'shop_list_of_properties_id' => $result['shop_list_of_properties_id'],
							'shop_properties_items_value' => $result['shop_properties_items_value'],
							'shop_properties_items_value_small' => $small_image_item_name,
							'shop_properties_items_file' => $result['shop_properties_items_file'],
							'shop_properties_items_file_small' => $small_image_item_name
						));
					}
					else
					{
					 $shop->InsertPropertiesItem(array(
							'shop_items_catalog_item_id' => $current_item_id,
							'shop_list_of_properties_id' => $property_id,
							'shop_properties_items_value' => '',
							'shop_properties_items_value_small' => $small_image_item_name,
							'shop_properties_items_file' => '',
							'shop_properties_items_file_small' => $small_image_item_name
						));
					}
				}

				if(isset($external_price_array))
				{
					foreach($external_price_array as $price_id => $price_value)
					{
						$price_param = array();
						$price_param['shop_items_catalog_item_id'] = $current_item_id;
						$price_param['shop_list_of_prices_id'] = $price_id;
						$price_param['shop_prices_to_item_value'] = to_float($price_value);

						// Если уже существует значение
						if ($shop->GetPriceForItem($price_id, $current_item_id, array('cache_off' => true)))
						{
							$shop->UpdatePricesToItem($price_param);
						}
						else
						{
							$shop->InsertPricesToItem($price_param);
						}
					}

					// Очищаем массив дополнительных цен товара
					$external_price_array = array();
				}


				// Очищаем массив дополнительных свойств товара
				$external_property_array = array();
				$external_property_small_array = array();
				$additional_groups_for_item = array();
			}
		}
	}

	// Сбрасываем данные в конце каждой итерации
	// Обнуляем идентификактор товара
	$current_item_id = 0;

	$current_item_data_array = array();

	$current_group_id = $shop_groups_parent_id;

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

		$count_current_iteration++;

		// Прерываем цикл - делаем перезагрузку страницы (+3 - на случай похода к границе отключения скрипта)
		if (($time_on_iteration * $it +3) > $import_price_max_time
		|| $count_current_iteration >= $import_price_max_count)
		{
			// Помещаем в массив остальные необходимые параметры
			$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['import_price_parent_group_id'] = $shop_groups_parent_id;

			$get_param['count_dir'] = $count_dir;

			@ fclose($fp);

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

			// Выводим сообщение о том, что следущий этап произойдет через 1 секунду
			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/>';
			echo $GLOBALS['MSG_shops']['msg_download_price']?>

			<script type="text/javascript">
				<?php

				$uniq = "?action=import_data&shop_shops_id=$shop_shops_id&import_price_encoding={$_REQUEST['import_price_encoding']}";

				if(defined('AUTO_IMPORT'))
				{
					$url = "{$_SERVER['PHP_SELF']}{$uniq}&get_param=".urlencode($get_param_serialize);

					?>
					window.location = '<?php echo $url ?>';
					<?php
				}
				else
				{
					$url = "/admin/shop/shop.php{$uniq}";
					?>
					setTimeout(function ()
					{

						var cmsrequest = '<?php echo $url?>';

						var req = new JsHttpRequest();

						// Отображаем экран загрузки
						ShowLoadingScreen();

						// Этот код вызовется автоматически, когда загрузка данных завершится.
						req.onreadystatechange = function()
						{
							if (req.readyState == 4)
							{
								// Возвращаем обычный курсор
								document.body.style.cursor = '';

								// Убираем затемнение.
								HideLoadingScreen();
								callbackfunction_DoLoadAjax(req.responseJS);
								return true;
							}
						}

						req.open(null, cmsrequest, true);
						// Если POST-ом
						//req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

						// Отсылаем данные в обработчик.
						req.send( { "get_param" : '<?php echo urlencode($get_param_serialize)?>' } );

						// Курсор ставим на часики.
						document.body.style.cursor = "wait";

					}, 1000);
			<?php
				}
			?>
			</script>
			<?php

			return;
		}
	}
}

// Закрываем файл
@ 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/>';

return true;

function delOldFile($current_item_id, $ftype)
{
	$DataBase = & singleton('DataBase');

	$shop = & singleton('shop');

	$item_dir = $shop->GetItemDir($current_item_id);

	$item_row = $shop->GetItem($current_item_id, array('cache_off' => true));

	if($item_row[$ftype])
	{
		// Формируем путь к каталогу изображений группы товаров
		$item_images_dir = CMS_FOLDER . $item_dir . $item_row[$ftype];

		if(is_file($item_images_dir))
		{
			if(unlink($item_images_dir))
			{
				$sql = "UPDATE `shop_items_catalog_table` SET `$ftype`='' WHERE `shop_items_catalog_item_id`='$current_item_id'";

				$DataBase->query($sql);
			}
		}
	}
}
?>