/** * @inheritdoc */ public function findByFacebook(FacebookUser $facebookUser, User $user = null) { $facebookUserTemp = $this->facebookRepository->findByIdFacebook($facebookUser->getIdFacebook()); $facebookFriends = $this->facebookRepository->findByArrayIdFacebook($facebookUser->getFacebookFriendIds()); $facebookUser->setFacebookFriends($facebookFriends); if (empty($facebookUserTemp)) { $facebookUserTemp = $this->persist($facebookUser); } else { $facebookUserTemp->updateFromAnother($facebookUser); $this->entityManager->flush(); } if (empty($user)) { $user = $this->repository->findUserByIdFacebookUser($facebookUserTemp->getId()); if (empty($user)) { $user = $this->repository->createFromFacebookUser($facebookUserTemp); $this->persist($user); } } else { /** @var User $user */ $this->entityManager->createCypherQuery()->query(sprintf('MATCH (u:User), (f:FacebookUser) WHERE ID(u) = %s AND ID(f) = %s CREATE (u)-[:HAS_SOCIAL]->(f)', $user->getId(), $facebookUserTemp->getId()))->getResult(); } return $user; }
/** * @param array $arrId * @return array * @throws Exception */ public function findByArrayIdFacebook($arrId) { $result = array(); if (!empty($arrId)) { foreach ($arrId as $id) { $facebookUser = $this->findByIdFacebook($id); if (empty($facebookUser)) { $facebookUser = new FacebookUser(); $facebookUser->setIdFacebook($id); $this->persist($facebookUser); } $result[] = $facebookUser; } } return $result; }
/** * Facebook authentication * * @ApiDoc( * resource = "/public/api/authentications/", * description = "Facebook authentication", * statusCodes = { * 200 = "Returned when successful", * 400 = "Returned when have any error" * }, * output={ * "class" = "array<Hackathon\WorkBundle\Entity\User>", * "groups" = {"user_detail"} * }, * views = {"default"} * ) * * @Get("/authentications/facebook/{token}") * * @View(serializerGroups="user_detail") * * @param string $token * @return User */ public function getAuthenticationFacebookAction($token) { //Get user $facebookUser = FacebookUser::getUserByToken($token); $userManager = $this->getUserManager(); $user = $userManager->findByFacebook($facebookUser); return $this->checkEmptyObject($user, 'hackathon.message._user_not_found'); }
/** * @param FacebookUser $facebookUser * @return $this */ public function updateFromAnother(FacebookUser $facebookUser) { $this->setEmail($facebookUser->getEmail()); $this->setName($facebookUser->getName()); $this->setBirthday($facebookUser->getBirthday()); $this->setFacebookFriends($facebookUser->getFacebookFriends()); return $this; }
/** * @param FacebookUser $facebookUser * @param bool $withData */ public function setFacebookUser(FacebookUser $facebookUser, $withData = false) { $this->facebookUser = $facebookUser; if ($withData) { $this->setName($facebookUser->getName()); $this->setEmail($facebookUser->getEmail()); $this->setBirthday($facebookUser->getBirthday()); } }