From: Chris Sharp Date: Fri, 28 Oct 2016 15:18:04 +0000 (-0400) Subject: Create new parent folder for moved reports. X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=c6b363ded1636577444f473d8ba3b2edffadeafd;p=contrib%2Fpines.git Create new parent folder for moved reports. --- diff --git a/reports/change_reports_owner.pl b/reports/change_reports_owner.pl index 758d807..07b807e 100755 --- a/reports/change_reports_owner.pl +++ b/reports/change_reports_owner.pl @@ -106,7 +106,25 @@ if ($response eq "n") { exit(); } -my @tables = qw/reporter.template_folder reporter.report_folder reporter.output_folder reporter.template reporter.report/; + +# Because the receiving user may already have folders with the same name as the old user, +# we create a new parent folder to shove the top-level folders into. Since shared folders +# under unshared folders cause UI havoc, we unshare everything first. +my @folder_tables = qw/reporter.template_folder reporter.report_folder reporter.output_folder/; +foreach my $folder_table (@folder_tables) { + my $create_parent = qq/INSERT INTO $folder_table (owner, name) VALUES ($user_id2, 'Reports from $first_name1 $middle_name1 $last_name1 ($old_barcode)')/ + my $unshare_folders = qq/UPDATE $folder_table SET shared = FALSE, share_with = NULL WHERE owner = ?/; + my $update_parent = qq/UPDATE $folder_table SET parent = (SELECT id FROM $folder_table WHERE owner = $user_id2 AND name = 'Reports from $first_name1 $middle_name1 $last_name1 ($old_barcode)') WHERE owner = ? AND parent IS NULL/; + $sth = $dbh->prepare("$create_parent"); + $sth->execute(); + $sth = $dbh->prepare("$unshare_folders"); + $sth->execute($user_id1); + $sth = $dbh->prepare("$update_parent"); + $sth->execute($user_id1); + print "Unsharing and setting new parents for $folder_table.\n"; +} + +my @tables = qw/reporter.template reporter.report reporter.template_folder reporter.report_folder reporter.output_folder/; foreach my $table (@tables) { my $update_owner = qq/UPDATE $table SET owner = ? WHERE owner = ?/; $sth = $dbh->prepare("$update_owner");