<?php 
/**
 * Система управления сайтом HostCMS v. 5.xx
 * Copyright © 2005-2010 ООО "Хостмэйк" (Hostmake LLC), http://www.hostcms.ru
 *
 * Обработчик добавления/обновления групп шаблона данных.
 * 
 * Файл: /admin/templates/data_templates/action/add_data_template_group.php
 * 
 * @author Hostmake LLC
 * @version 5.x
 */
$param = array();

// Проверяем существует ли идентификатор.
if (to_int($_POST['data_templates_group_id']) > 0)
{
	$param['data_templates_group_id'] = to_int($_POST['data_templates_group_id']);
}

$param['data_templates_group_parent_id'] = to_int($_POST['edit_data_templates_group_parent_id']);
$param['data_templates_group_name'] = to_str($_POST['data_templates_group_name']);

$param['site_id'] = to_int($_REQUEST['site_id']);

$db = & singleton('DataBase');

// Если сайт изменен для элемента и родитель элемента не корень, ставим родителем элемента корень, т. к. иных разделов в целевом сайте может не оказатся
if ($param['site_id'] != CURRENT_SITE && $param['data_templates_group_parent_id'] != 0)
{
	$param['data_templates_group_parent_id'] = 0;
}

$templates = new templates();

$site_id = to_int($param['site_id']);

if ($param['site_id'] != CURRENT_SITE)
{
	// Проверяем, есть ли у нашей директории есть поддиректории
	$arr = $templates->GetDataTemplateDirTree(to_int($_POST['data_templates_group_id'], ''));

	// Массив поддиректорий
	$array_of_son_items = array();

	// Массив документов
	$array_of_son_documents = array();

	// Часть строки запроса на изменение директорий
	$query_dir_base = "UPDATE `data_templates_group_table` SET `site_id` = '$site_id' WHERE `data_templates_group_id`=";

	// Часть строки запроса на изменение документов
	$query_doc_base = "UPDATE `data_templates_table` SET `site_id` = '$site_id'  WHERE `data_templates_id`=";

	// Распарсиваем выдачу базы
	foreach ($arr as $key => $value)
	{
		foreach ($value as $id => $val)
		{
			if ($id == 0)
			{
				$array_of_son_items[] = $val;
			}
		}
	}

	// Если количество элементов в массиве поддиректорий больше 0, то
	if (count($array_of_son_items) > 0)
	{
		// Составляем запрос на изменение каждой поддиректории
		$query_dir_ext = implode(' OR `data_templates_group_id` = ', $array_of_son_items);

		// Составляем результирующий запрос к базе
		$query = $query_dir_base.$query_dir_ext;

		// Запрос
		$db->query($query);

		// Проверяем есть ли документы в поддиректориях
		$count_of_son_items = count($array_of_son_items);

		for ($i = 0; $i < $count_of_son_items; $i++)
		{
			$data_templates_group_id = $array_of_son_items[$i];
			
 			$query = "SELECT * FROM data_templates_table WHERE data_templates_group_id='$data_templates_group_id'";

			$array_doc = $db->query($query);

			while ($row = mysql_fetch_assoc($array_doc))
			{
				$array_of_son_documents[] = $row['data_templates_id'];
			}
		}

		if (count($array_of_son_documents) > 0)
		{
			// Найдены дополнительные документы в поддиректориях
			// Составляем запрос на изменение дополнительных документов в поддиректориях
			$query_doc_ext = implode(' OR `data_templates_id` = ', $array_of_son_documents);
			// Составляем результирующий запрос к базе
			$query = $query_doc_base.$query_doc_ext;

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

	// Проверяем существуют ли в ТЕКУЩЕЙ директории документы

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

	$query = "SELECT * FROM data_templates_table WHERE data_templates_group_id='$data_templates_group_id'";

	$array_doc = $db->query($query);

	// Распарсиваем выдачу Базы
	while ($row = mysql_fetch_assoc($array_doc))
	{
		$array_of_son_documents[] = $row['data_templates_id'];
	}

	// Если количество элементов в массиве документов больше 0
	if (count($array_of_son_documents) > 0)
	{
		// Документы В ТЕКУЩЕЙ директории существуют, составляем строку запроса на изменение каждого документа
		$query_doc_ext = implode(' OR `data_templates_id` = ', $array_of_son_documents);
		// Составляем результирующий запрос к базе
		$query = $query_doc_base.$query_doc_ext;

		// Запрос
		$db->query($query);
	}
}

if ($insert_data_template_group_id = $data_templates->InsertDataTemplatesGroup($param))
{
	$admin_forms = new admin_forms();
	$window_id = $admin_forms->GetWindowId();
	?><script type="text/javascript">
	$.appendInput('<?php echo $window_id?>', 'EditAddDataTemplateGroup', 'data_templates_group_id', '<?php echo $insert_data_template_group_id?>');
	</script><?php
	
	if ($_POST['data_templates_group_id'])
	{
		show_message($GLOBALS['MSG_templates']['data_templates_group_edit_success']);
	}
	else
	{
		show_message($GLOBALS['MSG_templates']['data_templates_group_add_success']);
	}

}
else // Ошибка добавления/редактирования шаблона данных
{
	// Ошибка редактирования шаблона данных
	if ($_POST['data_templates_group_id'])
	{
		show_error_message($GLOBALS['MSG_templates']['data_templates_group_edit_error']);
	}
	else // Ошибка добавления шаблона данных
	{
		show_error_message($GLOBALS['MSG_templates']['data_templates_group_add_error']);
	}
}
?>