• Модуль: forum
  • Путь к файлу: ~/bitrix/modules/forum/classes/general/forum_new.php
  • Класс: CAllForumNew
  • Вызов: CAllForumNew::GetAccessPermsList
static function GetAccessPermsList($arOrder = array("ID"=>"ASC"), $arFilter = array())
{
	global $DB;
	$arSqlSearch = array();
	$strSqlSearch = "";
	$arSqlOrder = array();
	$strSqlOrder = "";
	$arFilter = (is_array($arFilter) ? $arFilter : array());

	foreach ($arFilter as $key => $val)
	{
		$key_res = CForumNew::GetFilterOperation($key);
		$key = mb_strtoupper($key_res["FIELD"]);
		$strNegative = $key_res["NEGATIVE"];
		$strOperation = $key_res["OPERATION"];

		switch ($key)
		{
			case "ID":
			case "FORUM_ID":
			case "GROUP_ID":
				if (intval($val)<=0)
					$arSqlSearch[] = ($strNegative=="Y"?"NOT":"")."(FP.".$key." IS NULL OR FP.".$key."<=0)";
				else
					$arSqlSearch[] = ($strNegative=="Y"?" FP.".$key." IS NULL OR NOT ":"")."FP.".$key." ".$strOperation." ".intval($val)." ";
				break;
			case "PERMISSION":
				if ($val == '')
					$arSqlSearch[] = ($strNegative=="Y"?"NOT":"")."(FP.".$key." IS NULL OR ".($DB->type == "MSSQL" ? "LEN" : "LENGTH")."(FP.".$key.")<=0)";
				else
					$arSqlSearch[] = ($strNegative=="Y"?" FP.".$key." IS NULL OR NOT ":"")."FP.".$key." ".$strOperation." '".$DB->ForSql($val)."' ";
				break;
		}
	}
	if (count($arSqlSearch) > 0)
		$strSqlSearch = " AND (".implode(" AND ", $arSqlSearch).") ";

	foreach ($arOrder as $by=>$order)
	{
		$by = mb_strtoupper($by);
		$order = mb_strtoupper($order);
		if ($order!="ASC") $order = "DESC";

		if ($by == "FORUM_ID") $arSqlOrder[] = " FP.FORUM_ID ".$order." ";
		elseif ($by == "GROUP_ID") $arSqlOrder[] = " FP.GROUP_ID ".$order." ";
		elseif ($by == "PERMISSION") $arSqlOrder[] = " FP.PERMISSION ".$order." ";
		else
		{
			$arSqlOrder[] = " FP.ID ".$order." ";
			$by = "ID";
		}
	}
	DelDuplicateSort($arSqlOrder);
	if (count($arSqlOrder) > 0)
		$strSqlOrder = " ORDER BY ".implode(", ", $arSqlOrder);

	$strSql =
		"SELECT FP.ID, FP.FORUM_ID, FP.GROUP_ID, FP.PERMISSION
		FROM b_forum_perms FP
		WHERE 1 = 1
		".$strSqlSearch."
		".$strSqlOrder;

	$db_res = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__); return $db_res; }