#!/usr/bin/perl use strict; use warnings; use DBI; use XML::RSS; use CGI qw(:standard); my $cgi = new CGI(); my $dbh = DBI->connect('DBI:Pg:dbname=DBNAME','DBUSER','DBPASS'); unless( $dbh ){ print $cgi->header(),$cgi->start_html('Oops'),$cgi->h1('We have a problem'),$cgi->end_html(); exit; } my $rss = new XML::RSS(); if(defined( $cgi->param('site') ) ){ my $site_data = $dbh->selectrow_hashref('select title,baseurl from rsssites where sid = ' . $cgi->param('site') ); $rss->channel( title => $site_data->{title}, link => $site_data->{baseurl}, description => $site_data->{title} ); my $query = 'select title,url from rsscontent where cid = ?'; my $sth = $dbh->prepare($query); $sth->execute( $cgi->param('site') ); while (my ($title,$link) = $sth->fetchrow_array()){ $title = $cgi->escapeHTML($title); $rss->add_item( title => $title, link => $link, ); } }else{ ### no site param $rss->channel( title => 'RSS caching system', link => 'http://www.localhost/cgi-bin/rss', description => 'RSS interface to cached news', ); $rss->image( title => 'Localhost', url => 'http://www.localhost/images/favicon.png', link => 'http://www.localhost', ); $rss->textinput( title => 'Localhost search', description => 'Use the text input below to search Localhost', name => 'search_term', link => 'http://www.localhost/search' ); my $query = 'select sid,title from rsssites'; my $sth = $dbh->prepare($query); $sth->execute(); while (my ($sid,$title) = $sth->fetchrow_array()){ $rss->add_item( title => $title, link => "http://www.localhost/cgi-bin/rss?site=$sid" ); } } $dbh->disconnect(); print $cgi->header( -type=>'text/xml' ); print $rss->as_string; 1;