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

$information_system_id = to_int($_POST['information_system_id']);

$information_group_parent_id = to_int($_POST['information_groups_id']);

$information_item_url = to_str($_POST['information_item_url']);

// Обновление информационного элемента
if (isset ($_POST['information_item_id']))
{
	$type = 1;
	$information_item_id = intval($_POST['information_item_id']);
}
else
{
	$type = 0;
	$information_item_id = 0;
}

// Проверяем, есть ли среди элементов группы элемент с таким названием в URL
if ($information_system->IssetItem($information_group_parent_id, $information_system_id, $information_item_url, $information_item_id, $type))
{
	$error_information_item = 1;
	show_error_message($GLOBALS['MSG_information_systems']['error_information_group_URL_element']);
}

// Проверяем, есть ли среди подгрупп данной группы группа с URL, совпадающим с названием элемента в URL
if ($information_system->IssetGroupItemInsertUpdate($information_group_parent_id, $information_system_id, $information_item_url))
{
	$error_information_item = 1;
	show_error_message($GLOBALS['MSG_information_systems']['error_information_group_URL_element_URL']);
}

// Не было ошибок при добавлении/редактировании информационного элемента
if (!isset ($error_information_item))
{
	// Получаем информацию об информационной системе
	$information_system_info = $information_system->GetInformationSystem($information_system_id);

	if (isset ($_POST['information_item_allow_indexation']))
	{
		$information_item_allow_indexation = 1;
	}
	else
	{
		$information_item_allow_indexation = 0;
	}

	$information_item_description = to_str($_POST['information_item_description']);

	$information_item_text = to_str($_POST['information_item_text']);

	// Проверяем подключен ли модуль типографики.
	if (class_exists("typograph"))
	{
		// Модуль типографики подключен, проверяем, нужно ли применять типографику описания.
		if (isset ($_POST['use_typograph_for_description']))
		{
			// Создаем объект типографа и типографируем текст.
			$typograph = new typograph();

			$information_item_description = $typograph->ProcessTypographic($information_item_description, isset ($_POST['trailing_punctuation_for_description']));
		}

		// Модуль типографики подключен, проверяем, нужно ли применять типографику текста элемента.
		if (isset ($_POST['use_typograph_for_item_text']))
		{
			$typograph = new typograph();
			$information_item_text = $typograph->ProcessTypographic($information_item_text, isset ($_POST['trailing_punctuation_for_item_text']));
		}
	}

	$information_item_date = $DateClass->datetime_format_sql(to_str($_POST['information_item_date']));

	if (mb_strlen(trim(to_str($_POST['information_item_putoff_date']))))
	{
		$information_item_putoff_date = $DateClass->datetime_format_sql(to_str($_POST['information_item_putoff_date']));
	}
	else
	{
		$information_item_putoff_date = '0000-00-00 00:00:00';
	}

	if (mb_strlen(trim(to_str($_POST['information_item_putend_date']))))
	{
		$information_item_putend_date = $DateClass->datetime_format_sql(to_str($_POST['information_item_putend_date']));
	}
	else
	{
		$information_item_putend_date = '0000-00-00 00:00:00';
	}

	$information_item_show_count = to_int($_POST['information_item_show_count']);

	$param_item = array ();

	$param_item['information_items_id'] = $information_item_id;
	$param_item['information_systems_id'] = to_int($_POST['new_information_systems_id']);

	// Если переносм элемент в новую информационную систему помещаем его в корень этой системы
	$param_item['information_groups_id'] = $param_item['information_systems_id'] != $information_system_id ? 0 : $information_group_parent_id;
	$param_item['information_items_date'] = $information_item_date;
	$param_item['information_items_name'] = to_str($_POST['information_item_name']);
	$param_item['information_items_description'] = $information_item_description;
	$param_item['information_items_status'] = to_int($_POST['information_item_status']);
	$param_item['information_items_text'] = $information_item_text;
	$param_item['information_items_order'] = to_int($_POST['information_item_order']);
	$param_item['information_items_ip'] = to_str($_POST['information_item_ip']);
	$param_item['information_items_url'] = $information_item_url;
	$param_item['information_items_allow_indexation'] = $information_item_allow_indexation;
	$param_item['information_items_seo_title'] = to_str($_POST['information_item_seo_title']);
	$param_item['information_items_seo_description'] = to_str($_POST['information_item_seo_description']);
	$param_item['information_items_seo_keywords'] = to_str($_POST['information_item_seo_keywords']);
	$param_item['information_items_access'] = to_int($_POST['information_item_access']);
	$param_item['information_items_putoff_date'] = $information_item_putoff_date;
	$param_item['information_items_putend_date'] = $information_item_putend_date;
	//$param_item['information_items_image'] = $information_item_image;
	//$param_item['information_items_small_image'] = $information_item_small_image;

	$param_item['site_users_id'] = to_int($_POST['site_users_id']);
	$param_item['information_items_show_count'] = $information_item_show_count;

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

			// Вставка тэгов автоматически разрешена
			if ($information_system_info && $information_system_info['information_systems_apply_keywords_automatic'] == 1)
			{
				// Получаем хэш названия и описания группы
				$array_text = $kernel->ClearHtml(to_str($_POST['information_item_name']) . " " . $information_item_description . " " . $information_item_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_item['information_items_seo_keywords'] = implode(", ", $coeff_intersect);
					}
				}
			}
		}
	}

	$item_id = $information_system->InsertInformationItem($param_item);

	// Формируем путь к папке информационного элемента по идентификатору информационного элемента
	$item_dir = $information_system->GetInformationItemDir($item_id);

	$uploaddir = CMS_FOLDER . $item_dir;

	$information_item_image = '';
	$information_item_small_image = '';

	if (isset($_FILES['information_item_image']['tmp_name']) && $_FILES['information_item_image']['size'])
	{
		// Создаем папку для информационного элемента
		$kernel->PathMkdir($item_dir);

		$file_name = $file->PathCorrection($_FILES['information_item_image']['name']);

		// Не преобразовываем название загружаемого файла
		if ($information_system_info['information_systems_file_name_conversion'] == 0)
		{
			$information_item_image = $uploaddir . $file_name;

			if (isset ($_POST['used_big_image_information_item_image']))
			{
				$information_item_small_image = $uploaddir . 'small_' . $file_name;
			}
		}
		else // Преобразовываем название загружаемого файла
		{
			// Определяем расширение файла
			$exp = mb_strtolower($kernel->GetExtension($_FILES['information_item_image']['name']));

			$information_item_image = $uploaddir . 'information_items_' . $item_id . '.' . $exp;

			if (isset ($_POST['used_big_image_information_item_image']))
			{
				$information_item_small_image = $uploaddir . 'small_information_items_' . $item_id . '.' . $exp;
			}
		}
	}

	// Задано малое изображение и при этом не задано создание малого изображения
	// из большого или задано создание малого изображения из большого и
	// при этом не задано большое изображение.
	if (isset ($_FILES['information_item_image_small']['tmp_name']) && $_FILES['information_item_image_small']['size'])
	{		
		// Создаем папку для информационного элемента
		$kernel->PathMkdir($item_dir);

		// Определяем расширение файла.
		$exp = mb_strtolower($kernel->GetExtension($_FILES['information_item_image_small']['name']));

		// Определяем создавать ли большое изображение из малого
		// тип загружаемого файла является допустимым для загрузки файла.
		if (in_array(mb_strtoupper($exp), $kernel->available_extantions))
		{
			// Добавление новой записи
			if ($type == 0)
			{
				// Не задано большое изображение, создаем бальшое изображение из малого
				if (!(isset ($_FILES['information_item_image']['tmp_name']) && $_FILES['information_item_image']['size']))
				{
					$create_big_image = true;
				}
				// Задано большое изображение
				else
				{
					$create_big_image = false;
				}
			}
			// Редактирование записи
			else
			{
				// Определяем существует ли большое изображение для данного инфоэлемента
				$mas_information_item = $information_system->GetInformationSystemItem($information_item_id);

				// Для инфоэлемента ранее задано изображение
				if ($mas_information_item['information_items_image'] != '')
				{
					// Существует ли большое изображение (true - существует, false - не существует (по умолчанию))
					$param['isset_big_image'] = true;
					$create_big_image = false;
				}
				else // Для инфоэлемента ранее не задано большое изображение - создаем из малого
				{
					if (empty ($information_item_image))
					{
						$create_big_image = true;
					}
					else
					{
						$create_big_image = false;
					}
				}
			}
		}
		// Тип загружаемого файла является недопустимым для загрузки файла
		else
		{
			$create_big_image = false;
		}

		$file_name = $file->PathCorrection($_FILES['information_item_image_small']['name']);

		if (in_array(mb_strtoupper($exp), $kernel->available_extantions))
		{
			// Не преобразовываем название файла
			if ($information_system_info['information_systems_file_name_conversion'] == 0)
			{
				// Создаем большое изображение из малого
				if ($create_big_image)
				{
					$information_item_image = $uploaddir . $file_name;
					$information_item_small_image = $uploaddir . 'small_' . $file_name;
				}
				else
				{
					$information_item_small_image = $uploaddir . $file_name;
				}
			}
			else
			{
				$information_item_small_image = $uploaddir . 'small_information_items_' . $item_id . '.' . $exp;

				if ($create_big_image)
				{
					$information_item_image = $uploaddir . 'information_items_' . $item_id . '.' . $exp;
				}
			}
		}
		else
		{
			if ($create_big_image)
			{
				$information_item_image = '';
			}

			if ($information_system_info['information_systems_file_name_conversion'] == 0)
			{
				$information_item_small_image = $uploaddir . $file_name;
			}
			else
			{
				$information_item_small_image = $uploaddir . 'small_information_items_' . $item_id . '.' . $exp;
			}
		}
	}

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

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

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

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

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

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

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

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

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

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

	$information_system_dir = CMS_FOLDER . UPLOADDIR . 'information_system_' . $information_system_id . '/';

	// Для инфосистемы задан "водяной знак"
	if ($information_system_info['information_systems_watermark_file'] != '' && is_file($information_system_dir . $information_system_info['information_systems_watermark_file']))
	{
		$watermark_file = $information_system_dir . $information_system_info['information_systems_watermark_file'];
	}
	else
	{
		$watermark_file = '';
	}

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

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

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

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

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

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

	if ($result['big_image'])
	{
		$information_item_image = basename($param['path_target_big_image']);
	}
	else
	{
		$information_item_image = '';
	}

	if ($result['small_image'])
	{
		$information_item_small_image = basename($param['path_target_small_image']);
	}
	else
	{
		$information_item_small_image = '';
	}

	$param_item = array ();

	$param_item['information_items_id'] = $item_id;
	$param_item['information_items_image'] = $information_item_image;
	$param_item['information_items_small_image'] = $information_item_small_image;

	// Обновляем информацио о информационном элементе после создания изображений
	$item_id = $information_system->InsertInformationItem($param_item);

	if ($item_id)
	{
		// Обрабатываем тэги
		if (!isset ($_POST['information_item_tags']) || trim(to_str($_POST['information_item_tags'])) == '')
		{
			if (class_exists('Tag'))
			{
				$Tag = & singleton('Tag');

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

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

				// получаем информацию о ИС
				//$information_system_row = $information_system->GetInformationSystem($information_system_id);
				// Вставка тэгов автоматически разрешена
				if ($information_system_info && $information_system_info['information_systems_apply_tags_automatic'])
				{
					// получаем хэш названия, текста и описания ИЭ
					$array_text = $kernel->ClearHtml(to_str($_POST['information_item_name']) . " " . $information_item_text . " " . $information_item_description, array (
						'hash_function' => 'crc32'
					));

					// Получаем список меток
					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_text = array_unique($array_text);
							$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_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,
								'information_items_id' => $item_id
								));
							}
						}
					}
				}
			}
		}
		else
		{
			// Вставляем тэги для информационного элемента
			$information_system->InsertInformationItemTags(array (
				'tags' => to_str($_POST['information_item_tags']),
				'information_items_id' => $item_id
			));
		}

		// Редактирование информационного элемента
		if ($type)
		{
			show_message($GLOBALS['MSG_information_systems']['edit_information_items_success']);
		}
		else // Добавление информационного элемента
		{
			show_message($GLOBALS['MSG_information_systems']['add_information_items_success']);
		}

		// Не переносим информационный элемент в новую информационную систему
		if ($_POST['new_information_systems_id'] == $information_system_id)
		{
			// Выбираем все свойства элементов для данной инфосистемы
			$result_propertys = $information_system->GetAllInformationItemsPropertys($information_system_id);

			// Определяем число свойств информационного элемента
			$count = mysql_num_rows($result_propertys);

			// Вставляем свойства для инфоэлемента в таблицу связи
			if ($type == 0)
			{
				// ID последней только что вставленной записи
				$information_item_id = $item_id;

				// Цикл по всем свойствам
				for ($i = 0; $i < $count; $i++)
				{
					$row_propertys = mysql_fetch_assoc($result_propertys);

					$information_propertys_item_id = $row_propertys['information_propertys_id'];
					$information_propertys_item_value = '';
					$information_propertys_item_value_small = '';

					// Свойство - файл
					if ($row_propertys['information_propertys_type'] == 2)
					{
						if (isset ($_FILES['property' . $information_propertys_item_id]['name']) && $_FILES['property' . $information_propertys_item_id]['name'] != '')
						{
							$information_propertys_item_value = $_FILES['property' . $information_propertys_item_id]['name'];
						}

						// Загрузили тлько малое изображение
						if (isset ($_FILES['property' . $information_propertys_item_id . '_small']['name']) && $_FILES['property' . $information_propertys_item_id . '_small']['name'] != '')
						{
							$information_propertys_item_value_small = $_FILES['property' . $information_propertys_item_id . '_small']['name'];
						}
						else
						{
							$information_propertys_item_value_small = $information_propertys_item_value;
						}
					}
					else // Свойство - не файл
					{
						// Свойство - нефлажок
						if ($row_propertys['information_propertys_type'] != 7)
						{
							// Свойство - список и задано нулевое (пустое) значение списка
							if ($row_propertys['information_propertys_type'] == 3 && isset ($_REQUEST['property' . $information_propertys_item_id]) && $_REQUEST['property' . $information_propertys_item_id] == 0)
							{
								continue;
							}

							if (!isset ($_REQUEST['property' . $information_propertys_item_id]))
							{
								$_REQUEST['property' . $information_propertys_item_id] = '';
							}

							$information_propertys_item_value = to_str($_REQUEST['property' . $information_propertys_item_id]);
						}
						else // Свойство - флажок
						{
							$information_propertys_item_value = isset ($_REQUEST['property' . $information_propertys_item_id]) ? 1 : 0;
						}

						// Типограф.
						if (class_exists("typograph"))
						{
							// Модуль типографики подключен, проверяем, нужно ли применять типографику
							// для текущего свойства.
							if (isset ($_REQUEST['exec_typograph_for_prop' . $information_propertys_item_id]))
							{
								// Создаем объект типографа и типографируем текст.
								$typograph = new typograph();
								$information_propertys_item_value = $typograph->ProcessTypographic($information_propertys_item_value, isset ($_POST['trailing_punctuation_for_prop' . $information_propertys_item_id]));
							}
						}
					}

					// Вставляем свойства элемента в таблицу связи
					$information_propertys_item_value_id = $information_system->InsertInformationPropertysItems(0, 0, $information_propertys_item_id, $information_item_id, $information_propertys_item_value, '', $information_propertys_item_value_small, '');

					// Загружаем файл
					// Тип свойства - файл
					if ($row_propertys['information_propertys_type'] == 2)
					{
						// Параметры картинок для доп. свойства.
						$property_image_big_max_width = to_int($_POST['big_image_max_width_property' . $information_propertys_item_id]);
						$property_image_big_max_height = to_int($_POST['big_image_max_height_property' . $information_propertys_item_id]);
						$property_image_small_max_width = to_int($_POST['small_image_max_width_property' . $information_propertys_item_id]);
						$property_image_small_max_height = to_int($_POST['small_image_max_height_property' . $information_propertys_item_id]);

						//$uploaddir = CMS_FOLDER . UPLOADDIR . 'private/';

						// Создаем папку для информационного элемента, если не была создана ранее
						if ($kernel->PathMkdir($item_dir))
						{
							$information_property_image = '';
							$information_property_small_image = '';

							if (isset($_FILES['property' . $information_propertys_item_id]['tmp_name']) && $_FILES['property' . $information_propertys_item_id]['size'])
							{
								// Преобразовываем название файлов
								if ($information_system_info['information_systems_file_name_conversion'] == 0)
								{
									$file_name = $file->PathCorrection($_FILES['property' . $information_propertys_item_id]['name']);

									$information_property_image = $uploaddir . $file_name;

									// Задано малое изображение или не создавать малое изображение из большого
									if (isset ($_POST['used_big_image_property' . $information_propertys_item_id]))
									{
										$information_property_small_image = $uploaddir . 'small_' . $file_name;
									}
								}
								else
								{
									// Определяем расширение файла
									$exp = mb_strtolower($kernel->GetExtension($_FILES['property' . $information_propertys_item_id]['name']));

									$information_property_image = $uploaddir . 'information_items_property_' . $information_propertys_item_value_id . '.' . $exp;

									$information_property_small_image = $uploaddir . 'small_information_items_property_' . $information_propertys_item_value_id . '.' . $exp;
								}
							}

							// Задано малое изображение и при этом не задано создание малого изображения
							// из большого или задано создание малого изображения из большого и
							// при этом не задано большое изображение.
							if (isset ($_FILES['property' . $information_propertys_item_id . '_small']['tmp_name']) && $_FILES['property' . $information_propertys_item_id . '_small']['size'] && (isset ($_POST['used_big_image_property' . $information_propertys_item_id]) && !(isset ($_FILES['property' . $information_propertys_item_id]['tmp_name']) && $_FILES['property' . $information_propertys_item_id]['size']) || !isset ($_POST['used_big_image_id_property' . $information_propertys_item_id])))
							{
								// Определяем расширение файла.
								$exp = mb_strtolower($kernel->GetExtension($_FILES['property' . $information_propertys_item_id . '_small']['name']));

								// Определяем создавать ли большое изображение из малого
								// тип загружаемого файла является допустимым для загрузки файла.
								if (in_array(mb_strtoupper($exp), $kernel->available_extantions))
								{
									// Не задано большое изображение, создаем бальшое изображение из малого
									if (!(isset ($_FILES['property' . $information_propertys_item_id]['tmp_name']) && $_FILES['property' . $information_propertys_item_id]['tmp_name'] != ''))
									{
										$create_big_image = true;
									}
									// Задано большое изображение
									else
									{
										$create_big_image = false;
									}
								}
								else
								{
									$create_big_image = false;
								}

								$file_name = $file->PathCorrection($_FILES['property' . $information_propertys_item_id . '_small']['name']);

								if ($information_system_info['information_systems_file_name_conversion'] == 0)
								{
									// Не создаем большое изображение из малого
									if (!$create_big_image || !(in_array(mb_strtoupper($exp), $kernel->available_extantions)))
									{
										$information_property_small_image = $uploaddir . $file_name;
									}
									else
									{
										$information_property_small_image = $uploaddir . 'small_' . $file_name;
									}
								}
								else
								{
									$information_property_small_image = $uploaddir . 'small_information_items_property_' . $information_propertys_item_value_id . '.' . $exp;
								}

								if (in_array(mb_strtoupper($exp), $kernel->available_extantions))
								{
									// Создать большое изображение из малого
									if ($create_big_image)
									{
										if ($information_system_info['information_systems_file_name_conversion'] == 0)
										{
											$information_property_image = $uploaddir . $file_name;
										}
										else
										{
											$information_property_image = $uploaddir . 'information_items_property_' . $information_propertys_item_value_id . '.' . $exp;
										}
									}
								}
								else
								{
									$information_property_image = '';
								}
							}

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

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

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

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

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

							// Оригинальное имя файла малого изображения
							$param['original_file_name_small_image'] = to_str($_FILES['property' . $information_propertys_item_id . '_small']['name']);

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

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

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

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

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

							//$InformationSystemRow = $information_system->GetInformationSystem($information_system_id);

								
								
							if ($information_system_info['information_systems_watermark_file'] != '' && is_file($information_system_dir . $information_system_info['information_systems_watermark_file']))
							{
								$watermark_file = $information_system_dir . $information_system_info['information_systems_watermark_file'];
							}
							else
							{
								$watermark_file = '';
							}

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

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

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

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

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

							// Сохранять пропорции изображения для большого изображения
							$param['preserve_aspect_ratio_for_big_image'] = isset ($_POST['big_image_preserve_aspect_ratio_property' . $information_propertys_item_id]);
						
							// Сохранять пропорции изображения для малого изображения
							$param['preserve_aspect_ratio_for_small_image'] = isset ($_POST['small_image_preserve_aspect_ratio_property' . $information_propertys_item_id]);
							
							// Большое изображение не существует (true - существует, false - не существует (по умолчанию))
							$param['isset_big_image'] = false;

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

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

								$query = "UPDATE `information_propertys_items_table`" .
								"SET `information_propertys_items_file` = '$information_property_image'" .
								"WHERE `information_propertys_items_id` = '$information_propertys_item_value_id'";

								$DataBase->query($query);
							}

							if ($result['small_image'])
							{
								$information_property_small_image = quote_smart(basename($param['path_target_small_image']));

								$query = "UPDATE `information_propertys_items_table` SET `information_propertys_items_file_small` = '$information_property_small_image' WHERE `information_propertys_items_id` = '$information_propertys_item_value_id'";

								$DataBase->query($query);
							}
						}
					}
				}
			}
			else // Обновление свойств информационного элемента
			{
				// Обновляем старые свойства инфоэлементов в таблице связи
				for ($i = 0; $i < $count; $i++)
				{
					$row_propertys = mysql_fetch_assoc($result_propertys);

					$information_propertys_item_id = $row_propertys['information_propertys_id'];

					// Тип свойства - файл
					// Проверяем, есть ли уже значение для данного свойства
					$query = "SELECT information_propertys_items_id, information_propertys_items_file,  information_propertys_items_file_small,
								information_propertys_items_value, information_propertys_items_value_small 
					  			FROM information_propertys_items_table
								WHERE information_items_id='$information_item_id' and
								information_propertys_id='" . $row_propertys['information_propertys_id'] . "'";

					$DataBase->select($query);

					$count_row = $DataBase->get_count_row();

					if ($count_row == 0)
					{
						$type_insert = 0; // Вставка

						$information_propertys_item_value_id = 0;
						$information_propertys_item_value = '';
						$information_propertys_item_value_small = '';

						// Свойство - список и задано нулевое (пустое) значение списка
						if ($row_propertys['information_propertys_type'] == 3 && isset ($_POST['property' . $information_propertys_item_id]) && $_POST['property' . $information_propertys_item_id] == 0)
						{
							continue;
						}
					}
					else
					{
						$type_insert = 1; // Обновление

						$row_propertys_item = mysql_fetch_assoc($DataBase->result);
						$information_propertys_item_value_id = $row_propertys_item['information_propertys_items_id'];

						// Свойство - список и задано нулевое (пустое) значение списка
						if ($row_propertys['information_propertys_type'] == 3 && isset ($_POST['property' . $information_propertys_item_id]) && $_POST['property' . $information_propertys_item_id] == 0)
						{
							$query = "DELETE FROM information_propertys_items_table	WHERE `information_propertys_items_id` = $information_propertys_item_value_id";
							$DataBase->query($query);

							continue;
						}

						$information_propertys_item_value = $row_propertys_item['information_propertys_items_value'];
						$information_propertys_item_value_small = $row_propertys_item['information_propertys_items_value_small'];
					}

					if ($row_propertys['information_propertys_type'] == 2)
					{
						// Загрузили файл для большого изображения
						if (isset ($_FILES['property' . $information_propertys_item_id]) && $_FILES['property' . $information_propertys_item_id]['size'] > 0)
						{
							$information_propertys_item_value = $_FILES['property' . $information_propertys_item_id]['name'];
						}

						// Загрузили файл для малого изображения
						if (isset ($_FILES['property' . $information_propertys_item_id . '_small']) && $_FILES['property' . $information_propertys_item_id . '_small']['size'] > 0)
						{
							$information_propertys_item_value_small = $_FILES['property' . $information_propertys_item_id . '_small']['name'];
						}
						// Не существует файл малого изображения или существует, но установлен параметр создания малого изображения из большого и передано большое изображение
						elseif ((empty($information_propertys_item_value_small) || !empty($information_propertys_item_value_small) &&  isset ($_POST['used_big_image_property' . $information_propertys_item_id])) && isset ($_FILES['property' . $information_propertys_item_id]) && $_FILES['property' . $information_propertys_item_id]['size'] > 0)
						{
							$information_propertys_item_value_small = $information_propertys_item_value;
						}

					}
					elseif ($row_propertys['information_propertys_type'] == 7) // Флажок
					{
						if (isset ($_POST['property' . $information_propertys_item_id]))
						{
							$information_propertys_item_value = 1;
						}
						else
						{
							$information_propertys_item_value = 0;
						}
					}
					else
					{
						$information_propertys_item_value = to_str($_POST['property' . $information_propertys_item_id]);
						
						// Типограф.
						if (class_exists("typograph"))
						{
							// Модуль типографики подключен, проверяем, нужно ли применять типографику
							// для текущего свойства.
							if (isset ($_REQUEST['exec_typograph_for_prop' . $information_propertys_item_id]))
							{
								// Создаем объект типографа и типографируем текст.
								$typograph = new typograph();
								$information_propertys_item_value = $typograph->ProcessTypographic($information_propertys_item_value, isset ($_POST['trailing_punctuation_for_prop' . $information_propertys_item_id]));
							}
						}
					}

					// Тип свойства - файл
					if ($row_propertys['information_propertys_type'] == 2)
					{
						// Дополнительное свойство было создано до создания информационного элемента
						if ($type_insert)
						{
							// Файл задан
							if (isset($_FILES['property' . $information_propertys_item_id]['tmp_name']) && $_FILES['property' . $information_propertys_item_id]['tmp_name'] != '')
							{
								// Удаляем прежднее значение
								$information_system->DelInformationItemPropertyValue($information_propertys_item_value_id, array (
									'del_big_image' => true,
									'del_small_image' => false
								));

								$information_propertys_item_value_id = $information_system->InsertInformationPropertysItems($type_insert, $information_propertys_item_value_id, $information_propertys_item_id, $information_item_id, $information_propertys_item_value, '', $information_propertys_item_value_small, $row_propertys_item['information_propertys_items_file_small']);
							}
							elseif (isset($_FILES['property' . $information_propertys_item_id . '_small']['tmp_name']) && $_FILES['property' . $information_propertys_item_id . '_small']['tmp_name'] != '')
							{

								// Прежднее значение
								$information_system->DelInformationItemPropertyValue($information_propertys_item_value_id, array (
									'del_big_image' => false,
									'del_small_image' => true
								));

								$information_propertys_item_value_id = $information_system->InsertInformationPropertysItems($type_insert, $information_propertys_item_value_id, $information_propertys_item_id, $information_item_id, $information_propertys_item_value, $row_propertys_item['information_propertys_items_file'], $information_propertys_item_value_small, '');
							}
						}
						// Свойство было создано после создания информационного элемента
						else
						{
							$information_propertys_item_value_id = $information_system->InsertInformationPropertysItems(0, 0, $information_propertys_item_id, $information_item_id, $information_propertys_item_value, '', $information_propertys_item_value_small, '');
						}
					}
					else
					{
						$information_propertys_item_value_id = $information_system->InsertInformationPropertysItems($type_insert, $information_propertys_item_value_id, $information_propertys_item_id, $information_item_id, $information_propertys_item_value);
					}

					// Тип свойства - файл
					// Загружаем файл
					if ($row_propertys['information_propertys_type'] == 2)
					{
						// Параметры картинок для доп. свойства.
						$property_image_big_max_width = to_int($_POST['big_image_max_width_property' . $information_propertys_item_id]);

						$property_image_big_max_height = to_int($_POST['big_image_max_height_property' . $information_propertys_item_id]);

						$property_image_small_max_width = to_int($_POST['small_image_max_width_property' . $information_propertys_item_id]);

						$property_image_small_max_height = to_int($_POST['small_image_max_height_property' . $information_propertys_item_id]);

						//$uploaddir = CMS_FOLDER . UPLOADDIR . 'private/';

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

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

						if ($kernel->PathMkdir($item_dir))
						{
							if (isset($_FILES['property' . $information_propertys_item_id]['tmp_name']) && $_FILES['property' . $information_propertys_item_id]['size'])
							{
								// Преобразовываем название файлов
								if ($information_system_info['information_systems_file_name_conversion'] == 0)
								{
									$file_name = $file->PathCorrection($_FILES['property' . $information_propertys_item_id]['name']);

									$information_property_image = $uploaddir . $file_name;

									// Создавать малое изображение из большого
									if (isset ($_POST['used_big_image_property' . $information_propertys_item_id]))
									{
										$information_property_small_image = $uploaddir . 'small_' . $file_name;
									}
								}
								else
								{
									// Определяем расширение файла
									$exp = mb_strtolower($kernel->GetExtension($_FILES['property' . $information_propertys_item_id]['name']));

									$information_property_image = $uploaddir . 'information_items_property_' . $information_propertys_item_value_id . '.' . $exp;

									$information_property_small_image = $uploaddir . 'small_information_items_property_' . $information_propertys_item_value_id . '.' . $exp;
								}
							}

							// Задано малое изображение и при этом не задано создание малого изображения
							// из большого или задано создание малого изображения из большого и
							// при этом не задано большое изображение.
							if (isset ($_FILES['property' . $information_propertys_item_id . '_small']['tmp_name']) && $_FILES['property' . $information_propertys_item_id . '_small']['size'] && (isset ($_POST['used_big_image_property' . $information_propertys_item_id]) && !(isset ($_FILES['property' . $information_propertys_item_id]['tmp_name']) && $_FILES['property' . $information_propertys_item_id]['size']) || !isset ($_POST['used_big_image_id_property' . $information_propertys_item_id])))
							{
								// Определяем расширение файла.
								$exp = mb_strtolower($kernel->GetExtension($_FILES['property' . $information_propertys_item_id . '_small']['name']));

								$file_name = $file->PathCorrection($_FILES['property' . $information_propertys_item_id . '_small']['name']);

								// Определяем создавать ли большое изображение из малого
								// тип загружаемого файла является допустимым для загрузки файла.
								if (in_array(mb_strtoupper($exp), $kernel->available_extantions))
								{
									// Добавление новой записи
									// Дополнительное свойство было создано до создания информационного элемента
									if ($type_insert)
									{
										// Уже задано большое изображение - не создаем его
										if ($row_propertys_item['information_propertys_items_file'] != '')
										{
											$create_big_image = false;
											$param['isset_big_image'] = true;
										}
										else // большое изображение не задано - создаем его
										{
											$create_big_image = true;
										}
									}
									else // Дополнительное свойство было создано после создания информационного элемента
									{
										// Не передан файл большого изображения
										$create_big_image = empty ($information_property_image);
									}

									// Преобразовываем название файлов
									if ($information_system_info['information_systems_file_name_conversion'] == 0)
									{
										// Создать большое изображение из малого
										if ($create_big_image)
										{
											$information_property_image = $uploaddir . $file_name;
											$information_property_small_image = $uploaddir . 'small_' . $file_name;
										}
										else
										{
											$information_property_small_image = $uploaddir . $file_name;
										}
									}
									else
									{
										$information_property_small_image = $uploaddir . 'small_information_items_property_' . $information_propertys_item_value_id . '.' . $exp;

										// Создать большое изображение из малого
										if ($create_big_image)
										{
											$information_property_image = $uploaddir . 'information_items_property_' . $information_propertys_item_value_id . '.' . $exp;
										}
									}
								}
								else
								{
									if ($information_system_info['information_systems_file_name_conversion'] == 0)
									{
										$information_property_small_image = $uploaddir . $file_name;
									}
									else
									{
										$information_property_small_image = $uploaddir . 'small_information_items_property_' . $information_propertys_item_value_id . '.' . $exp;
									}
								}
							}

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

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

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

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

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

							// Оригинальное имя файла малого изображения
							$param['original_file_name_small_image'] = to_str($_FILES['property' . $information_propertys_item_id . '_small']['name']);

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

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

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

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

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

							//$InformationSystemRow = $information_system->GetInformationSystem($information_system_id);

							if ($information_system_info['information_systems_watermark_file'] != '' && is_file($information_system_dir . $information_system_info['information_systems_watermark_file']))
							{
								$watermark_file = $information_system_dir . $information_system_info['information_systems_watermark_file'];
							}
							else
							{
								$watermark_file = '';
							}

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

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

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

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

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

							// Сохранять пропорции изображения для большого изображения
							$param['preserve_aspect_ratio_for_big_image'] = isset ($_POST['big_image_preserve_aspect_ratio_property' . $information_propertys_item_id]);
						
							// Сохранять пропорции изображения для малого изображения
							$param['preserve_aspect_ratio_for_small_image'] = isset ($_POST['small_image_preserve_aspect_ratio_property' . $information_propertys_item_id]);
							
							$result = $kernel->AdminLoadFiles($param);

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

								$query = "UPDATE `information_propertys_items_table` SET `information_propertys_items_file` = '$information_property_image' WHERE `information_propertys_items_id` = '$information_propertys_item_value_id'";

								$DataBase->query($query);
							}
							else
							{
								$information_property_image = '';
							}

							if ($result['small_image'])
							{

								$information_property_small_image = quote_smart(basename($param['path_target_small_image']));

								$query = "UPDATE `information_propertys_items_table` SET `information_propertys_items_file_small` = '$information_property_small_image' WHERE `information_propertys_items_id` = '$information_propertys_item_value_id'";

								$DataBase->query($query);
							}
							else
							{
								$information_property_small_image = '';
							}
						}
					}
				}
			}
		}
		else // Переносим элемент в новую информационную систему
		{
			//$information_system = new InformationSystem();

			// Получаем список значений дополнительных свойств информационного элемента
			$mas_item_propertys = $information_system->GetPropertysInformationSystemItem($item_id);

			if (is_array($mas_item_propertys))
			{
				// Цикл по дополнительным свойствам информационного элемента
				foreach ($mas_item_propertys as $key => $value)
				{
					// Удаляем значения доп. свойств информационного элемента
					$information_system->DelInformationItemPropertyValue($value['information_propertys_items_id']);
				}
			}
		}
		
		$admin_forms = new admin_forms();
		$window_id = $admin_forms->GetWindowId();
		?><script type="text/javascript">
		$.appendInput('<?php echo $window_id?>', 'EditAddInformationItem', 'information_item_id', '<?php echo $item_id?>');
		</script><?php
	}
	else // Возникла ошибка при добавлении/редактировании информационного элемента
	{
		// Ошибка редактирования информационного элемента
		if ($type)
		{
			show_error_message($GLOBALS['MSG_information_systems']['edit_information_items_error']);
		}
		else // Ошибка добавления информационного элемента
		{
			show_error_message($GLOBALS['MSG_information_systems']['add_information_items_error']);
		}
	}
}
?>