private function clearClosureRequest()
 {
     global $wgEnableCloseMyAccountExt;
     if (!empty($wgEnableCloseMyAccountExt)) {
         $closeAccountHelper = new CloseMyAccountHelper();
         $result = $closeAccountHelper->reactivateAccount($this->mUser);
         if (!$result) {
             $this->mStatusMsg = $this->msg('editaccount-error-clearclosurerequest')->text();
         } else {
             $this->mStatusMsg = $this->msg('editaccount-success-clearclosurerequest', $this->mUser->getName())->text();
         }
         return $result;
     }
     return true;
 }
 /**
  * Entry point for reactivating an account
  *
  * Handles confirming the user's reactivation request when they have
  * given a valid confirmation code. If no code is given, but they have
  * a session ID from having successfully attempted to login to an account
  * that has requested closure, this forwards to the reactivateRequest
  * method.
  *
  * @requestParam string code - The confirmation code for reactivating an account
  * @requestParam string username - The user name of the account to reactivate
  * @requestParam string password - The password for the account to reactivate
  * @requestParam string editToken - The edit token for the current user
  * @requestParam string loginToken - The login token for the current user
  * @responseParam boolean success - Whether or not reactivation was successful
  * @responseParam string resultMessage - The result of the form submission
  * @responseParam string errParam - The form item an error is related to
  * @return void
  */
 public function reactivate()
 {
     wfProfileIn(__METHOD__);
     $this->code = $this->getVal('code', false);
     if (empty($this->code)) {
         if ($this->request->getSessionData('closeAccountSessionId') !== null) {
             $this->forward(__CLASS__, 'reactivateRequest');
         } else {
             $this->success = false;
             $this->resultMessage = $this->msg('closemyaccount-reactivate-error-empty-code')->parse();
         }
         wfProfileOut(__METHOD__);
         return;
     }
     $this->getOutput()->setPageTitle($this->msg('closemyaccount-reactivate-page-title')->plain());
     $this->response->addAsset('extensions/wikia/UserLogin/css/UserLogin.scss');
     $user = $this->getUser();
     $this->username = $this->request->getVal('username', '');
     $this->password = $this->request->getVal('password', '');
     $this->loginToken = UserLoginHelper::getLoginToken();
     $this->editToken = $user->getEditToken();
     $helper = new CloseMyAccountHelper();
     if ($this->request->wasPosted() && $user->matchEditToken($this->request->getVal('editToken'))) {
         if ($user->isAnon() && $this->request->getVal('loginToken') !== UserLoginHelper::getLoginToken()) {
             $this->success = false;
             $this->resultMessage = $this->msg('sessionfailure')->escaped();
             wfProfileOut(__METHOD__);
             return;
         }
         if ($this->username === '') {
             $this->success = false;
             $this->resultMessage = $this->msg('userlogin-error-noname')->escaped();
             $this->errParam = 'username';
             wfProfileOut(__METHOD__);
             return;
         }
         if ($this->password === '') {
             $this->success = false;
             $this->resultMessage = $this->msg('userlogin-error-wrongpasswordempty')->escaped();
             $this->errParam = 'password';
             wfProfileOut(__METHOD__);
             return;
         }
         $expUser = User::newFromConfirmationCode($this->code);
         if (!$expUser instanceof User) {
             $this->success = false;
             $this->resultMessage = $this->msg('closemyaccount-reactivate-error-invalid-code', $this->username)->parse();
             wfProfileOut(__METHOD__);
             return;
         }
         $user = User::newFromName($this->username);
         if ($user->getId() != $expUser->getId()) {
             $this->success = false;
             $this->resultMessage = $this->msg('wikiaconfirmemail-error-user-not-match')->parse();
             $this->errParam = 'username';
             wfProfileOut(__METHOD__);
             return;
         }
         $userLoginHelper = new UserLoginHelper();
         /* @var UserLoginHelper $userLoginHelper */
         if ($userLoginHelper->isPasswordThrottled($this->username)) {
             $this->success = false;
             $this->resultMessage = $this - msg('userlogin-error-login-throttled')->escaped();
             $this->errParam = 'password';
             wfProfileOut(__METHOD__);
             return;
         }
         if ($helper->isClosed($user)) {
             $this->success = false;
             $this->resultMessage = $this->msg('closemyaccount-reactivate-error-disabled')->parse();
             wfProfileOut(__METHOD__);
             return;
         }
         if (!$helper->isScheduledForClosure($user)) {
             $this->success = false;
             $this->resultMessage = $this->msg('closemyaccount-reactivate-error-not-scheduled')->escaped();
             wfProfileOut(__METHOD__);
             return;
         }
         if ($user->checkPassword($this->password)) {
             $this->wg->User = $user;
             $this->wg->User->setCookies();
             LoginForm::clearLoginToken();
             $userLoginHelper->clearPasswordThrottle($this->username);
             $helper->reactivateAccount($user);
             unset($_SESSION['closeAccountSessionId']);
             $userPageTitle = $user->getUserPage();
             $this->getOutput()->redirect($userPageTitle->getFullURL());
         } else {
             $this->success = false;
             $this->resultMessage = $this->msg('userlogin-error-wrongpassword')->escaped();
             $this->errParam = 'password';
         }
     }
     wfProfileOut(__METHOD__);
 }