function execute($par)
 {
     global $wgOut, $wgRequest, $wgUser;
     $this->setHeaders();
     $this->loadParameters($par);
     $wgOut->setPageTitle(wfMsg('globalblocking-block'));
     $wgOut->setSubtitle(GlobalBlocking::buildSubtitleLinks('GlobalBlock'));
     $wgOut->setRobotPolicy("noindex,nofollow");
     $wgOut->setArticleRelated(false);
     $wgOut->enableClientCache(false);
     if (!$this->userCanExecute($wgUser)) {
         $this->displayRestrictionError();
         return;
     }
     $errors = '';
     if ($wgRequest->wasPosted() && $wgUser->matchEditToken($wgRequest->getVal('wpEditToken'))) {
         // They want to submit. Let's have a look.
         $errors = $this->trySubmit();
         if (!$errors) {
             // Success!
             return;
         }
     }
     if (GlobalBlocking::getGlobalBlockId($this->mAddress)) {
         $this->mModifyForm = true;
     }
     if ($this->mModifyForm) {
         $dbr = GlobalBlocking::getGlobalBlockingSlave();
         $block = $dbr->selectRow('globalblocks', '*', array('gb_address' => $this->mAddress), __METHOD__);
         if ($block) {
             if ($block->gb_expiry == 'infinity') {
                 $this->mExpirySelection = 'indefinite';
             } else {
                 $this->mExpiry = wfTimestamp(TS_ISO_8601, $block->gb_expiry);
             }
             $this->mAnonOnly = $block->gb_anon_only;
             $this->mReason = $block->gb_reason;
         }
     }
     $errorstr = null;
     if (is_array($errors) && count($errors) > 0) {
         $errorstr = $this->formatErrors($errors);
     }
     $this->form($errorstr);
 }
 protected function getDB()
 {
     return GlobalBlocking::getGlobalBlockingSlave();
 }
 function trySubmit()
 {
     global $wgOut, $wgUser;
     $ip = $this->mAddress;
     // Is it blocked?
     if (!($id = GlobalBlocking::getGlobalBlockId($ip))) {
         return array(array('globalblocking-notblocked', $ip));
     }
     $new_status = $this->mWhitelistStatus;
     $cur_status = $this->mCurrentStatus;
     // Already whitelisted.
     if ($cur_status == $new_status) {
         return array('globalblocking-whitelist-nochange');
     }
     $dbw = wfGetDB(DB_MASTER);
     if ($new_status == true) {
         $gdbr = GlobalBlocking::getGlobalBlockingSlave();
         // Find the expiry of the block. This is important so that we can store it in the
         // global_block_whitelist table, which allows us to purge it when the block has expired.
         $expiry = $gdbr->selectField('globalblocks', 'gb_expiry', array('gb_id' => $id), __METHOD__);
         $row = array('gbw_by' => $wgUser->getId(), 'gbw_by_text' => $wgUser->getName(), 'gbw_reason' => $this->mReason, 'gbw_address' => $ip, 'gbw_expiry' => $expiry, 'gbw_id' => $id);
         $dbw->replace('global_block_whitelist', array('gbw_id'), $row, __METHOD__);
         $page = new LogPage('gblblock');
         $page->addEntry('whitelist', Title::makeTitleSafe(NS_USER, $ip), $this->mReason);
         $wgOut->addWikiMsg('globalblocking-whitelist-whitelisted', $ip, $id);
     } else {
         // Delete the row from the database
         $dbw->delete('global_block_whitelist', array('gbw_id' => $id), __METHOD__);
         $page = new LogPage('gblblock');
         $page->addEntry('dwhitelist', Title::makeTitleSafe(NS_USER, $ip), $this->mReason);
         $wgOut->addWikiMsg('globalblocking-whitelist-dewhitelisted', $ip, $id);
     }
     $link = $wgUser->getSkin()->makeKnownLinkObj(SpecialPage::getTitleFor('GlobalBlockList'), wfMsg('globalblocking-return'));
     $wgOut->addHTML($link);
     $wgOut->setSubtitle(wfMsg('globalblocking-whitelist-successsub'));
     return array();
 }
 function __construct($form, $conds = array())
 {
     $this->mForm = $form;
     $this->mConds = $conds;
     parent::__construct();
     $this->mDb = GlobalBlocking::getGlobalBlockingSlave();
 }
 static function getGlobalBlockId($ip)
 {
     $dbr = GlobalBlocking::getGlobalBlockingSlave();
     if (!($row = $dbr->selectRow('globalblocks', 'gb_id', array('gb_address' => $ip), __METHOD__))) {
         return 0;
     }
     return $row->gb_id;
 }