<?php
/* 
 * Список форумов » КОРОЛЕВСКОЕ СТРАТЕГИЧЕСКОЕ ОБЩЕСТВО » КОРОЛЕВСКАЯ ПРИЕМНАЯ » Гревская площадь
 * 
 * http://internetwars.ru/forum/viewtopic.php?f=9&t=3451 
 * 
 * В ссылке выше: "f=9", где "9" - номер форума. "t=3451", где "3451" - номер темы.
 * 
 * Ниже меняем цифры на нужные и проверям работоспособность. Читает любые темы, даже закрыте и невидимые, будь внимателен.
 * 
 * Шаблоны находятся в директории "views", внешний вид править там.
 * 
 */
	define('FORUM_ID', 315); //Номер форума.
	define('TOPIC_ID', 5214); //Номер темы
	define('POSTS_LIMIT', 50); //Количество сообщений в архиве
	define('CUT', '[cut]'); //Символ "обрезания" текста для превью.
	define('FORUM_PATH', './../forum/'); //Путь к форуму.

	$error_404 = '<center>Страница не найдена!</center>'; //Страница 404.
	$error_no_content = '<center>Новостей нет. Совсем нет.</center>'; //Отсутствуют новости.
	
	error_reporting(0);
	header("Content-Type: text/html; charset=utf-8");
/*** Ниже лучше ничего не трогать ***/
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : FORUM_PATH;
$phpEx = substr(strrchr(__FILE__, '.'), 1);
	
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
include($phpbb_root_path . 'includes/bbcode.' . $phpEx);

$user->session_begin();
$auth->acl($user->data);
$user->setup('viewforum');
///***///

define('DS', DIRECTORY_SEPARATOR);
define('VIEWS', realpath('views') . DS);

/**controller**/
$action = isset($_GET['action']) && $_GET['action'] === 'view' ? $_GET['action'] : FALSE;
$id = isset($_GET['id']) ? (int)$_GET['id'] : FALSE;

if($action)
{
	if($id > 0)
	{
		if($data = get_one($id))
		{
			$render = load_view('one', $data);
		}
		else
		{
			$render = $error_404;
		}
	}
	elseif($id == 0)
	{
		if($data = get_all())
		{
			$render = load_view('all', $data);
		}
		else
		{
			$render = $error_no_content;
		}
	}
	else
	{
		$render = $error_404;
	}
}
else
{
	if($data = get_hot())
	{
		$render = load_view('hot', $data);
	}
	else
	{
		$render = $error_no_content;
	}
}
/*end*/

/**views**/

include load_file('layout');

function load_file($file)
{
	global $phpEx;
	$file = realpath(VIEWS . basename($file) . '.' . $phpEx);
	
	if($file)
	{
		return $file;
	}
	else
	{
		die('Файл шаблона не найден!');
	}
}
function load_view($file, $data)
{
	global $user;
	$file = load_file($file);
	
	ob_start();
	extract($data, EXTR_SKIP);
		
	if(!isset($data[0]))
	{
		$author_id = $data['user_id'];
		$author = $data['username'];
		$timestamp = $user->format_date($data['post_time'], FALSE, TRUE);
		$text = generate_text_for_display($data['post_text'], $data['bbcode_uid'], $data['bbcode_bitfield'], 7);
		$text = str_replace('class="postlink-local">', 'class="postlink-local" target="_blank">', $text);
		$id = $data['post_id'];
	}
		
	require $file;
	return ob_get_clean();
}
/*end*/

/**model**/
function get_one($id)
{
		$id = (int)$id;
		global $db;
		
		$sql = 'SELECT p.forum_id, p.post_id, p.post_text, p.poster_id, p.post_time, p.bbcode_uid, p.bbcode_bitfield, u.user_id, u.username
				FROM ' . POSTS_TABLE . ' AS p, ' . USERS_TABLE . ' AS u
				WHERE p.forum_id = ' . FORUM_ID . ' AND p.topic_id = ' . TOPIC_ID . '  AND u.user_id = p.poster_id AND p.post_id = ' . $id . '
				LIMIT 0, 1';
				
		$result = $db->sql_query($sql);
		$row = $db->sql_fetchrow($result);
		
		$db->sql_freeresult($result);
		return $row;
}

function get_all()
{
		global $db;

		$sql = 'SELECT p.forum_id, p.post_id, p.post_text, p.poster_id, p.post_time, p.bbcode_uid, p.bbcode_bitfield, u.user_id, u.username
				FROM ' . POSTS_TABLE . ' AS p, ' . USERS_TABLE . ' AS u
				WHERE p.forum_id = ' . FORUM_ID . ' AND p.topic_id = ' . TOPIC_ID . '  AND u.user_id = p.poster_id
				ORDER BY p.post_id DESC
				LIMIT 0, ' . POSTS_LIMIT;
		
		$result = $db->sql_query($sql);
		
		while ($row = $db->sql_fetchrow($result))
		{
			$rows[] = $row;
		}
		$db->sql_freeresult($result);
		return $rows;
}

function get_hot()
{
		global $db;
		
		$sql = 'SELECT t.topic_last_post_id, p.forum_id, p.post_id, p.post_text, p.post_time, p.bbcode_uid, p.bbcode_bitfield, p.poster_id, u.user_id, u.username
				FROM ' . TOPICS_TABLE . ' AS t, ' . POSTS_TABLE . ' AS p, ' . USERS_TABLE . ' AS u
				WHERE p.forum_id = ' . FORUM_ID . '  AND p.topic_id = ' . TOPIC_ID . '  AND u.user_id = p.poster_id AND p.post_id = t.topic_last_post_id
				LIMIT 0, 1';
			
		$result = $db->sql_query($sql);
		$row = $db->sql_fetchrow($result);
		
		$db->sql_freeresult($result);
		return $row;
}
/*end*/
?>