Guest User

Untitled

a guest
Sep 10th, 2018
247
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 2.40 KB | None | 0 0
  1. #!/usr/bin/perl
  2. #
  3. # xrobau@gmail.com - Code released under GPLV3.
  4. # Used on mcau.org
  5. #
  6. # Iterate through FORUM database. Compare each username there with pex table.
  7. #  If Donator -
  8. #    UPDATE  `vbulletin`.`user` SET  `usergroupid` =  '9' WHERE  `user`.`userid` = userid
  9. #  If NOT Donator
  10. #    if user.userid=9 (currently are a donator)
  11. #      update to 10 (ex donator)
  12. #    fi
  13. #  fi
  14.  
  15. use DBI;
  16. use Data::Dumper;
  17. $vbulletin = DBI->connect('DBI:mysql:vbulletin;host=XXXX', 'YYYY', 'ZZZ') || die "Could not connect to database: $DBI::errstr";
  18. $pex = DBI->connect('DBI:mysql:permissionsex;host=XXXX', 'YYYY', 'ZZZ') || die "Could not connect to database: $DBI::errstr";
  19.  
  20. $vbmcname = $vbulletin->prepare('SELECT `userfield`.`field4` from  `userfield`,`user` where `userfield`.`userid`=`user`.`userid` and `user`.`username`=?');
  21.  
  22. $pexq = $pex->prepare('SELECT parent from permissions_inheritance where child like ?');
  23.  
  24. # Get all the users from the forum
  25. my $vusers = $vbulletin->selectall_hashref('SELECT username,userid,usergroupid from user', 'username');
  26.  
  27. # Go through them all.
  28. foreach my $query_username (keys %$vusers) {
  29.     my $username = $vusers->{$query_username}->{username};
  30.     my $group = isDonator($username);
  31.     if ($group eq "donators") {
  32.         print "$username is a D - set him to ID 9\n";
  33.         $vbulletin->do("UPDATE `user` set `usergroupid` = 9 where `user`.`username`='$username'");
  34.         $vbulletin->do("UPDATE `user` set `usertitle` = 'MCAU Donator' where `user`.`username`='$username'");
  35.     } elsif ($vusers->{$query_username}->{usergroupid} eq "9") {
  36.         print "Checking now.. $username - ";
  37.         # If they've been manually set, it means that they've probably got a valid donator name in their profile.
  38.         # Lets check that.
  39.         $vbmcname->execute($username);
  40.         (my $result) = $vbmcname->fetchrow_array();
  41.         if (isDonator($result) eq "donators") {
  42.             print "Found $result as a minecraft account\n";
  43.         } else {
  44.             if ($group eq "users") {
  45.                 print "$username is no longer a D. Set to 10\n";
  46.                 $vbulletin->do("UPDATE `user` set `usergroupid` = 10 where `user`.`username`='$username'");
  47.             }
  48.         }
  49.     }
  50. }
  51.  
  52.  
  53. sub isDonator($) {
  54.     my $user = shift @_;
  55.  
  56.     # Get their group from pex..
  57.     $pexq->execute($user);
  58.     (my $result) = $pexq->fetchrow_array();
  59.     return $result;
  60. }
Add Comment
Please, Sign In to add comment