Example #1
0
 /**
  * @param $wikiPage
  * @param \User $user
  * @param $content
  * @param $summary
  * @param $isMinor
  * @param $isWatch
  * @param $section
  * @param $flags
  * @param \Status $status
  *
  * @return bool
  */
 public function onPageContentSave($wikiPage, $user, $content, $summary, $isMinor, $isWatch, $section, $flags, $status)
 {
     if ($user && !$user->isEmailConfirmed()) {
         if (!$this->testResponse()) {
             $status->setResult(false);
             $status->error("recaptcha-failed");
             return false;
         }
     }
     return true;
 }
 /**
  * Map an existing Wikia user to a Facebook id
  * If an exact or partial match of the map already exists, OR
  * if creation of mapping does not succeed, returns not-OK Status
  *
  * @param int $wikiaUserId
  * @param int $fbUserId
  * @return \Status (status value will be null or \FacebookMapModel if successfully created)
  */
 public function connectToFacebook($wikiaUserId, $fbUserId)
 {
     $status = new Status();
     try {
         $map = \FacebookMapModel::getUserMapping($wikiaUserId, $fbUserId);
         if ($map) {
             // Error! There is already a mapping
             $status->setResult(false);
             $status->error('fbconnect-error-already-connected');
         } else {
             $bizToken = \FacebookClient::getInstance()->getBizToken();
             $map = \FacebookMapModel::createUserMapping($wikiaUserId, $fbUserId, $bizToken);
             if ($map instanceof \FacebookMapModel) {
                 $status->setResult(true, $map);
             } else {
                 $status->setResult(false);
                 $status->error('fbconnect-error');
             }
         }
     } catch (\Exception $e) {
         $messageParams = [];
         switch ($e->getCode()) {
             case \FacebookMapModel::ERROR_WIKIA_USER_ID_MISMATCH:
                 $messageParams[] = 'fbconnect-error-fb-account-in-use';
                 $messageParams[] = \User::whoIs($wikiaUserId);
                 break;
             case \FacebookMapModel::ERROR_FACEBOOK_USER_ID_MISMATCH:
                 $messageParams[] = 'fbconnect-error-already-connected';
                 break;
             default:
                 $messageParams[] = 'fbconnect-error';
         }
         $status->setResult(false);
         call_user_func_array([$status, 'error'], $messageParams);
     }
     return $status;
 }
 /**
  * @covers Status::getErrorsByType
  */
 public function testGetErrorsByType()
 {
     $status = new Status();
     $warning = new Message('warning111');
     $error = new Message('error111');
     $status->warning($warning);
     $status->error($error);
     $warnings = $status->getErrorsByType('warning');
     $errors = $status->getErrorsByType('error');
     $this->assertCount(1, $warnings);
     $this->assertCount(1, $errors);
     $this->assertEquals($warning, $warnings[0]['message']);
     $this->assertEquals($error, $errors[0]['message']);
 }
 /**
  * Unattach a list of local accounts from the global account
  * @param array $list List of wiki names
  * @return Status
  */
 public function adminUnattach($list)
 {
     if (!count($list)) {
         return Status::newFatal('centralauth-admin-none-selected');
     }
     $status = new Status();
     $valid = $this->validateList($list);
     $invalid = array_diff($list, $valid);
     foreach ($invalid as $wikiName) {
         $status->error('centralauth-invalid-wiki', $wikiName);
         $status->failCount++;
     }
     $dbcw = self::getCentralDB();
     $password = $this->getPassword();
     foreach ($valid as $wikiName) {
         # Delete the user from the central localuser table
         $dbcw->delete('localuser', array('lu_name' => $this->mName, 'lu_wiki' => $wikiName), __METHOD__);
         if (!$dbcw->affectedRows()) {
             $wiki = WikiMap::getWiki($wikiName);
             $status->error('centralauth-admin-already-unmerged', $wiki->getDisplayName());
             $status->failCount++;
             continue;
         }
         # Touch the local user row, update the password
         $lb = wfGetLB($wikiName);
         $dblw = $lb->getConnection(DB_MASTER, array(), $wikiName);
         $dblw->update('user', array('user_touched' => wfTimestampNow(), 'user_password' => $password), array('user_name' => $this->mName), __METHOD__);
         $id = $dblw->selectField('user', 'user_id', array('user_name' => $this->mName), __METHOD__);
         $this->clearLocalUserCache($wikiName, $id);
         $lb->reuseConnection($dblw);
         $status->successCount++;
     }
     if (in_array(wfWikiID(), $valid)) {
         $this->resetState();
     }
     $this->invalidateCache();
     return $status;
 }
Example #5
0
 /**
  * Wrapper around the parent function in order to defer uploading to the
  * job queue for asynchronous uploads
  */
 public function performUpload($comment, $pageText, $watch, $user)
 {
     if ($this->mAsync) {
         $sessionKey = $this->insertJob($comment, $pageText, $watch, $user);
         $status = new Status();
         $status->error('async', $sessionKey);
         return $status;
     }
     return parent::performUpload($comment, $pageText, $watch, $user);
 }