• Модуль: statistic
  • Путь к файлу: ~/bitrix/modules/statistic/classes/mysql/page.php
  • Класс: CPage
  • Вызов: CPage::GetDynamicList
static function GetDynamicList($URL, $by = 's_date', $order = 'desc', $arFilter = [])
{
	$err_mess = "File: ".__FILE__."
Line: "; $DB = CDatabase::GetModuleConnection('statistic'); $arSqlSearch = Array(); $from_adv = ""; $where_adv = ""; $counter = "SUM(D.COUNTER)"; $enter_counter = "SUM(D.ENTER_COUNTER)"; $exit_counter = "SUM(if(D.EXIT_COUNTER>0,D.EXIT_COUNTER,0))"; if (is_array($arFilter)) { if ($arFilter["ADV"] <> '') { $from_adv = " , b_stat_page_adv A "; $where_adv = "and A.PAGE_ID = D.ID"; if ($arFilter["ADV_DATA_TYPE"]=="B") { $counter = "SUM(A.COUNTER_BACK)"; $enter_counter = "SUM(A.ENTER_COUNTER_BACK)"; $exit_counter = "SUM(if(A.EXIT_COUNTER_BACK>0,A.EXIT_COUNTER_BACK,0))"; } elseif ($arFilter["ADV_DATA_TYPE"]=="P") { $counter = "SUM(A.COUNTER)"; $enter_counter = "SUM(A.ENTER_COUNTER)"; $exit_counter = "SUM(if(A.EXIT_COUNTER>0,A.EXIT_COUNTER,0))"; } else { $counter = "SUM(A.COUNTER + A.COUNTER_BACK)"; $enter_counter = "SUM(A.ENTER_COUNTER + A.ENTER_COUNTER_BACK)"; $exit_counter = "SUM(if(A.EXIT_COUNTER>0,A.EXIT_COUNTER,0) + if(A.EXIT_COUNTER_BACK>0,A.EXIT_COUNTER_BACK,0))"; } } foreach ($arFilter as $key => $val) { if(is_array($val)) { if(count($val) <= 0) continue; } else { if( ((string)$val == '') || ($val === "NOT_REF") ) continue; } $match_value_set = array_key_exists($key."_EXACT_MATCH", $arFilter); $key = strtoupper($key); switch($key) { case "DATE1": if (CheckDateTime($val)) $arSqlSearch[] = "D.DATE_STAT>=".$DB->CharToDateFunction($val, "SHORT"); break; case "DATE2": if (CheckDateTime($val)) $arSqlSearch[] = "D.DATE_STAT<".$DB->CharToDateFunction($val, "SHORT")." + INTERVAL 1 DAY"; break; case "ADV": $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("A.ADV_ID",$val,$match); break; case "IS_DIR": $arSqlSearch[] = ($val=="Y") ? "D.DIR = 'Y'" : "D.DIR = 'N'"; break; } } } if ($by == "s_date") $strSqlOrder = "ORDER BY D.DATE_STAT"; else { $strSqlOrder = "ORDER BY D.DATE_STAT"; } if ($order != "asc") { $strSqlOrder .= " desc "; } $strSqlSearch = GetFilterSqlSearch($arSqlSearch); $strSql = " SELECT ".$DB->DateToCharFunction("D.DATE_STAT","SHORT")." DATE_STAT, DAYOFMONTH(D.DATE_STAT) DAY, MONTH(D.DATE_STAT) MONTH, YEAR(D.DATE_STAT) YEAR, $counter COUNTER, $enter_counter ENTER_COUNTER, $exit_counter EXIT_COUNTER FROM b_stat_page D $from_adv WHERE $strSqlSearch and D.URL_HASH = '".crc32ex($URL)."' $where_adv GROUP BY D.DATE_STAT $strSqlOrder "; $res = $DB->Query($strSql, false, $err_mess.__LINE__); return $res; }