• Модуль: vote
  • Путь к файлу: ~/bitrix/modules/vote/classes/general/answer.php
  • Класс: CAllVoteAnswer
  • Вызов: CAllVoteAnswer::GetList
static function GetList($QUESTION_ID, $by="s_c_sort", $order="asc", $arFilter=array(), $arAddParams = array())
{
	global $DB;
	$QUESTION_ID = intval($QUESTION_ID);
	$arSqlSearch = Array();
	$arFilter = (is_array($arFilter) ? $arFilter : array());
	foreach ($arFilter as $key => $val)
	{
		if(empty($val) || $val === "NOT_REF")
			continue;
		$key = strtoupper($key);
		switch($key)
		{
			case "ID":
			case "FIELD_TYPE":
				$match = ($arFilter[$key."_EXACT_MATCH"]=="N" ? "Y" : "N");
				$arSqlSearch[] = GetFilterQuery("A.".$key, $val, $match);
				break;
			case "MESSAGE":
			case "FIELD_PARAM":
				$match = ($arFilter[$key."_EXACT_MATCH"]=="Y" ? "N" : "Y");
				$arSqlSearch[] = GetFilterQuery("A.".$key, $val, $match);
				break;
			case "ACTIVE":
				$arSqlSearch[] = ($val=="Y") ? "A.ACTIVE='Y'" : "A.ACTIVE='N'";
				break;
		}
	}
	
	$order = ($order!="desc" ? "asc" : "desc");
	$by = (($by == "s_id" || $by == "s_counter") ? $by : "s_c_sort");
	if ($by == "s_id")				$strSqlOrder = " ORDER BY A.ID";
	elseif ($by == "s_counter")		$strSqlOrder = " ORDER BY A.COUNTER";
	else							$strSqlOrder = " ORDER BY A.C_SORT";
	$strSqlOrder .= " ".$order;
	$strSqlSearch = GetFilterSqlSearch($arSqlSearch);
	$strSqlFrom = "FROM b_vote_answer A WHERE ".$strSqlSearch." and A.QUESTION_ID=".$QUESTION_ID."";
	$strSql = "SELECT A.* ".$strSqlFrom.$strSqlOrder;

	if ($arAddParams["nTopCount"] > 0)
	{
		$arAddParams["nTopCount"] = intval($arAddParams["nTopCount"]);
		if ($DB->type=="MSSQL")
			$strSql = "SELECT TOP ".$arAddParams["nTopCount"]." A.* ".$strSqlFrom.$strSqlOrder;
		else if ($DB->type=="ORACLE")
			$strSql = "SELECT * FROM(".$strSql.") WHERE ROWNUM<=".$arAddParams["nTopCount"];
		else
			$strSql = "SELECT A.* ".$strSqlFrom.$strSqlOrder." LIMIT 0,".$arAddParams["nTopCount"];
	}
	else if (is_set($arAddParams, "bDescPageNumbering"))
	{
		$db_res = $DB->Query("SELECT COUNT(A.ID) as CNT ".$strSqlFrom, false, "File: ".__FILE__."
Line: ".__LINE__); $iCnt = (($db_res && ($ar_res = $db_res->Fetch())) ? intval($ar_res["CNT"]) : 0 ); $db_res = new CDBResult(); $db_res->NavQuery($strSql, $iCnt, $arAddParams); return $db_res; } return $DB->Query($strSql, false, "File: ".__FILE__."
Line: ".__LINE__); }