https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=12802
--- Comment #121 from Mathieu Saby <[email protected]> --- I applied the patch. With it, the notice mechanism is broken : when Koha try to generate a notice after checkin, this message appears : Error trace Can't call method "borrowernumber" on unblessed reference at /kohadevbox/koha/C4/Letters.pm line 961 in C4::Letters::EnqueueLetter at /kohadevbox/koha/C4/Letters.pm line 961 958: $from_address = $params->{from_address}; 959: } elsif ( $params->{message_transport_type} eq 'email' ) { 960: if ( $params->{borrowernumber} ) { 961: my $patron = Koha::Patrons->find( $params->borrowernumber ); 962: if ( $patron ) { 963: $from_address = $patron->library->from_email_address; 964: } Show function arguments in C4::Message::enqueue at /kohadevbox/koha/C4/Message.pm line 166 163: $letter->{content} = $metadata->{header} . $body . $metadata->{footer}; 164: 165: $letter->{metadata} = Encode::decode_utf8( Dump($metadata) ); 166: C4::Letters::EnqueueLetter( 167: { 168: letter => $letter, 169: borrowernumber => $patron->id, Show function arguments in C4::Circulation::SendCirculationAlert at /kohadevbox/koha/C4/Circulation.pm line 3787 3784: unless ( @messages ) { 3785: C4::Context->dbh->do(q|UNLOCK TABLES|) unless $do_not_lock; 3786: my $patron = Koha::Patrons->find($borrower->{borrowernumber}); 3787: C4::Message->enqueue($letter, $patron, $mtt); 3788: } else { 3789: foreach my $message (@messages) { 3790: $message->append($letter); Show function arguments in C4::Circulation::AddIssue at /kohadevbox/koha/C4/Circulation.pm line 1833 1830: item_type => $item_object->effective_itemtype, 1831: notification => 'CHECKOUT', 1832: ); 1833: if ( $circulation_alert->is_enabled_for( \%conditions ) ) { 1834: SendCirculationAlert( 1835: { 1836: type => 'CHECKOUT', Show function arguments in (eval) at /kohadevbox/koha/circ/circulation.pl line 451 448: if ( my $booked = $question->{BOOKED_EARLY} // $alerts->{BOOKED} ) { 449: $datedue = $booked->end_date; 450: } 451: my $issue = AddIssue( 452: $patron, $barcode, $datedue, 453: $cancelreserve, 454: undef, undef, in CGI::Compile::ROOT::kohadevbox_koha_circ_circulation_2epl::__ANON__ at /kohadevbox/koha/circ/circulation.pl line 2 1: #!/usr/bin/perl 2: 3: # script to execute issuing of books 4: 5: # Copyright 2000-2002 Katipo Communications Show function arguments in CGI::Compile::ROOT::kohadevbox_koha_circ_circulation_2epl::circulation_2epl at /usr/share/perl5/CGI/Compile.pm line 151 148: # this is necessary for MSWin32 149: my $orig_warn = $SIG{__WARN__} || sub { warn(@_) }; 150: local $SIG{__WARN__} = sub { $orig_warn->(@_) unless $_[0] =~ /^No such signal/ }; 151: $code->($self, $data, $path, $dir, \@args) 152: }; 153: }; 154: in CGI::Emulate::PSGI::__ANON__ at /usr/share/perl5/CGI/Emulate/PSGI.pm line 30 27: local *STDOUT = $stdout; 28: local *STDERR = $env->{'psgi.errors'}; 29: 30: $code->(); 31: } 32: } 33: Show function arguments in Plack::App::WrapCGI::call at /usr/share/perl5/Plack/App/WrapCGI.pm line 95 92: 93: sub call { 94: my($self, $env) = @_; 95: $self->_app->($env); 96: } 97: 98: 1; Show function arguments in Plack::Component::__ANON__ at /usr/share/perl5/Plack/Component.pm line 50 47: sub to_app { 48: my $self = shift; 49: $self->prepare_app; 50: return sub { $self->call(@_) }; 51: } 52: 53: Show function arguments in Plack::App::CGIBin::serve_path at /usr/share/perl5/Plack/App/CGIBin.pm line 50 47: my $app = $self->{_compiled}->{$file} ||= Plack::App::WrapCGI->new( 48: script => $file, execute => $self->would_exec($file), 49: )->to_app; 50: $app->($env); 51: } 52: 53: 1; Show function arguments in Plack::App::File::call at /usr/share/perl5/Plack/App/File.pm line 34 31: $env->{'plack.file.PATH_INFO'} = ''; 32: } 33: 34: return $self->serve_path($env, $file); 35: } 36: 37: sub locate_file { Show function arguments in Plack::Component::__ANON__ at /usr/share/perl5/Plack/Component.pm line 50 47: sub to_app { 48: my $self = shift; 49: $self->prepare_app; 50: return sub { $self->call(@_) }; 51: } 52: 53: Show function arguments in Plack::Middleware::LogWarn::call at /usr/share/perl5/Plack/Middleware/LogWarn.pm line 22 19: message => join '', @_ 20: }); 21: }; 22: my $res = $self->app->($env); 23: 24: return $res; 25: } Show function arguments in Plack::Component::__ANON__ at /usr/share/perl5/Plack/Component.pm line 50 47: sub to_app { 48: my $self = shift; 49: $self->prepare_app; 50: return sub { $self->call(@_) }; 51: } 52: 53: Show function arguments in Plack::Middleware::Log4perl::call at /usr/share/perl5/Plack/Middleware/Log4perl.pm line 30 27: $self->logger->$level($args->{message}); 28: }; 29: 30: $self->app->($env); 31: } 32: 33: 1; Show function arguments in Plack::Component::__ANON__ at /usr/share/perl5/Plack/Component.pm line 50 47: sub to_app { 48: my $self = shift; 49: $self->prepare_app; 50: return sub { $self->call(@_) }; 51: } 52: 53: Show function arguments in Plack::Middleware::HTTPExceptions::try {...} at /usr/share/perl5/Plack/Middleware/HTTPExceptions.pm line 20 17: my($self, $env) = @_; 18: 19: my $res = try { 20: $self->app->($env); 21: } catch { 22: $self->transform_error($_, $env); 23: }; in (eval) at /usr/share/perl5/Try/Tiny.pm line 100 97: if ( $wantarray ) { 98: @ret = $try->(); 99: } elsif ( defined $wantarray ) { 100: $ret[0] = $try->(); 101: } else { 102: $try->(); 103: }; in Try::Tiny::try at /usr/share/perl5/Try/Tiny.pm line 93 90: 91: # failed will be true if the eval dies, because 1 will not be returned 92: # from the eval body 93: my $failed = not eval { 94: $@ = $prev_error; 95: 96: # evaluate the try block in the correct context Show function arguments in Plack::Middleware::HTTPExceptions::call at /usr/share/perl5/Plack/Middleware/HTTPExceptions.pm line 23 20: $self->app->($env); 21: } catch { 22: $self->transform_error($_, $env); 23: }; 24: 25: return $res if ref $res eq 'ARRAY'; 26: Show function arguments in Plack::Component::__ANON__ at /usr/share/perl5/Plack/Component.pm line 50 47: sub to_app { 48: my $self = shift; 49: $self->prepare_app; 50: return sub { $self->call(@_) }; 51: } 52: 53: Show function arguments in Plack::Middleware::ErrorDocument::call at /usr/share/perl5/Plack/Middleware/ErrorDocument.pm line 15 12: my $self = shift; 13: my $env = shift; 14: 15: my $r = $self->app->($env); 16: 17: $self->response_cb($r, sub { 18: my $r = shift; Show function arguments in Plack::Component::__ANON__ at /usr/share/perl5/Plack/Component.pm line 50 47: sub to_app { 48: my $self = shift; 49: $self->prepare_app; 50: return sub { $self->call(@_) }; 51: } 52: 53: Show function arguments in Plack::App::URLMap::call at /usr/share/perl5/Plack/App/URLMap.pm line 71 68: return $self->response_cb($app->($env), sub { 69: $env->{PATH_INFO} = $orig_path_info; 70: $env->{SCRIPT_NAME} = $orig_script_name; 71: }); 72: } 73: 74: DEBUG && warn "All matching failed.\n"; Show function arguments in Plack::Component::__ANON__ at /usr/share/perl5/Plack/Component.pm line 50 47: sub to_app { 48: my $self = shift; 49: $self->prepare_app; 50: return sub { $self->call(@_) }; 51: } 52: 53: Show function arguments in Koha::Middleware::RealIP::call at /kohadevbox/koha/Koha/Middleware/RealIP.pm line 64 61: } 62: } 63: 64: return $self->app->($env); 65: } 66: 67: =head2 get_real_ip Show function arguments in Plack::Component::__ANON__ at /usr/share/perl5/Plack/Component.pm line 50 47: sub to_app { 48: my $self = shift; 49: $self->prepare_app; 50: return sub { $self->call(@_) }; 51: } 52: 53: Show function arguments in Koha::Middleware::SetEnv::call at /kohadevbox/koha/Koha/Middleware/SetEnv.pm line 106 103: $env->{$key} = $setenvs{$key}; 104: } 105: 106: return $self->app->($env); 107: } 108: 109: =head1 AUTHOR Show function arguments in Plack::Component::__ANON__ at /usr/share/perl5/Plack/Component.pm line 50 47: sub to_app { 48: my $self = shift; 49: $self->prepare_app; 50: return sub { $self->call(@_) }; 51: } 52: 53: Show function arguments in Plack::Middleware::Static::call at /usr/share/perl5/Plack/Middleware/Static.pm line 18 15: return $res; 16: } 17: 18: return $self->app->($env); 19: } 20: 21: sub _handle_static { Show function arguments in Plack::Component::__ANON__ at /usr/share/perl5/Plack/Component.pm line 50 47: sub to_app { 48: my $self = shift; 49: $self->prepare_app; 50: return sub { $self->call(@_) }; 51: } 52: 53: Show function arguments in Plack::Middleware::ReverseProxy::call at /usr/share/perl5/Plack/Middleware/ReverseProxy.pm line 68 65: } 66: } 67: 68: $self->app->($env); 69: } 70: 71: 1; Show function arguments in Plack::Component::__ANON__ at /usr/share/perl5/Plack/Component.pm line 50 47: sub to_app { 48: my $self = shift; 49: $self->prepare_app; 50: return sub { $self->call(@_) }; 51: } 52: 53: Show function arguments in Plack::Middleware::Lint::call at /usr/share/perl5/Plack/Middleware/Lint.pm line 24 21: my $env = shift; 22: 23: $self->validate_env($env); 24: my $res = $self->app->($env); 25: return $self->validate_res($res); 26: } 27: Show function arguments in Plack::Middleware::StackTrace::try {...} at /usr/share/perl5/Plack/Component.pm line 50 47: sub to_app { 48: my $self = shift; 49: $self->prepare_app; 50: return sub { $self->call(@_) }; 51: } 52: 53: in (eval) at /usr/share/perl5/Try/Tiny.pm line 100 97: if ( $wantarray ) { 98: @ret = $try->(); 99: } elsif ( defined $wantarray ) { 100: $ret[0] = $try->(); 101: } else { 102: $try->(); 103: }; in Plack::Middleware::StackTrace::call at /usr/share/perl5/Try/Tiny.pm line 93 90: 91: # failed will be true if the eval dies, because 1 will not be returned 92: # from the eval body 93: my $failed = not eval { 94: $@ = $prev_error; 95: 96: # evaluate the try block in the correct context Show function arguments in Plack::Component::__ANON__ at /usr/share/perl5/Plack/Component.pm line 50 47: sub to_app { 48: my $self = shift; 49: $self->prepare_app; 50: return sub { $self->call(@_) }; 51: } 52: 53: Show function arguments in Plack::Middleware::AccessLog::call at /usr/share/perl5/Plack/Middleware/AccessLog.pm line 27 24: my $self = shift; 25: my($env) = @_; 26: 27: my $res = $self->app->($env); 28: 29: if ( ref($res) && ref($res) eq 'ARRAY' ) { 30: my $content_length = Plack::Util::content_length($res->[2]); Show function arguments in Plack::Component::__ANON__ at /usr/share/perl5/Plack/Component.pm line 50 47: sub to_app { 48: my $self = shift; 49: $self->prepare_app; 50: return sub { $self->call(@_) }; 51: } 52: 53: Show function arguments in (eval) at /usr/share/perl5/Plack/Util.pm line 145 142: sub run_app($$) { 143: my($app, $env) = @_; 144: 145: return eval { $app->($env) } || do { 146: my $body = "Internal Server Error"; 147: $env->{'psgi.errors'}->print($@); 148: [ 500, [ 'Content-Type' => 'text/plain', 'Content-Length' => length($body) ], [ $body ] ]; in Plack::Util::run_app at /usr/share/perl5/Plack/Util.pm line 145 142: sub run_app($$) { 143: my($app, $env) = @_; 144: 145: return eval { $app->($env) } || do { 146: my $body = "Internal Server Error"; 147: $env->{'psgi.errors'}->print($@); 148: [ 500, [ 'Content-Type' => 'text/plain', 'Content-Length' => length($body) ], [ $body ] ]; Show function arguments in Starman::Server::dispatch_request at /usr/share/perl5/Starman/Server.pm line 195 192: my ($self, $env) = @_; 193: 194: # Run PSGI apps 195: my $res = Plack::Util::run_app($self->{app}, $env); 196: 197: if (ref $res eq 'CODE') { 198: $res->(sub { $self->_finalize_response($env, $_[0]) }); Show function arguments in Starman::Server::process_request at /usr/share/perl5/Starman/Server.pm line 298 295: 296: $self->_prepare_env($env); 297: 298: $self->dispatch_request($env); 299: 300: DEBUG && warn "[$$] Request done\n"; 301: Show function arguments in Net::Server::run_client_connection at /usr/share/perl5/Net/Server.pm line 72 69: $self->post_accept_hook($c); # user customizable hook 70: 71: my $ok = $self->allow_deny($c) && $self->allow_deny_hook($c); # do allow/deny check on client info 72: if ($ok) { 73: $self->process_request($c); # This is where the core functionality of a Net::Server should be. 74: } else { 75: $self->request_denied_hook($c); # user customizable hook Show function arguments in (eval) at /usr/share/perl5/Net/Server/PreFork.pm line 225 222: $prop->{'connected'} = 1; 223: print $write "$$ processing\n"; 224: 225: my $ok = eval { $self->run_client_connection; 1 }; 226: if (! $ok) { 227: print $write "$$ exiting\n"; 228: die $@; in Net::Server::PreFork::run_child at /usr/share/perl5/Net/Server/PreFork.pm line 225 222: $prop->{'connected'} = 1; 223: print $write "$$ processing\n"; 224: 225: my $ok = eval { $self->run_client_connection; 1 }; 226: if (! $ok) { 227: print $write "$$ exiting\n"; 228: die $@; Show function arguments in Net::Server::PreFork::run_n_children at /usr/share/perl5/Net/Server/PreFork.pm line 183 180: if ($prop->{'child_communication'}) { 181: $prop->{'parent_sock'} = $childsock; 182: } 183: $self->run_child; 184: } 185: } 186: } Show function arguments in Net::Server::PreFork::loop at /usr/share/perl5/Net/Server/PreFork.pm line 107 104: 105: my $start = $prop->{'min_servers'}; 106: $self->log(3, "Beginning prefork ($start processes)"); 107: $self->run_n_children($start); 108: 109: $self->run_parent; 110: } Show function arguments in Net::Server::run at /usr/share/perl5/Net/Server.pm line 58 55: $self->post_bind; # allow for chrooting, becoming a different user and group 56: 57: $self->pre_loop_hook; # user customizable hook 58: $self->loop; # repeat accept/process cycle 59: 60: $self->server_close; # close the server and release the port 61: } Show function arguments in Starman::Server::run at /usr/share/perl5/Starman/Server.pm line 106 103: max_requests => $options->{max_requests} || 1000, 104: user => $options->{user} || $>, 105: group => $options->{group} || $), 106: listen => $options->{backlog} || 1024, 107: check_for_waiting => 1, 108: no_client_stdout => 1, 109: %extra Show function arguments in Plack::Handler::Starman::run at /usr/share/perl5/Plack/Handler/Starman.pm line 25 22: } 23: $self->{net_server_args} = \%nsa if %nsa; 24: 25: Starman::Server->new->run($app, {%$self}); 26: } 27: 28: 1; Show function arguments in Plack::Loader::Delayed::run at /usr/share/perl5/Plack/Loader/Delayed.pm line 20 17: }; 18: 19: $server->{psgi_app_builder} = $self->{builder}; 20: $server->run($app); 21: } 22: 23: 1; Show function arguments in Plack::Runner::run at /usr/share/perl5/Plack/Runner.pm line 279 276: $loader->preload_app($app); 277: 278: my $server = $self->load_server($loader); 279: $loader->run($server); 280: } 281: 282: 1; Show function arguments at /usr/bin/starman line 38 35: } 36: 37: $runner->set_options(argv => \@argv); 38: $runner->run; 39: 40: __END__ 41: -- You are receiving this mail because: You are watching all bug changes. _______________________________________________ Koha-bugs mailing list [email protected] https://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-bugs website : http://www.koha-community.org/ git : http://git.koha-community.org/ bugs : http://bugs.koha-community.org/
