can now pass in a list of source user id's to merge into the single master user....
authorerickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Mon, 29 Dec 2008 19:07:03 +0000 (19:07 +0000)
committererickson <erickson@dcc99617-32d9-48b4-a31d-7c20da2025e4>
Mon, 29 Dec 2008 19:07:03 +0000 (19:07 +0000)
git-svn-id: svn://svn.open-ils.org/ILS/trunk@11697 dcc99617-32d9-48b4-a31d-7c20da2025e4

Open-ILS/src/perlmods/OpenILS/Application/Actor.pm

index 45d29cf..98400d4 100644 (file)
@@ -3064,31 +3064,23 @@ __PACKAGE__->register_method (
 );
 
 sub merge_users {
-    my($self, $conn, $auth, $src_id, $dest_id, $options) = @_;
+    my($self, $conn, $auth, $master_id, $options, @user_ids) = @_;
     my $e = new_editor(xact => 1, authtoken => $auth);
        return $e->die_event unless $e->checkauth;
 
-    my $src_user = $e->retrieve_actor_user($src_id) or return $e->die_event;
-    my $dest_user = $e->retrieve_actor_user($dest_id) or return $e->die_event;
+    for my $src_id (@user_ids) {
+        my $src_user = $e->retrieve_actor_user($src_id) or return $e->die_event;
+        my $master_user = $e->retrieve_actor_user($master_id) or return $e->die_event;
 
-    return $e->die_event unless $e->allowed('MERGE_USERS', $src_user->home_ou);
-    if($src_user->home_ou ne $dest_user->home_ou) {
-        return $e->die_event unless $e->allowed('MERGE_USERS', $dest_user->home_ou);
+        return $e->die_event unless $e->allowed('MERGE_USERS', $src_user->home_ou);
+        if($src_user->home_ou ne $master_user->home_ou) {
+            return $e->die_event unless $e->allowed('MERGE_USERS', $master_user->home_ou);
+        }
+
+        return $e->die_event unless 
+            $e->json_query({from => ['actor.usr_merge', $src_id, $master_id]});
     }
 
-    my $query = {
-        select => {
-            au => [ {
-                transform => 'actor.usr_merge',
-                params => [$dest_id],
-                column => 'id',
-            } ]
-        },
-        from => 'au',
-        where => {id => $src_id},
-    };
-
-    return $e->die_event unless $e->json_query($query);
     $e->commit;
     return 1;
 }