X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=circ%2Frequest-article.pl;h=a9724749dc45b5ea5c9acc5a7ba25d3bf4802216;hb=f41f272ff087d65ed11d760e6c7c58818c3a24d4;hp=7c0877bff8d0037b867dec9160750ed03a48047c;hpb=c6c4d82325eb7d11b34a113c69acbff18e283542;p=koha-ffzg.git diff --git a/circ/request-article.pl b/circ/request-article.pl index 7c0877bff8..a9724749dc 100755 --- a/circ/request-article.pl +++ b/circ/request-article.pl @@ -19,23 +19,25 @@ use Modern::Perl; -use C4::Output; -use C4::Auth; -use C4::Utils::DataTables::Members; -use C4::Search; -use C4::Serials; +use C4::Output qw( output_and_exit output_html_with_http_headers ); +use C4::Auth qw( get_template_and_user ); +use C4::Search qw( enabled_staff_search_views ); +use C4::Serials qw( CountSubscriptionFromBiblionumber ); use Koha::Biblios; +use Koha::Logger; use Koha::Patrons; use Koha::ArticleRequests; -my $cgi = new CGI; +use Scalar::Util qw( blessed ); +use Try::Tiny; + +my $cgi = CGI->new; my ( $template, $borrowernumber, $cookie, $flags ) = get_template_and_user( { template_name => "circ/request-article.tt", query => $cgi, type => "intranet", - authnotrequired => 0, flagsrequired => { circulate => 'circulate_remaining_permissions' }, } ); @@ -43,7 +45,7 @@ my ( $template, $borrowernumber, $cookie, $flags ) = get_template_and_user( my $action = $cgi->param('action') || q{}; my $biblionumber = $cgi->param('biblionumber'); my $patron_cardnumber = $cgi->param('patron_cardnumber'); -my $patron_id = $cgi->param('patron_id'); +my $patron_id = $cgi->param('borrowernumber'); my $biblio = Koha::Biblios->find($biblionumber); output_and_exit( $cgi, $cookie, $template, 'unknown_biblio') @@ -67,45 +69,53 @@ if ( $action eq 'create' ) { my $pages = $cgi->param('pages') || undef; my $chapters = $cgi->param('chapters') || undef; my $patron_notes = $cgi->param('patron_notes') || undef; - - my $ar = Koha::ArticleRequest->new( - { - borrowernumber => $borrowernumber, - biblionumber => $biblionumber, - branchcode => $branchcode, - itemnumber => $itemnumber, - title => $title, - author => $author, - volume => $volume, - issue => $issue, - date => $date, - pages => $pages, - chapters => $chapters, - patron_notes => $patron_notes, + my $format = $cgi->param('format') || undef; + my $toc_request = $cgi->param('toc_request'); + + try { + my $ar = Koha::ArticleRequest->new( + { + borrowernumber => $borrowernumber, + biblionumber => $biblionumber, + branchcode => $branchcode, + itemnumber => $itemnumber, + title => $title, + author => $author, + volume => $volume, + issue => $issue, + date => $date, + pages => $pages, + chapters => $chapters, + patron_notes => $patron_notes, + format => $format, + toc_request => $toc_request ? 1 : 0, + } + )->request; + } catch { + if ( blessed $_ and $_->isa('Koha::Exceptions::ArticleRequest::LimitReached') ) { + $template->param( + error_message => 'article_request_limit_reached' + ); + } + else { + Koha::Logger->get->debug("Unhandled exception when placing an article request ($_)"); + $template->param( + error_message => 'article_request_unhandled_exception' + ); } - )->store(); + }; + undef $patron; +} +if ( $patron && !$patron->can_request_article ) { + $patron = undef; + $template->param( error_message => 'article_request_limit_reached' ); } -if ( !$patron && $patron_cardnumber ) { - my $results = C4::Utils::DataTables::Members::search( - { - searchmember => $patron_cardnumber, - dt_params => { iDisplayLength => -1 }, - } +if ( $patron ) { + $template->param( + article_request_fee => $patron->article_request_fee ); - - my $patrons = $results->{patrons}; - - if ( scalar @$patrons == 1 ) { - $patron = Koha::Patrons->find( $patrons->[0]->{borrowernumber} ); - } - elsif (@$patrons) { - $template->param( patrons => $patrons ); - } - else { - $template->param( no_patrons_found => $patron_cardnumber ); - } } $template->param( @@ -113,6 +123,11 @@ $template->param( patron => $patron, subscriptionsnumber => CountSubscriptionFromBiblionumber($biblionumber), C4::Search::enabled_staff_search_views, + attribute_type_codes => ( C4::Context->preference('ExtendedPatronAttributes') + ? [ Koha::Patron::Attribute::Types->search( { staff_searchable => 1 } )->get_column('code') ] + : [] + ), ); + output_html_with_http_headers $cgi, $cookie, $template->output;