[Koha-cvs] koha/C4 Suggestions.pm

Antoine Farnault antoine at koha-fr.org
Fri Jul 7 10:44:57 CEST 2006


CVSROOT:	/sources/koha
Module name:	koha
Changes by:	Antoine Farnault <toins>	06/07/07 08:44:57

Modified files:
	C4             : Suggestions.pm 

Log message:
	Code cleaning :
	Pod added or rewrited, Sub renamed...

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/koha/C4/Suggestions.pm?cvsroot=koha&r1=1.10&r2=1.11

Patches:
Index: Suggestions.pm
===================================================================
RCS file: /sources/koha/koha/C4/Suggestions.pm,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -b -r1.10 -r1.11
--- Suggestions.pm	4 Jul 2006 14:36:51 -0000	1.10
+++ Suggestions.pm	7 Jul 2006 08:44:57 -0000	1.11
@@ -1,7 +1,5 @@
 package C4::Suggestions;
 
-# $Id: Suggestions.pm,v 1.10 2006/07/04 14:36:51 toins Exp $
-
 # Copyright 2000-2002 Katipo Communications
 #
 # This file is part of Koha.
@@ -19,25 +17,27 @@
 # Koha; if not, write to the Free Software Foundation, Inc., 59 Temple Place,
 # Suite 330, Boston, MA  02111-1307 USA
 
+# $Id: Suggestions.pm,v 1.11 2006/07/07 08:44:57 toins Exp $
+
 use strict;
 require Exporter;
 use DBI;
 use C4::Context;
 use C4::Output;
 use Mail::Sendmail;
-# use C4::Interface::CGI::Output;
 use vars qw($VERSION @ISA @EXPORT);
 
 # set the version for version checking
-$VERSION = 0.01;
+$VERSION = do { my @v = '$Revision: 1.11 $' =~ /\d+/g;
+  shift(@v) . "." . join("_", map {sprintf "%03d", $_ } @v); };
 
 =head1 NAME
 
-C4::Accounts - Functions for dealing with Koha authorities
+C4::Suggestions - Some useful functions for dealings with suggestions.
 
 =head1 SYNOPSIS
 
-  use C4::Suggestions;
+use C4::Suggestions;
 
 =head1 DESCRIPTION
 
@@ -58,21 +58,22 @@
 =cut
 
 @ISA = qw(Exporter);
- at EXPORT = qw(	&newsuggestion
-				&searchsuggestion
-				&getsuggestion
-				&delsuggestion
-				&countsuggestion
-				&changestatus
-				&connectSuggestionAndBiblio
-				&findsuggestion_from_biblionumber
+ at EXPORT = qw(
+    &NewSuggestion
+    &SearchSuggestion
+    &GetSuggestion
+    &DelSuggestion
+    &CountSuggestion
+    &ModStatus
+    &ConnectSuggestionAndBiblio
+    &GetSuggestionFromBiblionumber
 			);
 
 =item SearchSuggestion
 
-  (\@array) = &SearchSuggestion($user)
+(\@array) = &SearchSuggestion($user)
 
-  searches for a suggestion
+searches for a suggestion
 
 C<$user> is the user code (used as suggestor filter)
 
@@ -83,16 +84,20 @@
 * as parameter ( for example ASKED => 1, or REJECTED => 1) . This is for template & translation purposes.
 
 =cut
-sub searchsuggestion  {
+sub SearchSuggestion  {
 	my ($user,$author,$title,$publishercode,$status,$suggestedbyme)=@_;
 	my $dbh = C4::Context->dbh;
-	my $query="Select suggestions.*,
-						U1.surname as surnamesuggestedby,U1.firstname as firstnamesuggestedby,
-						U2.surname as surnamemanagedby,U2.firstname as firstnamemanagedby 
-						from suggestions
-						left join borrowers as U1 on suggestedby=U1.borrowernumber
-						left join borrowers as U2  on managedby=U2.borrowernumber
-						where 1=1";
+    my $query = qq|
+    SELECT suggestions.*,
+        U1.surname   AS surnamesuggestedby,
+        U1.firstname AS firstnamesuggestedby,
+        U2.surname   AS surnamemanagedby,
+        U2.firstname AS firstnamemanagedby
+    FROM suggestions
+    LEFT JOIN borrowers AS U1 ON suggestedby=U1.borrowernumber
+    LEFT JOIN borrowers AS U2 ON managedby=U2.borrowernumber
+    WHERE 1=1 |;
+
 	my @sql_params;
 	if ($author) {
 		push @sql_params,"%".$author."%";
@@ -121,7 +126,7 @@
 		}
 	}
 	if ($suggestedbyme) {
-		if ($suggestedbyme eq -1) {
+        if ($suggestedbyme eq -1) {        # FIXME ! what's this strange code ?
 		} else {
 			push @sql_params,$user;
 			$query .= " and suggestedby=?";
@@ -146,89 +151,196 @@
 	return (\@results);
 }
 
-sub newsuggestion {
+=item NewSuggestion
+
+&NewSuggestion($borrowernumber,$title,$author,$publishercode,$note,$copyrightdate,$volumedesc,$publicationyear,$place,$isbn,$biblionumber)
+
+Insert a new suggestion on database with value given on input arg.
+
+=cut
+sub NewSuggestion {
 	my ($borrowernumber,$title,$author,$publishercode,$note,$copyrightdate,$volumedesc,$publicationyear,$place,$isbn,$biblionumber) = @_;
 	my $dbh = C4::Context->dbh;
-	my $sth = $dbh->prepare("insert into suggestions (status,suggestedby,title,author,publishercode,note,copyrightdate,volumedesc,publicationyear,place,isbn,biblionumber) values ('ASKED',?,?,?,?,?,?,?,?,?,?,?)");
+    my $query = qq |
+        INSERT INTO suggestions
+            (status,suggestedby,title,author,publishercode,note,copyrightdate,
+            volumedesc,publicationyear,place,isbn,biblionumber)
+        VALUES ('ASKED',?,?,?,?,?,?,?,?,?,?,?)
+    |;
+    my $sth = $dbh->prepare($query);
 	$sth->execute($borrowernumber,$title,$author,$publishercode,$note,$copyrightdate,$volumedesc,$publicationyear,$place,$isbn,$biblionumber);	
 }
 
-sub getsuggestion {
+=item GetSuggestion
+
+\%sth = &GetSuggestion($suggestionid)
+
+this function get a suggestion from $suggestionid given on input arg.
+
+return :
+    the result of the SQL query as a hash : $sth->fetchrow_hashref.
+=cut
+sub GetSuggestion {
 	my ($suggestionid) = @_;
 	my $dbh = C4::Context->dbh;
-	my $sth = $dbh->prepare("select * from suggestions where suggestionid=?");
+    my $query = qq|
+        SELECT *
+        FROM   suggestions
+        WHERE  suggestionid=?
+    |;
+    my $sth = $dbh->prepare($query);
 	$sth->execute($suggestionid);
 	return($sth->fetchrow_hashref);
 }
 
-sub delsuggestion {
+=item DelSuggestion
+
+&DelSuggestion($borrowernumber,$suggestionid)
+
+Delete a suggestion. A borrower can delete a suggestion only if he is its owner.
+
+=cut
+sub DelSuggestion {
 	my ($borrowernumber,$suggestionid) = @_;
 	my $dbh = C4::Context->dbh;
 	# check that the suggestion comes from the suggestor
-	my $sth = $dbh->prepare("select suggestedby from suggestions where suggestionid=?");
+    my $query = qq |
+        SELECT suggestedby
+        FROM   suggestions
+        WHERE  suggestionid=?
+    |;
+    my $sth = $dbh->prepare($query);
 	$sth->execute($suggestionid);
 	my ($suggestedby) = $sth->fetchrow;
 	if ($suggestedby eq $borrowernumber) {
-		$sth = $dbh->prepare("delete from suggestions where suggestionid=?");
+        my $queryDelete = qq|
+            DELETE FROM suggestions
+            WHERE suggestionid=?
+        |;
+        $sth = $dbh->prepare($queryDelete);
 		$sth->execute($suggestionid);
 	}
 }
+=item CountSuggestion
+
+&CountSuggestion($status)
+
+Count the number of suggestions with the status given on input argument.
+
+return :
+the number of suggestion with this status.
 
-sub countsuggestion {
+=cut
+sub CountSuggestion {
 	my ($status) = @_;
 	my $dbh = C4::Context->dbh;
 	my $sth;
 	if (C4::Context->preference("IndependantBranches")){
 		my $userenv = C4::Context->userenv;
 		if ($userenv->{flags} == 1){
-			$sth = $dbh->prepare("select count(*) from suggestions where status=?");
+            my $query = qq |
+                SELECT count(*)
+                FROM   suggestions
+                WHERE  status=?
+            |;
+            $sth = $dbh->prepare($query);
 			$sth->execute($status);
-		} else {
-			$sth = $dbh->prepare("select count(*) from suggestions,borrowers where status=? and borrowers.borrowernumber=suggestions.suggestedby and (borrowers.branchcode='' or borrowers.branchcode =?)");
+        }
+        else {
+            my $query = qq |
+                SELECT count(*)
+                FROM suggestions,borrowers
+                WHERE status=?
+                AND borrowers.borrowernumber=suggestions.suggestedby
+                AND (borrowers.branchcode='' OR borrowers.branchcode =?)
+            |;
+            $sth = $dbh->prepare($query);
 			$sth->execute($status,$userenv->{branch});
 		}
-	} else {
-		$sth = $dbh->prepare("select count(*) from suggestions where status=?");
+    }
+    else {
+        my $query = qq |
+            SELECT count(*)
+            FROM suggestions
+            WHERE status=?
+        |;
+         $sth = $dbh->prepare($query);
 		$sth->execute($status);
 	}
 	my ($result) = $sth->fetchrow;
 	return $result;
 }
 
-sub changestatus {
+=item ModStatus
+
+&ModStatus($suggestionid,$status,$managedby,$biblionumber)
+
+Modify the status (status can be 'ASKED', 'ACCEPTED', 'REJECTED'...)
+and send a mail to notify the librarian.
+=cut
+sub ModStatus {
 	my ($suggestionid,$status,$managedby,$biblionumber) = @_;
 	my $dbh = C4::Context->dbh;
 	my $sth;
 	if ($managedby>0) {
 		if ($biblionumber) {
-			$sth = $dbh->prepare("update suggestions set status=?,managedby=?,biblionumber=? where suggestionid=?");
+        my $query = qq|
+            UPDATE suggestions
+            SET    status=?,managedby=?,biblionumber=?
+            WHERE  suggestionid=?
+        |;
+        $sth = $dbh->prepare($query);
 			$sth->execute($status,$managedby,$biblionumber,$suggestionid);
 		} else {
-			$sth = $dbh->prepare("update suggestions set status=?,managedby=? where suggestionid=?");
+            my $query = qq|
+                UPDATE suggestions
+                SET    status=?,managedby=?
+                WHERE  suggestionid=?
+            |;
+            $sth = $dbh->prepare($query);
 			$sth->execute($status,$managedby,$suggestionid);
 		}
 	} else {
 		if ($biblionumber) {
-			$sth = $dbh->prepare("update suggestions set status=?,biblionumber=? where suggestionid=?");
+            my $query = qq|
+                UPDATE suggestions
+                SET    status=?,biblionumber=?
+                WHERE  suggestionid=?
+            |;
+            $sth = $dbh->prepare($query);
 			$sth->execute($status,$biblionumber,$suggestionid);
-		} else {
-			$sth = $dbh->prepare("update suggestions set status=? where suggestionid=?");
+        }
+        else {
+            my $query = qq|
+                UPDATE suggestions
+                SET    status=?
+                WHERE  suggestionid=?
+            |;
+            $sth = $dbh->prepare($query);
 			$sth->execute($status,$suggestionid);
 		}
-
 	}
 	# check mail sending.
-	$sth = $dbh->prepare("select suggestions.*,
-							boby.surname as bysurname, boby.firstname as byfirstname, boby.emailaddress as byemail,
-							lib.surname as libsurname,lib.firstname as libfirstname,lib.emailaddress as libemail
-						from suggestions left join borrowers as boby on boby.borrowernumber=suggestedby left join borrowers as lib on lib.borrowernumber=managedby where suggestionid=?");
+    my $queryMail = qq|
+        SELECT suggestions.*,
+            boby.surname AS bysurname,
+            boby.firstname AS byfirstname,
+            boby.emailaddress AS byemail,
+            lib.surname AS libsurname,
+            lib.firstname AS libfirstname,
+            lib.emailaddress AS libemail
+        FROM suggestions
+            LEFT JOIN borrowers AS boby ON boby.borrowernumber=suggestedby
+            LEFT JOIN borrowers AS lib ON lib.borrowernumber=managedby
+        WHERE suggestionid=?
+    |;
+    $sth = $dbh->prepare($queryMail);
 	$sth->execute($suggestionid);
 	my $emailinfo = $sth->fetchrow_hashref;
 	my $template = gettemplate("suggestion/mail_suggestion_$status.tmpl","intranet");
-# 				 query =>'',
-# 			     authnotrequired => 1,
-# 			 });
-	$template->param(byemail => $emailinfo->{byemail},
+
+    $template->param(
+        byemail => $emailinfo->{byemail},
 					libemail => $emailinfo->{libemail},
 					status => $emailinfo->{status},
 					title => $emailinfo->{title},
@@ -238,28 +350,52 @@
 					byfirstname => $emailinfo->{byfirstname},
 					bysurname => $emailinfo->{bysurname},
 					);
-	my %mail = ( To => $emailinfo->{byemail},
+    my %mail = (
+        To => $emailinfo->{byemail},
 				 From => $emailinfo->{libemail},
 				 Subject => 'Koha suggestion',
 				 Message => "".$template->output
 				 );
-sendmail(%mail);
-# 	warn "sending email to $emailinfo->{byemail} from $emailinfo->{libemail} to notice new status $emailinfo->{status} for $emailinfo->{title} / $emailinfo->{author}";
+    sendmail(%mail);
 }
+=item GetSuggestionFromBiblionumber
+
+$suggestionid = &GetSuggestionFromBiblionumber($dbh,$biblionumber)
+
+Get a suggestion from the biblionumber.
+
+return :
+ the id of the suggestion which has the biblionumber given on input args.
 
-sub findsuggestion_from_biblionumber {
+=cut
+sub GetSuggestionFromBiblionumber {
 	my ($dbh,$biblionumber) = @_;
-	my $sth = $dbh->prepare("select suggestionid from suggestions where biblionumber=?");
+    my $query = qq|
+        SELECT suggestionid
+        FROM   suggestions
+        WHERE  biblionumber=?
+    |;
+    my $sth = $dbh->prepare($query);
 	$sth->execute($biblionumber);
 	my ($suggestionid) = $sth->fetchrow;
 	return $suggestionid;
 }
+=item ConnectSuggestionAndBiblio
+
+&ConnectSuggestionAndBiblio($suggestionid,$biblionumber)
 
-# connect a suggestion to an existing biblio
-sub connectSuggestionAndBiblio {
+ connect a suggestion to an existing biblio
+
+=cut
+sub ConnectSuggestionAndBiblio {
 	my ($suggestionid,$biblionumber) = @_;
 	my $dbh=C4::Context->dbh;
-	my $sth = $dbh->prepare("update suggestions set biblionumber=? where suggestionid=?");
+    my $query = qq |
+        UPDATE suggestions
+        SET    biblionumber=?
+        WHERE  suggestionid=?
+    |;
+    my $sth = $dbh->prepare($query);
 	$sth->execute($biblionumber,$suggestionid);
 }
 =back





More information about the Koha-cvs mailing list