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

$DataBase = & singleton('DataBase');

// Идентификатор типовой динамической страницы
$lib_id = to_int($_POST['lib_id']);

// ID родительского раздела
$structure_parent_id = to_int($_POST["insert_structure_parent_id"]);

$menu_id = to_int($_POST["menu_id"]); // меню

// Видимость узла структуры
if (isset($_POST["structure_show"]))
{
	$structure_show = 1;
}
else
{
	$structure_show = 0;
}

// Активность страницы
if (isset($_POST["structure_activity"]))
{
	$structure_activity = 1;
}
else
{
	$structure_activity = 0;
}

// Индексация страницы
if (isset($_POST["structure_allow_indexation"]))
{
	$structure_allow_indexation = 1;
}
else
{
	$structure_allow_indexation = 0;
}

$structure_type = to_int($_POST["structure_type"]);
$structure_title = to_str($_POST["structure_title"]);
$structure_description = to_str($_POST["structure_description"]);
$structure_keywords = to_str($_POST["structure_keywords"]);
$structure_access = to_str($_POST["structure_access"]);
$structure_access_protocol = to_int($_POST['structure_access_protocol']);
$structure_external_link = to_str($_POST["structure_external_link"]);
$structure_order = to_int($_POST["structure_order"]);
$structure_path_name = to_str($_POST["structure_path_name"]);

// Если не корень, то убираем все лишнее слеши
if ((trim($structure_path_name) != '/'))
{
	// Только латинские буквы и цифры
	$structure_path_name = preg_replace('/[^a-zA-Zа-яА-ЯёЁ0-9.\-_]/u', '', $structure_path_name);
}

$structure_menu_name = to_str($_POST["structure_menu_name"]);

// Макет, шаблон страницы, сайт, документ
$templates_id = to_int($_POST["templates_id"]);
$data_templates_id = to_int($_POST["data_templates_id"]);

if (isset($_POST["site_id"]))
{
	$site_id = to_int($_POST["site_id"]);
}
else
{
	$site_id = CURRENT_SITE;
}

$documents_id = to_int($_POST["documents_id"]);
$module = trim(to_str($_POST["module"]));
$module_config = trim(to_str($_POST["module_config"]));

if (trim($structure_path_name) == '')
{
	$url = new url();
	$structure_path_name = $url->translit_lower($structure_menu_name);
}


$query_select_mirror = "SELECT * FROM structure_table
WHERE structure_path_name='" . quote_smart($structure_path_name) . "'
AND structure_parent_id='" . to_int($structure_parent_id) . "' 
AND site_id='" . to_int($site_id) . "'";

// Если это главная страница
if ((trim($structure_path_name) == '/' || trim($structure_path_name) == 'index') && $structure_parent_id == 0)
{
	// Выбираем главные страницы (у них два разных имени м. быть)
	$query_select_mirror = "SELECT * FROM structure_table
	WHERE (structure_path_name='index' OR structure_path_name='/')
	AND structure_parent_id='" . to_int($structure_parent_id) . "' 
	AND site_id='" . to_int($site_id) . "'";
}
else
{
	$query_select_mirror = "SELECT * FROM structure_table
	WHERE structure_path_name='" . quote_smart($structure_path_name) . "'
	AND structure_parent_id='" . to_int($structure_parent_id) . "' 
	AND site_id='" . to_int($site_id) . "'";
}

// Проверяем существование страницы с аналогичным именем у данного родителя
$DataBase->select($query_select_mirror);

// Идет редактирование узла структуры
if (isset($_POST["structure_id"]))
{
	$type = 1;
	$structure_id = to_int($_POST["structure_id"]);
}
else
{
	$type = 0;
	$structure_id = 0;
}

if ($structure_id != 0 && ($structure_allow_indexation == 0 || $structure_activity == 0)
&& class_exists('Search'))
{
	$result = $structure->IndexationStructure(0, 1, array('structure_id'=>$structure_id));

	if (count($result) != 0)
	{
		$Search = new Search();
		$line = each($result);

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

$param['structure_id'] = $structure_id;
$param['menu_id'] = $menu_id;
$param['templates_id'] = $templates_id;
$param['data_templates_id'] = $data_templates_id;
$param['site_id'] = $site_id;
$param['documents_id'] = $documents_id;
$param['structure_parent_id'] = $structure_parent_id;
$param['structure_show'] = $structure_show;
$param['structure_menu_name'] = $structure_menu_name;
$param['structure_title'] = $structure_title;
$param['structure_description'] = $structure_description;
$param['structure_keywords'] = $structure_keywords;
$param['structure_external_link'] = $structure_external_link;
$param['structure_order'] = $structure_order;
$param['structure_path_name'] = $structure_path_name;
$param['structure_type'] = $structure_type;
$param['module'] = $module;
$param['module_config'] = $module_config;
$param['structure_access'] = $structure_access;
$param['structure_access_protocol'] = $structure_access_protocol;
$param['structure_activity'] = $structure_activity;
$param['structure_allow_indexation'] = $structure_allow_indexation;
$param['lib_id'] = to_int($lib_id);
$param['structure_change_frequency'] = to_int($_REQUEST['structure_change_frequency']);
$param['structure_priority'] = to_float($_REQUEST['structure_priority']);

$structure = new Structure();

$insert_structure_id = $structure->InsertStructure($param);


if ($insert_structure_id)
{
	// Обрабатываем настройки типовой динамической страницы
	if ($structure_type == 2 && $lib_id)
	{
		$LA = array();
		$lib = new lib();

		// Извлекаем все параметры данной страницы
		$property_resource = $lib->GetAllLibProperties($lib_id);

		if ($property_resource && mysql_num_rows($property_resource) > 0)
		{
			while ($row = mysql_fetch_assoc($property_resource))
			{
				$param_name = 'lib_property_id_' . to_int($row['lib_property_id']);

				if (isset($_REQUEST[$param_name]))
				{
					// Добавляем в массив для сериализации
					switch (to_int($row['lib_property_type']))
					{
						case 1: // Флажок
							{
								$LA[to_str($row['lib_property_varible_name'])] = true;
								break;
							}
						case 0: // Поле ввода
						case 2: // XSL шаблон
						case 3: // Список
						case 4: // SQL-запрос
						default:
							{
								$LA[to_str($row['lib_property_varible_name'])] = to_str($_REQUEST[$param_name]);
								break;
							}
					}

				}
				else
				{
					// Если не передано
					switch (to_int($row['lib_property_type']))
					{
						case 0: // Поле ввода
							{
								$LA[to_str($row['lib_property_varible_name'])] = '';
								break;
							}
						case 1: // Флажок
							{
								$LA[to_str($row['lib_property_varible_name'])] = false;
								break;
							}
						case 2: // XSL шаблон
							{
								$LA[to_str($row['lib_property_varible_name'])] = '';
								break;
							}
						case 3: // Список
							{
								$LA[to_str($row['lib_property_varible_name'])] = '';
								break;
							}
						case 4: // SQL-запрос
							{
								$LA[to_str($row['lib_property_varible_name'])] = '';
								break;
							}
					}
				}
			}

			// Сохраняем настройки
			if (count($LA) > 0)
			{
				if (!$lib->SaveLibPropertiesValue($lib_id, $insert_structure_id, $LA))
				{
					// Ошибка сохранения
					show_error_message($GLOBALS['MSG_structure']['error_add_edit_lib_file']);
				}
			}
		}
	}

	// определяем число свойств
	$result_propertys = $structure->GetAllStructureProperties($site_id);

	$count = mysql_num_rows($result_propertys);

	// Добавление узла структуры
	if ($structure_id == 0)
	{
		// Цикл по всем свойствам
		for ($i = 0; $i < $count; $i++)
		{
			$row_propertys = mysql_fetch_assoc($result_propertys);

			$structure_propertys_id = $row_propertys['structure_propertys_id'];

			$structure_propertys_values_file = '';
			$structure_propertys_values_value_small = '';
			$structure_propertys_values_file_small = '';

			$flag_insert_structure_property_value = false;

			switch ($row_propertys['structure_propertys_type'])
			{
				case 0: // Число
				case 3: // Список
					{
						// Пустое значение списка
						if (!isset($_REQUEST['propertys'. $structure_propertys_id])
						|| mb_strlen($_REQUEST['propertys'. $structure_propertys_id]) == 0)
						{
							break;
						}
					}
				case 5: // Информационная система
					{
						// Задано непустое значение
						if (to_str($_REQUEST['propertys'. $structure_propertys_id]) != '')
						{
							$structure_propertys_values_value = to_int($_REQUEST['propertys' . $structure_propertys_id]);
							$flag_insert_structure_property_value = true;
						}
						break;
					}

				case 2: // Файл
					{
						// Загружены файлы
						if (isset($_FILES['propertys' . $structure_propertys_id]['name']) && $_FILES['propertys' . $structure_propertys_id]['size'] > 0
						|| isset($_FILES['propertys' . $structure_propertys_id . '_small']['name']) && $_FILES['propertys' . $structure_propertys_id . '_small']['size'] > 0)
						{
							$flag_insert_structure_property_value = true;
							$structure_propertys_values_value = '';
						}

						break;
					}
				case 6 : // Визуальный редактор
					{
						// Задано непустое значение
						if (to_str($_REQUEST['propertys'. $structure_propertys_id]) != '')
						{
							// Тип дополнительного свойства - визуальный редактор и использовать типографироавние
							if (isset($_REQUEST['exec_typograph_for_prop' . $structure_propertys_id]) && class_exists('typograph'))
							{
								$typograph = new typograph();
								$structure_propertys_values_value = $typograph->ProcessTypographic(to_str($_REQUEST['propertys' . $structure_propertys_id]), isset($_REQUEST['trailing_punctuation_for_prop' . $structure_propertys_id]));
							}
							else
							{
								$structure_propertys_values_value = to_str($_REQUEST['propertys' . $structure_propertys_id]);
							}

							$flag_insert_structure_property_value = true;
						}

						break;

					}
				case 7 : // Флажок
					{
						if (isset($_REQUEST['propertys' . $structure_propertys_id]))
						{
							$structure_propertys_values_value = 1;
						}
						else
						{
							$structure_propertys_values_value = 0;
						}
						$flag_insert_structure_property_value = true;

						break;
					}

					// Строка
					// Большое текстовое поле
					// Дата
					// ДатаВремя
				default:
					{
						// Задано непустое значение
						if (to_str($_REQUEST['propertys' . $structure_propertys_id]) != '')
						{
							$structure_propertys_values_value = to_str($_REQUEST['propertys' . $structure_propertys_id]);

							$flag_insert_structure_property_value = true;
						}
						break;
					}
			}

			// Передена непустое значение дополнительного свойства - добавляем его в таблицу значений дополнительных свойств
			if ($flag_insert_structure_property_value)
			{
				// Вставляем свойства раздела сайта в таблицу связи
				$structure_propertys_values_id = $structure->InsertStructurePropertysValue(0, 0, $insert_structure_id,
				$structure_propertys_id, $structure_propertys_values_value,
				$structure_propertys_values_file, $structure_propertys_values_value_small,
				$structure_propertys_values_file_small);

				// Тип свойства - файл
				// Загружаем файлы на сервер
				if ($row_propertys['structure_propertys_type'] == 2 && $structure_propertys_values_id)
				{
					// Передан файл большого изображения
					if (isset($_FILES['propertys' . $structure_propertys_id]['name']) && $_FILES['propertys' . $structure_propertys_id]['size'] > 0)
					{
						$structure_propertys_values_value = $_FILES['propertys'. $structure_propertys_id]['name'];
					}

					// Передан файл малого изображения
					if (isset($_FILES['propertys' . $structure_propertys_id . '_small']['name']) && $_FILES['propertys' . $structure_propertys_id . '_small']['size'] > 0)
					{
						$structure_propertys_values_value_small = $_FILES['propertys' . $structure_propertys_id . '_small']['name'];
					}
					elseif ($structure_propertys_values_value != '')
					{
						$structure_propertys_values_value_small = $structure_propertys_values_value;
					}


					if ($structure_propertys_values_value != '')
					{
						// Определяем расширение загружаемого файла большго изображения
						$exp = $kernel->GetExtension($structure_propertys_values_value);

						if ($exp != '')
						{
							$exp = '.' . $exp;
						}
					}
					else
					{
						$exp = '';
					}

					if ($structure_propertys_values_value_small != '')
					{
						// Определяем расширение загружаемого файла малого изображения
						$exp_small = $kernel->GetExtension($structure_propertys_values_value_small);

						if ($exp_small != '')
						{
							$exp_small = '.' . $exp_small;
						}
					}
					else
					{
						$exp_small = '';
					}

					// Получаем путь к директории с дополнительными свойствами структуры
					$structure_dir = $structure->GetStructureItemDir($insert_structure_id);

					// Создаем директорию для узла структуры
					$kernel->PathMkdir($structure_dir);

					$upload = CMS_FOLDER . $structure_dir;

					// Проверяем существует ли директория, в которую загружаем файл
					if (is_dir($upload))
					{
						$fname_big = $upload . 'structure_propertys_image_' . $structure_propertys_values_id . $exp;
						$fname_small = $upload . 'structure_propertys_small_image_' . $structure_propertys_values_id . $exp_small;

						$param['path_source_big_image'] =  to_str($_FILES['propertys' . $structure_propertys_id]['tmp_name']); //путь к файлу-источнику большого изображения;
						$param['path_source_small_image'] = to_str($_FILES['propertys' . $structure_propertys_id . '_small']['tmp_name']);  //путь к файлу-источнику малого изображения;
						$param['original_file_name_big_image'] = to_str($_FILES['propertys' . $structure_propertys_id]['name']); //оригинальное имя файла большого изображения
						$param['path_target_big_image'] =  $fname_big;//путь к создаваемому файлу большого изображения;
						$param['path_target_small_image'] = $fname_small; //путь к создаваемому файлу малого изображения;
						$param['original_file_name_small_image'] = $_FILES['propertys'. $structure_propertys_id . '_small']['name']; //оригинальное имя файла малого изображения
						$param['use_big_image'] = isset($_REQUEST['used_big_image_propertys' . $structure_propertys_id]); //использовать большое изображение для создания малого (true - использовать (по умолчанию), false - не использовать)

						// Сохранять пропорции изображения для большого изображения
						$param['preserve_aspect_ratio_for_big_image'] = isset ($_POST['big_image_preserve_aspect_ratio_propertys' . $structure_propertys_id]);
						// Сохранять пропорции изображения для малого изображения
						$param['preserve_aspect_ratio_for_small_image'] = isset ($_POST['small_image_preserve_aspect_ratio_propertys' . $structure_propertys_id]);
						
						$param['max_width_big_image'] = to_int($_REQUEST['big_image_max_width_propertys' . $structure_propertys_id]);//значение максимальной ширины большого изображения
						$param['max_height_big_image'] = to_int($_REQUEST['big_image_max_height_propertys'. $structure_propertys_id]);//значение максимальной высоты большого изображения
						$param['max_width_small_image'] = to_int($_REQUEST['small_image_max_width_propertys' . $structure_propertys_id]);//значение максимальной ширины малого изображения;
						$param['max_height_small_image'] = to_int($_REQUEST['small_image_max_height_propertys'. $structure_propertys_id]); //значение максимальной высоты малого изображения;

						$param['isset_big_image'] = false; //существует ли большое изображение (true - существует, false - не существует (по умолчанию))

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

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


						if ($result['small_image'])
						{
							$structure_propertys_values_file_small = basename($param['path_target_small_image']);
						}
						else
						{
							$structure_propertys_values_value_small = '';
						}
					}
					
					$structure->InsertStructurePropertysValue(1, $structure_propertys_values_id, $insert_structure_id,
					$structure_propertys_id, $structure_propertys_values_value,
					$structure_propertys_values_file, $structure_propertys_values_value_small,
					$structure_propertys_values_file_small);

				}
			}

		}
	}

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

			$structure_propertys_id = $row_propertys['structure_propertys_id'];

			$structure_propertys_values_file = '';
			$structure_propertys_values_value_small = '';
			$structure_propertys_values_file_small = '';

			$flag_load_file = false;

			switch ($row_propertys['structure_propertys_type'])
			{
				case 0: // Число
				case 3: // Список
				case 5: // Информационная система
					{
						$structure_propertys_values_value = to_int($_REQUEST['propertys'. $structure_propertys_id]);

						break;
					}

				case 2: // Файл
					{
						$mas_propertys_value = $structure->GetStructureProperty(array(0 => $insert_structure_id));
						
						$structure_propertys_values_value = to_str($mas_propertys_value[$insert_structure_id][$structure_propertys_id]['structure_propertys_values_value']);
							
						$structure_propertys_values_file = to_str($mas_propertys_value[$insert_structure_id][$structure_propertys_id]['structure_propertys_values_file']);

						if ($structure_propertys_values_value != '')
						{
							$isset_big_image = true;
						}
						else
						{
							$isset_big_image = false;
						}
							
						$structure_propertys_values_value_small = to_str($mas_propertys_value[$insert_structure_id][$structure_propertys_id]['structure_propertys_values_value_small']);
						$structure_propertys_values_file_small = to_str($mas_propertys_value[$insert_structure_id][$structure_propertys_id]['structure_propertys_values_file_small']);

						if ($structure_propertys_values_value_small != '')
						{
							$isset_small_image = true;
						}
						else
						{
							$isset_small_image = false;
						}

						if (isset($_FILES['propertys'. $structure_propertys_id]['name'])
						&& $_FILES['propertys'. $structure_propertys_id]['size'] > 0
						|| isset($_FILES['propertys' . $structure_propertys_id . '_small']['name'])
						&& $_FILES['propertys' . $structure_propertys_id . '_small']['size'] > 0)
						{
							$flag_load_file = true; // Флаг, определяющий загружать файлы
							// для дополнительного свойства или нет
						}
						else
						{
							$flag_load_file = false;
						}

						break;
					}

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

						// Тип дополнительного свойства - визуальный редактор и использовать типографироавние
						if (isset($_REQUEST['exec_typograph_for_prop'.$structure_propertys_id]) && class_exists('typograph'))
						{
							$typograph = new typograph();

							$structure_propertys_values_value = $typograph->ProcessTypographic(to_str($_REQUEST['propertys'. $structure_propertys_id]), isset($_REQUEST['trailing_punctuation_for_prop'.$structure_propertys_id]));
						}
						else
						{
							$structure_propertys_values_value = to_str($_REQUEST['propertys'. $structure_propertys_id]);
						}

						break;
					}

				case 7 : // Флажок
					{
						if (isset($_REQUEST['propertys'. $structure_propertys_id]))
						{
							$structure_propertys_values_value = 1;
						}
						else
						{
							$structure_propertys_values_value = 0;
						}
						break;
					}

					// Строка
					// Большое текстовое поле
					// Дата
					// ДатаВремя
				default:
					{
						$structure_propertys_values_value = to_str($_REQUEST['propertys'. $structure_propertys_id]);
						break;
					}
			}

			// Проверяем, есть ли уже значение для текущего дополнительного свойства
			// Получаем информацию о значении дополнительного свойства узла структуры
			$row_propertys_items = $structure->GetStructurePropertyValue($insert_structure_id, $structure_propertys_id);

			// Для узла структуры задано значение текущего доп. свойства
			if ($row_propertys_items)
			{
				$count_row = 1;
			}
			else
			{
				$count_row = 0;
			}

			// Идентификатор значения дополнительного свойства
			$structure_propertys_values_id = to_int($row_propertys_items['structure_propertys_values_id']);

			// Для дополнительного свойства задано значение или свойство является флажком, т.к.
			if ($structure_propertys_values_value !== ''
			|| $structure_propertys_values_value_small != ''
			|| $row_propertys['structure_propertys_type'] == 7
			|| $flag_load_file)
			{
				if ($count_row == 0)
				{
					// Передано пустое значение элемента списка
					if ($row_propertys['structure_propertys_type'] == 3 && $structure_propertys_values_value == 0)
					{
						continue;
					}

					$type_insert = 0; // Вставка
				}
				else
				{
					// Передано пустое значение элемента списка
					if ($row_propertys['structure_propertys_type'] == 3 && $structure_propertys_values_value == 0)
					{
						$structure->DeletePropertyValue($structure_propertys_values_id);

						continue;
					}

					$type_insert = 1; // Обновление
				}


				$structure_propertys_values_id = $structure->InsertStructurePropertysValue($type_insert,
				$structure_propertys_values_id, $insert_structure_id, $structure_propertys_id,
				$structure_propertys_values_value,  $structure_propertys_values_file,
				$structure_propertys_values_value_small, $structure_propertys_values_file_small);

				// Загружаем файлы для дополнительного свойства типа "Файл"
				if ($structure_propertys_values_id && $row_propertys['structure_propertys_type'] == 2 && $flag_load_file)
				{

					/*
					 elseif ($structure_propertys_values_value_small == '')
					 {
						$structure_propertys_values_value_small = $structure_propertys_values_value;
						}
						*/


					/*
					 // Ранее не был загружен файл и сейчас не задали файл для загрузки
					 if ($structure_propertys_values_value == '')
					 {
						$structure_propertys_values_value = $structure_propertys_values_value_small;
						}
						*/

					// Получаем относительный путь к директории с дополнительными свойствами структуры
					$structure_dir = $structure->GetStructureItemDir($insert_structure_id);

					// Создаем директорию для узла структуры
					$kernel->PathMkdir($structure_dir);

					$upload = CMS_FOLDER . $structure_dir;

					// проверяем существует ли директория, в которую загружаем файл
					if (is_dir($upload))
					{
						// Передан файл большого изображения - переопределяем значение из БД
						if (isset($_FILES['propertys' . $structure_propertys_id]['name']) && $_FILES['propertys' . $structure_propertys_id]['size'] > 0)
						{
							$structure_propertys_values_value = $_FILES['propertys'. $structure_propertys_id]['name'];
							
							#определяем расширение загружаемого файла
							$exp = $kernel->GetExtension($structure_propertys_values_value);

							if ($exp != '')
							{
								$exp = '.'. $exp;
							}							

							$fname_big = $upload . 'structure_propertys_image_' . $structure_propertys_values_id . $exp;
						}
						else
						{
							$fname_big = '';
						}

						// Передано малое изображение или создаем малое изображение из большого
						if (isset($_FILES['propertys' . $structure_propertys_id . '_small']['name']) && $_FILES['propertys' . $structure_propertys_id . '_small']['size'] > 0 || isset($_REQUEST['used_big_image_propertys' . $structure_propertys_id]) && isset($_FILES['propertys' . $structure_propertys_id]['name']) && $_FILES['propertys' . $structure_propertys_id]['size'] > 0)
						{
							if (isset($_FILES['propertys' . $structure_propertys_id . '_small']['name']) && $_FILES['propertys' . $structure_propertys_id . '_small']['size'] > 0)
							{
								$structure_propertys_values_value_small = $_FILES['propertys' . $structure_propertys_id . '_small']['name'];
							}
							// Создаем малое из большого
							else
							{
								$structure_propertys_values_value_small = $structure_propertys_values_value;
							}
								
							// Определяем расширение загружаемого файла малого изображения
							$exp_small = $kernel->GetExtension($structure_propertys_values_value_small);

							if ($exp_small != '')
							{
								$exp_small = '.' . $exp_small;
							}

							$fname_small = $upload . 'structure_propertys_small_image_' . $structure_propertys_values_id . $exp_small;
								
						}
						else
						{
							$fname_small = '';
						}


						$param = array();
						$param['path_source_big_image'] =  to_str($_FILES['propertys' . $structure_propertys_id]['tmp_name']); //путь к файлу-источнику большого изображения;
						$param['path_source_small_image'] = to_str($_FILES['propertys' . $structure_propertys_id . '_small']['tmp_name']);  //путь к файлу-источнику малого изображения;
						$param['original_file_name_big_image'] = to_str($_FILES['propertys' . $structure_propertys_id]['name']); //оригинальное имя файла большого изображения
						$param['path_target_big_image'] =  $fname_big;//путь к создаваемому файлу большого изображения;

						$param['path_target_small_image'] = $fname_small; //путь к создаваемому файлу малого изображения;
						$param['original_file_name_small_image'] = $_FILES['propertys'. $structure_propertys_id . '_small']['name']; //оригинальное имя файла малого изображения
						$param['use_big_image'] = isset($_REQUEST['used_big_image_propertys' . $structure_propertys_id]); //использовать большое изображение для создания малого (true - использовать (по умолчанию), false - не использовать)

						// Сохранять пропорции изображения для большого изображения						
						$param['preserve_aspect_ratio_for_big_image'] = isset ($_POST['big_image_preserve_aspect_ratio_propertys' . $structure_propertys_id]);
						// Сохранять пропорции изображения для малого изображения
						$param['preserve_aspect_ratio_for_small_image'] = isset ($_POST['small_image_preserve_aspect_ratio_propertys' . $structure_propertys_id]);
					
						$param['max_width_big_image'] = to_int($_REQUEST['big_image_max_width_propertys' . $structure_propertys_id]);//значение максимальной ширины большого изображения
						$param['max_height_big_image'] = to_int($_REQUEST['big_image_max_height_propertys'. $structure_propertys_id]);//значение максимальной высоты большого изображения
						$param['max_width_small_image'] = to_int($_REQUEST['small_image_max_width_propertys' . $structure_propertys_id]);//значение максимальной ширины малого изображения;
						$param['max_height_small_image'] = to_int($_REQUEST['small_image_max_height_propertys'. $structure_propertys_id]); //значение максимальной высоты малого изображения;

						$param['isset_big_image'] = $isset_big_image; //существует ли большое изображение (true - существует, false - не существует (по умолчанию))

						// Ранее задано большое изображение и загружаем новое
						if ($isset_big_image && !empty($param['path_source_big_image']))
						{
							$param_delete_value['del_big_image'] = true;
							$param_delete_value['del_small_image'] =  false;

							// Флаг, определяющий создавать большое изображение или нет
							$create_big_image = true;

							$structure->DeletePropertyValue($structure_propertys_values_id, $param_delete_value);
						}
						else
						{
							$create_big_image = false;
						}

						// Ранее задано малое изображение и загружаем новое или создаем его
						// из большого и при этом источник большого изображения задан
						if ($isset_small_image && (!empty($param['path_source_small_image']) || $param['use_big_image'] && $param['path_source_big_image']))
						{
							$param_delete_value['del_big_image'] = false;
							$param_delete_value['del_small_image'] =  true;

							// Флаг, определяющий создавать малое изображение или нет
							$create_small_image = true;

							$structure->DeletePropertyValue($structure_propertys_values_id, $param_delete_value);
						}
						else
						{
							$create_small_image = false;
						}
 						
						$result = $kernel->AdminLoadFiles($param);

						if ($result['big_image'])
						{
							$structure_propertys_values_file = basename($param['path_target_big_image']);
						}
						elseif ($create_big_image)
						{
							// Задан флаг создания большого изображения, но оно не создалось
							// Задаем пустые значения для большого изображения
							$structure_propertys_values_value = '';
							$structure_propertys_values_file = '';
						}
						
						if ($result['small_image'])
						{							
							$structure_propertys_values_file_small = basename($param['path_target_small_image']);
						}
						elseif ($create_small_image)
						{							
							// Задан флаг создания малого изображения, но оно не создалось
							// Задаем пустые значения для малого изображения
							$structure_propertys_values_value_small = '';
							$structure_propertys_values_file_small = '';
						}

					}

					$structure->InsertStructurePropertysValue(1, $structure_propertys_values_id, $insert_structure_id,
					$structure_propertys_id, $structure_propertys_values_value,  $structure_propertys_values_file,
					$structure_propertys_values_value_small, $structure_propertys_values_file_small);

				}
			}
			else // Не задано значение дополнительного свойства
			{
				// Для дополнительного свойства ранее загружено значение
				/*if ($count_row && ($row_propertys['structure_propertys_type'] == 2
				 && $structure_propertys_values_file_small == ''
				 || $row_propertys['structure_propertys_type'] != 2))*/

				if ($count_row && $row_propertys['structure_propertys_type'] != 2)
				{
					// Удаляем значение дополнительного свойства
					$structure->DeletePropertyValue($structure_propertys_values_id);
				}
			}
		}
	}

	// Событийная индексация, остается здесь, т.к. св-ва можно переиндексирвоать только после добавления самой структуры
	if (class_exists('Search'))
	{
		$result = $structure->IndexationStructure(0, 1, array('structure_id'=>$insert_structure_id));
		if (count($result) != 0)
		{
			$Search = new Search();
			$line = each($result);

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

	$admin_forms = new admin_forms();
	$window_id = $admin_forms->GetWindowId();
	?><script type="text/javascript">
	$.appendInput('<?php echo $window_id?>', 'EditAddNode', 'structure_id', '<?php echo $insert_structure_id?>');
	</script><?php
	
	if ($structure_id)
	{
		show_message($GLOBALS['MSG_structure']['structure_edit_success']);
	}
	else
	{
		show_message($GLOBALS['MSG_structure']['structure_add_success']);
	}
}
else
{
	if ($structure_id)
	{
		show_error_message($GLOBALS['MSG_structure']['structure_edit_error']);
	}
	else
	{
		show_error_message($GLOBALS['MSG_structure']['structure_add_error']);
	}
}

?>
