$client->status( new OpenSRF::DomainObject::oilsContinueStatus );
}
+ my @invalid; # sync for events with a null grouping field
for my $e (@fleshed_events) {
if (my $group = $e->event->event_def->group_field) {
};
unless($node) { # should not get here, but to be safe..
- $e->update_state('invalid');
+ push @invalid, $e;
next;
}
# get the grouping value for the grouping object on this event
my $ident_value = $node->$group_field();
+
+ # could by false-y, so check definedness
+ if (!defined($ident_value)) {
+ push @invalid, $e;
+ next;
+ }
+
if(ref $ident_value) {
my $ident_field = $ident_value->Identity;
$ident_value = $ident_value->$ident_field()
}
}
+ OpenILS::Application::Trigger::Event->invalidate(@invalid) if @invalid;
return \%groups;
}
my $log = 'OpenSRF::Utils::Logger';
+sub invalidate {
+ my $class = shift;
+ my @events = @_;
+
+ # if called as an instance method
+ unshift(@events,$class) if ref($class);
+
+ my $e = new_editor();
+ $e->xact_begin;
+
+ map {
+ $_->editor($e);
+ $_->standalone(0);
+ $_->update_state('invalid');
+ } @events;
+
+ $e->commit;
+
+ return @events;
+}
+
sub new {
my $class = shift;
my $id = shift;