public function show(Pap_Db_CachedBanner $cachedBanner) {
     try {
         $request = new Pap_Tracking_Request();
         $banner = $this->getBanner($cachedBanner->getBannerId(), $cachedBanner->getUserId(), $cachedBanner->getChannel());
         $req = new Pap_Tracking_BannerViewerRequest($banner->getBannerType());
         Gpf_Plugins_Engine::extensionPoint(self::EXT_POINT_NAME, $req);
         if($req->getViewer() != null) {
             $req->getViewer()->showBanner($request , $banner);
             return;
         }
         $this->prepareCachedBanner($banner, $cachedBanner);
         try {
             $cachedBanner->save();
         } catch (Gpf_DbEngine_Row_ConstraintException $e) {
             // cached banner was saved already by other script
         }
         if ($cachedBanner->getHeaders() != '') {
             header($cachedBanner->getHeaders(), true);
         }
         echo $cachedBanner->getCode();
     } catch (Exception $e) {
         $this->logMessage($e);
         echo $e;
     }
 }
 public function fillCachedBanner(Pap_Db_CachedBanner $cachedBanner, Pap_Common_User $user) {
     $this->parseRotatorBannerDescription();
     $bannerIdToShow = $this->getBannerIdToShow();
     foreach ($this->rotatedBanners as $row) {
         $bannerId = $row->get(Pap_Db_Table_BannersInRotators::ROTATED_BANNER_ID);
         $rank = $row->get(Pap_Db_Table_BannersInRotators::RANK);
         $banner = $this->bannerFactory->getBanner($bannerId);
         $banner->setParentBannerId($this->getId());
         $this->setBannerChannel($banner, $cachedBanner->getChannel());
         if ($bannerIdToShow == $bannerId) {
             $cachedBanner->setCode($banner->getCompleteCode($user, ''));
             $cachedBanner->setRank($rank);
             $cachedBanner->setValidFrom($row->get(Pap_Db_Table_BannersInRotators::VALID_FROM));
             $cachedBanner->setValidUntil($row->get(Pap_Db_Table_BannersInRotators::VALID_UNTIL));
             continue;
         }
         $rotCachedBanner = clone $cachedBanner;
         $rotCachedBanner->setValidFrom($row->get(Pap_Db_Table_BannersInRotators::VALID_FROM));
         $rotCachedBanner->setValidUntil($row->get(Pap_Db_Table_BannersInRotators::VALID_UNTIL));
         $rotCachedBanner->setCode($banner->getCompleteCode($user, ''));
         Pap_Tracking_BannerViewer::addJavascriptCode($rotCachedBanner);
         $rotCachedBanner->setRank($rank);
         try {
             $rotCachedBanner->save();
         } catch (Gpf_DbEngine_Row_ConstraintException $e) {
             // cached banner was saved already by other script
         }
     }
 }