X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=C4%2FSuggestions.pm;h=5ea6c77a9cef60dee323881ad422cc5680e7f3ad;hb=08c2668ee218e162af099de7dffa724624e04ac5;hp=df1bec3b72736b3dae061fc9eaf250769c32a437;hpb=3ab463fc344458a71482a09e0c70f4fef1237de2;p=koha.git diff --git a/C4/Suggestions.pm b/C4/Suggestions.pm index df1bec3b72..5ea6c77a9c 100644 --- a/C4/Suggestions.pm +++ b/C4/Suggestions.pm @@ -13,12 +13,13 @@ package C4::Suggestions; # 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 +# You should have received a copy of the GNU General Public License along +# with Koha; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. use strict; +#use warnings; FIXME - Bug 2505 use CGI; use C4::Context; @@ -46,30 +47,27 @@ use C4::Dates qw(format_date_in_iso); use vars qw($VERSION @ISA @EXPORT); BEGIN { - # set the version for version checking - $VERSION = 3.01; - require Exporter; - @ISA = qw(Exporter); - @EXPORT = qw( - &NewSuggestion - &SearchSuggestion - &GetSuggestion - &GetSuggestionByStatus - &DelSuggestion - &CountSuggestion - &ModSuggestion - &ConnectSuggestionAndBiblio - &GetSuggestionFromBiblionumber - &ConnectSuggestionAndBiblio - &CountSuggestion - &DelSuggestion - &GetSuggestion - &GetSuggestionByStatus - &GetSuggestionFromBiblionumber - &ModStatus - &ModSuggestion - &NewSuggestion - ); + # set the version for version checking + $VERSION = 3.01; + require Exporter; + @ISA = qw(Exporter); + @EXPORT = qw( + &NewSuggestion + &SearchSuggestion + &GetSuggestion + &GetSuggestionByStatus + &DelSuggestion + &CountSuggestion + &ModSuggestion + &ConnectSuggestionAndBiblio + &GetSuggestionFromBiblionumber + &ConnectSuggestionAndBiblio + &DelSuggestion + &GetSuggestion + &GetSuggestionByStatus + &GetSuggestionFromBiblionumber + &ModStatus + ); } =head1 NAME @@ -116,63 +114,63 @@ sub SearchSuggestion { my $dbh = C4::Context->dbh; my @sql_params; my @query = ( - q{ SELECT suggestions.*, - U1.branchcode AS branchcodesuggestedby, - B1.branchname AS branchnamesuggestedby, - U1.surname AS surnamesuggestedby, - U1.firstname AS firstnamesuggestedby, - U1.email AS emailsuggestedby, - U1.borrowernumber AS borrnumsuggestedby, + q{ SELECT suggestions.*, + U1.branchcode AS branchcodesuggestedby, + B1.branchname AS branchnamesuggestedby, + U1.surname AS surnamesuggestedby, + U1.firstname AS firstnamesuggestedby, + U1.email AS emailsuggestedby, + U1.borrowernumber AS borrnumsuggestedby, U1.categorycode AS categorycodesuggestedby, C1.description AS categorydescriptionsuggestedby, - U2.surname AS surnamemanagedby, - U2.firstname AS firstnamemanagedby, - B2.branchname AS branchnamesuggestedby, - U2.email AS emailmanagedby, - U2.branchcode AS branchcodemanagedby, - U2.borrowernumber AS borrnummanagedby - FROM suggestions - LEFT JOIN borrowers AS U1 ON suggestedby=U1.borrowernumber - LEFT JOIN branches AS B1 ON B1.branchcode=U1.branchcode + U2.surname AS surnamemanagedby, + U2.firstname AS firstnamemanagedby, + B2.branchname AS branchnamesuggestedby, + U2.email AS emailmanagedby, + U2.branchcode AS branchcodemanagedby, + U2.borrowernumber AS borrnummanagedby + FROM suggestions + LEFT JOIN borrowers AS U1 ON suggestedby=U1.borrowernumber + LEFT JOIN branches AS B1 ON B1.branchcode=U1.branchcode LEFT JOIN categories AS C1 ON C1.categorycode = U1.categorycode - LEFT JOIN borrowers AS U2 ON managedby=U2.borrowernumber - LEFT JOIN branches AS B2 ON B2.branchcode=U2.branchcode + LEFT JOIN borrowers AS U2 ON managedby=U2.borrowernumber + LEFT JOIN branches AS B2 ON B2.branchcode=U2.branchcode LEFT JOIN categories AS C2 ON C2.categorycode = U2.categorycode - WHERE STATUS NOT IN ('CLAIMED') - } , map { - if ( my $s = $$suggestion{$_} ) { - push @sql_params,'%'.$s.'%'; - " and suggestions.$_ like ? "; - } else { () } - } qw( title author isbn publishercode collectiontitle ) - ); - - my $userenv = C4::Context->userenv; + WHERE STATUS NOT IN ('CLAIMED') + } , map { + if ( my $s = $suggestion->{$_} ) { + push @sql_params,'%'.$s.'%'; + " and suggestions.$_ like ? "; + } else { () } + } qw( title author isbn publishercode collectiontitle ) + ); + + my $userenv = C4::Context->userenv; if (C4::Context->preference('IndependantBranches')) { - if ($userenv) { - if (($userenv->{flags} % 2) != 1 && !$$suggestion{branchcode}){ - push @sql_params,$$userenv{branch}; - push @query,q{ and (branchcode = ? or branchcode ='')}; - } - } + if ($userenv) { + if (($userenv->{flags} % 2) != 1 && !$suggestion->{branchcode}){ + push @sql_params,$$userenv{branch}; + push @query,q{ and (branchcode = ? or branchcode ='')}; + } + } } foreach my $field (grep { my $fieldname=$_; - any {$fieldname eq $_ } qw< - STATUS branchcode itemtype suggestedby managedby acceptedby - bookfundid biblionumber - >} keys %$suggestion + any {$fieldname eq $_ } qw< + STATUS branchcode itemtype suggestedby managedby acceptedby + bookfundid biblionumber + >} keys %$suggestion ) { - if ($$suggestion{$field}){ - push @sql_params,$$suggestion{$field}; - push @query, " and suggestions.$field=?"; - } - else { - push @query, " and (suggestions.$field='' OR suggestions.$field IS NULL)"; - } + if ($$suggestion{$field}){ + push @sql_params,$suggestion->{$field}; + push @query, " and suggestions.$field=?"; + } + else { + push @query, " and (suggestions.$field='' OR suggestions.$field IS NULL)"; + } } - $debug && warn "@query"; + $debug && warn "@query"; my $sth=$dbh->prepare("@query"); $sth->execute(@sql_params); my @results; @@ -224,8 +222,8 @@ sub GetSuggestionFromBiblionumber { SELECT suggestionid FROM suggestions WHERE biblionumber=? - }; - my $dbh=C4::Context->dbh; + }; + my $dbh=C4::Context->dbh; my $sth = $dbh->prepare($query); $sth->execute($biblionumber); my ($ordernumber) = $sth->fetchrow; @@ -253,8 +251,8 @@ sub GetSuggestionByStatus { U1.firstname AS firstnamesuggestedby, U1.branchcode AS branchcodesuggestedby, B1.branchname AS branchnamesuggestedby, - U1.borrowernumber AS borrnumsuggestedby, - U1.categorycode AS categorycodesuggestedby, + U1.borrowernumber AS borrnumsuggestedby, + U1.categorycode AS categorycodesuggestedby, C1.description AS categorydescriptionsuggestedby, U2.surname AS surnamemanagedby, U2.firstname AS firstnamemanagedby, @@ -343,7 +341,7 @@ sub CountSuggestion { FROM suggestions WHERE STATUS=? |; - $sth = $dbh->prepare($query); + $sth = $dbh->prepare($query); $sth->execute($status); } my ($result) = $sth->fetchrow; @@ -361,8 +359,8 @@ Insert a new suggestion on database with value given on input arg. sub NewSuggestion { my ($suggestion) = @_; - $suggestion->{STATUS}="ASKED" unless $suggestion->{STATUS}; - return InsertInTable("suggestions",$suggestion); + $suggestion->{STATUS}="ASKED" unless $suggestion->{STATUS}; + return InsertInTable("suggestions",$suggestion); } =head2 ModSuggestion @@ -380,21 +378,28 @@ Note that there is no function to modify a suggestion. sub ModSuggestion { my ($suggestion)=@_; - my $status_update_table=UpdateInTable("suggestions", $suggestion); - # check mail sending. - if ($$suggestion{STATUS}){ - my $letter=C4::Letters::getletter('suggestions',$$suggestion{STATUS}); - if ($letter){ - my $enqueued = C4::Letters::EnqueueLetter({ - letter=>$letter, - borrowernumber=>$$suggestion{suggestedby}, - suggestionid=>$$suggestion{suggestionid}, - msg_transport_type=>'email' + my $status_update_table=UpdateInTable("suggestions", $suggestion); + + if ($suggestion->{STATUS}) { + # fetch the entire updated suggestion so that we can populate the letter + my $full_suggestion = GetSuggestion($suggestion->{suggestionid}); + my $letter = C4::Letters::getletter('suggestions', $full_suggestion->{STATUS}); + if ($letter) { + C4::Letters::parseletter($letter, 'branches', $full_suggestion->{branchcode}); + C4::Letters::parseletter($letter, 'borrowers', $full_suggestion->{suggestedby}); + C4::Letters::parseletter($letter, 'suggestions', $full_suggestion->{suggestionid}); + C4::Letters::parseletter($letter, 'biblio', $full_suggestion->{biblionumber}); + my $enqueued = C4::Letters::EnqueueLetter({ + letter => $letter, + borrowernumber => $full_suggestion->{suggestedby}, + suggestionid => $full_suggestion->{suggestionid}, + LibraryName => C4::Context->preference("LibraryName"), + message_transport_type => 'email', }); - if (!$enqueued){warn "can't enqueue letter $letter";} + if (!$enqueued){warn "can't enqueue letter $letter";} } } - return $status_update_table; + return $status_update_table; } =head2 ConnectSuggestionAndBiblio @@ -406,7 +411,7 @@ connect a suggestion to an existing biblio =cut sub ConnectSuggestionAndBiblio { - my ($ordernumber,$biblionumber) = @_; + my ($suggestionid,$biblionumber) = @_; my $dbh=C4::Context->dbh; my $query = " UPDATE suggestions @@ -426,7 +431,7 @@ Delete a suggestion. A borrower can delete a suggestion only if he is its owner. =cut sub DelSuggestion { - my ($borrowernumber,$ordernumber,$type) = @_; + my ($borrowernumber,$suggestionid,$type) = @_; my $dbh = C4::Context->dbh; # check that the suggestion comes from the suggestor my $query = " @@ -435,7 +440,7 @@ sub DelSuggestion { WHERE suggestionid=? "; my $sth = $dbh->prepare($query); - $sth->execute($ordernumber); + $sth->execute($suggestionid); my ($suggestedby) = $sth->fetchrow; if ($type eq "intranet" || $suggestedby eq $borrowernumber ) { my $queryDelete = " @@ -454,7 +459,7 @@ __END__ =head1 AUTHOR -Koha Developement team +Koha Development Team =cut