/** * Updates or creates a sfGuardUser for the logged in Facebook usser * * @param array $me * @return sfGuardUser */ public static function updateOrCreateUser(array $me) { // Try by Facebook ID $sfGuardUser = Doctrine_Core::getTable('sfGuardUser')->findOneByFacebookId($me['id']); if (!$sfGuardUser) { // Try by email address $sfGuardUser = Doctrine_Core::getTable('sfGuardUser')->findOneByEmailAddress($me['email']); if (!$sfGuardUser) { $sfGuardUser = new sfGuardUser(); $sfGuardUser->setUsername('Facebook_' . $me['id']); } } $sfGuardUser->setFacebookId($me['id']); $sfGuardUser->setFacebookLink($me['link']); $sfGuardUser->setFirstName($me['first_name']); $sfGuardUser->setLastName($me['last_name']); if (array_key_exists('verified', $me)) { $sfGuardUser->setFacebookVerified($me['verified']); } if (array_key_exists('location', $me)) { $sfGuardUser->setLocation($me['location']['name']); $sfGuardUser->setFacebookLocationId($me['location']['id']); } if (array_key_exists('hometown', $me)) { $sfGuardUser->setHometown($me['hometown']['name']); $sfGuardUser->setFacebookHometownId($me['hometown']['id']); } $sfGuardUser->setGender($me['gender']); $sfGuardUser->setLocale($me['locale']); $sfGuardUser->setTimezone($me['timezone']); if (array_key_exists('email', $me)) { $sfGuardUser->setEmailAddress($me['email']); } $sfGuardUser->save(); return $sfGuardUser; }