Ojs\JournalBundle\Controller\JournalUserController::registerAsAuthorAction PHP Метод

registerAsAuthorAction() публичный Метод

public registerAsAuthorAction ( null | integer $journalId = null ) : RedirectResponse | Response
$journalId null | integer
Результат Symfony\Component\HttpFoundation\RedirectResponse | Symfony\Component\HttpFoundation\Response
    public function registerAsAuthorAction($journalId = null)
    {
        $user = $this->getUser();
        $doctrine = $this->getDoctrine();
        $em = $doctrine->getManager();
        $role = $doctrine->getRepository('OjsUserBundle:Role')->findOneBy(['role' => 'ROLE_AUTHOR']);
        if ($journalId) {
            /**
             * @var Journal $journal
             * @var User $user
             * @var Role $role
             */
            $journal = $doctrine->getRepository('OjsJournalBundle:Journal')->find($journalId);
            // Check if the user is in journal already
            $journalUser = $doctrine->getRepository('OjsJournalBundle:JournalUser')->findOneBy(['user' => $user]);
            $journalUser = !$journalUser ? new JournalUser() : $journalUser;
            $journalUser->setUser($user);
            $journalUser->setJournal($journal);
            if ($journalUser->getRoles() && !$journalUser->getRoles()->contains($role)) {
                $journalUser->getRoles()->add($role);
            } else {
                $journalUser->setRoles(new ArrayCollection([$role]));
            }
            $em->persist($journalUser);
            $em->flush();
            return $this->redirectToRoute('ojs_journal_user_register_list');
        }
        /**
         * @var JournalUser[] $journalUsers
         * @var Journal[] $allJournals
         */
        $journalUsers = $doctrine->getRepository('OjsJournalBundle:JournalUser')->findBy(['user' => $user]);
        $allJournals = $this->getDoctrine()->getRepository('OjsJournalBundle:Journal')->findAll();
        $joinedJournals = [];
        $nonJoinedJournals = [];
        foreach ($journalUsers as $journalUser) {
            $joinedJournals[] = $journalUser->getJournal();
        }
        foreach ($allJournals as $journal) {
            if (!in_array($journal, $joinedJournals)) {
                $nonJoinedJournals[] = $journal;
            }
        }
        return $this->render('OjsJournalBundle:JournalUser:register.html.twig', ['joined' => $joinedJournals, 'nonJoined' => $nonJoinedJournals]);
    }