<?php


/**
 * Система управления сайтом HostCMS v. 5.xx
 * Copyright © 2005-2008 ООО "Хостмэйк" (Hostmake LLC), http://www.hostcms.ru
 *
 * Обработчик добавления/редактирования информационного элемента.
 * 
 * Файл: /admin/InformationSystems/action/add_information_items.php
 * 
 * @author Hostmake LLC
 * @version 5.2
 */
$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))
{
	$available_extantions = array('JPG', 'JPEG', 'PNG', 'GIF');
	
	// Получаем информацию об информационной системе						
	$information_system_info = $information_system->GetInformationSystem($information_system_id);

	$uploaddir = CMS_FOLDER . UPLOADDIR;

	// Если передан файл - загружаем его
	if (is_dir($uploaddir))
	{
		$information_item_image = '';
		$information_item_small_image = '';

		if (isset ($_FILES['information_item_image']['tmp_name']) && $_FILES['information_item_image']['size'])
		{
			$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 = strtolower($kernel->GetExtension($_FILES['information_item_image']['name']));

				$information_item_image = $uploaddir . 'information_items_' . date("U") . '.' . $exp;

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

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

			// Определяем создавать ли большое изображение из малого
			// тип загружаемого файла является допустимым для загрузки файла.
			if (in_array(strtoupper($exp), $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(strtoupper($exp), $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_' . date("U") . '.' . $exp;

					if ($create_big_image)
					{
						$information_item_image = $uploaddir . 'information_items_' . date("U") . '.' . $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_' . date("U") . '.' . $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'] = $_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']);

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

		// Для инфосистемы задан "водяной знак"
		if ($information_system_info['information_systems_watermark_file'] != '' && is_file(CMS_FOLDER . UPLOADDIR . $information_system_info['information_systems_watermark_file']))
		{
			$watermark_file = CMS_FOLDER . UPLOADDIR . $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']);

		$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 = '';
		}
	}
	else
	{
		$information_item_image = '';
		$information_item_small_image = '';
	}

	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 (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 (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_image'] = $information_item_image;
	$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_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;
	$param['information_items_blog_accessibility'] = to_int($_POST['information_items_blog_accessibility']);
	$param_item['information_items_blog_show_comments_mode'] = to_int($_POST['information_items_blog_show_comments_mode']);
	$param_item['information_items_blog_add_comments_mode'] = to_int($_POST['information_items_blog_add_comments_mode']);

	// Обработка ключевых слов группы //
	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'
				));

				// Получаем список меток
				$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_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);

	if ($item_id)
	{
		// Обрабатываем тэги
		if (isset ($_POST['information_item_tags']) && trim(to_str($_POST['information_item_tags'])) != '')
		{
			// Вставляем тэги для информационного элемента
			$information_system->InsertInformationItemTags(array (
				'tags' => $_POST['information_item_tags'],
				'information_items_id' => $item_id
			));
		}
		else
		{
			// получаем информацию о ИС
			//$information_system_row = $information_system->GetInformationSystem($information_system_id);
			// Вставка тэгов автоматически разрешена
			if ($information_system_info && $information_system_info['information_systems_apply_tags_automatic'])
			{
				if (class_exists('Tag'))
				{
					$Tag = & singleton('Tag');

					// получаем хэш названия, текста и описания ИЭ
					$array_text = $kernel->ClearHtml(to_str($_POST['information_item_name']) . " " . $information_item_text . " " . $information_item_description, array (
						'hash_function' => 'crc32'
					));

					// Получаем список меток
					$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
								));
							}
						}
					}
				}
			}
		}

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

		// Не переносим информационный элемент в новую информационную систему
		if ($param_item['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 (is_dir($uploaddir))
						{
							$information_property_image = '';
							$information_property_small_image = '';

							if ($_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 = 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 = strtolower($kernel->GetExtension($_FILES['property' . $information_propertys_item_id . '_small']['name']));

								// Определяем создавать ли большое изображение из малого
								// тип загружаемого файла является допустимым для загрузки файла.
								if (in_array(strtoupper($exp), $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(strtoupper($exp), $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(strtoupper($exp), $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'] = $_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(CMS_FOLDER . UPLOADDIR . $information_system_info['information_systems_watermark_file']))
							{
								$watermark_file = CMS_FOLDER . UPLOADDIR . $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]);

							// Большое изображение не существует (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 ($information_propertys_item_value_small == '' && 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 ($row_propertys['information_propertys_type'] == 2)
					{
						// Дополнительное свойство было создано до создания информационного элемента
						if ($type_insert)
						{
							// Файл задан
							if ($_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 ($_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 (is_dir($uploaddir))
						{
							if ($_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 = 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 = 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(strtoupper($exp), $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'] = $_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(CMS_FOLDER . UPLOADDIR . $information_system_info['information_systems_watermark_file']))
							{
								$watermark_file = CMS_FOLDER . UPLOADDIR . $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]);

							$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']);
				}
			}
		}
?>
	<script>
	var ElementInput = document.createElement("input");
	ElementInput.setAttribute("type", "hidden");
	ElementInput.setAttribute("name", "information_item_id");
	ElementInput.setAttribute("value", "<?php echo $item_id?>");

	document.getElementById('EditAddInformationItem').appendChild(ElementInput);
	</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']);
		}
	}
}
?>