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

	$site_id = CURRENT_SITE;

	// Запрос для выборки групп пользователей
	$s1 = $param['data'][] = "SELECT * FROM users_type_table
	WHERE `site_id` = '$site_id' {FILTER_STRING} {ORDER_STRING} {LIMIT}";

	// Посчитаем общее число групп пользователей, запрос ОБЯЗАТЕЛЬНО должен возвращать столбец `count`.
	$count = "SELECT count(users_type_id) as count FROM users_type_table
	WHERE `site_id` = '$site_id' {FILTER_STRING}";


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

	$sub_menu = array();
	$sub_menu[$p = 0]['name'] = $GLOBALS['MSG_user_access']['ua_link_add_users_type'];
	$sub_menu[$p]['link'] = $admin_forms->GetHtmlCallTrigerSingleAction('edit_user_type', 'check_0_0', 7, 0, 0);
	$sub_menu[$p]['onclick'] = $admin_forms->GetOnClickCallTrigerSingleAction('edit_user_type', 'check_0_0', 7, 0, 0);
	$sub_menu[$p]['icon'] = '/admin/images/users_group_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_user_access']['ua_link_users_site'];

	return $param;
}

/**
 * Обработчик события "Редактирование элемента"
 */
function edit_user_type(&$param)
{
	ob_start();

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

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

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

			if ($user_access->IssetUserAccessForObject($object_user_id))
			{
				$edit_users_type_id = $key;
				include(CMS_FOLDER . 'admin/users_access/action/form_edit_add_users_type.php');
			}
			else
			{
				$user_access->MessageOnlyOwn();
				$param['error'] = ob_get_clean();
				return ;
			}

			// Редактировать можно только 1 элемент
			break;
		}
	}

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

	return true;
}

/**
 * Обработчик события "Удалить группу пользователей"
 */
function delete_user_type(&$param)
{
	ob_start();

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

		$kernel->ReadMode();
	}
	else
	{
		$user_access  = new user_access();

		if (isset($param['data'][0]))
		{

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

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

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

				if ($user_access->IssetUserAccessForObject($object_user_id))
				{
					$result_user_access = $user_access->select_user_type($key);

					$row_user_access = mysql_fetch_assoc($result_user_access);

					if ($user_access->del_user_type($key))
					{
						show_message(sprintf($GLOBALS['MSG_user_access']['users_type_delete_success'] , $row_user_access['users_type_name']));
					}
					else
					{
						show_error_message(sprintf($GLOBALS['MSG_user_access']['users_type_delete_error'], $row_user_access['users_type_name']));
					}
				}
				else
				{
					$user_access->MessageOnlyOwn();
					$param['error'] = ob_get_clean();
					return ;
				}
			}
		}
	}
	$param['error'] = ob_get_clean();
}
?>