X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=suggestion%2Facceptorreject.pl;h=6147b34fb183aaae1681802abe4f45463b5aaba1;hb=28a9780e44fb2f93a3c2f862c99a13cb9e10a65c;hp=af15cf6725a0de846720bbbc8fb3ad6bfb190245;hpb=f29ce59691b349687d2a023c07383997d7d55dcb;p=koha.git diff --git a/suggestion/acceptorreject.pl b/suggestion/acceptorreject.pl index af15cf6725..6147b34fb1 100755 --- a/suggestion/acceptorreject.pl +++ b/suggestion/acceptorreject.pl @@ -1,59 +1,188 @@ #!/usr/bin/perl + +# Copyright 2000-2002 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 + + +=head1 NAME + +acceptorreject.pl + +=head1 DESCRIPTION + +this script modify the status of a subscription to ACCEPTED or to REJECTED + +=head1 PARAMETERS + +=over 4 + +=item title + +=item author + +=item note + +=item copyrightdate + +=item publishercode + +=item volumedesc + +=item publicationyear + +=item place + +=item isbn + +=item status + +=item suggestedbyme + +=item op + +op can be : + * aorr_confirm : to confirm accept or reject + * delete_confirm : to confirm the deletion + * accepted : to display only accepted. + +=back + + +=cut + use strict; -require Exporter; +use warnings; + use CGI; -use HTML::Template; -use C4::Auth; # get_template_and_user -use C4::Interface::CGI::Output; +use C4::Auth; # get_template_and_user +use C4::Output; use C4::Suggestions; +use C4::Koha; # GetAuthorisedValue +use C4::Dates qw(format_date); + -my $input = new CGI; -my $title = $input->param('title'); -my $author = $input->param('author'); -my $note = $input->param('note'); -my $copyrightdate =$input->param('copyrightdate'); -my $publishercode = $input->param('publishercode'); -my $volumedesc = $input->param('volumedesc'); +my $input = new CGI; +my $title = $input->param('title'); +my $author = $input->param('author'); +my $note = $input->param('note'); +my $copyrightdate = $input->param('copyrightdate'); +my $publishercode = $input->param('publishercode'); +my $volumedesc = $input->param('volumedesc'); my $publicationyear = $input->param('publicationyear'); -my $place = $input->param('place'); -my $isbn = $input->param('isbn'); -my $status = $input->param('status'); -my $suggestedbyme = $input->param('suggestedbyme'); -my $op = $input->param('op'); -$op = 'else' unless $op; +my $place = $input->param('place'); +my $isbn = $input->param('isbn'); +my $status = $input->param('status'); +my $suggestedbyme = $input->param('suggestedbyme'); +my $op = $input->param('op') || "aorr_confirm"; my $dbh = C4::Context->dbh; -my ($template, $loggedinuser, $cookie) - = get_template_and_user({template_name => "suggestion/acceptorreject.tmpl", - type => "intranet", - query => $input, - authnotrequired => 1, - flagsrequired => {borrow => 1}, - }); -if ($op eq "aorr_confirm") { - my @suggestionlist = $input->param("aorr"); - foreach my $suggestion (@suggestionlist) { - if ($suggestion =~ /(A|R)(.*)/) { - my ($newstatus,$suggestionid) = ($1,$2); - $newstatus="REJECTED" if $newstatus eq "R"; - $newstatus="ACCEPTED" if $newstatus eq "A"; - changestatus($suggestionid,$newstatus,$loggedinuser); - } - } - $op="else"; +my ( $template, $loggedinuser, $cookie ) = get_template_and_user( + { + template_name => "suggestion/acceptorreject.tmpl", + type => "intranet", + query => $input, + authnotrequired => 1, + flagsrequired => { catalogue => 1 }, + } +); + +my $suggestions; + +my $branchcode; +my $userenv = C4::Context->userenv; +if ($userenv) { + unless ($userenv->{flags} == 1){ + $branchcode=$userenv->{branch}; + } } -if ($op eq "delete_confirm") { - my @delete_field = $input->param("delete_field"); - foreach my $delete_field (@delete_field) { - &delsuggestion($loggedinuser,$delete_field); - } - $op='else'; +if ( $op eq "aorr_confirm" ) { + my $parameters=$input->Vars; + my @deletelist; + my $suggestiontype=$parameters->{suggestiontype}; + foreach my $suggestionid (keys %$parameters){ + next unless $suggestionid=~/^\d+$/; + ## it is a suggestion + if ($parameters->{$suggestionid}=~/delete/i){ + push @deletelist,$suggestionid; + } + else { + ## it is not a deletion + ## Get the Reason + my $reason = $parameters->{"reason$suggestionid"}; + if ( $reason eq "other" ) { + $reason = $parameters->{"other-reason$suggestionid"}; + } + unless ($reason){ + $reason= $parameters->{"reason".$suggestiontype."all"}; + if ( $reason eq "other" ) { + $reason = $parameters->{"other-reason".$suggestiontype."all"}; + } + } + ModStatus( $suggestionid, $parameters->{$suggestionid}, $loggedinuser, '', $reason ); + } + } + $op = "else"; + if (scalar(@deletelist)>0){ + my $params = "&delete_field=".join ("&delete_field=",@deletelist); + print $input->redirect("/cgi-bin/koha/suggestion/acceptorreject.pl?op=delete_confirm$params"); + exit; + } +} +elsif ( $op eq "delete_confirm" ) { + my @delete_field = $input->param("delete_field"); + foreach my $delete_field (@delete_field) { + &DelSuggestion( $loggedinuser, $delete_field,"intranet" ); + } + $op = 'else'; } -my $suggestions_loop= &searchsuggestion("","","","",'ASKED',""); -$template->param(suggestions_loop => $suggestions_loop, - "op_$op" => 1, +my $reasonsloop = GetAuthorisedValues("SUGGEST"); +my $pending_suggestions = &SearchSuggestion("", "", "", "", 'ASKED', "", $branchcode); +map { $_->{'reasonsloop'} = $reasonsloop; $_->{'date'} = format_date($_->{'date'}) } @$pending_suggestions; +my $accepted_suggestions = &GetSuggestionByStatus('ACCEPTED', $branchcode); +map { $_->{'reasonsloop'} = $reasonsloop; $_->{'date'} = format_date($_->{'date'}) } @$accepted_suggestions; +my $rejected_suggestions = &GetSuggestionByStatus('REJECTED', $branchcode); +map { $_->{'reasonsloop'} = $reasonsloop; $_->{'date'} = format_date($_->{'date'}) } @$rejected_suggestions; + +# FIXME: BAD use of map in VOID context. + +my @allsuggestions; +push @allsuggestions, + { "suggestiontype" => "accepted", + 'suggestions_loop' => $accepted_suggestions, + 'reasonsloop' => $reasonsloop + }; +push @allsuggestions, + { "suggestiontype" => "pending", + 'suggestions_loop' => $pending_suggestions, + 'reasonsloop' => $reasonsloop + }; +push @allsuggestions, + { "suggestiontype" => "rejected", + 'suggestions_loop' => $rejected_suggestions, + 'reasonsloop' => $reasonsloop + }; + +$template->param( + suggestions => \@allsuggestions, + "op_$op" => 1, + dateformat => C4::Context->preference("dateformat"), ); + output_html_with_http_headers $input, $cookie, $template->output;