X-Git-Url: http://koha-dev.rot13.org:8081/gitweb/?a=blobdiff_plain;f=opac%2Fopac-request-article.pl;h=dcf9f214a5e55dc7a181215a562f880c4d975d0a;hb=71f54a75713c5d5a6acfbdd3fefe1166ea0efafd;hp=dd02b4d7b9821623fdb48f7788698c8497928420;hpb=9d6d641d1f8b77271800f43bc027b651f9aea52b;p=srvgit diff --git a/opac/opac-request-article.pl b/opac/opac-request-article.pl index dd02b4d7b9..dcf9f214a5 100755 --- a/opac/opac-request-article.pl +++ b/opac/opac-request-article.pl @@ -25,8 +25,12 @@ use C4::Auth qw( get_template_and_user ); use C4::Output qw( output_html_with_http_headers ); use Koha::Biblios; +use Koha::Logger; use Koha::Patrons; +use Scalar::Util qw( blessed ); +use Try::Tiny; + my $cgi = CGI->new; my ( $template, $borrowernumber, $cookie ) = get_template_and_user( @@ -58,27 +62,49 @@ if ( $action eq 'create' ) { my $chapters = $cgi->param('chapters') || undef; my $patron_notes = $cgi->param('patron_notes') || undef; my $format = $cgi->param('format') || undef; + my $toc_request = $cgi->param('toc_request'); + + + my $success; - 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, + 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; + $success = 1; + } catch { + if ( blessed $_ and $_->isa('Koha::Exceptions::ArticleRequest::LimitReached') ) { + $template->param( + error_message => 'article_request_limit_reached' + ); } - )->store(); + else { + Koha::Logger->get->debug("Unhandled exception when placing an article request ($_)"); + $template->param( + error_message => 'article_request_unhandled_exception' + ); + } + }; - print $cgi->redirect("/cgi-bin/koha/opac-user.pl#opac-user-article-requests"); - exit; + if ( $success ) { + print $cgi->redirect("/cgi-bin/koha/opac-user.pl#opac-user-article-requests"); + exit; + } # Should we redirect? } elsif ( !$action && C4::Context->preference('ArticleRequestsOpacHostRedirection') ) { @@ -96,6 +122,15 @@ elsif ( !$action && C4::Context->preference('ArticleRequestsOpacHostRedirection' my $patron = Koha::Patrons->find($borrowernumber); +if(!$patron->can_request_article) { + $template->param( + error_message => 'article_request_limit_reached' + ); +} + +$template->param( article_request_fee => $patron->article_request_fee ) + if $action ne 'create'; + $template->param( biblio => $biblio, patron => $patron,