# returns undef if user has all of the perms provided
# returns the first failed perm on failure
sub check_user_perms {
- my($self, $user_id, $org_id, @perm_types ) = @_;
- $logger->debug("Checking perms with user : $user_id , org: $org_id, @perm_types");
-
- for my $type (@perm_types) {
- $PERM_QUERY->{select}->{au}->[0]->{params} = [$type, $org_id];
- $PERM_QUERY->{where}->{id} = $user_id;
- return $type unless $self->is_true(OpenILS::Utils::CStoreEditor->new->json_query($PERM_QUERY)->[0]->{has_perm});
- }
- return undef;
+ my($self, $user_id, $org_id, @perm_types ) = @_;
+ $logger->debug("Checking perms with user : $user_id , org: $org_id, @perm_types");
+
+ for my $type (@perm_types) {
+ $PERM_QUERY->{select}->{au}->[0]->{params} = [$type, $org_id];
+ $PERM_QUERY->{where}->{id} = $user_id;
+ my $r = OpenILS::Utils::CStoreEditor->new->json_query($PERM_QUERY);
+ return $type unless (ref($r) eq 'ARRAY' and $self->is_true($r->[0]->{has_perm}));
+ }
+ return undef;
}
# checks the list of user perms. The first one that fails returns a new
# takes a copy id
sub fetch_open_circulation {
- my( $self, $cid ) = @_;
- $self->logmark;
+ my( $self, $cid ) = @_;
+ $self->logmark;
- my $e = OpenILS::Utils::CStoreEditor->new;
+ my $e = OpenILS::Utils::CStoreEditor->new;
my $circ = $e->search_action_circulation({
- target_copy => $cid,
- stop_fines_time => undef,
- checkin_time => undef
- })->[0];
-
+ target_copy => $cid,
+ stop_fines_time => undef,
+ checkin_time => undef
+ });
+ $circ = $circ->[0] if (ref($circ) eq 'ARRAY');
return ($circ, $e->event);
}
my $ORG_TREE;
sub fetch_org_tree {
- my $self = shift;
- return $ORG_TREE if $ORG_TREE;
- return $ORG_TREE = OpenILS::Utils::CStoreEditor->new->search_actor_org_unit(
+ my $self = shift;
+ return $ORG_TREE if $ORG_TREE;
+ $ORG_TREE = OpenILS::Utils::CStoreEditor->new->search_actor_org_unit(
[
{"parent_ou" => undef },
{
- flesh => -1,
- flesh_fields => { aou => ['children'] },
+ flesh => -1,
+ flesh_fields => { aou => ['children'] },
order_by => { aou => 'name'}
}
]
- )->[0];
+ );
+ $ORG_TREE = $ORG_TREE->[0] if (ref($ORG_TREE) eq 'ARRAY');
+ return $ORG_TREE;
}
sub walk_org_tree {
}
my $query = {from => ['actor.org_unit_ancestor_setting', $name, $orgid]};
- my $setting = $e->json_query($query)->[0];
- return undef unless $setting;
+ my $setting = $e->json_query($query);
+ return undef unless (ref($setting) eq 'ARRAY');
+ $setting = $setting->[0] if (ref($setting) eq 'ARRAY');
return {org => $setting->{org_unit}, value => OpenSRF::Utils::JSON->JSON2perl($setting->{value})};
-}
-
+}
# returns the ISO8601 string representation of the requested epoch in GMT
sub epoch2ISO8601 {
}
sub get_org_tree {
- my $self = shift;
- my $locale = shift || '';
- my $cache = OpenSRF::Utils::Cache->new("global", 0);
- my $tree = $cache->get_cache("orgtree.$locale");
- return $tree if $tree;
-
- my $ses = OpenILS::Utils::CStoreEditor->new;
- $ses->session->session_locale($locale);
- $tree = $ses->search_actor_org_unit(
- [
+ my $self = shift;
+ my $locale = shift || '';
+ my $cache = OpenSRF::Utils::Cache->new("global", 0);
+ my $tree = $cache->get_cache("orgtree.$locale");
+ return $tree if $tree;
+
+ my $ses = OpenILS::Utils::CStoreEditor->new;
+ $ses->session->session_locale($locale);
+ my $r = $ses->search_actor_org_unit(
+ [
{"parent_ou" => undef },
{
- flesh => -1,
- flesh_fields => { aou => ['children'] },
- order_by => { aou => 'name'}
+ flesh => -1,
+ flesh_fields => { aou => ['children'] },
+ order_by => { aou => 'name'}
}
]
- )->[0];
+ );
+ $tree = $r->[0] if (ref($r) eq 'ARRAY');
- $cache->put_cache("orgtree.$locale", $tree);
- return $tree;
+ $cache->put_cache("orgtree.$locale", $tree);
+ return $tree;
}
sub get_org_descendants {
- my($self, $org_id, $depth) = @_;
+ my($self, $org_id, $depth) = @_;
- my $select = {
- transform => 'actor.org_unit_descendants',
- column => 'id',
- result_field => 'id',
- };
- $select->{params} = [$depth] if defined $depth;
+ my $select = {
+ transform => 'actor.org_unit_descendants',
+ column => 'id',
+ result_field => 'id',
+ };
+ $select->{params} = [$depth] if defined $depth;
- my $org_list = OpenILS::Utils::CStoreEditor->new->json_query({
+ my $org_list = OpenILS::Utils::CStoreEditor->new->json_query({
select => {aou => [$select]},
from => 'aou',
where => {id => $org_id}
});
- my @orgs;
- push(@orgs, $_->{id}) for @$org_list;
- return \@orgs;
+ my @orgs;
+ if (ref($org_list) eq 'ARRAY') {
+ push(@orgs, $_->{id}) for @$org_list;
+ }
+ return \@orgs;
}
sub get_org_ancestors {
- my($self, $org_id) = @_;
+ my($self, $org_id) = @_;
- my $org_list = OpenILS::Utils::CStoreEditor->new->json_query({
+ my $org_list = OpenILS::Utils::CStoreEditor->new->json_query({
select => {
aou => [{
transform => 'actor.org_unit_ancestors',
where => {id => $org_id}
});
- my @orgs;
- push(@orgs, $_->{id}) for @$org_list;
- return \@orgs;
+ my @orgs;
+ if (ref($org_list) eq 'ARRAY') {
+ push(@orgs, $_->{id}) for @$org_list;
+ }
+ return \@orgs;
}
sub get_org_full_path {
- my($self, $org_id, $depth) = @_;
+ my($self, $org_id, $depth) = @_;
my $query = {
- select => {
- aou => [{
- transform => 'actor.org_unit_full_path',
- column => 'id',
- result_field => 'id',
- }],
- },
- from => 'aou',
- where => {id => $org_id}
- };
+ select => {
+ aou => [{
+ transform => 'actor.org_unit_full_path',
+ column => 'id',
+ result_field => 'id',
+ }],
+ },
+ from => 'aou',
+ where => {id => $org_id}
+ };
$query->{select}->{aou}->[0]->{params} = [$depth] if defined $depth;
- my $org_list = OpenILS::Utils::CStoreEditor->new->json_query($query);
- return [ map {$_->{id}} @$org_list ];
+ my $org_list = OpenILS::Utils::CStoreEditor->new->json_query($query);
+ return [ map {$_->{id}} @$org_list ] if (ref($org_list) eq 'ARRAY');
+ return [];
}
# returns the ID of the org unit ancestor at the specified depth
sub org_unit_ancestor_at_depth {
my($class, $org_id, $depth) = @_;
my $resp = OpenILS::Utils::CStoreEditor->new->json_query(
- {from => ['actor.org_unit_ancestor_at_depth', $org_id, $depth]})->[0];
- return ($resp) ? $resp->{id} : undef;
+ {from => ['actor.org_unit_ancestor_at_depth', $org_id, $depth]});
+ return (ref($resp) eq 'ARRAY') ? $resp->[0]->{id} : undef;
}
# returns the user's configured locale as a string. Defaults to en-US if none is configured.
sub get_user_locale {
- my($self, $user_id, $e) = @_;
- $e ||= OpenILS::Utils::CStoreEditor->new;
+ my($self, $user_id, $e) = @_;
+ $e ||= OpenILS::Utils::CStoreEditor->new;
- # first, see if the user has an explicit locale set
- my $setting = $e->search_actor_user_setting(
- {usr => $user_id, name => 'global.locale'})->[0];
- return OpenSRF::Utils::JSON->JSON2perl($setting->value) if $setting;
+ # first, see if the user has an explicit locale set
+ my $setting = $e->search_actor_user_setting(
+ {usr => $user_id, name => 'global.locale'});
+ $setting = $setting->[0] if (ref($setting) eq 'ARRAY');
+ return OpenSRF::Utils::JSON->JSON2perl($setting->value) if $setting;
- my $user = $e->retrieve_actor_user($user_id) or return $e->event;
- return $self->get_org_locale($user->home_ou, $e);
+ my $user = $e->retrieve_actor_user($user_id) or return $e->event;
+ return $self->get_org_locale($user->home_ou, $e);
}
# returns org locale setting
"where" => {id => $xact_id},
});
- return $loc->[0]->{circ_lib} if @$loc;
+ return $loc->[0]->{circ_lib} if (ref($loc) eq 'ARRAY' and @$loc);
$loc = $e->json_query({
"select" => {bresv => ["request_lib"]},
"where" => {id => $xact_id},
});
- return $loc->[0]->{request_lib} if @$loc;
+ return $loc->[0]->{request_lib} if (ref($loc) eq 'ARRAY' and @$loc);
$loc = $e->json_query({
"select" => {mg => ["billing_location"]},
"where" => {id => $xact_id},
});
- return $loc->[0]->{billing_location};
+ return $loc->[0]->{billing_location} if (ref($loc) eq 'ARRAY' and @$loc);
+ return undef;
}
for my $org_id (reverse @$orgs) {
my $def = $e->search_action_trigger_event_definition(
- {hook => $hook, owner => $org_id})->[0];
+ {hook => $hook, owner => $org_id});
- return $def if $def;
+ return $def->[0] if (ref($def) eq 'ARRAY' and @$def);
}
return undef;
sub create_circ_chain_summary {
my($class, $e, $circ_id) = @_;
- my $sum = $e->json_query({from => ['action.summarize_circ_chain', $circ_id]})->[0];
+ my $sum = $e->json_query({from => ['action.summarize_circ_chain', $circ_id]});
+ if (ref($sum) eq 'ARRAY' and @$sum) {
+ $sum = $sum->[0];
+ } else {
+ $sum = undef;
+ }
return undef unless $sum;
my $obj = Fieldmapper::action::circ_chain_summary->new;
$obj->$_($sum->{$_}) for keys %$sum;