#!/usr/bin/perl -w

use strict;
use CGI;
#use CGI::Carp qw(fatalsToBrowser);
use Template;

use lib 'lib';
use Sporkstorms::Post;

use constant POSTS_PER_PAGE => 10;

my $q = CGI->new;
my $t = Template->new({
	INCLUDE_PATH => "templates",
	POST_CHOMP => 1,
	PRE_CHOMP => 1
});

main();
sub main
{
	my $post;
	my $output;
	if (defined $q->param('id') && $q->param('id') =~ /^\d+$/) {
		$post = Sporkstorms::Post->retrieve($q->param('id'));
	}
	if (defined $post) {
		$t->process('page_blog_entry.tmpl', { post => $post }, \$output)
			or die $t->error();
	} else {
		my $num_pages = Sporkstorms::Post->count() / POSTS_PER_PAGE;
		if (int($num_pages) != $num_pages) {
			$num_pages = int($num_pages) + 1;
		}
		my @posts = ();
		my $page;
		if (defined $q->param('page') && $q->param('page') =~ /^\d+$/) {
			$page = $q->param('page') || 1;
			@posts = Sporkstorms::Post->retrieve_x_page_y(
				POSTS_PER_PAGE, $page);
		}
		unless (scalar @posts) {
			@posts = Sporkstorms::Post->retrieve_last_x(POSTS_PER_PAGE);
			$page = 1;
		}
		$t->process('page_blog_listing.tmpl', {
				posts => \@posts,
				posts_per_page => POSTS_PER_PAGE,
				page => $page,
				num_pages => $num_pages,
			}, \$output);
	}
	print $q->header(-charset => 'utf-8');
	print $output;
}


