X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=C4%2FSuggestions.pm;h=1a93f2ed73416c76312035058f26be4f726fd44d;hb=97446f86ced2c2d6d4d7a11b97ed81a5a0a25d95;hp=ed2bbfa1bbf5037d333e5034b96bf39540963832;hpb=4747ea7462c04770484386538b1594c1760bc75b;p=koha.git diff --git a/C4/Suggestions.pm b/C4/Suggestions.pm index ed2bbfa1bb..1a93f2ed73 100644 --- a/C4/Suggestions.pm +++ b/C4/Suggestions.pm @@ -1,6 +1,7 @@ package C4::Suggestions; # Copyright 2000-2002 Katipo Communications +# Parts Copyright Biblibre 2011 # # This file is part of Koha. # @@ -13,61 +14,38 @@ 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; use C4::Output; -use C4::Dates qw(format_date); +use C4::Dates qw(format_date format_date_in_iso); use C4::SQLHelper qw(:all); use C4::Debug; use C4::Letters; use List::MoreUtils qw; -use base 'Exporter'; # parent would be better there +use C4::Dates qw(format_date_in_iso); +use base qw(Exporter); our $VERSION = 3.01; our @EXPORT = qw< - &ConnectSuggestionAndBiblio - &CountSuggestion - &DelSuggestion - &GetSuggestion - &GetSuggestionByStatus - &GetSuggestionFromBiblionumber - &ModStatus - &ModSuggestion - &NewSuggestion - &SearchSuggestion + ConnectSuggestionAndBiblio + CountSuggestion + DelSuggestion + GetSuggestion + GetSuggestionByStatus + GetSuggestionFromBiblionumber + ModStatus + ModSuggestion + NewSuggestion + SearchSuggestion + DelSuggestionsOlderThan >; -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 - &DelSuggestion - &GetSuggestion - &GetSuggestionByStatus - &GetSuggestionFromBiblionumber - &ModStatus - ); -} =head1 NAME @@ -137,7 +115,7 @@ sub SearchSuggestion { LEFT JOIN categories AS C2 ON C2.categorycode = U2.categorycode WHERE STATUS NOT IN ('CLAIMED') } , map { - if ( my $s = $$suggestion{$_} ) { + if ( my $s = $suggestion->{$_} ) { push @sql_params,'%'.$s.'%'; " and suggestions.$_ like ? "; } else { () } @@ -147,9 +125,9 @@ sub SearchSuggestion { my $userenv = C4::Context->userenv; if (C4::Context->preference('IndependantBranches')) { if ($userenv) { - if (($userenv->{flags} % 2) != 1 && !$$suggestion{branchcode}){ + if (($userenv->{flags} % 2) != 1 && !$suggestion->{branchcode}){ push @sql_params,$$userenv{branch}; - push @query,q{ and (branchcode = ? or branchcode ='')}; + push @query,q{ and (suggestions.branchcode = ? or suggestions.branchcode ='')}; } } } @@ -161,7 +139,7 @@ sub SearchSuggestion { >} keys %$suggestion ) { if ($$suggestion{$field}){ - push @sql_params,$$suggestion{$field}; + push @sql_params,$suggestion->{$field}; push @query, " and suggestions.$field=?"; } else { @@ -169,6 +147,17 @@ sub SearchSuggestion { } } + my $today = C4::Dates->today('iso'); + + foreach ( qw( suggesteddate manageddate accepteddate ) ) { + my $from = $_ . "_from"; + my $to = $_ . "_to"; + if ($$suggestion{$from} || $$suggestion{$to}) { + push @query, " AND suggestions.suggesteddate BETWEEN '" + . (format_date_in_iso($$suggestion{$from}) || 0000-00-00) . "' AND '" . (format_date_in_iso($$suggestion{$to}) || $today) . "'"; + } + } + $debug && warn "@query"; my $sth=$dbh->prepare("@query"); $sth->execute(@sql_params); @@ -378,17 +367,24 @@ 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' + + 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; @@ -445,13 +441,30 @@ sub DelSuggestion { } } +=head2 DelSuggestionsOlderThan + &DelSuggestionsOlderThan($days) + + Delete all suggestions older than TODAY-$days , that have be accepted or rejected. + +=cut +sub DelSuggestionsOlderThan { + my ($days) = @_; + return if not $days; + my $dbh = C4::Context->dbh; + + my $sth = $dbh->prepare(" + DELETE FROM suggestions WHERE STATUS <> 'ASKED' AND date < ADDDATE(NOW(), ?); + "); + $sth->execute("-$days"); +} + 1; __END__ =head1 AUTHOR -Koha Developement team +Koha Development Team =cut