X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=C4%2FSuggestions.pm;h=1a93f2ed73416c76312035058f26be4f726fd44d;hb=17c68507a461b6c650fd6d7c131ac86fdaa39473;hp=87a71e466a6ad887f39e7414ae8b9d1b0de68525;hpb=b1c2d560b66272ec34c1bbd380db24452be9bc3f;p=koha_gimpoz diff --git a/C4/Suggestions.pm b/C4/Suggestions.pm index 87a71e466a..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. # @@ -24,51 +25,27 @@ 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 @@ -150,7 +127,7 @@ sub SearchSuggestion { if ($userenv) { 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 ='')}; } } } @@ -170,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); @@ -379,19 +367,22 @@ 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){ - C4::Letters::parseletter($letter, 'borrowers', $suggestion->{suggestedby}); - C4::Letters::parseletter($letter, 'suggestions', $suggestion->{suggestionid}); - C4::Letters::parseletter($letter, 'biblio', $suggestion->{biblionumber}); + + 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=>$suggestion->{suggestedby}, - suggestionid=>$suggestion->{suggestionid}, - LibraryName => C4::Context->preference("LibraryName"), - message_transport_type=>'email' + 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";} } @@ -450,6 +441,23 @@ 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__