public static function displayAd($params, &$tpl) { $place = $params['place']; $page = Display::get("adPage"); if (empty($page)) { return ""; } if (!self::$adsLoaded) { $page = Display::get("adPage"); $cache = Cacher::getInstance(); //get Ads ids on current page if (($data = $cache->load("adsOnPage" . $page)) === null) { $data = Model::factoryInstance("ad")->getAdsOnPage($page); $cache->save($data, null, null, array("adCriteria", "ad")); } self::$adsOnPage = $data; //load predefined settings if (($data = $cache->load("adsPredefinitions")) === null) { $data = Model::factoryInstance("ad")->getAllPredefinitions(); $cache->save($data, null, null, array("adCriteria", "ad")); } self::$predefinitions = $data; if (preg_match("#^(site|keyword|category|letter|tag)#", $page, $match)) { self::$predefinitionTypeName = $match[1]; } //load ads html content if (($data = $cache->load("adsAllCriterias")) === null) { $data = Model::factoryInstance("adCriteria")->getArray(null, "htmlContent"); $cache->save($data, null, null, array("adCriteria")); } self::$adCriterias = $data; self::$adsLoaded = true; self::$pageIsPredefinied = !empty(self::$adsOnPage['predefine']); } $htmlContent = ""; if (!empty(self::$adsOnPage['general']) && !empty(self::$adsOnPage[$place])) { $adCriterionId = self::$adsOnPage[$place]; if (!empty(self::$adCriterias[$adCriterionId])) { $htmlContent = self::$adCriterias[$adCriterionId]; } } else { if (self::$pageIsPredefinied && (!isset(self::$adsOnPage['general']) || self::$adsOnPage['general'] == 1)) { if (!empty(self::$predefinitions[self::$predefinitionTypeName][$place])) { $adCriterionId = self::$predefinitions[self::$predefinitionTypeName][$place]; if (!empty(self::$adCriterias[$adCriterionId])) { $htmlContent = self::$adCriterias[$adCriterionId]; } } } } return $htmlContent; }