Lines 16-23
package Koha::BackgroundJob;
Link Here
|
16 |
# along with Koha; if not, see <http://www.gnu.org/licenses>. |
16 |
# along with Koha; if not, see <http://www.gnu.org/licenses>. |
17 |
|
17 |
|
18 |
use Modern::Perl; |
18 |
use Modern::Perl; |
19 |
use JSON qw( decode_json encode_json ); |
19 |
use JSON; |
20 |
use Encode qw( encode_utf8 ); |
|
|
21 |
use Carp qw( croak ); |
20 |
use Carp qw( croak ); |
22 |
use Net::Stomp; |
21 |
use Net::Stomp; |
23 |
use Try::Tiny qw( catch try ); |
22 |
use Try::Tiny qw( catch try ); |
Lines 101-111
sub enqueue {
Link Here
|
101 |
my $job_args = $params->{job_args}; |
100 |
my $job_args = $params->{job_args}; |
102 |
my $job_context = $params->{job_context} // C4::Context->userenv; |
101 |
my $job_context = $params->{job_context} // C4::Context->userenv; |
103 |
my $job_queue = $params->{job_queue} // 'default'; |
102 |
my $job_queue = $params->{job_queue} // 'default'; |
|
|
103 |
my $json = JSON->new; |
104 |
|
104 |
|
105 |
my $borrowernumber = (C4::Context->userenv) ? C4::Context->userenv->{number} : undef; |
105 |
my $borrowernumber = (C4::Context->userenv) ? C4::Context->userenv->{number} : undef; |
106 |
$job_context->{interface} = C4::Context->interface; |
106 |
$job_context->{interface} = C4::Context->interface; |
107 |
my $json_context = encode_json $job_context; |
107 |
my $json_context = $json->encode($job_context); |
108 |
my $json_args = encode_json $job_args; |
108 |
my $json_args = $json->encode($job_args); |
109 |
|
109 |
|
110 |
$self->set( |
110 |
$self->set( |
111 |
{ |
111 |
{ |
Lines 130-136
sub enqueue {
Link Here
|
130 |
}; |
130 |
}; |
131 |
return unless $conn; |
131 |
return unless $conn; |
132 |
|
132 |
|
133 |
$json_args = encode_json $job_args; |
133 |
$json_args = $json->encode($job_args); |
134 |
try { |
134 |
try { |
135 |
# This namespace is wrong, it must be a vhost instead. |
135 |
# This namespace is wrong, it must be a vhost instead. |
136 |
# But to do so it needs to be created on the server => much more work when a new Koha instance is created. |
136 |
# But to do so it needs to be created on the server => much more work when a new Koha instance is created. |
Lines 167-173
sub process {
Link Here
|
167 |
$args ||= {}; |
167 |
$args ||= {}; |
168 |
|
168 |
|
169 |
if ( $self->context ) { |
169 |
if ( $self->context ) { |
170 |
my $context = decode_json($self->context); |
170 |
my $context = JSON->new->decode($self->context); |
171 |
C4::Context->_new_userenv(-1); |
171 |
C4::Context->_new_userenv(-1); |
172 |
C4::Context->interface( $context->{interface} ); |
172 |
C4::Context->interface( $context->{interface} ); |
173 |
C4::Context->set_userenv( |
173 |
C4::Context->set_userenv( |
Lines 251-257
sub finish {
Link Here
|
251 |
return $self->set( |
251 |
return $self->set( |
252 |
{ |
252 |
{ |
253 |
ended_on => \'NOW()', |
253 |
ended_on => \'NOW()', |
254 |
data => encode_json($data), |
254 |
data => JSON->new->encode($data), |
255 |
} |
255 |
} |
256 |
)->store; |
256 |
)->store; |
257 |
} |
257 |
} |
Lines 267-273
Returns the decoded JSON contents from $self->data.
Link Here
|
267 |
sub decoded_data { |
267 |
sub decoded_data { |
268 |
my ($self) = @_; |
268 |
my ($self) = @_; |
269 |
|
269 |
|
270 |
return $self->data ? decode_json( $self->data ) : undef; |
270 |
return $self->data ? JSON->new->decode( $self->data ) : undef; |
271 |
} |
271 |
} |
272 |
|
272 |
|
273 |
=head3 set_encoded_data |
273 |
=head3 set_encoded_data |
Lines 281-287
Serializes I<$data> as a JSON string and sets the I<data> attribute with it.
Link Here
|
281 |
sub set_encoded_data { |
281 |
sub set_encoded_data { |
282 |
my ( $self, $data ) = @_; |
282 |
my ( $self, $data ) = @_; |
283 |
|
283 |
|
284 |
return $self->data( $data ? encode_json($data) : undef ); |
284 |
return $self->data( $data ? JSON->new->encode($data) : undef ); |
285 |
} |
285 |
} |
286 |
|
286 |
|
287 |
=head3 job_type |
287 |
=head3 job_type |
Lines 302-308
sub messages {
Link Here
|
302 |
my ( $self ) = @_; |
302 |
my ( $self ) = @_; |
303 |
|
303 |
|
304 |
my @messages; |
304 |
my @messages; |
305 |
my $data_dump = decode_json encode_utf8 $self->data; |
305 |
my $data_dump = JSON->new->decode($self->data); |
306 |
if ( exists $data_dump->{messages} ) { |
306 |
if ( exists $data_dump->{messages} ) { |
307 |
@messages = @{ $data_dump->{messages} }; |
307 |
@messages = @{ $data_dump->{messages} }; |
308 |
} |
308 |
} |
Lines 319-325
Report of the job.
Link Here
|
319 |
sub report { |
319 |
sub report { |
320 |
my ( $self ) = @_; |
320 |
my ( $self ) = @_; |
321 |
|
321 |
|
322 |
my $data_dump = decode_json encode_utf8 $self->data; |
322 |
my $data_dump = JSON->new->decode($self->data); |
323 |
return $data_dump->{report} || {}; |
323 |
return $data_dump->{report} || {}; |
324 |
} |
324 |
} |
325 |
|
325 |
|