예제 #1
0
 /**
  * @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;
 }