Newscoop\Services\IssueService::issueResolver PHP Method

issueResolver() public method

{@inheritDoc}
public issueResolver ( Request $request )
$request Symfony\Component\HttpFoundation\Request
    public function issueResolver(Request $request)
    {
        $uriParts = explode('/', $request->getRequestUri());
        $uriPartsCount = count(array_filter($uriParts));
        $issue = null;
        $publication = $this->publicationService->getPublication();
        if ($publication && $uriPartsCount >= 2 && $uriPartsCount <= 5) {
            $cacheKey = $this->cacheService->getCacheKey(array('resolver', $publication->getId(), $uriParts[1], $uriParts[2]), 'issue');
            if ($this->cacheService->contains($cacheKey)) {
                $issue = $this->cacheService->fetch($cacheKey);
            } else {
                $issue = $this->em->getRepository('Newscoop\\Entity\\Issue')->getIssue($uriParts[1], $publication, $uriParts[2])->getOneOrNullResult();
                $this->cacheService->save($cacheKey, $issue);
            }
            if ($issue) {
                $this->issueMetadata = array('id' => $issue->getId(), 'number' => $issue->getNumber(), 'name' => $issue->getName(), 'shortName' => $issue->getShortName(), 'code_default_language' => $issue->getLanguage()->getCode(), 'id_default_language' => $issue->getLanguageId());
                $request->attributes->set('_newscoop_issue_metadata', $this->issueMetadata);
                $this->setIssue($issue);
                return $issue;
            }
        }
        return $this->getLatestPublishedIssue();
    }

Usage Example

Exemplo n.º 1
0
 /**
  * Resolve issue on request
  *
  * @param GetResponseEvent $event GetResponseEvent event
  *
  * @return void
  */
 public function onRequest(GetResponseEvent $event)
 {
     $onAdminInterface = strpos($event->getRequest()->getRequestUri(), '/admin');
     if ($onAdminInterface === false && $event->getRequest()->get('_route') != 'newscoop_get_img') {
         $this->issueService->issueResolver($event->getRequest());
     }
 }