- Модуль: 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;
}
}
}
}