From cc8e48cbeb00f273685a06d14646ae8645728655 Mon Sep 17 00:00:00 2001 From: miker Date: Fri, 16 Dec 2005 23:37:58 +0000 Subject: [PATCH 1/1] group tree method and FM support git-svn-id: svn://svn.open-ils.org/ILS/trunk@2429 dcc99617-32d9-48b4-a31d-7c20da2025e4 --- .../src/perlmods/OpenILS/Application/Actor.pm | 41 +++++++++++++++++++ .../src/perlmods/OpenILS/Utils/Fieldmapper.pm | 2 +- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/Open-ILS/src/perlmods/OpenILS/Application/Actor.pm b/Open-ILS/src/perlmods/OpenILS/Application/Actor.pm index bfc39da343..78813d2e14 100644 --- a/Open-ILS/src/perlmods/OpenILS/Application/Actor.pm +++ b/Open-ILS/src/perlmods/OpenILS/Application/Actor.pm @@ -1227,6 +1227,47 @@ sub retrieve_groups { "open-ils.storage.direct.permission.grp_tree.retrieve.all.atomic"); } +__PACKAGE__->register_method( + method => "retrieve_groups_tree", + api_name => "open-ils.actor.groups.tree.retrieve", + notes => <<" NOTES"); + Returns a list of user groups + NOTES +sub retrieve_groups_tree { + my( $self, $client ) = @_; + my $groups = $apputils->simple_scalar_request( + "open-ils.storage", + "open-ils.storage.direct.permission.grp_tree.retrieve.all.atomic"); + return $self->build_group_tree($groups); +} + + +# turns an org list into an org tree +sub build_group_tree { + + my( $self, $grplist) = @_; + + return $grplist unless ( + ref($grplist) and @$grplist > 1 ); + + my @list = sort { $a->name cmp $b->name } @$grplist; + + my $root; + for my $grp (@list) { + + if ($grp and !defined($grp->parent)) { + $root = $grp; + next; + } + my ($parent) = grep { $_->id == $grp->parent} @list; + + $parent->children([]) unless defined($parent->children); + push( @{$parent->children}, $grp ); + } + + return $root; + +} diff --git a/Open-ILS/src/perlmods/OpenILS/Utils/Fieldmapper.pm b/Open-ILS/src/perlmods/OpenILS/Utils/Fieldmapper.pm index d153d989b2..7591ff206c 100644 --- a/Open-ILS/src/perlmods/OpenILS/Utils/Fieldmapper.pm +++ b/Open-ILS/src/perlmods/OpenILS/Utils/Fieldmapper.pm @@ -208,7 +208,7 @@ sub _init { 'Fieldmapper::asset::call_number_note' => { hint => 'acnn' }, 'Fieldmapper::permission::perm_list' => { hint => 'ppl' }, - 'Fieldmapper::permission::grp_tree' => { hint => 'pgt' }, + 'Fieldmapper::permission::grp_tree' => { hint => 'pgt', proto_fields => { children => 1 } }, 'Fieldmapper::permission::usr_grp_map' => { hint => 'pugm' }, 'Fieldmapper::permission::usr_perm_map' => { hint => 'pupm' }, 'Fieldmapper::permission::grp_perm_map' => { hint => 'pgpm' }, -- 2.43.2