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 } } }