public function getCode($bannerType, $place = null, $referenceId = null) { $bannerTag = ''; if ($place == null) { $place = $this->place; } // If Place is not defined, Ad can't be shown if (null === $place) { return $bannerTag; } if ($referenceId === false) { $referenceId = null; } elseif ($referenceId == null) { $referenceId = $this->referenceId; } // Get URL $currentUrl = $this->requestStack->getMasterRequest()->getPathInfo(); // Get resource $event = new ResourceBannerEvent(); $this->dispatcher->dispatch(ResourceBannerEvent::NAME, $event); if ($event->isAvailable()) { $resource = $event->getResource(); $key = 'Banner:' . $resource . ':' . $place . ':' . $bannerType . ':' . $this->getReferenceId($place, $referenceId) . ':' . sha1($currentUrl); $bannerTag = $this->memcache->get($key); if ($this->memcache->notFound()) { // Create Banner Tag $bannerTag = new BannerTag(); $bannerTag->setResource($resource)->setBannerType($bannerType)->setPlace($place)->setReferenceId($this->getReferenceId($place, $referenceId)); if ($this->isPageAvailable($bannerTag, $currentUrl)) { return '<!-- BANNER BEGIN - This page has it\'s Ads Disabled - BANNER END -->'; } // Fill Banner Tag $this->fillBannerTag($bannerTag, $currentUrl); // If Banner is Empty, process with the places fallback if ($bannerTag->isEmpty()) { $bannerTag->setReferenceId(null); $this->processFallbacks($bannerTag, $currentUrl, $referenceId); } // Save on Memcache $this->memcache->set($key, $bannerTag, 60); } } return $bannerTag; }
public function getCode($bannerType, $place = null, $referenceId = null) { $bannerRepository = $this->doctrine->getRepository('AciliaBannerBundle:Banner'); $bannerTag = ''; if ($place == null) { $place = $this->place; } // If Place is not defined, Ad can't be shown if (null === $place) { return $bannerTag; } if ($referenceId === false) { $referenceId = null; } elseif ($referenceId == null) { $referenceId = $this->referenceId; } $context = $this->getContext(); // Get URL $currentUrl = $this->requestStack->getMasterRequest()->getPathInfo(); // Get resource and context $event = new ResourceBannerEvent(); $this->dispatcher->dispatch(ResourceBannerEvent::NAME, $event); if ($event->isAvailable()) { $resource = $event->getResource(); // Overwrite ad context if required if ($event->getContext() != null) { $context = $event->getContext(); } // Banner identifier key $key = 'Banner:' . $resource . ':' . $context . ':' . $place . ':' . $bannerType . ':' . $referenceId . ':' . sha1($currentUrl); if (isset($this->instances[$key])) { return $this->instances[$key]; } $bannerTag = $this->memcache->get($key); if ($this->memcache->notFound()) { // Create Banner Tag $bannerTag = new BannerTag(); $bannerTag->setResource($resource)->setBannerType($bannerType)->setPlace($place)->setContext($context)->setReferenceId($referenceId)->setCacheKey($key); if ($bannerRepository->isPageAvailable($bannerTag, $currentUrl, $this->getType('none'))) { return '<!-- BANNER BEGIN - This page has it\'s Ads Disabled - BANNER END -->'; } // Fill Banner Tag $bannerRepository->fillBannerTag($bannerTag, $currentUrl, $this->getType($bannerTag->getBannerType())); $fallbacks = $this->fallbacks; while ($bannerTag->isEmpty() && count($fallbacks) > 0) { $fallback = array_slice($fallbacks, 0, 1); array_shift($fallbacks); $place = key($fallback); $referenceId = $fallback[$place]; $bannerTag->setPlace($place)->setReferenceId($referenceId); // Fill Banner Tag $bannerRepository->fillBannerTag($bannerTag, $currentUrl, $this->getType($bannerTag->getBannerType())); } // Save on Memcache and internally $this->instances[$key] = $bannerTag; $this->memcache->set($key, $bannerTag, 60); } } return $bannerTag; }