/** * @param string $permalink * @param PermalinkInterface $permalinkGenerator * * @return WorkInterface */ public function findOneByPermalink($permalink, PermalinkInterface $permalinkGenerator) { $repository = $this->getRepository(); $query = $repository->createQueryBuilder('p'); $urlParameters = $permalinkGenerator->getParameters($permalink); $parameters = array(); if (isset($urlParameters['slug'])) { $query->andWhere('p.slug = :slug'); $parameters['slug'] = $urlParameters['slug']; } if (isset($urlParameters['collection'])) { $pcqp = $this->getPublicationCollectionQueryParts($urlParameters['collection']); $parameters = array_merge($parameters, $pcqp['params']); $query->leftJoin('p.collection', 'c')->andWhere($pcqp['query']); } if (count($parameters) == 0) { return null; } $query->setParameters($parameters); $results = $query->getQuery()->getResult(); if (count($results) > 0) { return $results[0]; } return null; }
/** * {@inheritdoc} */ protected function configureSideMenu(MenuItemInterface $menu, $action, AdminInterface $childAdmin = null) { if (!$childAdmin && !in_array($action, array('edit'))) { return; } $admin = $this->isChild() ? $this->getParent() : $this; $id = $admin->getRequest()->get('id'); $menu->addChild($this->trans('sidemenu.link_edit_work'), array('uri' => $admin->generateUrl('edit', array('id' => $id)))); if ($this->hasSubject() && $this->getSubject()->getId() !== null) { $menu->addChild($this->trans('sidemenu.link_view_work'), array('uri' => $admin->getRouteGenerator()->generate('nz_portfolio_view', array('permalink' => $this->permalinkGenerator->generate($this->getSubject()))))); } }
/** * @param \Nz\PortfolioBundle\Model\WorkInterface * * @return string|Exception */ public function generatePermalink(WorkInterface $work) { return $this->permalinkGenerator->generate($work); }