• Модуль: statistic
  • Путь к файлу: ~/bitrix/modules/statistic/classes/general/adv.php
  • Класс: CAllAdv
  • Вызов: CAllAdv::SetByReferer
static function SetByReferer($referer1, $referer2, &$arrADV, &$ref1, &$ref2)
{
	$err_mess = "File: ".__FILE__."
Line: "; $DB = CDatabase::GetModuleConnection('statistic'); // lookup campaign with referer1 and referer2 $referer1 = trim($referer1); $referer1_sql = $referer1 <> ''? "REFERER1='".$DB->ForSql($referer1, 255)."'": "(REFERER1 is null or ".$DB->Length("REFERER1")."=0)"; $referer2 = trim($referer2); $referer2_sql = $referer2 <> ''? "REFERER2='".$DB->ForSql($referer2, 255)."'": "(REFERER2 is null or ".$DB->Length("REFERER2")."=0)"; $strSql = " SELECT ID, REFERER1, REFERER2 FROM b_stat_adv WHERE ".$referer1_sql." and ".$referer2_sql." "; $w = $DB->Query($strSql, false, $err_mess.__LINE__); $found = false; while ($wr = $w->Fetch()) { $found = true; // return with parameters $arrADV[] = intval($wr["ID"]); $ref1 = $wr["REFERER1"]; $ref2 = $wr["REFERER2"]; } if(!$found) { $NA = ""; if(COption::GetOptionString("statistic", "ADV_NA") == "Y") { $NA_1 = COption::GetOptionString("statistic", "AVD_NA_REFERER1"); $NA_2 = COption::GetOptionString("statistic", "AVD_NA_REFERER2"); if (($NA_1 <> '' || $NA_2 <> '') && $referer1==$NA_1 && $referer2==$NA_2) $NA = "Y"; } if((COption::GetOptionString("statistic", "ADV_AUTO_CREATE") == "Y") || ($NA == "Y")) { if(COption::GetOptionString("statistic", "REFERER_CHECK") == "Y") { $bGoodR = preg_match("/^([0-9A-Za-z_:;.,-])*$/", $referer1); if($bGoodR) $bGoodR = preg_match("/^([0-9A-Za-z_:;.,-])*$/", $referer2); } else { $bGoodR = true; } if($bGoodR) { // add new advertising campaign $arFields = Array( "REFERER1" => $referer1 <> '' ? "'".$DB->ForSql($referer1, 255)."'" : "null", "REFERER2" => $referer2 <> '' ? "'".$DB->ForSql($referer2, 255)."'" : "null", "DATE_FIRST" => $DB->GetNowFunction(), "DATE_LAST" => $DB->GetNowFunction(), ); $arrADV[] = $DB->Insert("b_stat_adv", $arFields, $err_mess.__LINE__); $ref1 = $referer1; $ref2 = $referer2; } } } }