/** * 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'); }