}
sub editor {
- return $editor
- if $editor and $editor->{session}
- and $editor->session->connected;
return $editor = make_editor();
}
-sub reset_editor {
- $editor = undef;
- return editor();
-}
-
sub config {
return $config;
}
# Creates the global editor object
+my $cstore_init = 1; # call init on first use
sub make_editor {
- require OpenILS::Utils::CStoreEditor;
- my $e = OpenILS::Utils::CStoreEditor->new(xact => 1);
- # gnarly cstore hack to re-gen autogen methods after IDL is loaded
- if(!UNIVERSAL::can($e, 'search_actor_card')) {
- syslog("LOG_WARNING", "OILS: Reloading CStoreEditor...");
- delete $INC{'OpenILS/Utils/CStoreEditor.pm'};
- require OpenILS::Utils::CStoreEditor;
- $e = OpenILS::Utils::CStoreEditor->new(xact =>1);
- }
- return $e;
+ OpenILS::Utils::CStoreEditor::init() if $cstore_init;
+ $cstore_init = 0;
+ return OpenILS::Utils::CStoreEditor->new;
}
=head2 clean_text(scalar)
sub block {
my ($self, $card_retained, $blocked_card_msg) = @_;
+ my $e = $self->{editor};
my $u = $self->{user};
- my $e = $self->{editor} = OpenILS::SIP->reset_editor();
syslog('LOG_INFO', "OILS: Blocking user %s", $u->card->barcode );
return $self if $u->card->active eq 'f';
+ # connect and start a new transaction
+ $e->xact_begin;
+
$u->card->active('f');
if( ! $e->update_actor_card($u->card) ) {
syslog('LOG_ERR', "OILS: Block card update failed: %s", $e->event->{textcode});
- $e->xact_rollback;
+ $e->rollback; # rollback + disconnect
return $self;
}
if( ! $e->update_actor_user($u) ) {
syslog('LOG_ERR', "OILS: Block: patron alert update failed: %s", $e->event->{textcode});
- $e->xact_rollback;
+ $e->rollback; # rollback + disconnect
return $self;
}
# stay in synch
$self->{user}->alert_message( $note );
- $e->commit; # commits and resets
- $self->{editor} = OpenILS::SIP->reset_editor();
+ $e->commit; # commits and disconnects
return $self;
}