/** * Update User email to become Facebook-reported email * * @param int $userId * @return bool */ public function updateEmailFromFacebook($userId) { $userMap = \FacebookMapModel::lookupFromWikiaID($userId); if (!$userMap) { $this->error('Facebook user email update fail. Missing user mapping', ['title' => __METHOD__, 'userid' => $userId]); return false; } $fbUserId = $userMap->getFacebookUserId(); $email = \FacebookClient::getInstance()->getEmail($fbUserId); if (!$email) { $this->info('Facebook user email update: No Facebook email', ['title' => __METHOD__, 'userid' => $userId, 'facebookid' => $fbUserId]); return false; } $this->updateUserEmail($userMap->getWikiaUserId(), $email); $this->info('Facebook user email update complete', ['title' => __METHOD__, 'userid' => $userId, 'facebookid' => $fbUserId, 'email' => $email]); return true; }
/** * Returns the Facebook user ID for the current Wikia user * * @param User|int $user * * @return int|null */ public function getFacebookUserId($user) { // Determine if we got an ID or an object if ($user instanceof User && $user->getId() != 0) { $wikiaUserId = $user->getId(); } else { $wikiaUserId = $user; } if (empty($wikiaUserId)) { return null; } $map = FacebookMapModel::lookupFromWikiaID($wikiaUserId); if (empty($map)) { return null; } return $map->getFacebookUserId(); }
/** * @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'); }