19 if (!is_array($arSort) && $arSort > 0)
27 $arSqlSelect = $arSqlSearch = $arSqlGroup =
array();
28 $strSqlSelect = $strSqlSearch = $strSqlGroup =
"";
33 $strNegative = $key_res[
"NEGATIVE"];
34 $strOperation = $key_res[
"OPERATION"];
35 $key = mb_strtoupper($key_res[
"FIELD"]);
58 $key =
"VU.AUTH_USER_ID";
62 $str = ($strNegative==
"Y"?
"NOT":
"").
"(".
$key.
" IS NULL OR ".
$key.
"<=0)";
65 $str = ($strNegative==
"Y"?
" ".$key.
" IS NULL OR NOT ":
"").
"(".
$key.
" ".$strOperation.
" ".intval(
$val).
")";
66 if ($strOperation ==
"IN")
68 $val = array_unique(array_map(
"intval", (is_array(
$val) ?
$val : explode(
",",
$val))), SORT_NUMERIC);
71 $str = ($strNegative==
"Y"?
" NOT ":
"").
"(".
$key.
" IN (".implode(
",",
$val).
"))";
75 $arSqlSearch[] =
$str;
80 $arSqlSearch[] = ($strNegative==
"Y"?
"NOT":
"").
"(VE.".
$key.
" IS NULL OR LENGTH(VE.".
$key.
")<=0)";
82 $arSqlSearch[] = ($strNegative==
"Y"?
" VE.".$key.
" IS NULL OR NOT ":
"").
"(VE.".
$key.
" ".$strOperation.
" '".
$DB->ForSql(
$val).
"' )";
87 $arSqlGroup[] = $arSqlSelect[] =
"VEA.MESSAGE";
88 $arSqlSearch[] =
"VEA.MESSAGE != ' '";
92 $arSqlSearch[] =
"VU.AUTH_USER_ID > 0";
95 case "BGETEVENTRESULTS":
98 $arSqlSelect[] =
"MAX(CASE WHEN VE.ID=".$arFilter[
"bGetEventResults"].
" THEN VEA.ANSWER_ID ELSE NULL END) AS RESTORED_ANSWER_ID";
102 if (!empty($arSqlSearch))
103 $strSqlSearch =
" AND (".implode(
") AND (", $arSqlSearch).
") ";
104 if (!empty($arSqlSelect))
105 $strSqlSelect =
", ".implode(
", ", $arSqlSelect);
106 if (!empty($arSqlGroup))
107 $strSqlGroup =
", ".implode(
", ", $arSqlGroup);
110 "SELECT VEQ.QUESTION_ID, VEA.ANSWER_ID, COUNT(VEA.ID) as COUNTER, ".
111 "MIN(EXTRACT(SECOND FROM NOW() - VE.DATE_VOTE)) AS LAST_VOTE".$strSqlSelect.
112 " FROM b_vote_event VE ".
113 " INNER JOIN b_vote_event_question VEQ ON (VEQ.EVENT_ID = VE.ID) ".
114 " INNER JOIN b_vote_event_answer VEA ON (VEA.EVENT_QUESTION_ID = VEQ.ID) ".
115 " LEFT JOIN b_vote_user VU ON (VU.ID = VE.VOTE_USER_ID)".
116 " WHERE 1=1 ".$strSqlSearch.
117 " GROUP BY VEQ.QUESTION_ID, VEA.ANSWER_ID".$strSqlGroup.
118 " ORDER BY COUNTER DESC";
121 $strSql =
"SELECT COUNT(VEG.COUNTER) AS CNT FROM (".
122 "SELECT 'x' AS COUNTER ".
123 " FROM b_vote_event VE ".
124 " INNER JOIN b_vote_event_question VEQ ON (VEQ.EVENT_ID = VE.ID) ".
125 " INNER JOIN b_vote_event_answer VEA ON (VEA.EVENT_QUESTION_ID = VEQ.ID) ".
126 " LEFT JOIN b_vote_user VU ON (VU.ID = VE.VOTE_USER_ID)".
127 " WHERE 1=1 ".$strSqlSearch.
128 " GROUP BY VEQ.QUESTION_ID, VEA.ANSWER_ID, VU.AUTH_USER_ID".$strSqlGroup.
") VEG";
132 $strSql =
"SELECT VEQ.QUESTION_ID, VEA.ANSWER_ID, VU.AUTH_USER_ID, COUNT(DISTINCT VEA.ID) as COUNTER, \n\t".
133 "MIN(EXTRACT(SECOND FROM NOW() - VE.DATE_VOTE)) AS LAST_VOTE, \n\t".
135 "SUM(case when RV0.ID is not null then 1 else 0 end) " .
$DB->quote(
'RANK') :
"0 as " .
$DB->quote(
'RANK')).$strSqlSelect.
"\n".
136 "FROM b_vote_event VE \n\t".
137 "INNER JOIN b_vote_event_question VEQ ON (VEQ.EVENT_ID = VE.ID) \n\t".
138 "INNER JOIN b_vote_event_answer VEA ON (VEA.EVENT_QUESTION_ID = VEQ.ID) \n\t".
139 "LEFT JOIN b_vote_user VU ON (VU.ID = VE.VOTE_USER_ID)\n\t".
142 "\tLEFT JOIN b_rating_vote RV0 ON (RV0.USER_ID = ".$arFilter[
"bGetVoters"].
" AND RV0.OWNER_ID = VU.AUTH_USER_ID) \n" :
"").
143 " WHERE 1=1 ".$strSqlSearch.
"\n".
144 " GROUP BY VEQ.QUESTION_ID, VEA.ANSWER_ID, VU.AUTH_USER_ID, RV.VOTE_WEIGHT".$strSqlGroup.
"\n".
145 " ORDER BY ".(IsModuleInstalled(
"intranet") ?
"RV.VOTE_WEIGHT DESC, " .
$DB->quote(
'RANK') .
" DESC" :
$DB->quote(
'RANK') .
" DESC, RV.VOTE_WEIGHT DESC").
", VU.AUTH_USER_ID ASC";