<?php 

if (!class_exists('SiteUsers'))
{
	show_error_message('Для работы форума включите модуль "Пользователи сайта".');
	exit();
}

$Forums = new Forums();

$SiteUsers = & singleton('SiteUsers');

/* Устанавливаем параметры */
$conference_id = to_int($GLOBALS['LA']['conference_id']);

/* Получаем идентификатор пользователя, 0 - если такого пользователя нет */
$site_users_id = $SiteUsers->GetCurrentSiteUser();

$GLOBALS['external_propertys_reg'] = array();

if ($site_users_id == 0)
{
	/* Быстрая регистрация пользователя */
	if (isset($_POST['quick_reg']))
	{
		if (isset($_POST['site_user_login'])
		&& isset($_POST['site_user_password'])
		&& isset($_POST['site_user_email'])
		&& strpos($_POST['site_user_login'], 'http://') === false // Логин не начинается с http://
		)
		{
			$param['site_users_login'] = to_str($_POST['site_user_login']);
			$param['site_users_name'] = to_str($_POST['site_user_login']);
			$param['site_users_password'] = to_str($_POST['site_user_password']);
			$param['site_users_email'] = to_str($_POST['site_user_email']);

			$GLOBALS['external_propertys_reg']['site_user_login'] = $param['site_users_login'];
			$GLOBALS['external_propertys_reg']['site_user_email'] = $param['site_users_email'];

			// Группа по умолчанию
			$param['site_users_group_id'] = $SiteUsers->GetDefaultGroup();
			$param['xslname'] = to_str($GLOBALS['LA']['xsl_registaration_letter']);

			/* Не отправлять письмо о подтверждении регистрации,
			необходим при автоматическом подтрвеждении регистрации (ниже подтверждение) */
			/* ДАННЫЙ ПАРАМЕТР НЕОБХОДИМО УСТАНОВИТЬ В TRUE, ЕСЛИ НЕ ТРЕБУЕТСЯ ПОДТВЕРЖДЕНИЕ РЕГИСТРАЦИИ ПОЛЬЗОВАТЕЛЯ */
			$param['not_send_mail_confirm'] = false;

			// добавляем пользователя, отправляем уведомление о регистрации
			$result = $SiteUsers->InsertSiteUser($param);

			/* Если не отправляли подтверждение -  */
			if ($result > 0 && $param['not_send_mail_confirm'])
			{
				/* Подтверждаем регистрацию */
				$SiteUsers->SetConfirmationID($result);

				/* Авторизируем пользователя */
				$SiteUsers->SetCurrentSiteUser($result);

				$site_users_id = $result;
			}

			/* Если пользователь зарегистрирован и необходимо подтверждать авторизацию */
			if ($result > 0 && !$param['not_send_mail_confirm'])
			{
				ob_start();
				?>
				<h1>Спасибо за регистрацию</h1>
				<p>Для продолжения работы необходимо подтвердить регистрацию Ваших данных. 
				В Ваш адрес отправлено письмо, содержащее ссылку для подтверждения регистрации.</p>
				<?php
				$GLOBALS['quick_reg'] = ob_get_clean();
			}

			// Проверяем наличие ошибки при регистрации
			if ($result < 0)
			{
				// -3 - Пользователь с таким логином зарегистрирован ранее
				// -2 - Пользователь с таким e-mail зарегистрирован ранее
				// -1 - Введен некорректный e-mail
				$GLOBALS['external_propertys_reg']['error_reg'] = $result;
				$GLOBALS['external_propertys_reg']['quick'] = "quick";
			}
		}
		else
		{
			$GLOBALS['external_propertys_reg']['error_reg'] = -4; /* Пожалуйста, задайте все обязательные параметры */
			$GLOBALS['external_propertys_reg']['quick'] = "quick";
		}
	}
}

/* Получаем текущее время для синхронизации с информацией, хранимой в кукисах */
$GLOBALS['current_time'] = time();

$GLOBALS['FORUM_CONFERENCE_ID'] = $conference_id;

/* Формируем информацию для заголовка страницы */
$ForumAndItemArray = $Forums->GetForumAndItemIdFromPath($GLOBALS['FORUM_CONFERENCE_ID']);

$GLOBALS['Forum_ID'] = $ForumAndItemArray['forum_id'];
$GLOBALS['Theme_ID'] = $ForumAndItemArray['theme_id'];

$end_array_item = end($GLOBALS['URL_ARRAY']);

/* RSS */
if ($end_array_item == 'rss')
{
	// Флаг, определяющий доступ пользователя к теме форума
	$have_access = false;

	// Если пользователь авторизирован
	if ($site_users_id)
	{
		$DataBase = & singleton('DataBase');

		// Получаем доступные группы пользователя
		$site_user_groups = $SiteUsers->GetGroupsForUser($site_users_id);

		// Выбираем группы пользователей для этого форума
		$query_select_forum_groups = "SELECT * FROM forums_users_group_list_table
			WHERE `forums_id` = '{$GLOBALS['Forum_ID']}'";

		$result_query_select_forum_groups = $DataBase->select($query_select_forum_groups);

		while ($row_select_forum_groups = mysql_fetch_assoc($result_query_select_forum_groups))
		{
			// Проверяем, входит ли пользователь в группы, которые доступны форуму
			if (in_array($row_select_forum_groups['site_users_group_id'], $site_user_groups))
			{
				$have_access = true;
			}
		}
	}

	$forum_info = $Forums->GetForum($GLOBALS['Forum_ID']);

	// Если форум доступен для всех, то разрешаем показ RSS
	if ($forum_info && $forum_info['forums_visible4all'] == 1)
	{
		$have_access = true;
	}

	if ($have_access)
	{
		$property = array();

		/* Заголовок RSS-канала */
		$property['title'] = $forum_info['forums_name'];

		/* Описание RSS-канала */
		if (!empty($GLOBALS['LA']['RssDescription']))
		{
			$property['description'] = $forum_info['forums_description'];
		}

		/* URL RSS-канала */
		$site = & singleton('site');
		$site_alias = $site->GetCurrentAlias(CURRENT_SITE);

		$forums_group_info = $Forums->GetForumsGroup($forum_info['forums_group_id']);

		$property['link'] = 'http://' . $site_alias . $Forums->GetConferencePath($forums_group_info['forums_conference_id']) . $GLOBALS['Forum_ID'] .'/' ;

		// Определяем кол-во на страницу
		$forums_conference_row = $Forums->GetConference($forums_group_info['forums_conference_id']);

		if ($forums_conference_row)
		{
			$on_page_rss = $forums_conference_row['forums_conference_on_page_theme'];
		}
		else
		{
			$on_page_rss = 10;
		}

		$Forums->ShowForumRss($GLOBALS['Forum_ID'], $on_page_rss, 0, $property);
	}

	exit();
}

$page = to_str($end_array_item);

if (!$GLOBALS['Forum_ID'] && ereg ("^user-([0-9]*)$", $page, $regs) && to_int($regs[1]) > 0)
{
	$user_info = $SiteUsers->GetSiteUser($regs[1]);
	if ($user_info)
	{
		$new_title = "Пользователь ".$user_info['site_users_login'];
	}
}

/* Если определен форум */
if ($GLOBALS['Forum_ID'])
{
	$forum_info = $Forums->GetForum($GLOBALS['Forum_ID']);

	/* Определяем, разрешен ли доступ к форуму */
	$access_param = array();
	$access_param['site_users_id'] = $site_users_id;
	$access_param['forums_id'] = to_int($GLOBALS['Forum_ID']);
	if ($Forums->CheckUsersAccessToForum($access_param) || $forum_info['forums_visible4all'])
	{
		if ($forum_info)
		{
			$new_title = $forum_info['forums_name'];
		}

		if ($site_users_id != 0)
		{
			setcookie('user'.$site_users_id.'_forum'.$GLOBALS['Forum_ID'],$GLOBALS['current_time'],time()+31536000,'/');
		}

		/* Если определена тема */
		if ($GLOBALS['Theme_ID'])
		{
			$theme_info = $Forums->GetTheme($GLOBALS['Theme_ID']);

			$messages = $Forums->GetAllMessages($GLOBALS['Theme_ID']);
			if (($messages) && count($messages) > 0)
			{
				$new_title = $messages[0]['forums_theme_title'];
			}

			/* Записываем информацию о последнем посещении форума или темы пользователем в cookies */
			if ($forum_info && $theme_info && $site_users_id != 0)
			{
				setcookie('user'.$site_users_id.'_theme'.$GLOBALS['Theme_ID'], $GLOBALS['current_time'],time()+31536000,'/');
			}
		}
	}
	else
	{
		$new_title = 'Доступ ограничен';
	}
}

/* Заголовок страницы */
if (isset($new_title))
{
	$kernel = & singleton('kernel');
	$kernel->set_title($new_title);
}

?>