<?php 
$Forums = new Forums();

$SiteUsers = & singleton('SiteUsers');

$external_propertys = array();

/* XSL шаблоны */
$xsl_new_topic = to_str($GLOBALS['LA']['xsl_new_topic']);
$xsl_mail_add_user = to_str($GLOBALS['LA']['xsl_mail_add_user']);
$xsl_mail_add_curator = to_str($GLOBALS['LA']['xsl_mail_add_curator']);
$xsl_mail_edit_user = to_str($GLOBALS['LA']['xsl_mail_edit_user']);
$xsl_mail_edit_curator = to_str($GLOBALS['LA']['xsl_mail_edit_curator']);
$xsl_edit_message = to_str($GLOBALS['LA']['xsl_edit_message']);
$xsl_topic_messages = to_str($GLOBALS['LA']['xsl_topic_messages']);
$xsl_forum_topics = to_str($GLOBALS['LA']['xsl_forum_topics']);
$xsl_user_info = to_str($GLOBALS['LA']['xsl_user_info']);
$xsl_forums = to_str($GLOBALS['LA']['xsl_forums']);

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

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

if (empty($GLOBALS['Theme_ID']) && ereg("^page-([0-9]*)$", $page, $regs) && to_int($regs[1]) > 0)
{
	/* Страница умножается на кол-во элементов, выводимых на страницу */
	$page_theme = ($regs[1] - 1);
}
else
{
	$page_theme = 0;
}

if (!empty($GLOBALS['Theme_ID']) && ereg("^page-([0-9]*)$", $page, $regs) && to_int($regs[1]) > 0)
{
	/* Получаем текущую страницу сообщений */
	$page_message = ($regs[1] - 1);
}
else
{
	$page_message = 0;
}

$conference_row = $Forums->GetConference($GLOBALS['FORUM_CONFERENCE_ID']);

/* Определяем путь к конференции */
$conference_path = $Forums->GetConferencePath($GLOBALS['FORUM_CONFERENCE_ID']);

/* Путь к сайту */
$site = & singleton ('site');
$site_alias = $site->GetCurrentAlias($conference_row['site_id']);

/* Полный путь к конференции с учетом сайта */
$CONFERENCE_FULL_PATH = 'http://'.$site_alias.$conference_path;

/* Если известен форум и путь заканчивается 'edit_theme' или 'add_theme',
то вызываем метод добавления/редактирования тем */
if ($GLOBALS['Forum_ID'] &&
(end($GLOBALS['URL_ARRAY']) == 'edit_theme' || end($GLOBALS['URL_ARRAY']) == 'add_theme'))
{
	/* Если была нажата кнопка принятия данных темы */
	if ($site_users_id != 0 && isset($_POST['add_edit_theme']))
	{
		// Проверяем, чтобы длина темы и сообщения была 2 и более символов.
		$theme_name = to_str($_POST['name_theme']);
		$theme_message = to_str($_POST['first_message']);

		if (strlen($theme_name) < 2 || strlen($theme_message) < 2)
		{
			$add_edit_theme = -3;
		}
		else
		{
			$add_edit_theme = $Forums->AddEditTheme($GLOBALS['FORUM_CONFERENCE_ID'], $GLOBALS['Forum_ID'],
			to_int($_POST['theme_id']), $theme_name, to_int($_POST['theme_close']),
			to_int($_POST['theme_notice']), to_int($_POST['theme_visible']),
			$theme_message, $site_users_id, $GLOBALS['current_time'], array('theme_send_letter' => to_int($_REQUEST['theme_send_letter'])));
		}

		/* Если создание новой темы прошло с ошибкой */
		if ($add_edit_theme == 0 && $_POST['theme_id'] == 0)
		{
			/* Возвращаемся на страницу, с которой пришли, выдавая сообщение об ошибке */
			?>
			<script language="JavaScript" type="text/javascript">
			location="<?php echo $CONFERENCE_FULL_PATH.$GLOBALS['Forum_ID']."/";?>";
			</script>
			<?php 
		}
		/* Если создание новой темы прошло успешно */
		elseif ($add_edit_theme == 1 && $_POST['theme_id'] == 0)
		{
			/* Увеличиваем число сообщений пользователя */
			$Forums->IncCountMessage($site_users_id);
		}
		elseif ($add_edit_theme == -1)
		{
			$error = 'Ошибка! Введено неверный код подтверждения!';

			$parameters['theme_title'] = to_str($_POST['name_theme']);
			$parameters['theme_message_text'] = to_str($_POST['first_message']);

			$parameters['theme_visible'] = to_int($_POST['theme_visible']);
			$parameters['theme_notice'] = to_int($_POST['theme_notice']);
			$parameters['theme_close'] = to_int($_POST['theme_close']);

			$parameters['page_theme'] = $page_theme;
			$external_propertys['error'] = $error;
			$external_propertys = array_merge($external_propertys, $GLOBALS['external_propertys_reg']);

			if (!$Forums->ShowAddEditTheme($GLOBALS['FORUM_CONFERENCE_ID'], $GLOBALS['Forum_ID'], $GLOBALS['Theme_ID'],
			$xsl_new_topic, $external_propertys, $parameters))
			{
				?>
				<h1>Ошибка</h1>
				<p>Вы не имеете права на совершение данного действия.</p>
				<?php 
			}
		}
		elseif ($add_edit_theme == -2)
		{
			$path = $CONFERENCE_FULL_PATH.$GLOBALS['Forum_ID']."/";
			$time = 5; // секунд
			?>
			<h1>Создание/редактирование темы</h1>
			<p>Прошло слишком мало времени с момента создания предыдущего сообщения.
			Через <?php echo $time?> секунд Вы вернетесь в форум.</p>
			<p>Если Вы не хотите ждать, перейдите по <a href="<?php echo $path?>">ссылке</a>.</p>
			<script language="JavaScript" type="text/javascript">
			<!--
			function set_location()
			{
				location="<?php echo $path?>";
			}
			setTimeout('set_location()', <?php echo $time * 1000?>);
			//-->
			</script>
			<?php 				
		}
		elseif ($add_edit_theme == -3)
		{
			$path = $CONFERENCE_FULL_PATH.$GLOBALS['Forum_ID']."/";
			$time = 5; // секунд
			?>
			<h1>Создание/редактирование темы</h1>
			<p>Длина темы или сообщения должна быть не менее 2-х символов. Через <?php echo $time?> секунд Вы вернетесь в форум.</p>
			<p>Если Вы не хотите ждать, перейдите по <a href="<?php echo $path?>">ссылке</a>.</p>
			<script language="JavaScript" type="text/javascript">
			<!--
			function set_location()
			{
				location="<?php echo $path?>";
			}
			setTimeout('set_location()', <?php echo $time * 1000?>);
			//-->
			</script>
			<?php 				
		}

		// Если создание/редактирование темы прошло успешно, возвращаемся на страницу, с которой пришли
		if ($add_edit_theme == 1)
		{
			$path = $CONFERENCE_FULL_PATH.$GLOBALS['Forum_ID']."/";
			$time = 5; // секунд
			?>
			<h1>Создание/редактирование темы</h1>
			<p>Спасибо, тема создана/отредактирована. Через <?php echo $time?> секунд Вы вернетесь в форум.</p>
			<p>Если Вы не хотите ждать, перейдите по <a href="<?php echo $path?>">ссылке</a>.</p>
			<script language="JavaScript" type="text/javascript">
			<!--
			function set_location()
			{
				location="<?php echo $path?>";
			}
			setTimeout('set_location()', <?php echo $time * 1000?>);
			//-->
			</script>
			<?php 
		}
	}
	/* Если нет залогинившегося пользователя, возвращаемся на страницу, с которой пришли */
	elseif ($site_users_id == 0)
	{
		$path = $CONFERENCE_FULL_PATH.$GLOBALS['Forum_ID']."/";
		$time = 5; // секунд
		?>
		<h1>Необходимо авторизироваться</h1>
		<p>Вам необходимо авторизироваться. Через <?php echo $time?> секунд Вы вернетесь в форум.</p>
		<p>Если Вы не хотите ждать, перейдите по <a href="<?php echo $path?>">ссылке</a>.</p>
		<script language="JavaScript" type="text/javascript">
		<!--
		function set_location()
		{
			location="<?php echo $path;?>";
		}
		setTimeout('set_location()', <?php echo $time*1000?>);
		//-->
		</script>
		<?php 
	}
	else
	{
		/* Если происходит создание/редактирования сообщения и пользователь залогинился */
		if ((end($GLOBALS['URL_ARRAY']) == 'add_theme' || end($GLOBALS['URL_ARRAY']) == 'edit_theme') && $site_users_id != 0)
		{
			$external_propertys = array_merge($external_propertys, $GLOBALS['external_propertys_reg']);
			if (!$Forums->ShowAddEditTheme($GLOBALS['FORUM_CONFERENCE_ID'], $GLOBALS['Forum_ID'], $GLOBALS['Theme_ID'],
			$xsl_new_topic, $external_propertys, array('page_theme' => $page_theme)))
			{
				$path = $CONFERENCE_FULL_PATH.$GLOBALS['Forum_ID']."/";
				$time = 5; // секунд
				?>
				<h1>У Вас недостаточно прав для совершения операции</h1>
				<p> Через <?php echo $time?> секунд Вы вернетесь в форум.</p>
				<p>Если Вы не хотите ждать, перейдите по <a href="<?php echo $path?>">ссылке</a>.</p>
				<script language="JavaScript" type="text/javascript">
				<!--
				function set_location()
				{
					location="<?php echo $path;?>";
				}
				setTimeout('set_location()', <?php echo $time*1000?>);
				//-->
				</script>
				<?php 
			}
		}
	}
}
/* Если перешли по ссылке удаления сообщения */
elseif (isset($_GET['del_message_id']))
{
	$Forums->DelMessage($GLOBALS['Forum_ID'], $GLOBALS['Theme_ID'], $_GET['del_message_id'], $site_users_id);

	$path = $CONFERENCE_FULL_PATH.$GLOBALS['Forum_ID']."/{$GLOBALS['Theme_ID']}/";
	$time = 5; // секунд
	?>
	<h1>Удаление сообщения</h1>
	<p>Удаление сообщения успешно произведено. Через <?php echo $time?> секунд Вы вернетесь в форум.</p>
	<p>Если Вы не хотите ждать, перейдите по <a href="<?php echo $path?>">ссылке</a>.</p>
	<script language="JavaScript" type="text/javascript">
	<!--
	function set_location()
	{
		location="<?php echo $path?>";
	}
	setTimeout('set_location()', <?php echo $time*1000?>);
	//-->
	</script>
	<?php 	
}

/* Если была нажата кнопка добавления сообщения */
elseif (isset($_POST['add_message']))
{
	if ($site_users_id == 0)
	{
		/* Проверям кэпчу */
		$forum_row = $Forums->GetForum(to_int($GLOBALS['Forum_ID']));
		if ($forum_row)
		{
			$forums_captcha_used = $forum_row['forums_captcha_used'];
		}

		$Captcha = new Captcha();
		if ($forums_captcha_used == 0 || ($forums_captcha_used == 1 && isset($_POST['captcha_key']) && isset($_POST['captcha_keystring']) &&
		$Captcha->ValidCaptcha($_POST['captcha_key'], $_POST['captcha_keystring'])))
		{
			$valid_captcha = true;
		}
	}
	else
	{
		$valid_captcha = true;
	}

	/* Если пользователь залогинился, то добавляем сообщение */
	if (to_bool($valid_captcha))
	{
		$param = array();
		$param['forums_conference_id'] = to_int($GLOBALS['FORUM_CONFERENCE_ID']);
		$param['forums_id'] = to_int($GLOBALS['Forum_ID']);
		$param['forums_theme_id'] = to_int($GLOBALS['Theme_ID']);
		$param['forums_theme_title'] = to_str($_POST['theme_title']);
		$param['forums_message_text'] = to_str($_POST['forums_message_text']);
		$param['site_users_id'] = to_int($site_users_id);
		$param['forums_message_id'] = to_int($_POST['message_id']);

		/* Указываем XSL шаблоны */
		$param['xsl_name_add_user'] = $xsl_mail_add_user;
		$param['xsl_name_add_curator'] = $xsl_mail_add_curator;
		$param['xsl_name_edit_user'] = $xsl_mail_edit_user;
		$param['xsl_name_edit_curator'] = $xsl_mail_edit_curator;

		if (strlen($param['forums_theme_title']) < 2 || strlen($param['forums_message_text']) < 2)
		{
			$add_edit_message = -3;
		}
		else
		{
			$add_edit_message = $Forums->InsertEditMessage($param);
		}

		switch ($add_edit_message)
		{
			case -3: // Длина сообщения и темы должна быть не менее 2-х символов
			{
				$path = $CONFERENCE_FULL_PATH.$GLOBALS['Forum_ID']."/{$GLOBALS['Theme_ID']}/";
				$time = 5; // секунд
				?>
				<h1>Создание/редактирование сообщения</h1>
				<p>Длина темы или сообщения должна быть не менее 2-х символов. Через <?php echo $time?> секунд Вы вернетесь в форум.</p>
				<p>Если Вы не хотите ждать, перейдите по <a href="<?php echo $path?>">ссылке</a>.</p>
				<script language="JavaScript" type="text/javascript">
				<!--
				function set_location()
				{
					location="<?php echo $path?>";
				}
				setTimeout('set_location()', <?php echo $time * 1000?>);
				//-->
				</script>
			<?php 					
			}
			case -2: // Ошибка авторизации.
			{
				$path = $CONFERENCE_FULL_PATH.$GLOBALS['Forum_ID']."/{$GLOBALS['Theme_ID']}/";
				$time = 5; // секунд
				?>
				<h1>У Вас недостаточно прав для совершения операции</h1>
				<p> Через <?php echo $time?> секунд Вы вернетесь в форум.</p>
				<p>Если Вы не хотите ждать, перейдите по <a href="<?php echo $path?>">ссылке</a>.</p>
				<script language="JavaScript" type="text/javascript">
				<!--
				function set_location()
				{
					location="<?php echo $path?>";
				}
				setTimeout('set_location()', <?php echo $time * 1000?>);
				//-->
				</script>
				<?php 
				break;
			}
			case -1: // Защита от флуда.
			{
				$parameters['message_theme'] = $_POST['theme_title'];
				$parameters['message_text'] = $_POST['forums_message_text'];
				$external_propertys['error'] = 'Ошибка! Вы слишком часто добавляете сообщения.';
				$external_propertys = array_merge($external_propertys, $GLOBALS['external_propertys_reg']);
				/* Если было добавление сообшения */
				if ($_POST['message_id'] == 0)
				{
					$param['current_page_theme'] = $page_theme;
					$param['current_page_message'] = $page_message;
					$external_propertys = array_merge($external_propertys, $GLOBALS['external_propertys_reg']);
					/* Выводим таблицу сообщений */
					$Forums->ShowMessage($GLOBALS['FORUM_CONFERENCE_ID'], $GLOBALS['Forum_ID'], $GLOBALS['Theme_ID'],
					$xsl_topic_messages, $external_propertys, $param);
				}
				break;
			}
			case 0: // Ошибка.
			{
				$path = $CONFERENCE_FULL_PATH.$GLOBALS['Forum_ID']."/{$GLOBALS['Theme_ID']}/";
				$time = 5; // секунд
				?>
				<h1>Ошибка при редактировании/добавлении сообщения</h1>
				<p> Через <?php echo $time?> секунд Вы вернетесь в форум.</p>
				<p>Если Вы не хотите ждать, перейдите по <a href="<?php echo $path?>">ссылке</a>.</p>
				<script language="JavaScript" type="text/javascript">
				<!--
				function set_location()
				{
					location="<?php echo $path?>";
				}
				setTimeout('set_location()', <?php echo $time * 1000?>);
				//-->
				</script>
				<?php 
				break;
			}
			default: /* Операция успешно выполнена */
			{
				if ($_POST['message_id'] == 0)
				{
					$page_count = $Forums->GetLastPageTheme($GLOBALS['Theme_ID']);

					if ($page_count != 0)
					{
						$page_count_txt = "page-{$page_count}/";
					}
					else
					{
						$page_count_txt = '';
					}

					// Добавление выполнено
					$Forums->IncCountMessage($site_users_id);

					$path = $CONFERENCE_FULL_PATH.$GLOBALS['Forum_ID']."/{$GLOBALS['Theme_ID']}/{$page_count_txt}";
					$time = 5; // секунд
					?>
					<h1>Добавление сообщения</h1>
					<p>Сообщение успешно добавлено. Через <?php echo $time?> секунд Вы вернетесь в форум.</p>
					<p>Если Вы не хотите ждать, перейдите по <a href="<?php echo $path?>">ссылке</a>.</p>
					<script language="JavaScript" type="text/javascript">
					<!--
					function set_location()
					{
						location="<?php echo $path?>";
					}
					setTimeout('set_location()', <?php echo $time * 1000?>);
					//-->
					</script>
					<?php 					
				}
				else
				{
					$page_count = $Forums->GetLastPageTheme($GLOBALS['Theme_ID']);

					if ($page_count != 0)
					{
						$page_count_txt = "page-{$page_count}/";
					}
					else
					{
						$page_count_txt = '';
					}

					// Редактирование выполнено
					$path = $CONFERENCE_FULL_PATH.$GLOBALS['Forum_ID']."/{$GLOBALS['Theme_ID']}/{$page_count_txt}";
					$time = 5; // секунд
					?>
					<h1>Редактирование сообщения</h1>
					<p>Сообщение успешно отредактированно. Через <?php echo $time?> секунд Вы вернетесь в форум.</p>
					<p>Если Вы не хотите ждать, перейдите по <a href="<?php echo $path?>">ссылке</a>.</p>
					<script language="JavaScript" type="text/javascript">
					<!--
					function set_location()
					{
						location="<?php echo $path?>";
					}
					setTimeout('set_location()', <?php echo $time * 1000?>);
					//-->
					</script>
					<?php 					
				}
				break;
			}
		}
	}
	else
	{
		/* Неправильная кэптча */
		$parameters['message_theme'] = to_str($_POST['theme_title']);
		$parameters['message_text'] = to_str($_POST['forums_message_text']);
		$external_propertys['error'] = 'Ошибка! Неправильно введен код подтверждения.';

		/* Если было добавление сообщения */
		if ($_POST['message_id'] == 0)
		{
			$param['current_page_theme'] = $page_theme;
			$param['current_page_message'] = $page_message;

			$external_propertys = array_merge($external_propertys, $GLOBALS['external_propertys_reg']);

			/* Выводим таблицу сообщений */
			$Forums->ShowMessage($GLOBALS['FORUM_CONFERENCE_ID'], $GLOBALS['Forum_ID'],
			$GLOBALS['Theme_ID'], $xsl_topic_messages, $external_propertys, $param);
		}
		else
		{
			/* Если было редактирование сообшения */
			/* выводим форму редактирования сообщения */
			$xslname = 'РедактированиеСообщения';

			$external_propertys['error'] = 'Неправильно введен код подтверждения';

			$external_propertys = array_merge($external_propertys, $GLOBALS['external_propertys_reg']);

			$Forums->ShowEditMessage($GLOBALS['FORUM_CONFERENCE_ID'], $GLOBALS['Forum_ID'],
			$GLOBALS['Theme_ID'], $_POST['message_id'], $xsl_edit_message, $external_propertys);
		}
	}
}
elseif (isset($_GET['edit_message_id']))
{
	/* Выводим форму редактирования сообщения */
	$Forums->ShowEditMessage($GLOBALS['FORUM_CONFERENCE_ID'], $GLOBALS['Forum_ID'],
	$GLOBALS['Theme_ID'], $_GET['edit_message_id'], $xsl_edit_message);
}
elseif ($GLOBALS['Forum_ID'])
{
	// Если пользователь залогинился

	if ($site_users_id!=0)
	{
		// Если перешли по ссылке закрытия темы, закрываем/открываем тему и обновляем страницу
		if (isset($_GET['close_theme_id']))
		{
			$Forums->CloseTheme($GLOBALS['Forum_ID'], $_GET['close_theme_id']);
		}

		/* Если перешли по ссылке темы-объявления, делаем тему объявлением или наоборот и обновляем страницу */
		if (isset($_GET['notice_theme_id']))
		{
			$Forums->NoticeTheme($GLOBALS['Forum_ID'], $_GET['notice_theme_id']);
		}

		/* Если перешли по ссылке видимости темы, делаем тему видимой/невидимой и обновляем страницу */
		if (isset($_GET['visible_theme_id']))
		{
			$Forums->VisibleTheme($GLOBALS['Forum_ID'], $_GET['visible_theme_id']);
		}

		// Если перешли по ссылке удаления темы, то удаляем тему и обновляем страницу
		if (isset($_GET['delete_theme_id']))
		{
			$Forums->DelTheme($GLOBALS['FORUM_CONFERENCE_ID'], $GLOBALS['Forum_ID'],$_GET['delete_theme_id']);
		}

	}

	if ($GLOBALS['Theme_ID'])
	{
		/* Вывод таблицы сообщений */
		$param['current_page_theme'] = $page_theme;
		$param['current_page_message'] = $page_message;

		$external_propertys = array_merge($external_propertys, $GLOBALS['external_propertys_reg']);

		if (isset($GLOBALS['quick_reg']))
		{
			echo $GLOBALS['quick_reg'];
		}
		else
		{
			if (!$Forums->ShowMessage($GLOBALS['FORUM_CONFERENCE_ID'], $GLOBALS['Forum_ID'],
			$GLOBALS['Theme_ID'], $xsl_topic_messages, $external_propertys, $param))
			{
				$path = $CONFERENCE_FULL_PATH.$GLOBALS['Forum_ID']."/";
				$time = 5; // секунд
				?>
				<h1>У Вас недостаточно прав для совершения операции</h1>
				<p> Через <?php echo $time?> секунд Вы вернетесь в форум.</p>
				<p>Если Вы не хотите ждать, перейдите по <a href="<?php echo $path?>">ссылке</a>.</p>
				<script language="JavaScript" type="text/javascript">
				<!--
				function set_location()
				{
					location="<?php echo $path?>";
				}
				setTimeout('set_location()', <?php echo $time * 1000?>);
				//-->
				</script>
				<?php
			}
		}
	}
	else
	{
		if (isset($GLOBALS['quick_reg']))
		{
			echo $GLOBALS['quick_reg'];
		}
		else
		{
			$param['current_page_theme'] = $page_theme;
			$param['current_page_message'] = $page_message;

			/* Отображаем темы */
			$external_propertys = array_merge($external_propertys, $GLOBALS['external_propertys_reg']);

			if (!$Forums->ShowThemes($GLOBALS['FORUM_CONFERENCE_ID'], $GLOBALS['Forum_ID'],
			$xsl_forum_topics, $external_propertys, $param))
			{
				$path = $CONFERENCE_FULL_PATH;
				$time = 5; // секунд
			?>
			<h1>У Вас недостаточно прав для совершения операции</h1>
			<p> Через <?php echo $time?> секунд Вы вернетесь к списку форумов.</p>
			<p>Если Вы не хотите ждать, перейдите по <a href="<?php echo $path?>">ссылке</a>.</p>
			<script language="JavaScript" type="text/javascript">
			<!--
			function set_location()
			{
				location="<?php echo $path;?>";
			}
			setTimeout('set_location()', <?php echo $time * 1000?>);
			//-->
			</script>
			<?php 	
			}
		}
	}
}
/*
// Перенесено в отдельную типовую динамическую страницу для пользователя
elseif (ereg ("^user-([0-9]*)$", $page, $regs) && to_int($regs[1]) > 0)
{
// Указываем пользователя, для которого отображаем информацию
$param['site_users_id'] = $regs[1];

$external_propertys['current_page_message'] = $page_message;

$external_propertys = array_merge($external_propertys, $GLOBALS['external_propertys_reg']);

$Forums->ShowSiteUserInfo($GLOBALS['FORUM_CONFERENCE_ID'], $GLOBALS['Forum_ID'],
$GLOBALS['Theme_ID'], $xsl_user_info, $external_propertys, $param);
}
*/
else
{
	if (isset($GLOBALS['quick_reg']))
	{
		echo $GLOBALS['quick_reg'];
	}
	else
	{
		/* Идентификатор форума не указан - отображаем спсиок форумов и групп для конференции */
		$external_propertys = array_merge($external_propertys, $GLOBALS['external_propertys_reg']);
		$Forums->ShowConference($GLOBALS['FORUM_CONFERENCE_ID'], $xsl_forums, $external_propertys);
	}
}
?>