2#############################################
3# Bitrix Site Manager Forum #
4# Copyright (c) 2002-2009 Bitrix #
6# mailto:admin@bitrixsoft.com #
7#############################################
8require_once(
$_SERVER[
"DOCUMENT_ROOT"].
"/bitrix/modules/vote/classes/general/vote.php");
20 " . $sqlHelper->getConcatFunction(
"'['",
"ID",
"']'",
"case when TITLE is null then '' else TITLE end" ) .
" as REFERENCE
31 $CHANNEL_ID = intval($CHANNEL_ID);
34 if (!array_key_exists($CHANNEL_ID,
$GLOBALS[
"VOTE_CACHE"][
"CHANNEL"]))
36 $db_res =
$DB->Query(
"SELECT MAX(V.ID) AS ACTIVE_VOTE_ID ".
38 " WHERE V.CHANNEL_ID=".intval($CHANNEL_ID).
" AND V.ACTIVE = 'Y' AND ".
39 " NOW() >= V.DATE_START AND V.DATE_END >= NOW()");
42 return $GLOBALS[
"VOTE_CACHE"][
"CHANNEL"][$CHANNEL_ID][
"ACTIVE_VOTE_ID"];
51 $VOTE_ID = intval($VOTE_ID);
52 $KEEP_IP_SEC = intval($KEEP_IP_SEC);
54 $params[
"RETURN_SEARCH_STRING"] = (
$params[
"RETURN_SEARCH_STRING"] ==
"Y" ?
"Y" :
"N");
56 $arSqlSelect =
array(
"VE.VOTE_ID",
"VE.IP",
"TIMESTAMPDIFF(SECOND, VE.DATE_VOTE, NOW()) AS KEEP_IP_SEC");
58 "VE.VOTE_ID='".$VOTE_ID.
"'",
59 "VE.IP='".$DB->ForSql($REMOTE_ADDR, 15).
"'");
60 if ($KEEP_IP_SEC > 0):
61 $arSqlSearch[] =
"(FROM_UNIXTIME(UNIX_TIMESTAMP(CURRENT_TIMESTAMP) - ".$KEEP_IP_SEC.
") <= VE.DATE_VOTE)";
63 if (
$params[
"RETURN_SEARCH_STRING"] ==
"Y"):
64 return implode(
" AND ", $arSqlSearch);
66 return array(
"search" => implode(
" AND ", $arSqlSearch),
"select" => implode(
",", $arSqlSelect));
68 $strSql =
"SELECT VE.ID FROM b_vote_event VE WHERE ".implode(
" AND ", $arSqlSearch);
81 $CHANNEL_ID = intval($CHANNEL_ID);
84 ".$DB->DateToCharFunction(
"max(" . $sqlHelper->addSecondsToDateTime(1,
"DATE_END") .
")").
" MIN_DATE_START
88 CHANNEL_ID = '$CHANNEL_ID'
90 $z =
$DB->Query($strSql);
92 if (
$zr[
"MIN_DATE_START"] ==
'')
93 return GetTime(time()+CTimeZone::GetOffset(),
"FULL");
95 return $zr[
"MIN_DATE_START"];
102 $arSqlSearch =
array();
106 if (is_string(
$val) &&
$val ===
"NOT_REF"):
117 $arSqlSearch[] =
"V.ACTIVE = '".($val ==
"Y" ?
"Y" :
"N").
"'";
120 $arSqlSearch[] =
"V.DATE_START >= ".$DB->CharToDateFunction(
$val,
"SHORT");
123 $arSqlSearch[] =
"V.DATE_START < ".$DB->CharToDateFunction(
$val,
"SHORT").
" + INTERVAL 1 DAY";
126 $arSqlSearch[] =
"V.DATE_END >= ".$DB->CharToDateFunction(
$val,
"SHORT");
129 $arSqlSearch[] =
"V.DATE_END < ".$DB->CharToDateFunction(
$val,
"SHORT").
" + INTERVAL 1 DAY";
133 $arSqlSearch[] =
"(V.ACTIVE<>'Y' or now()<V.DATE_START or now()>V.DATE_END)";
135 $arSqlSearch[] =
"(V.ACTIVE='Y' and now()>=V.DATE_START and now()<=V.DATE_END)";
145 case "CHANNEL_ACTIVE":
146 case "CHANNEL_HIDDEN":
147 $arSqlSearch[] =
"C.".str_replace(
"CHANNEL_",
"",
$key).
" = '".(
$val ==
"Y" ?
"Y" :
"N").
"'";
155 $arSqlSearch[] =
"V.COUNTER>='".intval(
$val).
"'";
158 $arSqlSearch[] =
"V.COUNTER<='".intval(
$val).
"'";
162 if ($by ==
"s_id") $strSqlOrder =
"ORDER BY V.ID";
163 elseif ($by ==
"s_title") $strSqlOrder =
"ORDER BY V.TITLE";
164 elseif ($by ==
"s_date_start") $strSqlOrder =
"ORDER BY V.DATE_START";
165 elseif ($by ==
"s_date_end") $strSqlOrder =
"ORDER BY V.DATE_END";
166 elseif ($by ==
"s_lamp") $strSqlOrder =
"ORDER BY LAMP";
167 elseif ($by ==
"s_counter") $strSqlOrder =
"ORDER BY V.COUNTER";
168 elseif ($by ==
"s_active") $strSqlOrder =
"ORDER BY V.ACTIVE";
169 elseif ($by ==
"s_c_sort") $strSqlOrder =
"ORDER BY V.C_SORT";
170 elseif ($by ==
"s_channel") $strSqlOrder =
"ORDER BY V.CHANNEL_ID";
173 $strSqlOrder =
"ORDER BY V.ID";
178 $strSqlOrder .=
" desc ";
183 SELECT VV.*, C.TITLE as CHANNEL_TITLE, C.ACTIVE as CHANNEL_ACTIVE,
184 C.HIDDEN as CHANNEL_HIDDEN, V.*, V.KEEP_IP_SEC as DELAY, 'S' as DELAY_TYPE,
185 CASE WHEN (C.ACTIVE = 'Y' AND V.ACTIVE = 'Y' AND V.DATE_START <= NOW() AND NOW() <= V.DATE_END)
186 THEN (CASE WHEN (C.VOTE_SINGLE != 'Y') THEN 'green' ELSE 'yellow' END)
189 ".$DB->DateToCharFunction(
"V.TIMESTAMP_X").
" TIMESTAMP_X,
190 ".
$DB->DateToCharFunction(
"V.DATE_START").
" DATE_START,
191 ".
$DB->DateToCharFunction(
"V.DATE_END").
" DATE_END,
192 UNIX_TIMESTAMP(V.DATE_END) - UNIX_TIMESTAMP(V.DATE_START) PERIOD
194 SELECT V.ID, COUNT(Q.ID) QUESTIONS
196 INNER JOIN b_vote_channel C ON (C.ID=V.CHANNEL_ID)
197 LEFT JOIN b_vote_question Q ON (Q.VOTE_ID=V.ID)
198 WHERE ".$strSqlSearch.
"
201 INNER JOIN b_vote V ON (V.ID = VV.ID)
202 INNER JOIN b_vote_channel C ON (C.ID = V.CHANNEL_ID) ".
213 $arSqlSearch =
array();
214 $arOrder = (is_array($arOrder) ? $arOrder :
array());
215 $arOrder = array_change_key_case($arOrder, CASE_UPPER);
220 $key = mb_strtoupper($key_res[
"FIELD"]);
221 $strNegative = $key_res[
"NEGATIVE"];
222 $strOperation = $key_res[
"OPERATION"];
229 $str = ($strNegative==
"Y"?
"NOT":
"").
"(V.".
$key.
" IS NULL OR V.".
$key.
"<=0)";
232 $str = ($strNegative==
"Y"?
" V.".$key.
" IS NULL OR NOT ":
"").
"(V.".
$key.
" ".$strOperation.
" ".($strOperation ==
"LIKE" ?
"'".$DB->ForSql(
$val).
"'" : intval(
$val)).
")";
233 if ($strOperation ==
"IN")
235 $val = array_unique(array_map(
"intval", (is_array(
$val) ?
$val : explode(
",",
$val))), SORT_NUMERIC);
237 $str = ($strNegative==
"Y"?
" NOT ":
"").
"(V.".
$key.
" IN (".implode(
",",
$val).
"))";
240 $arSqlSearch[] =
$str;
244 $arSqlSearch[] = ($strNegative==
"Y"?
"NOT":
"").
"(V.".
$key.
" IS NULL OR LENGTH(V.".
$key.
")<=0)";
246 $arSqlSearch[] = ($strNegative==
"Y"?
" V.".$key.
" IS NULL OR NOT ":
"").
"(V.".
$key.
" ".$strOperation.
" '".
$DB->ForSql(
$val).
"' )";
251 $arSqlSearch[] = ($strNegative==
"Y"?
"NOT":
"").
"(V.".
$key.
" IS NULL OR LENGTH(V.".
$key.
")<=0)";
253 $arSqlSearch[] = ($strNegative==
"Y"?
" V.".$key.
" IS NULL OR NOT ":
"").
"(V.".
$key.
" ".$strOperation.
" ".
$DB->CharToDateFunction(
$DB->ForSql(
$val),
"FULL").
" )";
256 $match = (
$arFilter[
$key.
"_EXACT_MATCH"] ==
"Y" ?
"N" :
"Y");
261 $arSqlSearch[] =
"(V.ACTIVE<>'Y' or now()<V.DATE_START or now()>V.DATE_END)";
263 $arSqlSearch[] =
"(V.ACTIVE='Y' and now()>=V.DATE_START and now()<=V.DATE_END)";
267 $match = (
$arFilter[
$key.
"_EXACT_MATCH"] ==
"Y" ?
"N" :
"Y");
272 $strSqlSearch = (!empty($arSqlSearch) ?
" AND (".implode(
") AND (", $arSqlSearch).
") " :
"");
273 $arSqlOrder =
array();
274 foreach($arOrder as $by =>
$order)
276 $by = mb_strtoupper($by);
277 $by = (in_array($by,
array(
"ID",
"TITLE",
"DATE_START",
"DATE_END",
"COUNTER",
"ACTIVE",
"C_SORT",
"CHANNEL_ID")) ? $by :
"ID");
278 $arSqlOrder[] =
"V.".$by.
" ".(mb_strtoupper(
$order) ==
"ASC" ?
"ASC" :
"DESC");
281 $strSqlOrder = (!empty($arSqlOrder) ?
"ORDER BY ".implode(
",", $arSqlOrder) :
"");
284 SELECT V.*, V.KEEP_IP_SEC as DELAY, 'S' as DELAY_TYPE,
285 C.TITLE as CHANNEL_TITLE,
286 C.SYMBOLIC_NAME as CHANNEL_SYMBOLIC_NAME,
287 C.C_SORT as CHANNEL_C_SORT,
288 C.FIRST_SITE_ID as CHANNEL_FIRST_SITE_ID,
289 C.ACTIVE as CHANNEL_ACTIVE,
290 C.HIDDEN as CHANNEL_HIDDEN,
291 C.TITLE as CHANNEL_TITLE,
292 C.VOTE_SINGLE as CHANNEL_VOTE_SINGLE,
293 C.USE_CAPTCHA as CHANNEL_USE_CAPTCHA,
294 ".$DB->DateToCharFunction(
"V.TIMESTAMP_X").
" TIMESTAMP_X,
295 ".
$DB->DateToCharFunction(
"V.DATE_START").
" DATE_START,
296 ".
$DB->DateToCharFunction(
"V.DATE_END").
" DATE_END,
297 CASE WHEN (C.ACTIVE = 'Y' AND V.ACTIVE = 'Y' AND V.DATE_START <= NOW() AND NOW() <= V.DATE_END)
298 THEN (CASE WHEN (C.VOTE_SINGLE != 'Y') THEN 'green' ELSE 'yellow' END)
301 U.NAME, U.LAST_NAME, U.SECOND_NAME, U.PERSONAL_PHOTO, U.LOGIN,
302 ".
$DB->Concat(
"U.LAST_NAME",
"' '",
"U.NAME").
" AUTH_USER_NAME
304 INNER JOIN b_vote_channel C ON (V.CHANNEL_ID = C.ID)
305 LEFT JOIN b_user U ON (V.AUTHOR_ID = U.ID)
306 WHERE 1=1 ".$strSqlSearch.
" ".$strSqlOrder;
314 $arSqlSearch =
array();
321 if (empty(
$val) || (is_string(
$val) &&
$val ===
"NOT_REF"))
328 $match = (
$arFilter[
$key.
"_EXACT_MATCH"] ==
"N" ?
"Y" :
"N");
330 $left_join =
"LEFT JOIN b_vote_channel_2_site CS ON (C.ID = CS.CHANNEL_ID)";
333 $match = (
$arFilter[
$key.
"_EXACT_MATCH"] ==
"N" ?
"Y" :
"N");
336 foreach (
$val as $v):
344 $arSqlSearch[] =
"((".implode(
") OR (",
$arr).
"))";
350 case "FIRST_SITE_ID":
352 $match = (
$arFilter[
$key.
"_EXACT_MATCH"] ==
"N" ?
"Y" :
"N");
358 $is_admin = in_array(1,
$USER->GetUserGroupArray());
362 if (array_key_exists(
"bDescPageNumbering",
$params) &&
$params[
"nTopCount"] <= 0 ||
$params[
"bCount"] ===
true)
364 $strSql =
"SELECT COUNT(V1.ID) CNT
366 SELECT V.CHANNEL_ID, V.ID, ".($is_admin ?
"2" :
"max(G.PERMISSION)").
" as MAX_PERMISSION
368 INNER JOIN b_vote_channel C ON (C.ACTIVE = 'Y' AND C.HIDDEN = 'N' AND V.CHANNEL_ID = C.ID)
369 LEFT JOIN b_vote_channel_2_group G ON (G.CHANNEL_ID = C.ID and G.GROUP_ID in ($groups))
373 AND V.ACTIVE = 'Y' AND V.DATE_START <= NOW()
374 GROUP BY V.CHANNEL_ID, V.ID
375 ".($is_admin ?
"" :
"HAVING max(G.PERMISSION) > 0").
"
379 $iCnt = intval(
$res[
"CNT"]);
380 if (
$params[
"bCount"] ===
true)
384 SELECT C.TITLE CHANNEL_TITLE, V.*, V.KEEP_IP_SEC as DELAY, 'S' as DELAY_TYPE,
385 ".$DB->DateToCharFunction(
"V.DATE_START").
" DATE_START,
386 ".
$DB->DateToCharFunction(
"V.DATE_END").
" DATE_END,
387 V4.MAX_PERMISSION, V4.LAMP
389 SELECT V.CHANNEL_ID, V.ID,
390 ".($is_admin ?
"2" :
"max(G.PERMISSION)").
" as MAX_PERMISSION,
391 (CASE WHEN (C.VOTE_SINGLE = 'Y') THEN
392 (CASE WHEN (V.ID = VV.ACTIVE_VOTE_ID) THEN 'green' ELSE 'red' END) ELSE
393 (CASE WHEN (V.ACTIVE = 'Y' AND V.DATE_START <= NOW() AND NOW() <= V.DATE_END) THEN 'green' ELSE 'red' END) END) AS LAMP
395 INNER JOIN b_vote_channel C ON (C.ACTIVE = 'Y' AND C.HIDDEN = 'N' AND V.CHANNEL_ID = C.ID)
397 SELECT VVV.CHANNEL_ID, MAX(VVV.ID) AS ACTIVE_VOTE_ID
398 FROM b_vote VVV, b_vote_channel CCC
399 WHERE VVV.CHANNEL_ID = CCC.ID AND CCC.VOTE_SINGLE='Y' AND VVV.ACTIVE = 'Y'
400 AND NOW() >= VVV.DATE_START AND VVV.DATE_END >= NOW()
401 GROUP BY VVV.CHANNEL_ID) VV ON (VV.CHANNEL_ID = V.CHANNEL_ID)
402 LEFT JOIN b_vote_channel_2_group G ON (G.CHANNEL_ID = C.ID and G.GROUP_ID in ($groups))
406 AND V.ACTIVE = 'Y' AND V.DATE_START <= NOW()
407 GROUP BY V.CHANNEL_ID, V.ID, C.VOTE_SINGLE, VV.ACTIVE_VOTE_ID
408 ".($is_admin ?
"" :
"HAVING max(G.PERMISSION) > 0").
"
410 INNER JOIN b_vote V ON (V4.ID = V.ID)
411 INNER JOIN b_vote_channel C ON (V4.CHANNEL_ID = C.ID)
412 ".
$DB->ForSql($strSqlOrder);
414 if (array_key_exists(
"bDescPageNumbering",
$params) &&
$params[
"nTopCount"] <= 0)
422 $strSql .=
" LIMIT 0,".intval(
$params[
"nTopCount"]);
432 $ResultType = (in_array($ResultType,
array(
"timestamp",
"time")) ? $ResultType :
"timestamp");
434 $db_res =
$DB->Query(
"SELECT ".
$DB->DateToCharFunction(
$DB->GetNowFunction(),
"FULL").
" FORUM_DATE");
static getConnection($name="")
static GetFilterOperation($key)
static GetListEx($arOrder=array(), $arFilter=array())
static GetPublicList($arFilter=Array(), $strSqlOrder="ORDER BY C.C_SORT, C.ID, V.DATE_START desc", $params=array())
static GetNowTime($ResultType="timestamp")
static GetActiveVoteID($CHANNEL_ID)
static CheckVotingIP($VOTE_ID, $REMOTE_ADDR, $KEEP_IP_SEC, $params=array())
static GetNextStartDate($CHANNEL_ID)
static GetList($by='s_id', $order='desc', $arFilter=[])
if(!is_array($prop["VALUES"])) $tmp
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
$_SERVER["DOCUMENT_ROOT"]
DelDuplicateSort(&$arSort)
GetTime($timestamp, $type="SHORT", $site=false, $bSearchInSitesOnly=false)
MakeTimeStamp($datetime, $format=false)
global_menu_<?echo $menu["menu_id"]?> adm main menu item icon adm main menu item text text adm main menu hover adm submenu menucontainer menu_id menu_id items_id items_id desktop menu_id block none adm global submenu<?=($subMenuDisplay=="block" ? " adm-global-submenu-active" :"")?> global_submenu_<?echo $menu["menu_id"]?> text MAIN_PR_ADMIN_FAV items adm submenu items wrap adm submenu items stretch wrap BX adminMenu itemsStretchScroll()"> <table class if (!empty( $menu["items"])) elseif ( $menu[ 'menu_id']=='desktop') if ( $menu[ 'menu_id']=='desktop') endforeach
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
if(empty($signedUserToken)) $key
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
$GLOBALS['_____370096793']