Ojs\JournalBundle\Controller\ArticleSubmissionController::indexAction PHP Метод

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

Lists all new Article submissions entities.
public indexAction ( Request $request, boolean $all = false ) : RedirectResponse | Response
$request Symfony\Component\HttpFoundation\Request
$all boolean
Результат Symfony\Component\HttpFoundation\RedirectResponse | Symfony\Component\HttpFoundation\Response
    public function indexAction(Request $request, $all = false)
    {
        $translator = $this->get('translator');
        /** @var Journal $currentJournal */
        $currentJournal = $this->get('ojs.journal_service')->getSelectedJournal();
        if ($all && !$this->isGranted('VIEW', $currentJournal, 'articles') || !$all && !$this->isGranted('CREATE', $currentJournal, 'articles')) {
            return $this->redirect($this->generateUrl('ojs_user_index'));
        }
        $user = $this->getUser();
        $source1 = new Entity('OjsJournalBundle:Article', 'submission');
        $source2 = new Entity('OjsJournalBundle:Article', 'submission');
        $source1TableAlias = $source1->getTableAlias();
        $source2TableAlias = $source2->getTableAlias();
        $source1->manipulateQuery(function (QueryBuilder $qb) use($source1TableAlias, $user, $currentJournal, $all) {
            $qb->andWhere($source1TableAlias . '.status IN (:notDraftStatuses)')->setParameter('notDraftStatuses', [ArticleStatuses::STATUS_REJECTED, ArticleStatuses::STATUS_PUBLISH_READY, ArticleStatuses::STATUS_INREVIEW, ArticleStatuses::STATUS_PUBLISHED]);
            if (!$all) {
                $qb->andWhere($source1TableAlias . '.submitterUser = :user')->setParameter('user', $user);
            }
            return $qb;
        });
        $source2->manipulateQuery(function (QueryBuilder $qb) use($source2TableAlias, $user, $currentJournal, $all) {
            $qb->andWhere($source2TableAlias . '.status = :status')->setParameter('status', ArticleStatuses::STATUS_NOT_SUBMITTED);
            if (!$all) {
                $qb->andWhere($source2TableAlias . '.submitterUser = :user')->setParameter('user', $user);
            }
        });
        $gridManager = $this->get('grid.manager');
        $submissionsGrid = $gridManager->createGrid('submission');
        $drafts = $gridManager->createGrid('drafts');
        $source1->manipulateRow(function (Row $row) use($translator, $currentJournal) {
            /** @var Article $entity */
            $entity = $row->getEntity();
            $entity->setDefaultLocale($currentJournal->getMandatoryLang()->getCode());
            $row->setField('status', $translator->trans($entity->getStatusText()));
            $row->setField('title', $entity->getTitle());
            return $row;
        });
        $source2->manipulateRow(function (Row $row) use($translator, $request) {
            $entity = $row->getEntity();
            /** @var Article $entity */
            $entity->setDefaultLocale($request->getDefaultLocale());
            $row->setField('status', $translator->trans($entity->getStatusText()));
            $row->setField('title', $entity->getTitle());
            return $row;
        });
        $submissionsGrid->setSource($source1);
        $drafts->setSource($source2);
        /** @var GridAction $gridAction */
        $gridAction = $this->get('grid_action');
        $rowAction = [];
        $actionColumn = new ActionsColumn("actions", 'actions');
        $rowAction[] = $gridAction->submissionResumeAction('ojs_journal_submission_edit', ['journalId' => $currentJournal->getId(), 'id']);
        $rowAction[] = $gridAction->submissionCancelAction('ojs_journal_submission_cancel', ['journalId' => $currentJournal->getId(), 'id']);
        $actionColumn->setRowActions($rowAction);
        $drafts->addColumn($actionColumn);
        $data = ['page' => 'submission', 'submissions' => $submissionsGrid, 'drafts' => $drafts, 'all' => $all];
        return $gridManager->getGridManagerResponse('OjsJournalBundle:ArticleSubmission:index.html.twig', $data);
    }