<?php 
/**
 * Система управления сайтом HostCMS v. 5.xx
 * Copyright © 2005-2010 ООО "Хостмэйк" (Hostmake LLC), http://www.hostcms.ru
 *
 * Обработчик добавления/обновления данных о пользователе центра администрирования.
 * 
 * Файл: /admin/users_access/action/add_user.php
 * 
 * @author Hostmake LLC
 * @version 5.x
 */
$users_id = to_int($_POST["users_id"]);

// Пароль подтвержден и он непустой.
if (trim(to_str($_POST["users_password"])) == trim(to_str($_POST["confirm_password"]))
&& ((trim(to_str($_POST["users_password"])) != '' && $users_id == 0) || $users_id != 0))
{
	$user_superuser = isset($_POST['users_superuser']) ? 1 : 0;

	// Идет обновление данных о пользователе.
	if (isset($_POST["users_id"]))
	{
		$DataBase = & singleton('DataBase');

		// Проверяем не является ли пользователь, для которого изменяются данные,
		// последним суперюзером
		$query = "SELECT `users_id` FROM `users_table` WHERE `users_superuser` = '1'";
		$DataBase->select($query);

		// Пользователь является последним суперюзером
		if ($DataBase->get_count_row() == 1)
		{
			$last_superuser_row = mysql_fetch_assoc($DataBase->result);
			
			// Проверяем не снят ли с него статус суперюзера, если снят выводим предупреждение
			// и делаем запрет на обновление
			if ($users_id > 0
			&& $last_superuser_row['users_id'] == $users_id
			&& $user_superuser == 0)
			{
				$error = 1;
			}
		}
	}
	
	if (!isset($error))
	{
		// Задано имя пользователя.
		if (trim(to_str($_POST["users_name"])) != '')
		{
			$param = array();

			if ($users_id)
			{
				$param['users_id'] = $users_id;
			}
			$param['users_name'] = trim(to_str($_POST["users_name"]));
			$param['users_password'] = trim(to_str($_POST["users_password"]));
			
			//$param['users_type_id'] = to_int($_POST["users_type_id"]);
			
			// Делаем возможным смену группы пользователя
			$param['users_type_id'] = to_int($_POST["users_type_id_as_param"]);
			
			$param['users_superuser'] = $user_superuser;
						
			$param['users_name_text'] = to_str($_POST["users_name_text"]);
			$param['users_surname'] = to_str($_POST["users_surname"]);
			$param['users_patronymic'] = to_str($_POST["users_patronymic"]);
			$param['users_email'] = to_str($_POST["users_email"]);
			$param['users_position'] = to_str($_POST["users_position"]);
			$param['users_icq'] = to_str($_POST["users_icq"]);
			$param['users_site'] = to_str($_POST["users_site"]);
			
			if (isset($_POST["users_only_own"]))
			{
				$param['users_only_own'] = 1;
			}
			else 
			{
				$param['users_only_own'] = 0;
			}
			
			if ($insert_user_id = $user_access->InsertUser($param))
			{
				$admin_forms = new admin_forms();
				$window_id = $admin_forms->GetWindowId();
				?><script type="text/javascript">
				$.appendInput('<?php echo $window_id?>', 'EditAddUser', 'users_id', '<?php echo $insert_user_id?>');
				</script><?php

				// Информация о пользователе Центра администрирования отредактирована
				if ($users_id)
				{
					show_message($GLOBALS['MSG_user_access']['ua_edit_user_success']);
				}
				// Информация о пользователе Центра администрирования добавлена
				else
				{
					show_message($GLOBALS['MSG_user_access']['ua_add_user_success']);
				}
			}
			else
			{
				$error = 2;
				$user_id = to_int($_POST['users_id']);
				$user_name = to_str($_POST['users_name']);
				$user_superuser = to_int($_POST['users_superuser']);
			}
		}
		else // Имя пользователя не задано
		{
			$error = 3;
		}
	}
}
else // Пароль не подтвержден
{
	// Ошибка! Пароли не совпадают!
	if (trim(to_str($_POST["users_password"])) != trim(to_str($_POST["confirm_password"])) && trim(to_str($_POST["users_password"])) != '' )
	{
		$error = 4;
	}
	// 'Ошибка! Пароль не задан!';
	elseif (trim(to_str($_POST["users_password"])) == '' )
	{
		$error = 5;
	}
}

// Произошла ошибка добавления/редактирования
if (isset($error))
{
	switch ($error)
	{
		case 1: // В системе должен быть хотя бы один superuser
		show_error_message($GLOBALS['MSG_user_access']['error_superuser']);
		break;

		case 2: // Пользователь с данным именем уже зарегистрирован
		show_error_message($GLOBALS['MSG_user_access']['ua_add_edit_user_error']);
		break;

		case 3: // Не задано имя пользователя
		show_error_message($GLOBALS['MSG_user_access']['error_users_add_name']);
		break;

		case 4: // Пароли не совпадают
		show_error_message($GLOBALS['MSG_user_access']['error_pass']);
		break;

		case 5: // Пароль не задан
		show_error_message($GLOBALS['MSG_user_access']['error_pass1']);
		break;
	}
}

?>