public static function Set_Adv() { $err_mess = "File: ".__FILE__."<br>Line: "; stat_session_register("SESS_ADV_ID"); // ID рекламной кампании $DB = CDatabase::GetModuleConnection('statistic'); // если это начало сессии if (intval($_SESSION["SESS_SESSION_ID"])<=0 && intval($_SESSION["SESS_ADV_ID"])<=0) { $arrADV = array(); // массив рекламных кампаний // проверяем страницу на которую пришел посетитель $page_to = __GetFullRequestUri(); CAdv::SetByPage($page_to, $arrADV, $ref1, $ref2, "TO"); // если посетитель пришел с ссылающегося сайта то if (__GetReferringSite($PROT, $SN, $SN_WithoutPort, $PAGE_FROM)) { $site_name = $PROT.$SN; // проверяем поисковики $strSql = " SELECT A.REFERER1, A.REFERER2, S.ADV_ID FROM b_stat_adv A, b_stat_adv_searcher S, b_stat_searcher_params P WHERE S.ADV_ID = A.ID and P.SEARCHER_ID = S.SEARCHER_ID and upper('".$DB->ForSql(trim($site_name),2000)."') like ".$DB->Concat("'%'", "upper(P.DOMAIN)", "'%'")." "; $w = $DB->Query($strSql, false, $err_mess.__LINE__); while ($wr=$w->Fetch()) { $ref1 = $wr["REFERER1"]; $ref2 = $wr["REFERER2"]; $arrADV[] = intval($wr["ADV_ID"]); } // проверяем ссылающиеся страницы $site_name = $PROT.$SN.$PAGE_FROM; CAdv::SetByPage($site_name, $arrADV, $ref1, $ref2, "FROM"); } // если гость пришел с referer1, либо referer2 то if (strlen($_SESSION["referer1"])>0 || strlen($_SESSION["referer2"])>0) { CAdv::SetByReferer(trim($_SESSION["referer1"]), trim($_SESSION["referer2"]), $arrADV, $ref1, $ref2); } //Handle Openstat if enabled if(COption::GetOptionString("statistic", "OPENSTAT_ACTIVE") === "Y" && strlen($_REQUEST["_openstat"])>0) { $openstat = $_REQUEST["_openstat"]; if(strpos($openstat, ";")===false) $openstat = base64_decode($openstat); $openstat = explode(";", $openstat); CAdv::SetByReferer( trim(str_replace( array("#service-name#", "#campaign-id#", "#ad-id#", "#source-id#"), $openstat, COption::GetOptionString("statistic", "OPENSTAT_R1_TEMPLATE") )), trim(str_replace( array("#service-name#", "#campaign-id#", "#ad-id#", "#source-id#"), $openstat, COption::GetOptionString("statistic", "OPENSTAT_R2_TEMPLATE") )), $arrADV, $ref1, $ref2 ); } $arrADV = array_unique($arrADV); // если было выявлено более одной рекламной кампании подходящей под условия то if (count($arrADV)>1) { // выберем рекламную кампанию по наивысшему приоритету (либо по наивысшему ID) $str = implode(",",$arrADV); $strSql = "SELECT ID, REFERER1, REFERER2 FROM b_stat_adv WHERE ID in ($str) ORDER BY PRIORITY desc, ID desc"; $z = $DB->Query($strSql, false, $err_mess.__LINE__); $zr = $z->Fetch(); $_SESSION["SESS_ADV_ID"] = intval($zr["ID"]); $_SESSION["referer1"] = $zr["REFERER1"]; $_SESSION["referer2"] = $zr["REFERER2"]; } else { list(,$value) = each($arrADV); $_SESSION["SESS_ADV_ID"] = intval($value); $_SESSION["referer1"] = $ref1; $_SESSION["referer2"] = $ref2; } } if (intval($_SESSION["SESS_ADV_ID"])>0) $_SESSION["SESS_LAST_ADV_ID"] = $_SESSION["SESS_ADV_ID"]; $_SESSION["SESS_LAST_ADV_ID"] = intval($_SESSION["SESS_LAST_ADV_ID"]); }