Пример #1
0
 function execute($par)
 {
     global $wgUser, $wgRequest, $wgOut, $wgBaNSpamUser;
     if (!$this->userCanExecute($wgUser)) {
         $this->displayRestrictionError();
         return;
     }
     $this->setHeaders();
     $this->outputHeader();
     $um = null;
     $spammer = User::newFromName($wgBaNSpamUser);
     if (class_exists("UserMerger") && $spammer->getID() != 0) {
         $um = new UserMerger($this);
     }
     $posted = $wgRequest->wasPosted();
     if ($posted) {
         $user_id = $wgRequest->getArray('userid');
         $user = $wgRequest->getArray('names');
         $pages = $wgRequest->getArray('pages');
         $user_2 = $wgRequest->getArray('names_2');
         $ips = $wgRequest->getArray('ip');
         if ($user) {
             $wgOut->addHTML(wfMsg("blockandnuke-banhammer"));
             $this->getNewPages($user);
         } elseif (count($pages) || count($user_2) || count($ips)) {
             $wgOut->addHTML(wfMsg("blockandnuke-banning"));
             $v = false;
             $v = BanPests::blockUser($user_2, $user_id, $wgUser, $spammer, $um) || BanPests::deletePages($pages, $this) || BanPests::banIPs($ips, $wgUser, $this);
             if (!$v) {
                 $wgOut->addHTML(wfMsg('blockandnuke-nothing-to-do'));
             }
         } else {
             $wgOut->addHTML(wfMsg('blockandnuke-nothing-to-do'));
         }
     } else {
         $this->showUserForm();
     }
 }
Пример #2
0
 public function execute()
 {
     global $wgBaNSpamUser;
     $this->output("Starting ");
     $real = $this->hasOption("hammer");
     $brief = $this->hasOption("brief");
     if (!$real) {
         $this->output("dry run\n");
     } else {
         $this->output("\n");
     }
     $bannable = BanPests::getBannableUsers();
     $pages = BanPests::getBannablePages($bannable);
     $this->output(sprintf("Found %d bannable users and %d pages:\n", count($bannable), count($pages)));
     if (count($pages)) {
         $this->maybeOutput("Pages\n");
         foreach ($pages as $page) {
             if ($page) {
                 $this->maybeOutput("\t{$page}");
                 if ($real) {
                     $this->maybeOutput(" ... deleting\n");
                     BanPests::deletePage(Title::newFromURL($page));
                 } else {
                     $this->maybeOutput("\n");
                 }
             }
         }
     }
     $spammer = User::newFromName($wgBaNSpamUser);
     $banningUser = User::newFromName("WikiSysop");
     $um = null;
     if (class_exists("UserMerger")) {
         $um = new UserMerger(null);
     }
     if (count($bannable)) {
         $this->maybeOutput("Users\n");
         foreach ($bannable as $user) {
             $this->maybeOutput("\t{$user}");
             $u = User::newFromName($user);
             if ($u === false) {
                 $ips = array($user);
             } else {
                 $ips = BanPests::getBannableIP($u);
             }
             if ($real) {
                 $this->maybeOutput(" ... banning\n");
                 if ($u !== false) {
                     BanPests::banUser($u, $banningUser, $spammer, $um);
                 }
                 if ($ips) {
                     foreach ($ips as $ip) {
                         $this->maybeOutput("\t\tEnsuring ban on {$ip}\n");
                         BanPests::banIPs($ip, $banningUser);
                     }
                 }
             } else {
                 $this->maybeOutput("\n");
                 foreach ($ips as $ip) {
                     $this->maybeOutput("\t\t{$ip}\n");
                 }
             }
         }
     }
 }