• Модуль: forum
  • Путь к файлу: ~/bitrix/modules/forum/classes/general/private_message.php
  • Класс: CALLForumPMFolder
  • Вызов: CALLForumPMFolder::GetList
static function GetList($arOrder = array("SORT" => "DESC", "TITLE"=>"DESC"), $arFilter, $bCnt=false)
{
	global $DB;

	$arSqlSearch = array();
	$sAddJoin = '';
	$filter_keys = (is_array($arFilter) ? array_keys($arFilter) : array());

	for($i = 0; $i < count($filter_keys); $i++)
	{
		$val = $arFilter[$filter_keys[$i]];
		$key = mb_strtoupper($filter_keys[$i]);
		switch($key)
		{
			case "USER_ID":
				$sAddJoin = "F.USER_ID=FPM.USER_ID AND ";
				$arSqlSearch[] = "F.USER_ID=".intval($val);
				break;
			case "ID":
			case "SORT":
				$arSqlSearch[] = "F.".$key."=".intval($val);
				break;
			case "TITLE":
				$arSqlSearch[] = "F.".$key."='".$DB->ForSQL($val)."'";
				break;
		}
	}

	$arOFields = array(
		"ID" => "F.ID",
		"USER_ID"	=> "F.USER_ID",
		"SORT"	=> "F.SORT",
		"TITLE"	=> "F.TITLE");
	$arSqlOrder = array();
	foreach($arOrder as $by => $order)
	{
		$by = mb_strtoupper($by);
		$order = mb_strtoupper($order);
		if(array_key_exists($by, $arOFields))
		{
			if ($order != "ASC")
			$order = "DESC".($DB->type=="ORACLE" ? " NULLS LAST" : "");
			else
			$order = "ASC".($DB->type=="ORACLE" ? " NULLS FIRST" : "");
			$arSqlOrder[] = $arOFields[$by]." ".$order;
		}
	}

	if (!$bCnt)
		$strSql =
		"SELECT F.ID, F.USER_ID, F.SORT, F.TITLE, COUNT(FPM.ID) AS CNT, COUNT(FPM1.ID) AS CNT_NEW ".
		"FROM b_forum_pm_folder F
		LEFT JOIN b_forum_private_message FPM ON(".$sAddJoin."F.ID = FPM.FOLDER_ID)
		LEFT JOIN b_forum_private_message FPM1 ON(FPM.ID = FPM1.ID AND FPM1.IS_READ != 'Y')";
	else
		$strSql =
		"SELECT COUNT(F.ID) AS CNT ".
		"FROM b_forum_pm_folder F ";

	$strSql .= (count($arSqlSearch)>0) ? " WHERE ".implode(" AND ", $arSqlSearch) : "";
	if(!$bCnt)
		$strSql .= " GROUP BY F.ID, F.USER_ID, F.SORT, F.TITLE";
	$strSql .= (count($arSqlOrder)>0) ? " ORDER BY ".implode(", ", $arSqlOrder) : "";
	$dbRes = $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__); return $dbRes; }