<?php 
/**
 * Система управления сайтом HostCMS v. 5.xx
 * Copyright © 2005-2008 ООО "Хостмэйк" (Hostmake LLC), http://www.hostcms.ru
 *
 * Ajax загрузчик списка статусов документов.
 * 
 * Файл: /admin/documents/action/load_documents_status.php
 * 
 * @author Hostmake LLC
 * @version 5.2
 */
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);

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

	$documents = new documents();

	// Формируем хлебные крошки.
	$param['path_array'][] = array (
	'link' => $admin_forms->GetHtmlCallDoLoadAjax($admin_forms->AAction, "&documents_dir_parent_id=0", 9, 'load_data'),
	'onclick' => $admin_forms->GetOnClickCallDoLoadAjax($admin_forms->AAction, "&documents_dir_parent_id=0", 9, 'load_data'),
	'name' => $GLOBALS['MSG_documents']['documents_link']);

	$param['path_array'][] = array (
	'link' => $admin_forms->GetHtmlCallDoLoadAjax($admin_forms->AAction, '', 124, 'load_data'),
	'onclick' => $admin_forms->GetOnClickCallDoLoadAjax($admin_forms->AAction, '', 124, 'load_data'),
	'name' => $GLOBALS['MSG_documents']['documents_add_status_link']);

	$site_id = CURRENT_SITE;

	// Запрос для выборки списка статусов документов.
	$param['data'][] = "SELECT * FROM documents_status_table WHERE `site_id` = '$site_id' {FILTER_STRING} {ORDER_STRING} {LIMIT}";

	// Посчитаем общее число статусов документов.
	$count = "SELECT COUNT(*) as count FROM documents_status_table	WHERE `site_id` = '$site_id' {FILTER_STRING}";

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

	// Документы
	$menu[$k = 0]['name'] = $GLOBALS['MSG_documents']['documents_list_status_top_menu'];
	$menu[$k]['link'] = '';
	$menu[$k]['icon'] = '';

	// Добавить документ
	$sub_menu = array();
	$sub_menu[$p = 0]['name'] = $GLOBALS['MSG_documents']['documents_list_status_sub_menu'];
	$sub_menu[$p]['link'] = $admin_forms->GetHtmlCallTrigerSingleAction('edit_documents_status', 'check_0_0', 124, 0, 0);
	$sub_menu[$p]['onclick'] = $admin_forms->GetOnClickCallTrigerSingleAction('edit_documents_status', 'check_0_0', 124, 0, 0);
	$sub_menu[$p]['icon'] = '/admin/images/page_gear_add.gif';

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

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

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

	$param['current_page'] = $page;
	$param['on_page'] = $on_page;
	$param['menus'] = $menu_array;

	// Заголовок формы
	$param['title'] = $GLOBALS['MSG_documents']['documents_status_top_menu'];

	return $param;
}


// Редактирование статуса документов.
function edit_documents_status(&$param)
{
	ob_start();

	$documents = new documents();

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

				// Определяем информацию об объекте
				$object_res = $documents->select_status($documents_status_id);
				if (mysql_num_rows($object_res) == 1)
				{
					if ($object_res)
					{
						$object_row = mysql_fetch_assoc($object_res);
					}

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

				if ($user_access->IssetUserAccessForObject($object_user_id))
				{
					include(CMS_FOLDER . 'admin/documents/action/form_edit_add_documents_status.php');

					// Устанавливаем <title> для страницы
					$param['title'] = $documents_status_id == 0
					? $GLOBALS['MSG_documents']['documents_status_add_form_title']
					: $GLOBALS['MSG_documents']['documents_status_edit_form_title'];

					break;
				}
				else
				{
					$user_access->MessageOnlyOwn();
					$param['error'] = ob_get_clean();
					return ;
				}
			}
		}
	}

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

	return true;
}

/**
 * Удаление статуса документов
 */
function delete_documents_status(&$param)
{
	ob_start();

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

		$kernel->ReadMode();
	}
	else
	{
		$count_deleted_documents_status = 0;

		$documents = new documents();

		$templates = new templates;

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

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

					if ($object_res)
					{
						$object_row = mysql_fetch_assoc($object_res);
					}

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

					if ($user_access->IssetUserAccessForObject($object_user_id))
					{
						if ($documents->delete_status($key))
						{
							$count_deleted_documents_status++;

							$flag_delete_documents_status_success = true;
						}
						else
						{
							$flag_delete_documents_status_success = false;
						}
					}
					else
					{
						$user_access->MessageOnlyOwn();

						$flag_delete_documents_status_success = false;
					}
				}

				if ($flag_delete_documents_status_success)
				{
					if ($count_deleted_documents_status == 1)
					{
						show_message($GLOBALS['MSG_documents']['documents_delete_status_message']);
					}
					elseif ($count_deleted_documents_status > 1)
					{
						show_message($GLOBALS['MSG_documents']['documents_delete_statuses_message']);
					}
				}
				/*else // Ошибка удаления статуса документов
				{
				show_error_message($GLOBALS['MSG_documents']['documents_delete_status_message_error']);
				}*/

			}
		}
	}
	$param['error'] = ob_get_clean();
}

/**
 * Копирование статусов документов
 *
 * @param array $param
 */
function copy_document_status(&$param)
{
	ob_start();

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

		$kernel->ReadMode();
	}
	else
	{
		$count = 0;

		$documents = new documents();

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

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

					if ($object_res)
					{
						$object_row = mysql_fetch_assoc($object_res);
					}

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

					if ($user_access->IssetUserAccessForObject($object_user_id))
					{
						if ($documents->CopyDocumentStatus($key))
						{
							$count++;

							$flag_success = true;
						}
						else
						{
							$flag_success = false;
						}
					}
					else
					{
						$user_access->MessageOnlyOwn();

						$flag_success = false;
					}
				}

				if ($flag_success)
				{
					if ($count == 1)
					{
						show_message($GLOBALS['MSG_documents']['status_document_copy_success_message']);
					}
					elseif ($count > 1)
					{
						show_message($GLOBALS['MSG_documents']['status_documents_copy_success_message']);
					}
				}
				else // Ошибка копирования статуса документов
				{
					show_error_message($GLOBALS['MSG_documents']['status_document_copy_error_message']);
				}

			}
		}
	}
	
	$param['error'] = ob_get_clean();
}
?>