config
tmpl=lastAcquired-1.0.tmpl
output=lastAcquired-1.0.xml
-query=select biblio.title as title, biblio.author as author, biblio.biblionumber as bibid, biblio.notes as notes, biblioitems.place as place, biblioitems.publishercode as publishercode, biblioitems.publicationyear as publicationyear, biblioitems.pages as pages, biblioitems.illus as illus, biblioitems.size as size from biblio, biblioitems, items where biblioitems.biblionumber = items.biblionumber and biblio.biblionumber = items.biblionumber and items.dateaccessioned is not NULL order by items.dateaccessioned desc
\ No newline at end of file
+query=select biblio.title as title, biblio.author as author, biblio.biblionumber, biblio.notes as notes, biblioitems.place as place, biblioitems.publishercode as publishercode, biblioitems.publicationyear as publicationyear, biblioitems.pages as pages, biblioitems.illus as illus, biblioitems.size as size from biblio, biblioitems, items where biblioitems.biblionumber = items.biblionumber and biblio.biblionumber = items.biblionumber and items.dateaccessioned is not NULL order by items.dateaccessioned desc
config
tmpl=lastAcquired-2.0.tmpl
output=lastAcquired-2.0.xml
-query=select biblio.title as title, biblio.author as author, biblio.biblionumber as bibid, biblio.notes as notes, biblioitems.place as place, biblioitems.publishercode as publishercode, biblioitems.publicationyear as publicationyear, biblioitems.pages as pages, biblioitems.illus as illus, biblioitems.size as size from biblio, biblioitems, items where biblioitems.biblionumber = items.biblionumber and biblio.biblionumber = items.biblionumber and items.dateaccessioned is not NULL order by items.dateaccessioned desc
\ No newline at end of file
+query=select biblio.title as title, biblio.author as author, biblio.biblionumber, biblio.notes as notes, biblioitems.place as place, biblioitems.publishercode as publishercode, biblioitems.publicationyear as publicationyear, biblioitems.pages as pages, biblioitems.illus as illus, biblioitems.size as size from biblio, biblioitems, items where biblioitems.biblionumber = items.biblionumber and biblio.biblionumber = items.biblionumber and items.dateaccessioned is not NULL order by items.dateaccessioned desc
-<?xml version="1.0" encoding="UTF-8"?>
-
-<!DOCTYPE rss PUBLIC "-//Netscape Communications/DTD RSS 0.91/EN"
- "http://my.netscape.com/publish/formats/rss-0.91.dtd">
-
-<rss version="0.91">
-
-<channel>
- <title><!-- TMPL_VAR name="CHANNELTITLE" --></title>
- <link><!-- TMPL_VAR name="CHANNELLINK" --></link>
- <description><!-- TMPL_VAR name="CHANNELDESC" --></description>
- <language><!-- TMPL_VAR name="CHANNELLANG" --></language>
- <lastBuildDate><!-- TMPL_VAR name="CHANNELLASTBUILD" --></lastBuildDate>
-
- <image>
- <title><!-- TMPL_VAR name="IMAGETITLE" --></title>
- <url><!-- TMPL_VAR name="IMAGEURL" --></url>
- <link><!-- TMPL_VAR name="IMAGELINK" --></link>
- </image>
-
-<!-- TMPL_LOOP NAME="ITEMS" -->
- <item>
- <title><!-- TMPL_VAR name="TITLE" --><!-- TMPL_IF NAME="SUBTITLE" --> <!-- TMPL_VAR name="SUBTITLE" --><!-- /TMPL_IF --><!-- TMPL_IF NAME="AUTHOR" -->, by <!-- TMPL_VAR name="AUTHOR" --><!-- /TMPL_IF --></title>
- <category><!-- TMPL_VAR NAME="itemtype" --></category>
- <description><![CDATA[Call Number: <!-- TMPL_VAR NAME="callno" --><br />
- <!-- TMPL_IF NAME="notes" -->Notes: <!-- TMPL_VAR NAME="notes" --><br /><!-- /TMPL_IF -->
-<a href="https://libcat.nbbc.edu/cgi-bin/koha/opac-detail.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->">View Details</a> <!-- TMPL_IF NAME="reservable" -->| <a href="https://libcat.nbbc.edu/cgi-bin/koha/opac-reserve.pl?biblionumber=<!-- TMPL_VAR NAME="biblionumber" -->">Reserve this Item</a><!-- /TMPL_IF -->]]>
-</description>
- <link>https://libcat.nbbc.edu/cgi-bin/koha/opac-detail.pl?biblionumber=<!-- TMPL_VAR name="biblionumber" --></link>
-
- </item>
-<!-- /TMPL_LOOP -->
-
-</channel>
-</rss>
+#!/usr/bin/perl
+
+# This script can be used to generate rss 0.91 files for syndication.
+
+# it should be run from cron like:
+#
+# rss.pl config.conf
+#
+
+# Copyright 2003 Katipo Communications
+#
+# This file is part of Koha.
+#
+# Koha is free software; you can redistribute it and/or modify it under the
+# terms of the GNU General Public License as published by the Free Software
+# Foundation; either version 2 of the License, or (at your option) any later
+# version.
+#
+# Koha is distributed in the hope that it will be useful, but WITHOUT ANY
+# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
+# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
+# Suite 330, Boston, MA 02111-1307 USA
+
+use strict;
+use warnings;
+
+use HTML::Template::Pro;
+use C4::Context;
+use Time::Local;
+use POSIX;
+
+my $dbh = C4::Context->dbh;
+my $file = $ARGV[0];
+my %config = getConf("config");
+my $outFile = $config{"output"};
+my $feed = HTML::Template::Pro->new( filename => $config{"tmpl"} );
+
+my %channel = getConf("channel");
+$feed->param( CHANNELTITLE => $channel{'title'} );
+$feed->param( CHANNELLINK => $channel{'link'} );
+$feed->param( CHANNELDESC => $channel{'desc'} );
+$feed->param( CHANNELLANG => $channel{'lang'} );
+$feed->param( CHANNELLASTBUILD => getDate() );
+
+my %image = getConf("image");
+$feed->param( IMAGETITLE => $image{'title'} );
+$feed->param( IMAGEURL => $image{'url'} );
+$feed->param( IMAGELINK => $image{'link'} );
+$feed->param( IMAGEDESCRIPTION => $image{'description'} );
+$feed->param( IMAGEWIDTH => $image{'width'} );
+$feed->param( IMAGEHEIGHT => $image{'height'} );
+
+#
+# handle the items
+#
+$feed->param( ITEMS => getItems( $config{'query'} ) );
+
+open( FILE, ">$outFile" ) or die "can't open $outFile";
+print FILE $feed->output();
+close FILE;
+
+sub getDate {
+
+ # my $date = localtime(timelocal(localtime));
+ my $date = strftime( "%a, %d %b %Y %T %Z", localtime );
+ return $date;
+}
+
+sub getConf {
+ my $section = shift;
+ my %return;
+ my $inSection = 0;
+
+ open( FILE, $file ) or die "can't open $file";
+ while (<FILE>) {
+ if ($inSection) {
+ my @line = split( /=/, $_, 2 );
+ unless ( $line[1] ) {
+ $inSection = 0;
+ } else {
+ my ( $key, $value ) = @line;
+ chomp $value;
+ $return{$key} = $value;
+ }
+ } else {
+ if ( $_ eq "$section\n" ) { $inSection = 1 }
+ }
+ }
+ close FILE;
+ return %return;
+}
+
+sub getItems {
+ my $query = shift;
+ $query .= " limit 15";
+ my $sth = $dbh->prepare($query);
+ $sth->execute;
+ my @return;
+ while ( my $data = $sth->fetchrow_hashref ) {
+ foreach my $key ( keys %$data ) {
+ my $value = $data->{$key};
+ $value = '' unless defined $value;
+ $value =~ s/\&/\&/g and $data->{$key} = $value;
+ }
+ push @return, $data;
+ }
+ $sth->finish;
+ return \@return;
+}