#!/usr/bin/perl -w use strict; use CGI; use Pg; use POSIX; ############################################################################ my $db = 'cattleweb'; my $bgcolor = '#ffffff'; my $defbanner = 'http://www.cattleweb.net/images/cattlewebtitle.gif'; my $numperpage = 10; ############################################################################ #my $conn = Pg::new('','','','',$db); my $conn = Pg::connectdb("dbname=cattleweb"); my $q = new CGI; my $time = localtime; print $q->header('text/html'); my $query; my $pid = 0; my $banner; my $nextpage; my $prevpage; my $cursor; my $ntuples; # get the banner url if it exists if($q->param('id')) { $pid = $q->param('id'); $query = "SELECT bannerurl FROM classified_owners WHERE id=$pid"; my $r = $conn->exec($query); $banner = $r->getvalue(0,0); } print $q->start_html(-title=>'Classifieds', -BGCOLOR=>$bgcolor); # show the banner if we can print "
"; if (length($banner)) { BannerSrc($banner); } else { BannerSrc($defbanner); } print "
Current Time: " .localtime(). "\n"; print "


\n"; my $r = &DoQuery; # determine if next page exists if( $r->ntuples() == ($numperpage+1) ) { $nextpage = 1; $ntuples = ($r->ntuples()) - 1; } else { $nextpage = 0; $ntuples = $r->ntuples(); } # determine if previous page exists if( $q->param('cursor') >= $numperpage ) { $prevpage = 1; } else { $prevpage = 0; } my $i; for($i=0; $i < $ntuples; $i++) { print < END my $text = $r->getvalue($i,$r->fnumber('text')); $text =~ s/\n/
\n/g; print ""; print "
$text
"; if( length($r->getvalue($i,$r->fnumber('name'))) ) { print "Contact: ". $r->getvalue($i,$r->fnumber('name')). "
"; } if( length($r->getvalue($i,$r->fnumber('city'))) ) { print "City: ". $r->getvalue($i,$r->fnumber('city')). "
"; } if( length($r->getvalue($i,$r->fnumber('state'))) ) { print "State: ". $r->getvalue($i,$r->fnumber('state')). "
"; } if( length($r->getvalue($i,$r->fnumber('country'))) ) { print "Country: ". $r->getvalue($i,$r->fnumber('country')). "
"; } if( length($r->getvalue($i,$r->fnumber('phone'))) ) { print "Phone: ". $r->getvalue($i,$r->fnumber('phone')). "
"; } if( length($r->getvalue($i,$r->fnumber('email'))) ) { print "Email: getvalue($i,$r->fnumber('email')). "\">". $r->getvalue($i,$r->fnumber('email')). "
"; } if( length($r->getvalue($i,$r->fnumber('url'))) ) { print "URL: getvalue($i,$r->fnumber('url')). "\">". $r->getvalue($i,$r->fnumber('url')). "
"; } # my $secs = $r->getvalue(0,0); # # my $date = strftime("%c %Z", localtime($secs)); # print "Submitted : $date
\n"; # print "Submitted : $ts
\n"; print "Submitted : ". $r->getvalue($i, $r->fnumber('ts')). "
\n"; print "Category: ". $r->getvalue($i,$r->fnumber('category')). ""; print "
"; print "
"; } print ""; my $script = $q->script_name(); if($prevpage) { my $str = $q->query_string(); my $num = $cursor-$numperpage; $str =~ s/cursor=\d+/cursor=$num/; print ""; } if($nextpage) { if(!$q->param('cursor')) { $q->param('cursor','0'); } my $str = $q->query_string(); my $num = $cursor+$numperpage; $str =~ s/cursor=\d+/cursor=$num/; print ""; } print <Classifieds Courtesy of CATTLEweb
Previous PageNext Page
END print $q->end_html(); ################################################################ sub DoQuery { my $query; # create base query (one if partnerid is given, another if not) if($pid) { $query = "DECLARE clportal CURSOR FOR ". "SELECT date_part('epoch',abstime_datetime(c.ts)),c.* ". "FROM classified c, ad_owners a ". "WHERE expire > 'now' AND a.adid=c.id AND a.ownerid=$pid AND "; } else { $query = "DECLARE clportal CURSOR FOR ". "SELECT date_part('epoch',abstime_datetime(c.ts)),c.* ". "FROM classified c ". "WHERE expire > 'now' AND "; } if($q->param('keywords')) { my $tmp = $q->param('keywords'); $tmp =~ s/'/\\'/g; my @words = split(" ", $tmp); $query .= " (c.text ~* '".join("' OR c.text ~* '", @words)."') AND "; } if($q->param('category')) { my $cat = $q->param('category'); $query .= " c.category='$cat' "; } $query =~ s/AND $//; $query =~ s/WHERE $//; # show newest ads first, oldest ads at the end $query .= " ORDER BY c.ts DESC "; $cursor = $q->param('cursor'); if( (!$cursor) ) { $cursor = 0; } $cursor = int($cursor); $conn->exec("BEGIN"); $conn->exec($query); if($cursor > 0) { $conn->exec("MOVE $cursor IN clportal"); } my $num = $numperpage+1; my $res = $conn->exec("FETCH $num IN clportal"); return($res); } #----------------------------------------------------------- # BannerSrc # # Show a banner with $src as the src tag #----------------------------------------------------------- sub BannerSrc { my ($src) = @_; print "\"BANNER\"\n"; }