<?php

/**
 * Система управления сайтом HostCMS v. 5.xx
 * Copyright © 2005-2010 ООО "Хостмэйк" (Hostmake LLC), http://www.hostcms.ru
 *
 * Обработчик добавления/редактирования каталога товаров.
 *
 * Файл: /admin/shop/action/add_items_catalog.php
 *
 * @author Hostmake LLC
 * @version 5.x
 */
$shop = & singleton('shop');
$kernel = & singleton('kernel');
$DataBase = & singleton('DataBase');

$Image = & singleton('Image');
$date = & singleton('DateClass');
$param = array ();
$shop_shops_id = to_int($_REQUEST['shop_shops_id']);
$ShopRow = $shop->GetShop($shop_shops_id);

$param['name'] = to_str($_REQUEST['items_catalog_name']);
$param['marking'] = to_str($_REQUEST['items_catalog_marking']);
$param['description'] = to_str($_REQUEST['items_catalog_description']);
$param['text'] = to_str($_REQUEST['items_catalog_text']);
$param['shop_vendorcode'] = quote_smart(to_str($_REQUEST['shop_vendorcode']));
$param['shop_items_catalog_type'] = to_int($_REQUEST['shop_items_catalog_type']);
$param['shop_items_cml_id'] = to_str($_REQUEST['shop_items_cml_id']);
$param['shop_items_catalog_show_count'] = to_str($_REQUEST['shop_items_catalog_show_count']);

if (isset ($_REQUEST['shop_items_catalog_rambler_pokupki_allow']))
{ 
	$param['shop_items_catalog_rambler_pokupki_allow'] = 1;
}
else
{
	$param['shop_items_catalog_rambler_pokupki_allow'] = 0;
}

// Проверяем подключен ли модуль типографики
if (class_exists("typograph"))
{
	$typograph = & singleton('typograph');

	// Модуль типографики подключен, проверяем, нужно ли применять типографику описания
	if (isset ($_REQUEST['use_typograph_for_desc']))
	{
		// Создаем объект типографа и типографируем текст
		$param['description'] = $typograph->ProcessTypographic($param['description'], isset ($_REQUEST['trailing_punctuation_for_desc']));
	}

	// Модуль типографики подключен, проверяем, нужно ли применять типографику для текста
	if (isset ($_REQUEST['use_typograph_for_text']))
	{
		// Создаем объект типографа и типографируем текст
		$param['text'] = $typograph->ProcessTypographic($param['text'], isset ($_REQUEST['trailing_punctuation_for_text']));
	}
} // END Типорграф

$param['tax_id'] = to_int($_REQUEST['items_catalog_tax']);
$param['groups_id'] = to_int($_REQUEST['shop_groups_parent_id2']);
$param['currency_id'] = to_int($_REQUEST['items_catalog_currency']);
$param['shops_id'] = to_int($_REQUEST['shop_shops_id']);
$param['producers_list_id'] = to_int($_REQUEST['items_catalog_producers']);
$param['mesures_id'] = to_int($_REQUEST['items_catalog_mesure']);
$param['weight'] = to_float($_REQUEST['items_catalog_weight']);

$param['price'] = $shop->ConvertPrice(to_str($_REQUEST['items_catalog_price']));
//$param['image'] = '';
$param['seo_title'] = to_str($_REQUEST['items_catalog_seo_title']);
$param['seo_description'] = to_str($_REQUEST['items_catalog_seo_description']);

$param['seo_keywords'] = trim(to_str($_REQUEST['items_catalog_seo_keywords']));

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

		// Вставка тэгов автоматически разрешена
		if ($ShopRow && $ShopRow['shop_shops_apply_keywords_automatic'] == 1)
		{
			// получаем хэш названия и описания группы
			$array_text = $kernel->ClearHtml($param['name'] . " " . $param['description'] . " " . $param['text'], 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)
				{
					$param['seo_keywords'] = implode(", ", $coeff_intersect);
				}
			}
		}
	}
}

$param['order'] = to_int($_REQUEST['items_catalog_order']);
$param['site_users_id'] = to_int($_REQUEST['site_users_id']);

// Путь к товару
$param['path'] = to_str($_REQUEST['items_catalog_path']);
$param['shop_sallers_id'] = to_str($_REQUEST['shop_sallers_id']);

// Яндекс.Маркет
if (isset ($_REQUEST['items_catalog_yandex_market_allow']))
{
	$param['shop_items_catalog_yandex_market_allow'] = 1;
}
else
{
	$param['shop_items_catalog_yandex_market_allow'] = 0;
}

// Дата
$param['shop_items_catalog_date_time'] = $date->datetime_format_sql($_REQUEST['shop_items_catalog_date_time']);

$param['shop_items_catalog_putoff_date'] = $date->datetime_format_sql($_REQUEST['shop_items_catalog_putoff_date']);

$param['shop_items_catalog_putend_date'] = $date->datetime_format_sql($_REQUEST['shop_items_catalog_putend_date']);

//$param['shop_items_catalog_small_image_width'] = to_int($_REQUEST['small_image_max_width_items_catalog_image']);

//$param['shop_items_catalog_small_image_height'] = to_int($_REQUEST['small_image_max_height_items_catalog_image']);

//$param['shop_items_catalog_big_image_width'] = to_int($_REQUEST['shop_image_big_max_width']);
//$param['shop_items_catalog_big_image_height'] = to_int($_REQUEST['shop_image_big_max_height']);

// Значение максимальной ширины большого изображения
//$param['shop_items_catalog_big_image_width'] = to_int($_POST['big_image_max_width_items_catalog_image']);
// Значение максимальной высоты большого изображения
//$param['shop_items_catalog_big_image_height'] = to_int($_POST['big_image_max_height_items_catalog_image']);

$param['shop_items_catalog_yandex_market_bid'] = to_int($_REQUEST['items_catalog_yandex_market_bid']);
$param['shop_items_catalog_yandex_market_cid'] = to_int($_REQUEST['items_catalog_yandex_market_cid']);

$param['shop_items_catalog_yandex_market_sales_notes'] = to_str($_REQUEST['shop_items_cml_sales_notes']);

// Активность и индексация
if (isset ($_REQUEST['items_catalog_is_active']))
{
	$param['is_active'] = 1;
}
else
{
	$param['is_active'] = 0;
}

// Группа доступа
$param['shop_items_catalog_access'] = to_int($_REQUEST['shop_items_catalog_access']);

if (isset ($_REQUEST['items_catalog_indexation']))
{
	$param['indexation'] = 1;
}
else
{
	$param['indexation'] = 0;
}

if (isset ($_REQUEST['item_modification_id']))
{
	$param['shop_items_catalog_modification_id'] = to_int($_REQUEST['item_modification_id']);
	
	if ($param['shop_items_catalog_modification_id'])
	{
		// При вставке модификации группа равна 0
		$param['groups_id'] = 0;
	}
	else
	{
		// Если мы делаем из модификации обычный товар, необходимо положить его в ту же группу,
		// где был его родительский товар, когда он был модификацией
		// Нужно получить товар, если он был модификацией, то только тогда делать следующую замену!
		//$param['groups_id'] = to_int($_REQUEST['shop_groups_parent_id']);
	}
}

if (isset ($_REQUEST['edit_items']))
{
	$param['item_id'] = to_int($_REQUEST['edit_items']);
}

if ($param['shop_items_catalog_type'] == 0 && isset ($_REQUEST['edit_items']))
{
	$id = to_int($_REQUEST['edit_items']);

	// проверяем есть ли у данного товара электронные товары
	$res = $shop->GetEitemsForItem($id);

	$count_eitems = mysql_num_rows($res);

	if ($count_eitems > 0)
	{
		$shop->DeleteAllEItems($id, $shop_shops_id);
	}
}

//=======================

$shop_item_catalog_image = '';
$shop_item_catalog_small_image = '';

// Путь к файлу-источнику большого изображения;
$param['path_source_big_image'] = to_str($_FILES['items_catalog_image']['tmp_name']);

// Путь к файлу-источнику малого изображения;
$param['path_source_small_image'] = to_str($_FILES['items_catalog_image_small']['tmp_name']);

//Оригинальное имя файла большого изображения
$param['original_file_name_big_image'] = to_str($_FILES['items_catalog_image']['name']);

// Путь к создаваемому файлу большого изображения;
$param['path_target_big_image'] = $shop_item_catalog_image;

// Путь к создаваемому файлу малого изображения;
$param['path_target_small_image'] = $shop_item_catalog_small_image;

// Оригинальное имя файла малого изображения
$param['original_file_name_small_image'] = to_str($_FILES['items_catalog_image_small']['name']);
// Использовать большое изображение для создания малого (true - использовать (по умолчанию), false - не использовать)

if (isset($_POST['used_big_image_items_catalog_image']) && $param['original_file_name_big_image'] != '' && $param['original_file_name_small_image'] == '')
{
	$param['use_big_image'] = 1;
}
/*else
{
	$param['use_big_image'] = 0;
}*/

// Значение максимальной ширины большого изображения
$param['max_width_big_image'] = to_int($_POST['big_image_max_width_items_catalog_image']);

// Значение максимальной высоты большого изображения
$param['max_height_big_image'] = to_int($_POST['big_image_max_height_items_catalog_image']);

// Значение максимальной ширины малого изображения;
$param['max_width_small_image'] = to_int($_POST['small_image_max_width_items_catalog_image']);

// Значение максимальной высоты малого изображения;
$param['max_height_small_image'] = to_int($_POST['small_image_max_height_items_catalog_image']);

//$InformationSystemRow = $information_system->GetInformationSystem(to_int($_POST['information_system_id']));

// Для магазина задан "водяной знак"
if ($ShopRow['shop_watermark_file'] != '' && is_file(CMS_FOLDER . UPLOADDIR . 'shop_' . $shop_shops_id . '/watermarks/' . $ShopRow['shop_watermark_file']))
{
	$watermark_file = CMS_FOLDER . UPLOADDIR . 'shop_' . $shop_shops_id . '/watermarks/' . $ShopRow['shop_watermark_file'];
}
else
{
	$watermark_file = '';
}

// Путь к файлу с "водяным знаком"
$param['watermark_file_path'] = $watermark_file;

// Позиция "водяного знака" по оси X image_watermark_position_x_groups_image
$param['watermark_position_x'] = to_str($_POST['image_watermark_position_x_items_catalog_image']);

// Позиция "водяного знака" по оси Y
$param['watermark_position_y'] = to_str($_POST['image_watermark_position_y_items_catalog_image']);

// Наложить "водяной знак" на большое изображение (true - наложить (по умолчанию), false - не наложить);
$param['used_watermark_big_image'] = isset ($_POST['big_image_is_use_watermark_items_catalog_image']);

// Наложить "водяной знак" на малое изображение (true - наложить (по умолчанию), false - не наложить);
$param['used_watermark_small_image'] = isset ($_POST['small_image_is_use_watermark_items_catalog_image']);

// Сохранять пропорции изображения для большого изображения
$param['preserve_aspect_ratio_for_big_image'] = isset ($_POST['big_image_preserve_aspect_ratio_items_catalog_image']);

// Сохранять пропорции изображения для малого изображения
$param['preserve_aspect_ratio_for_small_image'] = isset ($_POST['small_image_preserve_aspect_ratio_items_catalog_image']);

// Осуществляем вставку товара
$shop_items_catalog_id = $shop->InsertItem($param);

// Необходимо обработать значение количества для каждого склада
$aWarehouses = $warehouse->GetAllWarehousesForShop($shop_shops_id);

if($aWarehouses)
{
	foreach ($aWarehouses as $row)
	{
		if(isset($_REQUEST['items_catalog_rest_warehouse_' . $row['shop_warehouse_id']]))
		{
			$warehouse->InsertWarehouseItems(array(
				'shop_items_catalog_item_id' => $shop_items_catalog_id,
				'shop_warehouse_id' => $row['shop_warehouse_id'],
				'shop_warehouse_items_count' => $_REQUEST['items_catalog_rest_warehouse_' . $row['shop_warehouse_id']]
			));
		}
	}
}


// Проверяем существуют ли товары с таким же артиклем
if (!empty($param['marking']))
{
	$marking = quote_smart($param['marking']);

	$query = "SELECT shop_items_catalog_item_id FROM shop_items_catalog_table " .
			"WHERE shop_items_catalog_item_id != $shop_items_catalog_id AND " .
			"shop_items_catalog_marking = '{$marking}' and shop_shops_id= '{$param['shops_id']}'";
		
	$resource_marking = $DataBase->select($query);

	if ($resource_marking && mysql_num_rows($resource_marking) > 0)
	{
		show_error_message($GLOBALS['MSG_shops']['error_marking_add_items_catalog']);
	}
}

if (!isset ($_REQUEST['edit_items']))
{
	$admin_forms = new admin_forms();
	$window_id = $admin_forms->GetWindowId();
	?><script type="text/javascript">
	$.appendInput('<?php echo $window_id?>', 'EditAddItem', 'edit_items', '<?php echo $shop_items_catalog_id?>');
	</script><?php

	show_message($GLOBALS['MSG_shops']['success_add_items_catalog']);
}
else /*if (!isset($_REQUEST['shop_items_catalog_modification_id']))*/ {
	$shop_items_catalog_id = to_int($_REQUEST['edit_items']);
	show_message($GLOBALS['MSG_shops']['success_edit_items_catalog']);
}

// Обработка тэгов товара
if (!isset ($_REQUEST['items_catalog_tags']) || trim(to_str($_REQUEST['items_catalog_tags'])) == '')
{
	if (class_exists('Tag'))
	{
		$Tag = & singleton('Tag');
		// Удаляем связи c метками //

		// Получаем список связанных меток
		$tag_result = $Tag->GetTagRelation(array (
			'shop_items_catalog_item_id' => $shop_items_catalog_id
		));

		if ($tag_result && count($tag_result))
		{
			foreach ($tag_result as $k => $v)
			{
				// удаляем связи
				$Tag->DeleteTagRelation(array (
					'shop_items_catalog_item_id' => $shop_items_catalog_id,
					'tag_id' => $k
				));
			}
		}

		// Вставка тэгов автоматически разрешена
		if ($ShopRow && $ShopRow['shop_shops_apply_tags_automatic'] == 1)
		{
			// получаем хэш названия, текста и описания товара
			$array_text = $kernel->ClearHtml($param['name'] . " " . $param['description'] . " " . $param['text'], array (
			'hash_function' => 'crc32'
			));
			
			$array_text = array_unique($array_text);

			// Получаем список меток
			if (isset($tags_result) && mysql_num_rows($tags_result) > 0)
			{
				mysql_data_seek($tags_result, 0);
			}
			else
			{
				$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);

					//echo count($array_text)."=".count($array_tags)."<br>";
				
					// Текст метки меньше текста товара, т.к. должна входить метка в текст товара, а не наоборот
					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_id'], $coeff_intersect))
							{
								// Добавляем в массив
								$coeff_intersect[] = $tag_row['tag_id'];
							}
						}
					}
				}

				// Найдено соответствие с тэгами
				if (count($coeff_intersect) > 0)
				{
					foreach ($coeff_intersect as $key => $val)
					{
						// Связываем тэг с товаром
						$Tag->InsertTagRelation(array (
						'tag_id' => $val,
						'shop_items_catalog_item_id' => $shop_items_catalog_id
						));
					}
				}
			}
		}
	}
}
// Добавляем метки и связи с метками
else
{
	$shop->InsertItemsCatalogTags(array (
		'tags' => to_str($_REQUEST['items_catalog_tags']),
		'shop_items_catalog_item_id' => $shop_items_catalog_id
	));
}

// Удаляем ненужные более параметры на сохранение картинки, т.к. картинка уже сохранена, а ниже пойдет вставка товара снова
unset ($param['path_source_big_image']);
unset ($param['path_source_small_image']);
unset ($param['original_file_name_big_image']);
unset ($param['path_target_big_image']);
unset ($param['path_target_small_image']);
unset ($param['original_file_name_small_image']);
unset ($param['use_big_image']);
unset ($param['watermark_file_path']);
unset ($param['watermark_position_x']);
unset ($param['watermark_position_y']);
unset ($param['used_watermark_big_image']);
unset ($param['used_watermark_small_image']);
unset ($param['isset_big_image']);
unset ($param['shop_items_catalog_small_image_height']);
unset ($param['shop_items_catalog_small_image_width']);
unset ($param['shop_items_catalog_big_image_height']);
unset ($param['shop_items_catalog_big_image_width']);

if (isset ($_REQUEST['edit_items']) && !isset ($_REQUEST['add_new_item_modification']))
{
	$param['item_id'] = $shop_items_catalog_id;
	//echo "<br><br>";	print_r($param);echo "<br><br><br>";
	$shop_items_catalog_id = $shop->InsertItem($param);
}

// Проверяем добавлен ли товар
if ($shop_items_catalog_id > 0)
{
	// Создавать ли директорию для файлов
	//$create_dir = isset($_FILES['items_catalog_image']['size']);

	if (isset($_FILES['items_catalog_image']) && isset($_FILES['items_catalog_image']['size']) && $_FILES['items_catalog_image']['size'] > 0
	|| isset($_FILES['items_catalog_image_small']) && isset($_FILES['items_catalog_image_small']['size']) && $_FILES['items_catalog_image_small']['size'] > 0)
	{
		$create_dir = true;
	}
	else
	{
		$create_dir = false;
	}

	// Создаем директорию для хранения файла
	//$uploaddir = $shop->CreateDirectory($shop_shops_id, "item_catalog_$shop_items_catalog_id", false, $create_dir);
	
	$inner_path = $shop->GetItemDir($shop_items_catalog_id);
	
	// Создаем директории по новому стандарту
	$uploaddir = CMS_FOLDER . $inner_path;

	/*if (!$uploaddir)
	{
		// Ставим путь по умолчанию
		$uploaddir = CMS_FOLDER . UPLOADDIR;

		show_error_message($GLOBALS['MSG_shops']['error_add_items_catalog_chmod'] . CMS_FOLDER . UPLOADDIR);
	}*/
}

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

$param = array ();

// Получаем все св-ва, т.к. могуть быть у товара св-ва, которые до этого были отключены из вывода группыю
$res = $shop->GetAllListProperties($shop_shops_id);

// Идентификатор дополнительного свойства
$external_property_id = 0;

while ($data = mysql_fetch_assoc($res))
{
	$ids = to_int($data['shop_list_of_properties_type']);

	// Идентификатор дополнительного свойства в таблице дополнительных свойств ВСЕХ элементов
	$id = to_int($data['shop_list_of_properties_id']);

	// Обновляем св-во только тогда, когда есть значение
	if (isset ($_REQUEST["add_value_{$id}"])
	|| isset ($_FILES["add_value_{$id}"])
	|| isset ($_FILES["add_value_{$id}_small"])
	|| $ids == 7 // checkbox
	)
	{
		$property_rows = $shop->GetValueItemProperty($shop_items_catalog_id, $id);

		// Нашли дополнительное свойство, определяем его тип
		switch ($ids)
		{
			case 0 : // Строка
				{
					$val = quote_smart(to_str($_REQUEST['add_value_' . $id]));

					if (!$property_rows)
					{
						$query = "INSERT INTO `shop_properties_items_table`
										(`shop_items_catalog_item_id`,
										`shop_list_of_properties_id`,
										`shop_properties_items_value`)
										VALUES
										('$shop_items_catalog_id',
										'$id',
										'$val')";
					}
					else
					{
						// Получаем идентификатор товара
						$id_item = $property_rows['shop_properties_items_id'];
						$query = "UPDATE `shop_properties_items_table`
										SET `shop_properties_items_value` = '$val' 
										WHERE `shop_properties_items_id` = '$id_item' AND 
										`shop_items_catalog_item_id` = '$shop_items_catalog_id'";
					}

					$DataBase->query($query);
					break;
				}
			case 1 : // Файл
				{
					$shop_item_catalog_image = '';

					$shop_item_catalog_small_image = '';

					// Создаем директорию для хранения файла по новому стандарту
					$kernel->PathMkdir($inner_path);
					
					// Обработка большого файла
					if (to_str($_FILES['add_value_' . $id]['tmp_name']) != '' && to_int($_FILES['add_value_' . $id]['size']) > 0)
					{
						$param['isset_big_image'] = true;
						
						if ($ShopRow['shop_shops_file_name_conversion'] == 1)
						{
							// Определяем расширение файла
							$exp = mb_strtolower($kernel->GetExtension($_FILES['add_value_' . $id]['name']));
								
							if (!empty($exp))
							{
								$exp = '.' . $exp;
							}

							$shop_item_catalog_image = $uploaddir . 'shop_property_file_' . $shop_items_catalog_id . '_' . $id . $exp;

							$shop_item_catalog_small_image = $uploaddir . 'small_shop_property_file_' . $shop_items_catalog_id . '_' . $id . $exp;
						}
						else
						{
							$shop_item_catalog_image = $uploaddir . $_FILES['add_value_' . $id]['name'];

							$shop_item_catalog_small_image = $uploaddir . 'small_' . $_FILES['add_value_' . $id]['name'];
						}
					}
					
					// Обработка малого файла
					if (to_str($_FILES['add_value_' . $id . '_small']['tmp_name']) != ''
					&& to_int($_FILES['add_value_' . $id . '_small']['size']) > 0)
					{
						if ($ShopRow['shop_shops_file_name_conversion'] == 1)
						{
							// Определяем расширение файла
							$exp = mb_strtolower($kernel->GetExtension($_FILES['add_value_' . $id . '_small']['name']));
								
							if (!empty($exp))
							{
								$exp = '.' . $exp;
							}

							$shop_item_catalog_small_image = $uploaddir . 'small_shop_property_file_' . $shop_items_catalog_id . '_' . $id . $exp;
						}
						else
						{
							$shop_item_catalog_small_image = $uploaddir . 'small_' . $_FILES['add_value_' . $id . '_small']['name'];
						}
					}

					// Путь к файлу-источнику большого изображения;
					$param['path_source_big_image'] = to_str($_FILES['add_value_' . $id]['tmp_name']);

					if (isset ($_FILES['add_value_' . $id . '_small']['tmp_name']) && $_FILES['add_value_' . $id . '_small']['tmp_name'] != '')
					{
						// Путь к файлу-источнику малого изображения;
						$param['path_source_small_image'] = to_str($_FILES['add_value_' . $id . '_small']['tmp_name']);
					}
					else
					{
						$param['path_source_small_image'] = '';
					}

					//Оригинальное имя файла большого изображения
					$param['original_file_name_big_image'] = to_str($_FILES['add_value_' . $id]['name']);

					// Путь к создаваемому файлу большого изображения;
					$param['path_target_big_image'] = $shop_item_catalog_image;

					// Путь к создаваемому файлу малого изображения;
					$param['path_target_small_image'] = $shop_item_catalog_small_image;

					if (isset ($_FILES['add_value_' . $id . '_small']['name']))
					{
						// Оригинальное имя файла малого изображения
						$param['original_file_name_small_image'] = $_FILES['add_value_' . $id . '_small']['name'];
					}
					else
					{
						$param['original_file_name_small_image'] = '';
					}

					// Использовать большое изображение для создания малого (true - использовать (по умолчанию), false - не использовать)
					$param['use_big_image'] = isset ($_POST['used_big_image_add_value_' . $id]);

					// Значение максимальной ширины большого изображения
					$param['max_width_big_image'] = to_int($_POST['big_image_max_width_add_value_' . $id]);

					// Значение максимальной высоты большого изображения
					$param['max_height_big_image'] = to_int($_POST['big_image_max_height_add_value_' . $id]);

					// Значение максимальной ширины малого изображения;
					$param['max_width_small_image'] = to_int($_POST['small_image_max_width_add_value_' . $id]);

					// Значение максимальной высоты малого изображения;
					$param['max_height_small_image'] = to_int($_POST['small_image_max_height_add_value_' . $id]);

					//$InformationSystemRow = $information_system->GetInformationSystem(to_int($_POST['information_system_id']));

					//$ShopRow = $shop->GetShop($shop_shops_id);

					// Для магазина задан "водяной знак"
					if ($ShopRow['shop_watermark_file'] != '' && is_file(CMS_FOLDER . UPLOADDIR . 'shop_' . $shop_shops_id . '/watermarks/' . $ShopRow['shop_watermark_file']))
					{
						$watermark_file = CMS_FOLDER . UPLOADDIR . 'shop_' . $shop_shops_id . '/watermarks/' . $ShopRow['shop_watermark_file'];
					}
					else
					{
						$watermark_file = '';
					}

					// Путь к файлу с "водяным знаком"
					$param['watermark_file_path'] = $watermark_file;

					// Позиция "водяного знака" по оси X
					$param['watermark_position_x'] = to_str($_POST['image_watermark_position_x_add_value_' . $id]);

					// Позиция "водяного знака" по оси Y
					$param['watermark_position_y'] = to_str($_POST['image_watermark_position_y_add_value_' . $id]);

					// Наложить "водяной знак" на большое изображение (true - наложить (по умолчанию), false - не наложить);
					$param['used_watermark_big_image'] = isset ($_POST['big_image_is_use_watermark_add_value_' . $id]);

					// Наложить "водяной знак" на малое изображение (true - наложить (по умолчанию), false - не наложить);
					$param['used_watermark_small_image'] = isset ($_POST['small_image_is_use_watermark_add_value_' . $id]);

					// Сохранять пропорции изображения для большого изображения
					$param['preserve_aspect_ratio_for_big_image'] = isset ($_POST['big_image_preserve_aspect_ratio_add_value_' . $id]);

					// Сохранять пропорции изображения для малого изображения
					$param['preserve_aspect_ratio_for_small_image'] = isset ($_POST['small_image_preserve_aspect_ratio_add_value_' . $id]);

					$result = $kernel->AdminLoadFiles($param);

					if ($result['big_image'])
					{
						$shop_item_catalog_image = basename($param['path_target_big_image']);

						// Получаем оригинальное имя большого изображения
						$original_big_image_name = $param['original_file_name_big_image'];

						// Проверяем идет вставка или обновление записи о дополнительном свойстве
						if (!$property_rows)
						{
							// Идет добавление
							$query = "INSERT INTO `shop_properties_items_table`
												(`shop_items_catalog_item_id`,
												`shop_list_of_properties_id`,
												`shop_properties_items_value`, 
												`shop_properties_items_file`)
												 VALUES 
												 ('$shop_items_catalog_id',
												 '$id',
												 '$original_big_image_name',
												 '$shop_item_catalog_image')";
						}
						else
						{
							// Идет обновление
							// Получаем идентификатор элемента для обновления
							$propertys_id = $property_rows['shop_properties_items_id'];

							// Заберем старое значение файла
							$res_serv = $shop->GetItemPropertyValueById($propertys_id);

							// Если имя старого файла НЕ совпадает с новым, нужно удалить старый файл в файловой системе, иначе перезапись старого файла новым не произойдет и он останется "висеть" в файловой системе
							if ($res_serv['shop_properties_items_file'] != $shop_item_catalog_image)
							{
								// Составляем имя старого файла
								$fname_old = $uploaddir . $res_serv['shop_properties_items_file'];

								// Если файл существует, удаляем его
								if (is_file($fname_old))
								{
									@ unlink($fname_old);
								}
							}

							// Идет обновление
							$query = "UPDATE `shop_properties_items_table`
												SET `shop_properties_items_value` = '$original_big_image_name',
												`shop_properties_items_file` = '$shop_item_catalog_image'
												WHERE `shop_properties_items_id` = '$propertys_id'";
						}

						$DataBase->query($query);
					}

					if ($result['small_image'])
					{
						$shop_item_catalog_small_image = basename($shop_item_catalog_small_image);

						// Получаем оригинальное имя малого изображения
						$original_small_image_name = $param['original_file_name_small_image'];

						$property_rows = $shop->GetValueItemProperty($shop_items_catalog_id, $id);

						// Определяем идет редактирование или добавление дополнительного свойства
						if (!$property_rows)
						{
							// Идет добавление
							$query = "INSERT INTO `shop_properties_items_table`
												(`shop_items_catalog_item_id`,
												`shop_list_of_properties_id`,
												`shop_properties_items_value_small`, 
												`shop_properties_items_file_small`)
												 VALUES 
												 ('$shop_items_catalog_id',
												 '$id',
												 '$original_small_image_name',
												 '$shop_item_catalog_small_image')";
						}
						else
						{
							// Получаем идентификатор элемента для обновления
							$propertys_id = $property_rows['shop_properties_items_id'];

							// Получаем прежднее значение файла
							$res_serv = $shop->GetItemPropertyValueById($propertys_id);

							// Если имя старого файла НЕ совпадает с новым, нужно удалить старый файл в файловой системе, иначе перезапись старого файла новым не произойдет и он останется "висеть" в файловой системе
							if ($res_serv['shop_properties_items_file_small'] != $shop_item_catalog_small_image)
							{
								// Составляем имя старого файла
								$fname_old = $uploaddir . $res_serv['shop_properties_items_file_small'];

								// Если файл существует, удаляем его
								if (is_file($fname_old))
								{
									@ unlink($fname_old);
								}
							}

							// Идет обновление
							$query = "UPDATE `shop_properties_items_table`
												SET `shop_properties_items_value_small` = '$original_small_image_name',
												`shop_properties_items_file_small` = '$shop_item_catalog_small_image'
												WHERE `shop_properties_items_id` = '$propertys_id'";
						}

						$DataBase->query($query);

					}
					else
					{
						$shop_item_catalog_small_image = '';
					}
					break;
				}
			case 2 : // список
				{
					$val = quote_smart(to_str($_REQUEST['add_value_' . $id]));

					if (!$property_rows)
					{
						// Задано пустое значение элемента списка
						if (!$val)
						{
							break;
						}

						$query = "INSERT INTO `shop_properties_items_table`
										(`shop_items_catalog_item_id`,
										`shop_list_of_properties_id`,
										`shop_properties_items_value`)
										VALUES
										('$shop_items_catalog_id',
										'$id',
										'$val')";

					}
					else
					{
						// Получаем идентификатор значения доп. свойства товара
						$id_item = $property_rows['shop_properties_items_id'];

						if (!$val)
						{
							$query = "DELETE FROM `shop_properties_items_table`
															WHERE `shop_properties_items_id` = '$id_item'";
						}
						else
						{
							$query = "UPDATE `shop_properties_items_table`
															SET `shop_properties_items_value` = '$val' 
															WHERE `shop_properties_items_id` = '$id_item' AND 
															`shop_items_catalog_item_id` = '$shop_items_catalog_id'";
						}
					}

					$DataBase->query($query);

					break;
				}
			case 3 : // Визуальный редактор - большое текстовое поле
				{
					$val = quote_smart(to_str($_REQUEST['add_value_' . $id]));

					if (!$property_rows)
					{
						$query = "INSERT INTO `shop_properties_items_table`
										(`shop_items_catalog_item_id`,
										`shop_list_of_properties_id`,
										`shop_properties_items_value`)
										VALUES
										('$shop_items_catalog_id',
										'$id',
										'$val')";
					}
					else
					{
						// Получаем идентификатор товара
						$id_item = $property_rows['shop_properties_items_id'];
						$query = "UPDATE `shop_properties_items_table`
										SET `shop_properties_items_value` = '$val' 
										WHERE `shop_properties_items_id` = '$id_item' AND 
										`shop_items_catalog_item_id` = '$shop_items_catalog_id'";
					}

					$DataBase->query($query);

					break;
				} 
			case 4 : // Строка визуальный редактор
				{
					$val = quote_smart(to_str($_REQUEST['add_value_' . $id]));

					if (!$property_rows)
					{
						$query = "INSERT INTO `shop_properties_items_table`
										(`shop_items_catalog_item_id`,
										`shop_list_of_properties_id`,
										`shop_properties_items_value`)
										VALUES
										('$shop_items_catalog_id',
										'$id',
										'$val')";
					}
					else
					{
						// Получаем идентификатор товара
						$id_item = $property_rows['shop_properties_items_id'];
						$query = "UPDATE `shop_properties_items_table`
										SET `shop_properties_items_value` = '$val' 
										WHERE `shop_properties_items_id` = '$id_item' AND 
										`shop_items_catalog_item_id` = '$shop_items_catalog_id'";
					}

					$DataBase->query($query);
					break;
				}
			case 5 :
				{

					$val = quote_smart(to_str($_REQUEST['add_value_' . $id]));

					if (!$property_rows)
					{
						$query = "INSERT INTO `shop_properties_items_table`
										(`shop_items_catalog_item_id`,
										`shop_list_of_properties_id`,
										`shop_properties_items_value`)
										VALUES
										('$shop_items_catalog_id',
										'$id',
										'$val')";
					}
					else
					{
						// Получаем идентификатор товара
						$id_item = $property_rows['shop_properties_items_id'];
						$query = "UPDATE `shop_properties_items_table`
										SET `shop_properties_items_value` = '$val' 
										WHERE `shop_properties_items_id` = '$id_item' AND 
										`shop_items_catalog_item_id` = '$shop_items_catalog_id'";
					}

					$DataBase->query($query);
					break;
				}
			case 6 :
				{
					$val = quote_smart(to_str($_REQUEST['add_value_' . $id]));

					if (!$property_rows)
					{
						$query = "INSERT INTO `shop_properties_items_table`
											(`shop_items_catalog_item_id`,
											`shop_list_of_properties_id`,
											`shop_properties_items_value`)
											VALUES
											('$shop_items_catalog_id',
											'$id',
											'$val')";
					}
					else
					{
						// Получаем идентификатор товара
						$id_item = $property_rows['shop_properties_items_id'];

						$query = "UPDATE `shop_properties_items_table`
											SET `shop_properties_items_value` = '$val' 
											WHERE `shop_properties_items_id` = '$id_item' AND 
											`shop_items_catalog_item_id` = '$shop_items_catalog_id'";
					}

					$DataBase->query($query);
					break;
				}
			case 7 : // checkbox
				{
					if (isset ($_REQUEST['add_value_' . $id]))
					{
						$val = 1;
					}
					else
					{
						$val = 0;
					}

					// Вставляем значение чекбокса только тогда, когда он установлен в 1
					// иначе неустановленные чекбоксы от других групп, т.к. выбираются все св-ва
					if (!$property_rows && $val)
					{
						$query = "INSERT INTO `shop_properties_items_table`
											(`shop_items_catalog_item_id`,
											`shop_list_of_properties_id`,
											`shop_properties_items_value`)
											VALUES
											('$shop_items_catalog_id',
											'$id',
											'$val')";
					}
					else
					{
						// Получаем идентификатор товара
						$id_item = $property_rows['shop_properties_items_id'];

						$query = "UPDATE `shop_properties_items_table`
											SET `shop_properties_items_value` = '$val' 
											WHERE `shop_properties_items_id` = '$id_item' AND 
											`shop_items_catalog_item_id` = '$shop_items_catalog_id'";
					}

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

// Обрабатываем дополнительные цены на товар

// УСТАНАВЛИВАЕМ ДОПОЛНИТЕЛЬНЫЕ ЦЕНЫ НА ТОВАР
/* Получаем список цен для магазина */
$shop_shops_id = to_int($_REQUEST['shop_shops_id']);
$res_all_prices_for_shop = $shop->GetAllPricesForShop($shop_shops_id);
if ($res_all_prices_for_shop)
{
	$num_rows_all_prices_for_shop = mysql_num_rows($res_all_prices_for_shop);
	/* В цикле обрабатываем цены для товара */
	for ($i = 0; $i < $num_rows_all_prices_for_shop; $i++)
	{
		$row_all_prices_for_shop = mysql_fetch_array($res_all_prices_for_shop);
		/* Если чекбокс для цены активен */
		if (isset ($_POST['prices_to_item_' . $row_all_prices_for_shop['shop_list_of_prices_id']]))
		{
			$param['shop_items_catalog_item_id'] = $shop_items_catalog_id;
			$param['shop_list_of_prices_id'] = $row_all_prices_for_shop['shop_list_of_prices_id'];
			$param['shop_prices_to_item_value'] = to_float($_POST['value_prices_to_item_' . $row_all_prices_for_shop['shop_list_of_prices_id']]);
			/* Если уже существует значение */
			if ($shop->GetPriceForItem($row_all_prices_for_shop['shop_list_of_prices_id'], $shop_items_catalog_id, array('cache_off' => true)))
			{
				$shop->UpdatePricesToItem($param);
			}
			else
			{
				$shop->InsertPricesToItem($param);
			}
		}
		else
		{
			$shop->DeletePriceForItem($shop_items_catalog_id, $row_all_prices_for_shop['shop_list_of_prices_id']);
		}
	}
}

// Пробегаем по специальным ценам
foreach ($_POST as $value => $key)
{
	// Существовавшие поля (обновляемые)
	if ((ereg("^shop_special_prices_from_([0-9]*)$", to_str($value), $regs)))
	{
		// Значение цены больше допустимого диапазона MySQL
		if (to_float($_POST['shop_special_prices_price_' . $regs[1]]) > 2147483647)
		{
			$_POST['shop_special_prices_price_' . $regs[1]] = 2147483647;
			$price_over_range = true;
		}

		$special_price_row = $shop->GetSpecialPrice($regs[1]);

		// Цена для данного товара существует
		if ($special_price_row && $special_price_row['shop_items_catalog_item_id'] == $shop_items_catalog_id)
		{
			// максимум для товара был стерт, или значение "от" больше значения "до"
			if (to_str($_POST['shop_special_prices_to_' . $regs[1]]) == '' || to_int($_POST['shop_special_prices_from_' . $regs[1]]) > to_int($_POST['shop_special_prices_to_' . $regs[1]]))
			{
				// удаляем цену
				$shop->DeleteSpecialPrice($regs[1]);

				if (to_int($_POST['shop_special_prices_from_' . $regs[1]]) > to_int($_POST['shop_special_prices_to_' . $regs[1]]))
				{
					$incorrect_interval = true;
				}
			}
			else
			{
				// Цена существует, обновляем
				$res = $shop->InsertSpecialPrice(array (
					'shop_special_prices_id' => $regs[1],
					'shop_items_catalog_item_id' => $shop_items_catalog_id,
					'shop_special_prices_from' => to_int($_POST['shop_special_prices_from_' . $regs[1]]),
					'shop_special_prices_to' => to_int($_POST['shop_special_prices_to_' . $regs[1]]),
					'shop_special_prices_price' => to_float($_POST['shop_special_prices_price_' . $regs[1]]),
					'shop_special_prices_percent' => $shop->ConvertPrice(to_str($_POST['shop_special_prices_percent_' . $regs[1]]))
				));

				// Пересечение интервалов при редактировании
				if ($res == -1)
				{
					$price_cross_edit = true;
				}
				// значение "от" больше значения "до"
				elseif ($res == -3)
				{
					$incorrect_interval = true;
				}
			}
		}
		else
		{
			// Цена не существует, вставляем
			$res = $shop->InsertSpecialPrice(array (
				'shop_items_catalog_item_id' => $shop_items_catalog_id,
				'shop_special_prices_from' => to_int($_POST['shop_special_prices_from_' . $regs[1]]),
				'shop_special_prices_to' => to_int($_POST['shop_special_prices_to_' . $regs[1]]),
				'shop_special_prices_price' => to_float($_POST['shop_special_prices_price_' . $regs[1]]),
				'shop_special_prices_percent' => $shop->ConvertPrice(to_str($_POST['shop_special_prices_percent_' . $regs[1]]))
			));

			// Пересечение интервалов при добавлении
			if ($res == -2)
			{
				$price_cross_add = true;
			}
			// значение "от" больше значения "до"
			elseif ($res == -4)
			{
				if (!($_POST['shop_special_prices_from_' . $regs[1]] == '' && $_POST['shop_special_prices_to_' . $regs[1]] == '' && $_POST['shop_special_prices_price_' . $regs[1]] == ''))
				{
					$incorrect_interval_add = true;
				}
			}
			else
			{
				// Вставляем на форму идентификаторы цен
				?>
<script>
				var ElementForm = document.getElementById('EditAddItem');
				ElementForm.shop_special_prices_from_<?php echo $regs[1] ?>.name = "shop_special_prices_from_<?php echo $res ?>";
				ElementForm.shop_special_prices_to_<?php echo $regs[1] ?>.name = "shop_special_prices_to_<?php echo $res ?>";
				ElementForm.shop_special_prices_price_<?php echo $regs[1] ?>.name = "shop_special_prices_price_<?php echo $res ?>";
				ElementForm.shop_special_prices_percent_<?php echo $regs[1] ?>.name = "shop_special_prices_percent_<?php echo $res ?>";
				</script>
				<?php

			}
		}

	}
	// Поля, добавленные javascript'ом
	elseif ((ereg("^shop_special_prices_from_js_([0-9]*)$", to_str($value), $regs)))
	{
		// Значение цены больше допустимого диапазона MySQL
		if (to_float($_POST['shop_special_prices_price_js_' . $regs[1]]) > 2147483647)
		{
			$_POST['shop_special_prices_price_js_' . $regs[1]] = 2147483647;
			$price_over_range = true;
		}

		// Цена не существует, вставляем
		$res = $shop->InsertSpecialPrice(array (
			'shop_items_catalog_item_id' => $shop_items_catalog_id,
			'shop_special_prices_from' => to_int($_POST['shop_special_prices_from_js_' . $regs[1]]),
			'shop_special_prices_to' => to_int($_POST['shop_special_prices_to_js_' . $regs[1]]),
			'shop_special_prices_price' => to_float($_POST['shop_special_prices_price_js_' . $regs[1]]),
			'shop_special_prices_percent' => $shop->ConvertPrice(to_str($_POST['shop_special_prices_percent_js_' . $regs[1]]))
		));

		// Пересечение интервалов при добавлении
		if ($res == -2)
		{
			$price_cross_add = true;
		}
		// значение "от" больше значения "до" при добавлении
		elseif ($res == -4)
		{
			if (!($_POST['shop_special_prices_from_js_' . $regs[1]] == '' && $_POST['shop_special_prices_to_js_' . $regs[1]] == '' && $_POST['shop_special_prices_price_js_' . $regs[1]] == ''))
			{
				$incorrect_interval_add = true;
			}
		}
		else
		{
			?><script>
			var ElementForm = document.getElementById('EditAddItem');
			ElementForm.shop_special_prices_from_js_<?php echo $regs[1] ?>.name = "shop_special_prices_from_<?php echo $res ?>";
			ElementForm.shop_special_prices_to_js_<?php echo $regs[1] ?>.name = "shop_special_prices_to_<?php echo $res ?>";
			ElementForm.shop_special_prices_price_js_<?php echo $regs[1] ?>.name = "shop_special_prices_price_<?php echo $res ?>";
			ElementForm.shop_special_prices_percent_js_<?php echo $regs[1] ?>.name = "shop_special_prices_price_<?php echo $res ?>";
			</script>
			<?php
		}
	}
}

if (isset ($price_cross_edit) && $price_cross_edit)
{
	show_message(sprintf($GLOBALS['MSG_shops']['prices_crossed'], $GLOBALS['MSG_shops']['special_price_cross_deleted']));
}
if (isset ($price_cross_add) && $price_cross_add)
{
	show_message(sprintf($GLOBALS['MSG_shops']['prices_crossed'], $GLOBALS['MSG_shops']['special_price_not_added']));
}
if (isset ($price_over_range) && $price_over_range)
{
	show_message($GLOBALS['MSG_shops']['error_special_price_over_range']);
}
if (isset ($incorrect_interval) && $incorrect_interval)
{
	show_message(sprintf($GLOBALS['MSG_shops']['error_special_price_incorrect_interval'], $GLOBALS['MSG_shops']['special_price_deleted']));
}
if (isset ($incorrect_interval_add) && $incorrect_interval_add)
{
	show_message(sprintf($GLOBALS['MSG_shops']['error_special_price_incorrect_interval'], $GLOBALS['MSG_shops']['special_price_not_added']));
}
?>