/** * {@inheritDoc} */ public function getThemePath() { $issue = $this->issueService->getIssue(); if (!$issue) { return; } $languageId = $issue->getLanguageId(); $publication = $this->publicationService->getPublication(); $cacheKeyThemePath = $this->cacheService->getCacheKey(array('getThemePath', $languageId, $publication->getId(), $issue->getNumber()), 'issue'); $themePath = null; $webOutput = null; $outSetIssues = null; if ($this->cacheService->contains($cacheKeyThemePath)) { $themePath = $this->cacheService->fetch($cacheKeyThemePath); } else { $cacheKeyWebOutput = $this->cacheService->getCacheKey(array('OutputService', 'Web'), 'outputservice'); if ($this->cacheService->contains($cacheKeyWebOutput)) { $webOutput = $this->cacheService->fetch($cacheKeyWebOutput); } else { $webOutput = $this->findByName('Web'); $this->cacheService->save($cacheKeyWebOutput, $webOutput); } $outSetIssues = $this->findByIssueAndOutput($issue->getId(), $webOutput); if (!is_null($outSetIssues)) { $themePath = $outSetIssues->getThemePath()->getPath(); } $this->cacheService->save($cacheKeyThemePath, $themePath); } return $themePath; }
public function let(IssueServiceInterface $issueService, Issue $issue, CacheService $cacheService, PublicationService $publicationService, Publication $publication, EntityManager $em, Registry $doctrine, EntityRepository $repository, Output $output, OutputSettingsIssue $issueOutput) { $issueService->getIssue()->willReturn($issue); $publicationService->getPublication()->willReturn($publication); $doctrine->getManager()->willReturn($em); $em->getRepository(Argument::exact('Newscoop\\Entity\\Output'))->willReturn($repository); $repository->findBy(array('name' => 'Web'))->willReturn(array($output)); $em->getRepository(Argument::exact('Newscoop\\Entity\\Output\\OutputSettingsIssue'))->willReturn($repository); $repository->findBy(array('issue' => 1, 'output' => 1))->willReturn(array($issueOutput)); $issue->getId()->willReturn(1); $issue->getNumber()->willReturn(10); $issue->getName()->willReturn("May 2014"); $issue->getShortName()->willReturn("may2014"); $issue->getLanguageId()->willReturn(1); $output->getId()->willReturn(1); $output->getName()->willReturn('Web'); $this->beConstructedWith($issueService, $cacheService, $publicationService, $em); }