<?php 
/**
 * Система управления сайтом HostCMS v. 5.xx
 * Copyright © 2005-2010 ООО "Хостмэйк" (Hostmake LLC), http://www.hostcms.ru
 *
 * Ajax загрузчик формы списка страниц и разделов страниц.
 * 
 * Файл: /admin/lib/action/load_lib.php
 * 
 * @author Hostmake LLC
 * @version 5.x
 */
function LoadAjaxData(&$admin_forms)
{
	$on_page = $admin_forms->GetOnPageCount();

	$page = to_int($_REQUEST['limit']);
	$begin = ($page == 0) ? 0 : ($page - 1) * $on_page;

	$param = array();
	/*
	$param['limit'][0] = array();
	$param['limit'][1] = array('begin' => $begin, 'count' => $on_page);
	*/

	$param['limit']['all'] = array('begin' => $begin, 'count' => $on_page);

	$lib_dir_id = to_int($_REQUEST['lib_dir_id']);

	// Строим хлебные крошки.
	$lib = & singleton('lib');

	$path_array = $lib->GetLibPathArray($lib_dir_id);
	$path = $lib->path_array;

	// Преобразуем идентификаторы групп в ссылки на группы.
	$new_path_array = array();

	if ($path_array)
	{
		foreach ($path_array as $key => $value)
		{
			$new_path_array[] = array (
			'link' => $admin_forms->GetHtmlCallDoLoadAjax('/admin/lib/lib.php', "&lib_dir_id=$key", 32, 'load_data'),
			'onclick' => $admin_forms->GetOnClickCallDoLoadAjax('/admin/lib/lib.php', "&lib_dir_id=$key", 32, 'load_data'),
			'name' => $value);
		}
	}

	$new_path_array[0]['name'] = $GLOBALS['MSG_lib']['menu'];

	if ($lib_dir_id != 0)
	{
		$param['path_array'] = $new_path_array;
	}

	// Отображаем каталоги только на первой странице.
	//if ($page == 0 || $page == 1)
	//{
	//Запрос для выборки каталогов динамических страниц
	$param['data'][] = "
			SELECT lib_dir_id AS key_field,	lib_dir_name AS name
			FROM `lib_dir_table`
			WHERE `lib_dir_parent_id` = '$lib_dir_id' 
			{FILTER_STRING} {ORDER_STRING} {LIMIT} ";
	/*}
	else
	{
	$param['data'][] = array();
	}
	*/
	// Количество каталогов
	$count_groups = "SELECT count(lib_dir_id) as count
	FROM `lib_dir_table`
	WHERE `lib_dir_parent_id` = '$lib_dir_id' 
	{FILTER_STRING}";

	// Запрос для выборки динамических страниц
	$param['data'][] = "SELECT lib_id AS key_field,
	lib_name AS name, lib_description AS description, lib_dir_id
	FROM `lib_table` WHERE `lib_dir_id` = '$lib_dir_id'
	{FILTER_STRING}
	{ORDER_STRING}
	{LIMIT}";

	// Посчитаем общее число динамических страниц
	$count = " SELECT count(*) AS count
	FROM `lib_table` 
	WHERE `lib_dir_id` = '$lib_dir_id'  
	{FILTER_STRING}";

	// Формируем верхнее меню.
	$menu = array();
	$sub_menu = array();

	$menu[$k = 0]['name'] = $GLOBALS['MSG_lib']['lib_page'];
	$menu[$k]['link'] = '';
	$menu[$k]['icon'] = '';

	$sub_menu[$p = 0]['name'] = $GLOBALS['MSG_lib']['lib_show_add_link'];
	$sub_menu[$p]['link'] = $admin_forms->GetHtmlCallTrigerSingleAction('edit_lib', 'check_1_0', 32, 0, 0);
	$sub_menu[$p]['onclick'] = $admin_forms->GetOnClickCallTrigerSingleAction('edit_lib', 'check_1_0', 32, 0, 0);
	$sub_menu[$p]['icon'] = '/admin/images/script_code_red_add.gif';

	// Добавляем подэлементы.
	$menu[$k]['sub_items'] = $sub_menu;

	$menu[++$k]['name'] = $GLOBALS['MSG_lib']['lib_folder'];
	$menu[$k]['link'] = '';
	$menu[$k]['icon'] = '';

	$sub_menu[$p = 0]['name'] = $GLOBALS['MSG_lib']['lib_show_add_link'];
	$sub_menu[$p]['link'] = $admin_forms->GetHtmlCallTrigerSingleAction('edit_lib', 'check_0_0', 32, 0, 0);
	$sub_menu[$p]['onclick'] = $admin_forms->GetOnClickCallTrigerSingleAction('edit_lib', 'check_0_0', 32, 0, 0);
	$sub_menu[$p]['icon'] = '/admin/images/folder_add.gif';

	// Добавляем подэлементы.
	$menu[$k]['sub_items'] = $sub_menu;

	// Для первого набора данных общее количство не указываем, т.к. передаем все элементы,
	// для второго набора данных указываем в виде запроса.
	$param['total_count'][0] = $count_groups;
	$param['total_count'][1] = $count;

	// Перекрываем настойки для поля из первого набора данных.
	// Поле с названием делаем ссылкой.
	$param['field_params'][0]['name']['admin_forms_field_type'] = 4; // Ссылка.
	$param['field_params'][0]['name']['admin_forms_field_link'] = $admin_forms->GetHtmlCallDoLoadAjax('/admin/lib/lib.php', '&lib_dir_id={key_field}', 32, 'load_data');
	$param['field_params'][0]['name']['admin_forms_field_onclick'] = $admin_forms->GetOnClickCallDoLoadAjax('/admin/lib/lib.php', '&lib_dir_id={key_field}', 32, 'load_data');

	// В поле с картинкой отображаем значек папки.
	$param['field_params'][0]['']['admin_forms_field_image'] = "=/admin/images/folder.gif";
	$param['field_params'][1]['']['admin_forms_field_image'] = "=/admin/images/script_code_red.gif";

	$param['field_params'][1]['page_param']['admin_forms_field_type'] = 7; // картинка-ссылка
	$param['field_params'][1]['page_param']['admin_forms_field_image'] = "=/admin/images/script_code_red_gear.gif";
	$param['field_params'][1]['page_param']['admin_forms_field_link'] = $admin_forms->GetHtmlCallDoLoadAjax('/admin/lib/lib.php', '&lib_id={key_field}&lib_dir_id={lib_dir_id}', 33, 'load_data');
	$param['field_params'][1]['page_param']['admin_forms_field_onclick'] = $admin_forms->GetOnClickCallDoLoadAjax('/admin/lib/lib.php', '&lib_id={key_field}&lib_dir_id={lib_dir_id}', 33, 'load_data');


	$param['current_page'] = $page;
	$param['on_page'] = $on_page;
	// Формируем массив меню.
	$param['menus'] = array($menu);

	$param['title'] = $GLOBALS['MSG_lib']['menu_list'];

	return $param;
}

// Необязательная функция для определения реального имени столбца по псевдониму.
function ResolveFieldName(&$field_name, $dataset_id)
{
	switch ($dataset_id)
	{
		case 0: // Список каталогов документов.
		{
			if ($field_name == 'key_field')
			{
				$field_name = 'lib_dir_id';
			}
			elseif ($field_name == 'name')
			{
				$field_name = 'lib_dir_name';
			}
			elseif ($field_name == 'description')
			{
				$field_name = '';
			}
			break;
		}
		case 1: // Список документов.
		{
			if ($field_name == 'key_field')
			{
				$field_name = 'lib_id';
			}
			elseif ($field_name == 'name')
			{
				$field_name = 'lib_name';
			}
			elseif ($field_name == 'description')
			{
				$field_name = 'lib_description';
			}
			break;
		}
	}
	return true;
}

/**
 * Копирование типовой динамической страницы
 *
 * @param array $param
 */
function copy_lib(&$param)
{
	ob_start();

	if (defined('READ_ONLY') && READ_ONLY)
	{
		$kernel = & singleton('kernel');

		$kernel->ReadMode();
	}
	else
	{
		$lib = & singleton('lib');

		if (isset($param['data'][1]))
		{
			$some = ($param['data'][1]);

			foreach ($some as $key => $value)
			{
				// Определяем режим доступа пользователя и принадлежит ли объект пользователю
				$user_access = new user_access();

				// Определяем информацию об объекте
				$object_row = $lib->GetLib($key);

				if ($object_row)
				{
					$object_user_id = $object_row['users_id'];
				}
				else
				{
					$object_user_id = 0;
				}

				if ($user_access->IssetUserAccessForObject($object_user_id))
				{
					$lib->CopyLib($key);
				}
				else
				{
					$user_access->MessageOnlyOwn();
					$param['error'] = ob_get_clean();
					return ;
				}
			}
		}
		$param['error'] = ob_get_clean();
	}
}

/**
 * Функция для удаления динамической страницы либо директории
 *
 * @param array $param
 */
function delete_lib(&$param)
{
	ob_start();

	if (defined('READ_ONLY') && READ_ONLY)
	{
		$kernel = & singleton('kernel');

		$kernel->ReadMode();
	}
	else
	{
		$lib = & singleton('lib');

		// удаляем выбранные страницы
		if (isset($param['data'][1]))
		{
			foreach ($param['data'][1] as $key => $value)
			{
				// Определяем режим доступа пользователя и принадлежит ли объект пользователю
				$user_access = new user_access();

				// Определяем информацию об объекте
				$object_row = $lib->GetLib($key);

				if ($object_row)
				{
					$object_user_id = $object_row['users_id'];
				}
				else
				{
					$object_user_id = 0;
				}

				if ($user_access->IssetUserAccessForObject($object_user_id))
				{
					$lib->DeleteLib($key);
				}
				else
				{
					$user_access->MessageOnlyOwn();
				}
			}
		}	// удаляем выбранные разделы
		if (isset($param['data'][0]))
		{
			foreach ($param['data'][0] as $key => $value)
			{
				// Определяем режим доступа пользователя и принадлежит ли объект пользователю
				$user_access = new user_access();

				// Определяем информацию об объекте
				$object_row = $lib->GetLibDir($key);

				if ($object_row)
				{
					$object_user_id = $object_row['users_id'];
				}
				else
				{
					$object_user_id = 0;
				}

				if ($user_access->IssetUserAccessForObject($object_user_id))
				{
					$lib->DeleteLibDir($key);
				}
				else
				{
					$user_access->MessageOnlyOwn();
				}
			}
		}
	}
	$error = ob_get_clean();
	$param['error'] = $error;
}

/**
 * Редактирование страницы либо директории
 *
 * @param array $param
 * @return boolean
 */
function edit_lib(&$param)
{
	ob_start();

	// Идентификатор текущей директории - в которой сейчас находимся
	$lib_dir_id = to_int($_REQUEST['lib_dir_id']);

	$lib = & singleton('lib');

	if (!isset($_REQUEST['lib_dir_parent_id']))
	{
		$lib_dir_parent_id = $lib_dir_id;
	}
	else
	{
		$lib_dir_parent_id = to_int($_REQUEST['lib_dir_parent_id']);
	}

	if (isset($param['data']))
	{
		// редактирование директории
		if (isset($param['data'][0]))
		{
			foreach ($param['data'][0] as $key => $value)
			{
				// Определяем режим доступа пользователя и принадлежит ли объект пользователю
				$user_access = new user_access();

				// Определяем информацию об объекте
				$object_row = $lib->GetLibDir($key);

				if ($object_row)
				{
					$object_user_id = $object_row['users_id'];
				}
				else
				{
					$object_user_id = 0;
				}

				if ($user_access->IssetUserAccessForObject($object_user_id))
				{
					// Идентификатор редактируемой директории
					$edit_lib_dir_id = intval($key);
					include(CMS_FOLDER.'admin/lib/action/form_edit_add_lib_dir.php');
					$param['title'] = $edit_lib_dir_id == 0 ? $GLOBALS['MSG_lib']['lib_show_properties_image'] : $GLOBALS['MSG_lib']['lib_dir_form_title_edit'];
					break;
				}
				else
				{
					$user_access->MessageOnlyOwn();
					$param['error'] = ob_get_clean();
					return ;
				}
			}
		}

		// редактирование страницы
		if (isset($param['data'][1]))
		{
			foreach ($param['data'][1] as $key => $value)
			{
				// Определяем режим доступа пользователя и принадлежит ли объект пользователю
				$user_access = new user_access();

				// Определяем информацию об объекте
				$object_row = $lib->GetLib($key);

				if ($object_row)
				{
					$object_user_id = $object_row['users_id'];
				}
				else
				{
					$object_user_id = 0;
				}

				if ($user_access->IssetUserAccessForObject($object_user_id))
				{
					$lib_id = intval($key);
					include(CMS_FOLDER.'admin/lib/action/form_edit_add_lib.php');
					$param['title'] = $lib_id == 0 ? $GLOBALS['MSG_lib']['lib_form_title_add'] : $GLOBALS['MSG_lib']['lib_form_title_edit'];
					break;
				}
				else
				{
					$user_access->MessageOnlyOwn();
					$param['error'] = ob_get_clean();
					return ;
				}
			}
		}
	}

	$param['result'] = ob_get_clean();

	return true;
}
?>