<?php
include 'defaults.php';
include INCLUDES_DIR . 'includes.php';

define('MOD_INDEX', 1);

if (!file_exists(CONFIG_FILE))
	utils_redirect('setup.php');

/* local function defines follow */
function index_permatitle($val, $sep) {
	global $fpdb;
	$q = &$fpdb->getQuery();
	list ($id, $e) = @$q->peekEntry();
	if ($e)
		return "{$e['subject']} {$sep} $val ";
	else
		return $val;
}

function index_gentitle($val, $sep) {
	global $title;
	return "$val $sep $title";
}

function index_404error() {
	global $smarty, $lang;
	@utils_status_header(404);
	$module = 'default.tpl';

	$smarty->assign('subject', $lang ['404error'] ['subject']);
	$smarty->assign('content', $lang ['404error'] ['content']);

	$smarty->assign('rawcontent', true);

	return $module;
}

function index_singlepost(&$params, &$module) {
	global $fpdb, $theme, $fp_params;

	$params ['id'] = $fp_params ['entry'];
	$params ['fullparse'] = true;
	$fpdb->query($params);

	if (@$theme ['hassingle'])
		$module = 'single.tpl';

	add_filter('wp_title', 'index_permatitle', 10, 2);

	if (isset($fp_params ['comments'])) {

		$module = 'comments.tpl';
		$params ['comments'] = true;

		include ('comments.php');
	}
}

function index_staticpage($page, $explicit_req, &$params, &$module) {
	global $smarty, $title;

	if (static_exists($page)) {
		$arr = static_parse($page);
		$title = $arr ['subject'];

		if ($explicit_req)
			add_filter('wp_title', 'index_gentitle', 1, 2);

		$smarty->assign('static_id', $page);
		$smarty->assign('static_page', $arr);

		return $module = 'static.tpl';
	}

	if (user_loggedin())
		utils_redirect('admin.php?p=static&action=write&page=' . $page);
	else
		$module = index_404error();

	return $module;
}

function index_showposts(&$params, &$module) {
	global $fp_params;

	if (isset($fp_params ['d']) && $fp_params ['d'])
		$params ['d'] = $fp_params ['d'];

	if (isset($fp_params ['m']) && $fp_params ['m'])
		$params ['m'] = $fp_params ['m'];

	if (isset($fp_params ['y']) && $fp_params ['y'])
		$params ['y'] = $fp_params ['y'];

	if (isset($fp_params ['start']) && $fp_params ['start'])
		$params ['start'] = intval($fp_params ['start']);

	if (isset($fp_params ['count']) && $fp_params ['count'])
		$params ['count'] = intval($fp_params ['count']);
	if (isset($fp_params ['category']) && is_numeric($fp_params ['category']))
		$params ['category'] = intval($fp_params ['category']);

	if (isset($fp_params ['cat']) && is_numeric($fp_params ['cat']))
		$params ['category'] = intval($fp_params ['cat']);

	if (isset($fp_params ['not']) && is_numeric($fp_params ['not']))
		$params ['exclude'] = intval($fp_params ['not']);

	if (isset($fp_params ['random'])) {
		if (empty($fp_params ['random']))
			$params ['random'] = 1;
		elseif (is_numeric($fp_params ['random']))
			$params ['random'] = intval($fp_params ['random']);
	}

	if ((isset($fp_params ['paged'])) && is_numeric($fp_params ['paged']) && $fp_params ['paged'] > 0)
		$params ['page'] = $fp_params ['paged'];
	else
		$params ['page'] = 1;
}

function index_main() {
	global $fpdb, $smarty, $fp_config, $fp_params;
	$params = array();
	$module = 'index.tpl';
	$can404 = true;

	// register all Smarty modifier functions used by the templates
	$smarty->registerPlugin('modifier', 'wp_specialchars', 'wp_specialchars');
	$smarty->registerPlugin('modifier', 'date', 'date');
	$smarty->registerPlugin('modifier', 'theme_feed_link', 'theme_feed_link');

	if (!empty($fp_params ['entry'])) {
		index_singlepost($params, $module);
	} elseif (($explicit_req = $page = @$fp_params ['page']) || (empty($fp_params) && $page = @$fp_config ['general'] ['startpage'])) {

		index_staticpage($page, $explicit_req, $params, $module);
		return $module;
	} elseif (!empty($_GET ['q'])) {
		include ('search.php');
		$module = search_main();
	} else {

		if (!empty($fp_params ['feed'])) {

			$can404 = false;

			switch ($fp_params ['feed']) {
				case 'atom':
					header('Content-type: application/atom+xml');
					$module = SHARED_TPLS . 'atom.tpl';
					break;
				case 'rss2':
				default:
					header('Content-type: application/rss+xml');
					$module = SHARED_TPLS . 'rss.tpl';
			}
		}

		index_showposts($params, $module);
	}

	$params ['fullparse'] = true;

	$fpdb->query($params);

	$q = &$fpdb->getQuery();
	list ($id, $e) = $q->peekEntry();

	/* no entry found : 404 */

	if (!$e && $can404)
		$module = index_404error();

	return $module;
}

function index_display() {
	global $smarty;

	$module = index_main();

	theme_init($smarty);

	$smarty->display($module);

	unset($smarty);

	do_action('shutdown');
}

system_init();
index_display();

?>
