/** * Create a new progression for a User and a Step (by default, the first action is 'seen') * @param Step $step * @param User $user * @param string $status * @return \Innova\PathBundle\Entity\UserProgression */ public function create(Step $step, User $user = null, $status = null) { if (empty($user)) { // Load current logged User $user = $this->securityToken->getToken()->getUser(); } $progression = new UserProgression(); $progression->setUser($user); $progression->setStep($step); if (empty($status)) { $status = UserProgression::getDefaultStatus(); } $progression->setStatus($status); $this->om->persist($progression); $this->om->flush(); return $progression; }
/** * Create a new progression for a User and a Step (by default, the first action is 'seen'). * * @param Step $step * @param User $user * @param string $status * @param bool $authorized * @param bool $checkDuplicate * * @return UserProgression */ public function create(Step $step, User $user = null, $status = null, $authorized = false, $checkDuplicate = true) { // Check if progression already exists, if so return retrieved progression if ($checkDuplicate && $user instanceof User) { $progression = $this->om->getRepository('InnovaPathBundle:UserProgression')->findOneBy(['step' => $step, 'user' => $user]); if (!empty($progression)) { return $progression; } } $progression = new UserProgression(); $progression->setStep($step); if (empty($status)) { $status = UserProgression::getDefaultStatus(); } $progression->setStatus($status); $progression->setAuthorized($authorized); if ($user instanceof User) { $progression->setUser($user); $this->om->persist($progression); $this->om->flush(); } return $progression; }