<?php
/**
 * Система управления сайтом HostCMS v. 5.xx
 * Copyright © 2005-2010 ООО "Хостмэйк" (Hostmake LLC), http://www.hostcms.ru
 *
 * Ajax загрузчик формы списка параметров динамической страницы.
 * 
 * Файл: /admin/lib/action/load_property.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('begin' => $begin, 'count' => $on_page);

	$lib_id = to_int($_REQUEST['lib_id']);
	$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);
		}
	}

	// Данные о типовой динамической странице
	$res = $lib->GetLib($lib_id);

	$new_path_array[] = array (
	'link' => $admin_forms->GetHtmlCallDoLoadAjax('/admin/lib/lib.php', "&lib_id=$lib_id&lib_dir_id=$lib_dir_id", 33, 'load_data'),
	'onclick' => $admin_forms->GetOnClickCallDoLoadAjax('/admin/lib/lib.php', "&lib_id=$lib_id&lib_dir_id=$lib_dir_id", 33, 'load_data'),
	'name' => $GLOBALS['MSG_lib']['lib_path_link_top']);

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

	// Выборка нужных записей.
	$param['data'][] = " SELECT *
		FROM lib_property_table 
		WHERE lib_id = '$lib_id'
		{FILTER_STRING}
		{ORDER_STRING}
		{LIMIT}";

	// Число нужных записей.
	$count = "SELECT count(lib_property_id) AS count
		FROM lib_property_table 
		WHERE lib_id = '$lib_id'
		{FILTER_STRING}";

	// Формируем верхнее меню.
	$menu = array();
	$sub_menu = array();
	$menu[$k = 0]['name'] = $GLOBALS['MSG_lib']['lib_property_parametr'];
	$menu[$k]['link'] = '';
	$menu[$k]['icon'] = '';

	$sub_menu[$p = 0]['name'] = $GLOBALS['MSG_lib']['lib_property_add'];
	$sub_menu[$p]['link'] = $admin_forms->GetHtmlCallTrigerSingleAction('edit_lib_prop', 'check_0_0', 33, 0, 0);
	$sub_menu[$p]['onclick'] = $admin_forms->GetOnClickCallTrigerSingleAction('edit_lib_prop', 'check_0_0', 33, 0, 0);
	$sub_menu[$p]['icon'] = '/admin/images/script_code_red_gear_add.gif';

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

	// Формируем массив меню.
	$menu_array = array();
	$menu_array[] = $menu;

	$param['total_count'][] = $count;
	$param['current_page'] = $page;
	$param['on_page'] = $on_page;
	$param['menus'] = $menu_array;
	$param['title'] =  sprintf($GLOBALS['MSG_lib']['lib_property_show_title'], $res['lib_name']);

	return $param;
}

/**
 * Редактирование страницы либо директории
 *
 * @param array $param
 * @return boolean
 */
function edit_lib_prop(&$param)
{
	ob_start();
	$lib_id = to_int($_REQUEST['lib_id']);
	$lib_dir_id = to_int($_REQUEST['lib_dir_id']);

	if (isset($param['data']))
	{
		// редактирование директории
		if (isset($param['data'][0]))
		{
			foreach ($param['data'][0] as $key => $value)
			{
				// Идентификатор редактируемой директории
				$lib_property_id = intval($key);
				include(CMS_FOLDER.'admin/lib/action/form_edit_add_lib_property.php');
				$param['title'] = $lib_property_id == 0 ? $GLOBALS['MSG_lib']['lib_property_form_title_add'] : $GLOBALS['MSG_lib']['lib_property_form_title_edit'];
				break;
			}
		}
	}
	$param['result'] = ob_get_clean();

	return true;
}

/**
 * Обработчик события "Применить изменения"
 *
 * @param array $param
 */
function apply_prop(&$param)
{
	ob_start();
	if (defined('READ_ONLY') && READ_ONLY)
	{
		$kernel = & singleton('kernel');

		$kernel->ReadMode();
	}
	else
	{
		$lib = & singleton('lib');
		if (isset($param['data']) && is_array($param['data']))
		{
			if (isset($param['data'][0]))
			{
				foreach ($param['data'][0] as $key => $row)
				{
					// Выбираем данные о почтовой рассылке
					foreach ($row as $keys => $val)
					{
						// Определяем режим доступа пользователя и принадлежит ли объект пользователю
						$user_access = new user_access();

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

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

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

/**
 * Удаление параметра
 *
 * @param array $param
 */
function delete_lib_prop(&$param)
{	
	ob_start();
	if (defined('READ_ONLY') && READ_ONLY)
	{
		$kernel = & singleton('kernel');

		$kernel->ReadMode();
	}
	else
	{
		$lib = & singleton('lib');
		
		$count_del_prop = 0;
	
		if (isset($param['data']) && is_array($param['data']))
		{
			if (isset($param['data'][0]))
			{
				foreach ($param['data'][0] as $key => $row)
				{
					// Определяем режим доступа пользователя и принадлежит ли объект пользователю
					$user_access = new user_access();
	
					// Определяем информацию об объекте
					$object_row = $lib->GetLibProperty($key);
	
					if ($object_row)
					{
						$object_user_id = $object_row['users_id'];
					}
					else
					{
						$object_user_id = 0;
					}
	
					if ($user_access->IssetUserAccessForObject($object_user_id))
					{
						$lib->DeleteLibProperty($key);
						$count_del_prop++;
					}
					else
					{
						$user_access->MessageOnlyOwn();
						$param['error'] = ob_get_clean();
						return ;
					}
				}
			}
		}
	}
	$error = ob_get_clean();
	$param['error'] = $error;
}

/**
 * Копирование параметра
 *
 * @param array $param
 */
function copy_lib_prop(&$param)
{
	ob_start();
	
	if (defined('READ_ONLY') && READ_ONLY)
	{
		$kernel = & singleton('kernel');

		$kernel->ReadMode();
	}
	else
	{
		$count_copy_prop = 0;
	
		$lib = & singleton('lib');
	
		if (isset($param['data']) && is_array($param['data']))
		{
			if (isset($param['data'][0]))
			{
				$lib_id = to_int($_REQUEST['lib_id']);
	
				$lib_property_resource = $lib->GetAllLibProperties($lib_id);
	
				if ($lib_property_resource)
				{
					while ($row_assoc = mysql_fetch_assoc($lib_property_resource))
					{
						foreach ($param['data'][0] as $key => $row)
						{
							// Определяем режим доступа пользователя и принадлежит ли объект пользователю
							$user_access = new user_access();
	
							// Определяем информацию об объекте
							$object_row = $lib->GetLibProperty($key);
	
							if ($object_row)
							{
								$object_user_id = $object_row['users_id'];
							}
							else
							{
								$object_user_id = 0;
							}
	
							if ($user_access->IssetUserAccessForObject($object_user_id))
							{
								if(isset($row_assoc['lib_property_id']) && $row_assoc['lib_property_id'] == $key)
								{
									/* Убираем идентификатор! */
									unset($row_assoc['lib_property_id']);
									$row_assoc['lib_property_name'] = $row_assoc['lib_property_name'].'['.$GLOBALS['MSG_lib']['lib_copy_from'].date('d.m.Y H:i:s').']';
	
									/* Добавляем параметры в типовую дин. страницу */
									$lib->InsertLibProperty($row_assoc);
									$count_copy_prop++;
								}
							}
							else
							{
								$user_access->MessageOnlyOwn();
								$param['error'] = ob_get_clean();
								return ;
							}
						}
					}
				}
			}
		}
	}
	$error = ob_get_clean();
	$param['error'] = $error;
}
?>