• Модуль: vote
  • Путь к файлу: ~/bitrix/modules/vote/classes/general/channel.php
  • Класс: CAllVoteChannel
  • Вызов: CAllVoteChannel::GetList
static function GetList($by = 's_id', $order = 'desc', $arFilter = [])
{
	$err_mess = (CVoteChannel::err_mess())."
Function: GetList
Line: "; global $DB; $arSqlSearch = Array(); $left_join = ""; if (is_array($arFilter)) { 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 "ID": $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("C.ID",$val,$match); break; case "SITE_ID": case "SITE": if (is_array($val)) $val = implode(" | ", $val); $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("CS.SITE_ID", $val, $match); $left_join = "LEFT JOIN b_vote_channel_2_site CS ON (C.ID = CS.CHANNEL_ID)"; break; case "TITLE": $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("C.TITLE",$val,$match); break; case "SID": case "SYMBOLIC_NAME": $match = ($arFilter[$key."_EXACT_MATCH"]=="Y" && $match_value_set) ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("C.SYMBOLIC_NAME",$val,$match); break; case "HIDDEN": case "ACTIVE": $arSqlSearch[] = ($val=="Y") ? "C.".$key."='Y'" : "C.".$key."='N'"; break; case "FIRST_SITE_ID": case "LID": $match = ($arFilter[$key."_EXACT_MATCH"]=="N" && $match_value_set) ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("C.FIRST_SITE_ID",$val,$match); break; } } } if ($by == "s_id") $strSqlOrder = "ORDER BY C.ID"; elseif ($by == "s_timestamp") $strSqlOrder = "ORDER BY C.TIMESTAMP_X"; elseif ($by == "s_c_sort") $strSqlOrder = "ORDER BY C.C_SORT"; elseif ($by == "s_active") $strSqlOrder = "ORDER BY C.ACTIVE"; elseif ($by == "s_hidden") $strSqlOrder = "ORDER BY C.HIDDEN"; elseif ($by == "s_symbolic_name") $strSqlOrder = "ORDER BY C.SYMBOLIC_NAME"; elseif ($by == "s_title") $strSqlOrder = "ORDER BY C.TITLE "; elseif ($by == "s_votes") $strSqlOrder = "ORDER BY VOTES"; else { $strSqlOrder = "ORDER BY C.ID"; } if ($order != "asc") { $strSqlOrder .= " desc "; } $strSqlSearch = GetFilterSqlSearch($arSqlSearch); $strSql = " SELECT CC.*, C.*, C.FIRST_SITE_ID LID, C.SYMBOLIC_NAME SID, ".$DB->DateToCharFunction("C.TIMESTAMP_X")." TIMESTAMP_X FROM ( SELECT C.ID, count(V.ID) VOTES FROM b_vote_channel C LEFT JOIN b_vote V ON (V.CHANNEL_ID = C.ID) ".$left_join." WHERE ".$strSqlSearch." GROUP BY C.ID) CC INNER JOIN b_vote_channel C ON (C.ID = CC.ID) ".$strSqlOrder; if (VOTE_CACHE_TIME===false || mb_strpos($_SERVER['REQUEST_URI'], '/bitrix/admin/') !== false) { $res = $DB->Query($strSql, false, $err_mess.__LINE__); return $res; } else { global $CACHE_MANAGER; $md5 = md5($strSql); $arCache = array(); if($CACHE_MANAGER->Read(VOTE_CACHE_TIME, "b_vote_channel_".$md5, "b_vote_channel")) { $arCache = $CACHE_MANAGER->Get("b_vote_channel_".$md5); } else { $res = $DB->Query($strSql, false, $err_mess.__LINE__); while($ar = $res->Fetch()) $arCache[] = $ar; $CACHE_MANAGER->Set("b_vote_channel_".$md5, $arCache); } $r = new CDBResult(); $r->InitFromArray($arCache); unset($arCache); return $r; } }