Ejemplo n.º 1
0
 /**
  * Make sure a wikia user account is disconnected from their facebook account.
  *
  * @param  User $user The user account to disconnect
  */
 public static function disconnectFromFacebook(User $user)
 {
     if (!empty(F::app()->wg->EnableFacebookClientExt)) {
         FacebookMapModel::deleteFromWikiaID($user->getId());
     }
 }
 /**
  * Disconnect the user from Facebook. This can occur in one of two ways, either when the user
  * deletes the Wikia App from facebook, or when they explicitly disconnect via Special:Preferences.
  * If it comes from Facebook, the request is internal and is sent by FacebookClientController::deauthorizeCallback.
  * If it comes explicitly from the user, the request is external and is sent by preferences.js::disconnect.
  *
  * @requestParam user This is a user object.
  */
 public function disconnectFromFB()
 {
     if ($this->request->isInternal()) {
         // deauthorizeCallback which makes this internal request ensures 'user' is set
         $userId = $this->getVal('user');
         $user = User::newFromId($userId);
     } elseif ($this->isValidExternalRequest()) {
         $user = F::app()->wg->User;
     } else {
         $this->status = 'error';
         $this->msg = wfMessage('fbconnect-unknown-error')->escaped();
         return;
     }
     FacebookMapModel::deleteFromWikiaID($user->getId());
     $params = new FauxRequest(['wpName' => $user->getName()]);
     $loginForm = new LoginForm($params);
     if ($user->getGlobalFlag('fbFromExist')) {
         $res = $loginForm->mailPasswordInternal($user, true, 'fbconnect-passwordremindertitle-exist', 'fbconnect-passwordremindertext-exist');
     } else {
         $res = $loginForm->mailPasswordInternal($user, true, 'fbconnect-passwordremindertitle', 'fbconnect-passwordremindertext');
     }
     if ($res->isGood()) {
         $this->status = 'ok';
     } else {
         $this->status = 'error';
         $this->msg = wfMessage('fbconnect-unknown-error')->text();
     }
 }
 /**
  * @dataProvider mappingIdProvider
  */
 public function testDBWikiaCRUD($wikiaUserId, $facebookUserId)
 {
     self::setupMockCache();
     /** @var PHPUnit_Framework_MockObject_MockObject|FacebookMapModel $mockMap */
     $mockMap = $this->getMock('FacebookMapModel', ['saveToCache']);
     $mockMap->expects($this->once())->method('saveToCache');
     // CREATE
     $mockMap->relate($wikiaUserId, $facebookUserId);
     $mockMap->save();
     // READ
     $this->assertTrue(FacebookMapModel::hasUserMapping($wikiaUserId, $facebookUserId), 'Mapping does not exist');
     $map = FacebookMapModel::lookupFromWikiaID($wikiaUserId);
     $this->assertNotEmpty($map, 'Object not found in memcache');
     $this->assertEquals($wikiaUserId, $map->getWikiaUserId(), 'Wikia user ID does not match');
     $this->assertEquals($facebookUserId, $map->getFacebookUserId(), 'Facebook user ID does not match');
     // DELETE
     FacebookMapModel::deleteFromWikiaID($wikiaUserId);
     $map = FacebookMapModel::lookupFromWikiaID($wikiaUserId);
     $this->assertEmpty($map, 'Object still found in memcache after delete');
 }