return %result;
}
-# Returns a hash of hashes like so:
-# {
-# $lookup_org_id => {org => $context_org, value => $setting_value},
-# $lookup_org_id2 => {org => $context_org2, value => $setting_value2},
-# $lookup_org_id3 => {} # example of no setting value exists
-# ...
-# }
-sub ou_ancestor_setting_batch_by_org_insecure {
- my ($self, $org_ids, $name, $e) = @_;
-
- $e ||= OpenILS::Utils::CStoreEditor->new();
- my %result = map { $_ => {value => undef} } @$org_ids;
-
- my $query = {
- from => [
- 'actor.org_unit_ancestor_setting_batch_by_org',
- $name, '{' . join(',', @$org_ids) . '}'
- ]
- };
-
- # DB func returns an array of settings matching the order of the
- # list of org unit IDs. If the setting does not contain a valid
- # ->id value, then no setting value exists for that org unit.
- my $settings = $e->json_query($query);
- for my $idx (0 .. $#$org_ids) {
- my $setting = $settings->[$idx];
- my $org_id = $org_ids->[$idx];
-
- next unless $setting->{id}; # null ID means no value is present.
-
- $result{$org_id}->{org} = $setting->{org_unit};
- $result{$org_id}->{value} =
- OpenSRF::Utils::JSON->JSON2perl($setting->{value});
- }
-
- return %result;
-}
-
# returns the ISO8601 string representation of the requested epoch in GMT
sub epoch2ISO8601 {
my( $self, $epoch ) = @_;
+++ /dev/null
-#!perl
-use strict; use warnings;
-use Test::More tests => 180; # 15 orgs * 12 settings
-use OpenILS::Utils::TestUtils;
-use OpenILS::Application::AppUtils;
-my $U = 'OpenILS::Application::AppUtils';
-
-diag("Tests batch org setting retrieval");
-
-my $script = OpenILS::Utils::TestUtils->new();
-$script->bootstrap;
-
-my $org_ids = [1 .. 15];
-# All settings at time of writing. None of these have view perms.
-my @settings = qw/
- circ.patron_search.diacritic_insensitive
- circ.checkout_auto_renew_age
- cat.label.font.weight
- cat.spine.line.height
- circ.grace.extend
- cat.label.font.size
- circ.booking_reservation.default_elbow_room
- cat.spine.line.width
- lib.info_url
- circ.hold_go_home_interval
- cat.label.font.family
- cat.spine.line.margin
-/;
-
-# compare the values returned from the batch-by-org setting to the
-# traditional setting value lookup call.
-for my $setting (@settings) {
- my %batch_settings =
- $U->ou_ancestor_setting_batch_by_org_insecure($org_ids, $setting);
-
- for my $org_id (@$org_ids) {
- my $value = $U->ou_ancestor_setting_value($org_id, $setting);
- is($value, $batch_settings{$org_id}->{value},
- "Value matches for setting $setting and org $org_id");
- }
-}
-
-
+++ /dev/null
-BEGIN;
-
-CREATE OR REPLACE FUNCTION actor.org_unit_ancestor_setting_batch_by_org(
- setting_name TEXT, org_ids INTEGER[])
- RETURNS SETOF actor.org_unit_setting AS
-$FUNK$
-DECLARE
- setting RECORD;
- org_id INTEGER;
-BEGIN
- /* Returns one actor.org_unit_setting row per org unit ID provided.
- When no setting exists for a given org unit, the setting row
- will contain all empty values. */
- FOREACH org_id IN ARRAY org_ids LOOP
- SELECT INTO setting * FROM
- actor.org_unit_ancestor_setting(setting_name, org_id);
- RETURN NEXT setting;
- END LOOP;
- RETURN;
-END;
-$FUNK$ LANGUAGE plpgsql STABLE;
-
-COMMIT;
-