Create new parent folder for moved reports.
authorChris Sharp <csharp@georgialibraries.org>
Fri, 28 Oct 2016 15:18:04 +0000 (11:18 -0400)
committerChris Sharp <csharp@georgialibraries.org>
Fri, 28 Oct 2016 15:18:04 +0000 (11:18 -0400)
reports/change_reports_owner.pl

index 758d807..07b807e 100755 (executable)
@@ -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");