Beispiel #1
0
 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;
 }