• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/classes/mysql/user.php
  • Класс: CGroup
  • Вызов: CGroup::GetList
static function GetList(&$by, &$order, $arFilter=Array(), $SHOW_USERS_AMOUNT="N")
{
	global $DB;

	$err_mess = (CGroup::err_mess())."
Function: GetList
Line: "; $arSqlSearch = $arSqlSearch_h = array(); $strSqlSearch_h = ""; 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; } $key = mb_strtoupper($key); $match_value_set = array_key_exists($key."_EXACT_MATCH", $arFilter); switch($key) { case "ID": $match = ($match_value_set && $arFilter[$key."_EXACT_MATCH"]=="N") ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("G.ID", $val, $match); break; case "TIMESTAMP_1": $arSqlSearch[] = "G.TIMESTAMP_X >= FROM_UNIXTIME('".MkDateTime(FmtDate($val,"D.M.Y"),"d.m.Y")."')"; break; case "TIMESTAMP_2": $arSqlSearch[] = "G.TIMESTAMP_X <= FROM_UNIXTIME('".MkDateTime(FmtDate($val,"D.M.Y")." 23:59:59","d.m.Y")."')"; break; case "ACTIVE": $arSqlSearch[] = ($val=="Y") ? "G.ACTIVE='Y'" : "G.ACTIVE='N'"; break; case "ADMIN": if(COption::GetOptionString("main", "controller_member", "N") == "Y" && COption::GetOptionString("main", "~controller_limited_admin", "N") == "Y") { if($val=="Y") $arSqlSearch[] = "G.ID=0"; break; } else $arSqlSearch[] = ($val=="Y") ? "G.ID=1" : "G.ID>1"; break; case "NAME": $match = ($match_value_set && $arFilter[$key."_EXACT_MATCH"]=="Y") ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("G.NAME", $val, $match); break; case "STRING_ID": $match = ($match_value_set && $arFilter[$key."_EXACT_MATCH"]=="N") ? "Y" : "N"; $arSqlSearch[] = GetFilterQuery("G.STRING_ID", $val, $match); break; case "DESCRIPTION": $match = ($match_value_set && $arFilter[$key."_EXACT_MATCH"]=="Y") ? "N" : "Y"; $arSqlSearch[] = GetFilterQuery("G.DESCRIPTION", $val, $match); break; case "USERS_1": $SHOW_USERS_AMOUNT="Y"; $arSqlSearch_h[] = "USERS>=".intval($val); break; case "USERS_2": $SHOW_USERS_AMOUNT="Y"; $arSqlSearch_h[] = "USERS<=".intval($val); break; case "ANONYMOUS": if($val == 'Y' || $val == 'N') $arSqlSearch[] = "G.ANONYMOUS='".$val."'"; break; } } foreach($arSqlSearch_h as $condition) $strSqlSearch_h .= " and (".$condition.") "; } if(mb_strtolower($by) == "id") $strSqlOrder = " ORDER BY G.ID "; elseif(mb_strtolower($by) == "active") $strSqlOrder = " ORDER BY G.ACTIVE "; elseif(mb_strtolower($by) == "timestamp_x") $strSqlOrder = " ORDER BY G.TIMESTAMP_X "; elseif(mb_strtolower($by) == "c_sort") $strSqlOrder = " ORDER BY G.C_SORT "; elseif(mb_strtolower($by) == "sort") $strSqlOrder = " ORDER BY G.C_SORT, G.NAME, G.ID "; elseif(mb_strtolower($by) == "name") $strSqlOrder = " ORDER BY G.NAME "; elseif(mb_strtolower($by) == "string_id") $strSqlOrder = " ORDER BY G.STRING_ID "; elseif(mb_strtolower($by) == "description") $strSqlOrder = " ORDER BY G.DESCRIPTION "; elseif(mb_strtolower($by) == "anonymous") $strSqlOrder = " ORDER BY G.ANONYMOUS "; elseif(mb_strtolower($by) == "dropdown") $strSqlOrder = " ORDER BY C_SORT, NAME "; elseif(mb_strtolower($by) == "users") { $strSqlOrder = " ORDER BY USERS "; $SHOW_USERS_AMOUNT="Y"; } else { $strSqlOrder = " ORDER BY G.C_SORT "; $by = "c_sort"; } if(mb_strtolower($order) == "desc") { $strSqlOrder .= " desc "; $order = "desc"; } else { $strSqlOrder .= " asc "; $order = "asc"; } $str_USERS = $str_TABLE = ""; if($SHOW_USERS_AMOUNT=="Y") { $str_USERS = "count(distinct U.USER_ID) USERS,"; $str_TABLE = "LEFT JOIN b_user_group U ON (U.GROUP_ID=G.ID AND ((U.DATE_ACTIVE_FROM IS NULL) OR (U.DATE_ACTIVE_FROM <= ".$DB->CurrentTimeFunction().")) AND ((U.DATE_ACTIVE_TO IS NULL) OR (U.DATE_ACTIVE_TO >= ".$DB->CurrentTimeFunction().")))"; } $strSqlSearch = GetFilterSqlSearch($arSqlSearch); $strSql = " SELECT G.ID, G.ACTIVE, G.C_SORT, G.ANONYMOUS, G.NAME, G.DESCRIPTION, G.STRING_ID, ".$str_USERS." G.ID REFERENCE_ID, concat(G.NAME, ' [', G.ID, ']') REFERENCE, ".$DB->DateToCharFunction("G.TIMESTAMP_X")." TIMESTAMP_X FROM b_group G ".$str_TABLE." WHERE ".$strSqlSearch." GROUP BY G.ID, G.ACTIVE, G.C_SORT, G.TIMESTAMP_X, G.ANONYMOUS, G.NAME, G.STRING_ID, G.DESCRIPTION HAVING 1=1 ".$strSqlSearch_h." ".$strSqlOrder; $res = $DB->Query($strSql, false, $err_mess.__LINE__); $res->is_filtered = (IsFiltered($strSqlSearch) || $strSqlSearch_h <> ''); return $res; }