• Модуль: forum
  • Путь к файлу: ~/bitrix/modules/forum/classes/general/user.php
  • Класс: CAllForumSubscribe
  • Вызов: CAllForumSubscribe::GetList
static function GetList($arOrder = array("ID"=>"ASC"), $arFilter = array(), $arAddParams = array())
{
	global $DB;
	$arSqlSearch = Array();
	$arFilter = (is_array($arFilter) ? $arFilter : array());
	$arAddParams = (is_array($arAddParams) ? $arAddParams : 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 "USER_ID":
			case "FORUM_ID":
			case "TOPIC_ID":
			case "LAST_SEND":
				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 "TOPIC_ID_OR_NULL":
				$arSqlSearch[] = "(FP.TOPIC_ID = ".intval($val)." OR FP.TOPIC_ID = 0 OR FP.TOPIC_ID IS NULL)";
				break;
			case "NEW_TOPIC_ONLY":
				if ($val == '')
					$arSqlSearch[] = ($strNegative=="Y"?"NOT":"")."(FP.NEW_TOPIC_ONLY IS NULL)";
				else
					$arSqlSearch[] = ($strNegative=="Y"?" FP.NEW_TOPIC_ONLY IS NULL OR NOT ":"")."(FP.NEW_TOPIC_ONLY ".$strOperation." '".$DB->ForSql($val)."' )";
				break;
			case "SOCNET_GROUP_ID":
				if($val>0)
					$arSqlSearch[] = "FP.SOCNET_GROUP_ID=".intval($val);
				else
					$arSqlSearch[] = "FP.SOCNET_GROUP_ID IS NULL";
				break;
			case "LAST_SEND_OR_NULL":
				$arSqlSearch[] = "(FP.LAST_SEND IS NULL OR FP.LAST_SEND = 0 OR FP.LAST_SEND < ".intval($val).")";
				break;
		}
	}

	$strSqlSearch = (empty($arSqlSearch) ? "" : " AND (".implode(") AND (", $arSqlSearch).") ");

	$iCnt = 0;
	if (is_set($arAddParams, "bDescPageNumbering") || is_set($arAddParams, "nCount"))
	{
		$strSql = "SELECT COUNT(FP.ID) AS CNT FROM b_forum_subscribe FP WHERE 1 = 1 ".$strSqlSearch;
		$db_res = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__); if ($ar_res = $db_res->Fetch()) $iCnt = intval($ar_res["CNT"]); if (is_set($arAddParams, "nCount")) return $iCnt; } $strSql = "SELECT FP.ID, FP.USER_ID, FP.FORUM_ID, FP.TOPIC_ID, FP.LAST_SEND, FP.NEW_TOPIC_ONLY, FP.SITE_ID, ". " ".$DB->DateToCharFunction("FP.START_DATE", "FULL")." as START_DATE ". "FROM b_forum_subscribe FP ". "WHERE 1 = 1 ". " ".$strSqlSearch." "; $arSqlOrder = Array(); 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 == "USER_ID") $arSqlOrder[] = " FP.USER_ID ".$order." "; elseif ($by == "TOPIC_ID") $arSqlOrder[] = " FP.TOPIC_ID ".$order." "; elseif ($by == "NEW_TOPIC_ONLY") $arSqlOrder[] = " FP.NEW_TOPIC_ONLY ".$order." "; elseif ($by == "START_DATE") $arSqlOrder[] = " FP.START_DATE ".$order." "; else { $arSqlOrder[] = " FP.ID ".$order." "; $by = "ID"; } } DelDuplicateSort($arSqlOrder); $strSqlOrder = (empty($arSqlOrder) ? "" : " ORDER BY ".implode(", ", $arSqlOrder)); $strSql .= $strSqlOrder.($arAddParams["nTopCount"] > 0 ? "nLIMIT 0,".intval($arAddParams["nTopCount"]) : ""); if ($arAddParams["nTopCount"] <= 0 && is_set($arAddParams, "bDescPageNumbering")) { $db_res = new CDBResult(); $db_res->NavQuery($strSql, $iCnt, $arAddParams); } else { $db_res = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__); } return $db_res; }