• Модуль: mail
  • Путь к файлу: ~/bitrix/modules/mail/classes/general/mail.php
  • Класс: CMailFilterCondition
  • Вызов: CMailFilterCondition::GetList
static function GetList($arOrder=Array(), $arFilter=Array())
{
	global $DB;
	$strSql =
			"SELECT MFC.* ".
			"FROM b_mail_filter_cond MFC ";

	if(!is_array($arFilter))
		$arFilter = Array();
	$arSqlSearch = Array();
	$filter_keys = array_keys($arFilter);
	for($i = 0, $n = count($filter_keys); $i < $n; $i++)
	{
		$val = $arFilter[$filter_keys[$i]];
		if ($val == '') continue;
		$key = mb_strtoupper($filter_keys[$i]);
		switch($key)
		{
		case "TYPE":
		case "STRINGS":
		case "COMPARE_TYPE":
			$arSqlSearch[] = GetFilterQuery("MFC.".$key, $val);
			break;
		case "ID":
		case "FILTER_ID":
			$arSqlSearch[] = GetFilterQuery("MFC.".$key, $val, "N");
			break;
		}
	}

	$strSqlSearch = "";
	for($i = 0, $n = count($arSqlSearch); $i < $n; $i++)
	{
		if($arSqlSearch[$i] <> '')
			$strSqlSearch .= " AND  (".$arSqlSearch[$i].") ";
	}

	$arSqlOrder = Array();
	foreach($arOrder as $by=>$order)
	{
		$order = mb_strtolower($order);
		if ($order!="asc")
			$order = "desc".($DB->type == "ORACLE"?" NULLS LAST":"");
		else
			$order = "asc".($DB->type == "ORACLE"?" NULLS FIRST":"");

		switch(mb_strtoupper($by))
		{
			case "FILTER_ID":
			case "TYPE":
			case "STRINGS":
			case "COMPARE_TYPE":
				$arSqlOrder[] = " MFC.".$by." ".$order." ";
				break;
			default:
				$arSqlOrder[] = " MFC.ID ".$order." ";
		}
	}

	$strSqlOrder = "";
	$arSqlOrder = array_unique($arSqlOrder);
	DelDuplicateSort($arSqlOrder);

	for ($i = 0, $n = count($arSqlOrder); $i < $n; $i++)
	{
		if($i==0)
			$strSqlOrder = " ORDER BY ";
		else
			$strSqlOrder .= ",";

		$strSqlOrder .= $arSqlOrder[$i];
	}

	$strSql .= " WHERE 1=1 ".$strSqlSearch.$strSqlOrder;

	$res = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__); $res->is_filtered = (count($arSqlOrder)>0); return $res; }