/** * Function: subscribeUserToConversation * * @param \AppBundle\Entity\User $user * @param \AppBundle\Entity\Conversation $conversation * * @param bool $force * * @return \AppBundle\Entity\UserConversation|object * @author Stefanos Bozionelos */ private function subscribeUserToConversation(User $user, Conversation $conversation, $force = false) { $em = $this->getDoctrine()->getManager(); $userConversationRepository = $em->getRepository('AppBundle:UserConversation'); $user_conversation = $userConversationRepository->findOneBy(array('user' => $user->getId(), 'conversation' => $conversation->getId())); if (isset($user_conversation)) { if ($conversation->getParticipants()->count() == 2 && $user_conversation->getUserId() == $user->getId() || $force) { $user_conversation->setRegistered(true); $em->persist($user_conversation); $em->flush(); } return $user_conversation; } $user_conversation = new UserConversation(); $user_conversation->setUser($user); $user_conversation->setConversation($conversation); $user_conversation->setRegistered(true); $conversation->addParticipant($user_conversation); $em->persist($user_conversation); $em->flush(); return $user_conversation; }