From f1b4d629b37ea6c864fc85fe6d4bb8ec69dc9439 Mon Sep 17 00:00:00 2001 From: Galen Charlton Date: Mon, 15 Dec 2008 09:58:46 -0600 Subject: [PATCH] bug 2864 [1/2]: restore rss/rss.pl Restored basic functionality of rss/rss.pl: [1] Reverted "Add support for itemtypes. Still need to hardcode 'reservable'" Revert commit e7575b00edd6098a869425a69856916108e84914, which had replace the script with one of its templates. [2] Minor fixes to update it, including using HTML::Template::Pro instead of HTML::Template, perltidy, and turning on warnings. Signed-off-by: Galen Charlton --- rss/lastAcquired-1.0.conf | 2 +- rss/lastAcquired-2.0.conf | 2 +- rss/lastAcquired.conf | 2 +- rss/rss.pl | 147 +++++++++++++++++++++++++++++--------- 4 files changed, 115 insertions(+), 38 deletions(-) mode change 100644 => 100755 rss/rss.pl diff --git a/rss/lastAcquired-1.0.conf b/rss/lastAcquired-1.0.conf index 9c985f7df2..44036d8d0f 100644 --- a/rss/lastAcquired-1.0.conf +++ b/rss/lastAcquired-1.0.conf @@ -11,4 +11,4 @@ description=Koha, the worlds best Open Source Library System 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 diff --git a/rss/lastAcquired-2.0.conf b/rss/lastAcquired-2.0.conf index 5048fa630d..5e6a1b5f49 100644 --- a/rss/lastAcquired-2.0.conf +++ b/rss/lastAcquired-2.0.conf @@ -13,4 +13,4 @@ height=31 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 diff --git a/rss/lastAcquired.conf b/rss/lastAcquired.conf index 9f3cc94d20..4ae696a47d 100644 --- a/rss/lastAcquired.conf +++ b/rss/lastAcquired.conf @@ -11,5 +11,5 @@ link=http://www.koha.org config tmpl=lastAcquired.tmpl output=lastAcquired.xml -query=select biblio.title as title, biblio.author as author, biblio.biblionumber as bibid 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 +query=select biblio.title as title, biblio.author as author, biblio.biblionumber 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 diff --git a/rss/rss.pl b/rss/rss.pl old mode 100644 new mode 100755 index e6fcb6f48b..4cea230e8c --- a/rss/rss.pl +++ b/rss/rss.pl @@ -1,35 +1,112 @@ - - - - - - - - <!-- TMPL_VAR name="CHANNELTITLE" --> - - - - - - - <!-- TMPL_VAR name="IMAGETITLE" --> - - - - - - - <!-- 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 --> - -
- Notes:
-">View Details | ">Reserve this Item]]> -
- https://libcat.nbbc.edu/cgi-bin/koha/opac-detail.pl?biblionumber= - -
- - -
-
+#!/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 () { + 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; +} -- 2.39.5