- Модуль: vote
- Путь к файлу: ~/bitrix/modules/vote/classes/general/question.php
- Класс: CAllVoteQuestion
- Вызов: CAllVoteQuestion::GetList
static function GetList($VOTE_ID, $by = 's_c_sort', $order = 'asc', $arFilter = [])
{
global $DB;
$err_mess = (CAllVoteQuestion::err_mess()).'
Function: GetList
Line: ';
$VOTE_ID = (int) $VOTE_ID;
$arSqlSearch = [];
$arFilter = (is_array($arFilter) ? $arFilter : []);
foreach ($arFilter as $key => $val)
{
if (empty($key) || empty($val) || $val === 'NOT_REF')
{
continue;
}
$key_res = VoteGetFilterOperation($key);
$strNegative = $key_res['NEGATIVE'];
$strOperation = $key_res['OPERATION'];
$key = strtoupper($key_res['FIELD']);
switch($key)
{
case 'ID':
$match = (($arFilter[$key . '_EXACT_MATCH'] ?? 'Y') === 'N' ? 'Y' : 'N'); //turn off
$arSqlSearch[] = GetFilterQuery('Q.ID', $val, $match);
break;
case 'DIAGRAM':
case 'ACTIVE':
case 'REQUIRED':
$arSqlSearch[] = ($strNegative === 'Y' ? ' Q.' . $key . ' IS NULL OR NOT ' : '')
. ' (Q.' . $key . ' ' . $strOperation . ' '' . $DB->ForSql($val) . '')';
break;
case 'QUESTION':
$match = (($arFilter[$key . '_EXACT_MATCH'] ?? 'Y') !== 'N' ? 'Y' : 'N'); //turn on
$arSqlSearch[] = GetFilterQuery('Q.QUESTION', $val, $match);
break;
}
}
if ($VOTE_ID > 0)
$arSqlSearch[] = 'Q.VOTE_ID = ' . $VOTE_ID;
// Order
$by = strtoupper(strpos($by, 's_') === 0 ? substr($by, 2) : $by);
$by = in_array($by, ['ID', 'TIMESTAMP_X', 'ACTIVE', 'DIAGRAM', 'C_SORT', 'REQUIRED']) ? $by : 'C_SORT';
$order = ($order !== 'desc' ? 'asc' : 'desc');
$strSqlOrder = 'Q.' . $by . ' ' . $order;
// Sql
$strSqlSearch = GetFilterSqlSearch($arSqlSearch);
$strSql = '
SELECT Q.*,
' . $DB->DateToCharFunction('Q.TIMESTAMP_X','SHORT') . ' TIMESTAMP_X
FROM b_vote_question Q
WHERE ' . $strSqlSearch . '
ORDER BY ' . $strSqlOrder;
$res = $DB->Query($strSql, false, $err_mess . __LINE__);
return $res;
}