use strict; use lib qw( ../modules ); use CGI qw( param ); use BM::Bar; use BM::Page::Bar; use BM::Page::Bar::Review; use BM::Page::Bar::ByCountry; use BM::Page::Bar::ByRegion; use BM::Page::Bar::ByCity; use BM::Page::Bar::Top100; use BM::Page::Bar::ByDate; #use BM::Page::Bar::ByCategory; use BM::Page::Bar::Search; ################################################################################ main(); ################################################################################ sub main { my $page = undef; my @args = split(/\//,param('args')); my $subsection = $args[0] || q{}; my %pages = ( review => \&review, random => \&random, by_country => \&by_country, by_region => \&by_region, by_city => \&by_city, by_date => \&by_date, search => \&search, top100 => \&top100, q{} => \&default, ); #make sure that we have a routine to handle the given subsection $subsection = q{} if ! exists $pages{$subsection}; my $page = &{$pages{$subsection}}(\@args); $page->section(q{bars}); $page->subsection($subsection); print $page->render(); } ################################################################################ sub review { my $args = shift; my $bar = BM::Bar->new($args->[1]); $bar->load(); my $stat = $bar->stats(); $stat->direct($stat->direct()+1); $stat->save(); my $page = BM::Page::Bar::Review->new( { title => q{Bar Review: } . $bar->full_name(), bar => $bar, } ); return $page; } ################################################################################ sub random { my $args = shift; my $bar = BM::Bar->new(BM::Bar::random_id()); $bar->load(); my $stat = $bar->stats(); $stat->random($stat->random()+1); $stat->save(); my $page = BM::Page::Bar::Review->new( { title => q{Bar Review: } . $bar->full_name(), bar => $bar, real_url => q{/bars/review/} . $bar->id() . q{/}, } ); return $page; } ################################################################################ sub by_country { my $args = shift; return default() if ! $args->[1]; my $page = BM::Page::Bar::ByCountry->new( { title => q{Bar Reviews: By Country}, country_id => $args->[1], } ); return $page; } ################################################################################ sub by_region { my $args = shift; return default() if ! $args->[1]; my $page = BM::Page::Bar::ByRegion->new( { title => q{Bar Reviews: By Region}, region_id => $args->[1], } ); return $page; } ################################################################################ sub by_city { my $args = shift; return default() if ! $args->[1]; my $page = BM::Page::Bar::ByCity->new( { title => q{Bar Reviews: By City}, city_id => $args->[1], } ); return $page; } ################################################################################ sub by_date { my $args = shift; my $page = BM::Page::Bar::ByDate->new( { title => q{Bar Reviews: Recently Added}, limit => 30, } ); return $page; } ################################################################################ sub top100 { my $args = shift; my $page = BM::Page::Bar::Top100->new( { title => q{Bar Reviews: 100 Most Popular}, limit => 100, min_votes => 20, } ); return $page; } ################################################################################ sub search { my $args = shift; my $page = BM::Page::Bar::Search->new( { title => q{Bar Reviews: Search}, } ); return $page; } ################################################################################ sub default { my $page = BM::Page::Bar->new( { title => q{Bar Reviews}, } ); return $page; } ################################################################################