diff options
Diffstat (limited to 'bin/merge-user')
-rwxr-xr-x | bin/merge-user | 71 |
1 files changed, 0 insertions, 71 deletions
diff --git a/bin/merge-user b/bin/merge-user deleted file mode 100755 index e7833595e..000000000 --- a/bin/merge-user +++ /dev/null @@ -1,71 +0,0 @@ -#!/usr/bin/perl -w - -use strict; -use FS::UID qw(adminsuidsetup dbh); -use FS::Schema; -use FS::Record qw(qsearch qsearchs); - -my $DRY_RUN = 1; -$FS::UID::AutoCommit = 0; - -my ($user, $from_usernum, $to_usernum, $go) = @ARGV; -die usage() if not ($user and $from_usernum and $to_usernum); -$DRY_RUN = 0 if defined($go) and $go eq 'go'; - -my $dbh = adminsuidsetup($user); - -# Sanity checks. -die "Can't merge a user to itself." if $from_usernum == $to_usernum; -my $from_user = FS::access_user->by_key($from_usernum) or - die "Usernum '$from_usernum' not found.\n"; -my $to_user = FS::access_user->by_key($to_usernum) or - die "Usernum '$to_usernum' not found.\n"; - -my $tables = FS::Schema::tables_hashref; -foreach my $table (keys %$tables) { - if( grep /^usernum$/, FS::Record::real_fields($table) ) { - next if $table eq 'access_user'; - foreach ($table, "h_$table") { - print "$_: "; - my $sql; - if( $table =~ /^access_(.*)$/ ) { - print "deleting "; - $sql = "DELETE FROM $_ WHERE usernum = $from_usernum"; - } - else { - print "updating "; - $sql = "UPDATE $_ SET usernum = $to_usernum WHERE usernum = $from_usernum"; - } - #print $sql; - my $sth = $dbh->prepare($sql); - $sth->execute; - if($dbh->err) { - print $dbh->errstr."\n"; - $dbh->rollback; - exit(1); - } - print $sth->rows, "\n"; - } - } -} - -if($DRY_RUN) { - warn "Dry run complete. Reverting all changes.\n"; - $dbh->rollback; -} -else { -# Warning: access_user->delete does not transactionize because of -# htpasswd issues. - print "Deleting merged user.\n"; - my $error = $from_user->delete; - die $error if $error; - - warn "Committing changes.\n"; - $dbh->commit; -} -exit(0); - -sub usage { - "Usage:\n merge-user admin_user from_usernum to_usernum [ 'go' ]\n - (Specify 'go' to actually apply changes.)\n\n"; -} |