1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
vote.php
См. документацию.
1<?
2##############################################
3# Bitrix Site Manager Forum #
4# Copyright (c) 2002-2009 Bitrix #
5# https://www.bitrixsoft.com #
6# mailto:admin@bitrixsoft.com #
7##############################################
9
10IncludeModuleLangFile(__FILE__);
11
13{
14 public static function GetFilterOperation($key)
15 {
17 }
18
19 public static function CheckFields($ACTION, &$arFields, $ID = 0)
20 {
21 $aMsg = array();
22 $ID = intval($ID);
23 $arVote = array();
24 if ($ID > 0):
26 if ($db_res && $res = $db_res->Fetch()):
27 $arVote = $res;
28 endif;
29 endif;
30
31 unset($arFields["ID"]);
32 if (is_set($arFields, "CHANNEL_ID") || $ACTION == "ADD")
33 {
34 $arFields["CHANNEL_ID"] = intval($arFields["CHANNEL_ID"]);
35 if ($arFields["CHANNEL_ID"] <= 0):
36 $aMsg[] = array(
37 "id" => "CHANNEL_ID",
38 "text" => GetMessage("VOTE_EMPTY_CHANNEL_ID"));
39 else:
40 $rChannel = CVoteChannel::GetList('', '', array('ID' => intval($arFields['CHANNEL_ID'])));
41 if (! ($rChannel && $arChannel = $rChannel->Fetch()))
42 {
43 $aMsg[] = array(
44 "id" => "CHANNEL_ID",
45 "text" => GetMessage("VOTE_WRONG_CHANNEL_ID"));
46 }
47 endif;
48 }
49
50 if (is_set($arFields, "C_SORT")) $arFields["C_SORT"] = intval($arFields["C_SORT"]);
51 if (is_set($arFields, "ACTIVE") || $ACTION == "ADD") $arFields["ACTIVE"] = ($arFields["ACTIVE"] == "N" ? "N" : "Y");
52
53 unset($arFields["TIMESTAMP_X"]);
54 $date_start = false;
55 if (is_set($arFields, "DATE_START") || $ACTION == "ADD")
56 {
57 $arFields["DATE_START"] = trim($arFields["DATE_START"]);
58 $date_start = MakeTimeStamp($arFields["DATE_START"]);
59 if (!$date_start):
60 $aMsg[] = array(
61 "id" => "DATE_START",
62 "text" => GetMessage("VOTE_WRONG_DATE_START"));
63 endif;
64 }
65
66 if (is_set($arFields, "DATE_END") || $ACTION == "ADD")
67 {
68 $arFields["DATE_END"] = trim($arFields["DATE_END"]);
69 if ($arFields["DATE_END"] == ''):
70 if ($date_start != false):
71 $date_end = $date_start + 2592000;
72 $arFields["DATE_END"] = GetTime($date_end, "FULL");
73 else:
74 $date_end = 1924984799; // '31.12.2030 23:59:59'
75 $arFields["DATE_END"] = GetTime($date_end, "FULL");
76 endif;
77 else:
78 $date_end = MakeTimeStamp($arFields["DATE_END"]);
79 endif;
80 if (!$date_end):
81 $aMsg[] = array(
82 "id" => "DATE_END",
83 "text" => GetMessage("VOTE_WRONG_DATE_END"));
84 elseif ($date_start >= $date_end && !empty($arFields["DATE_START"])):
85 $aMsg[] = array(
86 "id" => "DATE_END",
87 "text" => GetMessage("VOTE_WRONG_DATE_TILL"));
88 endif;
89 }
90 if (empty($aMsg) && (is_set($arFields, "DATE_START") || is_set($arFields, "DATE_END") || is_set($arFields, "CHANNEL_ID") || is_set($arFields, "ACTIVE")))
91 {
92 $vid = 0;
93 if ($ACTION == "ADD" && $arFields["ACTIVE"] == "Y")
94 {
95 $vid = CVote::WrongDateInterval(0, $arFields["DATE_START"], $arFields["DATE_END"], $arFields["CHANNEL_ID"]);
96 }
97 elseif ($ACTION != "ADD" && !(is_set($arFields, "ACTIVE") && $arFields["ACTIVE"] != "Y"))
98 {
99 $res = array(
100 "DATE_START" => (is_set($arFields, "DATE_START") ? $arFields["DATE_START"] : false),
101 "DATE_END" => (is_set($arFields, "DATE_END") ? $arFields["DATE_END"] : false),
102 "CHANNEL_ID" => (is_set($arFields, "CHANNEL_ID") ? $arFields["CHANNEL_ID"] : false));
103 $vid = CVote::WrongDateInterval($ID, $res["DATE_START"], $res["DATE_END"], $res["CHANNEL_ID"]);
104 }
105 if (intval($vid) > 0):
106 $aMsg[] = array(
107 "id" => "DATE_START",
108 "text" => str_replace("#ID#", $vid, GetMessage("VOTE_WRONG_INTERVAL")));
109 endif;
110 }
111 if (is_set($arFields, "IMAGE_ID") && $arFields["IMAGE_ID"]["name"] == '' && $arFields["IMAGE_ID"]["del"] == '')
112 {
113 unset($arFields["IMAGE_ID"]);
114 }
115 elseif (is_set($arFields, "IMAGE_ID"))
116 {
117 if ($str = CFile::CheckImageFile($arFields["IMAGE_ID"])):
118 $aMsg[] = array(
119 "id" => "IMAGE_ID",
120 "text" => $str);
121 else:
122 $arFields["IMAGE_ID"]["MODULE_ID"] = "vote";
123 if (!empty($arVote)):
124 $arFields["IMAGE_ID"]["old_file"] = $arVote["IMAGE_ID"];
125 endif;
126 endif;
127 }
128
129 if (is_set($arFields, "COUNTER")) $arFields["COUNTER"] = intval($arFields["COUNTER"]);
130 if (is_set($arFields, "TITLE")) $arFields["TITLE"] = trim($arFields["TITLE"]);
131 if (is_set($arFields, "DESCRIPTION")) $arFields["DESCRIPTION"] = trim($arFields["DESCRIPTION"]);
132 if (is_set($arFields, "DESCRIPTION_TYPE") || $ACTION == "ADD") $arFields["DESCRIPTION_TYPE"] = ($arFields["DESCRIPTION_TYPE"] == "html" ? "html" : "text");
133
134 if (is_set($arFields, "EVENT1")) $arFields["EVENT1"] = trim($arFields["EVENT1"]);
135 if (is_set($arFields, "EVENT2")) $arFields["EVENT2"] = trim($arFields["EVENT2"]);
136 if (is_set($arFields, "EVENT3")) $arFields["EVENT3"] = trim($arFields["EVENT3"]);
137 if (is_set($arFields, "UNIQUE_TYPE")) $arFields["UNIQUE_TYPE"] = intval($arFields["UNIQUE_TYPE"]);
138 if (is_set($arFields, "OPTIONS"))
139 {
140
141 $arFields["OPTIONS"] = intval($arFields["OPTIONS"]);
142 }
143
144 if (is_set($arFields, "DELAY") && array_key_exists("DELAY_TYPE", $arFields))
145 {
146 $arFields["DELAY"] = intval($arFields["DELAY"]);
147 $type = in_array($arFields["DELAY_TYPE"], array("S", "M", "H", "D")) ? $arFields["DELAY_TYPE"] : "D";
148 $typeMultiplier = array(
149 "S" => 1,
150 "M" => 60,
151 "H" => 3600,
152 "D" => 86400
153 );
154 $arFields["KEEP_IP_SEC"] = $arFields["DELAY"] * $typeMultiplier[$type];
155 }
156 else if (array_key_exists("KEEP_IP_SEC", $arFields) || $ACTION == "ADD")
157 {
158 $arFields["KEEP_IP_SEC"] = intval($arFields["KEEP_IP_SEC"]);
159 }
160 unset ($arFields["DELAY"]);
161 unset ($arFields["DELAY_TYPE"]);
162
163 if (CVote::IsOldVersion() != "Y")
164 {
165 unset($arFields["TEMPLATE"]);
166 unset($arFields["RESULT_TEMPLATE"]);
167 }
168
169 if (is_set($arFields, "TEMPLATE")) $arFields["TEMPLATE"] = trim($arFields["TEMPLATE"]);
170 if (is_set($arFields, "RESULT_TEMPLATE")) $arFields["RESULT_TEMPLATE"] = trim($arFields["RESULT_TEMPLATE"]);
171 if (is_set($arFields, "NOTIFY")) $arFields["NOTIFY"] = (in_array($arFields["NOTIFY"], array("Y", "N", "I")) ? $arFields["NOTIFY"] : "N");
172 if (is_set($arFields, "REQUIRED")) $arFields["REQUIRED"] = ($arFields["REQUIRED"] == "Y" ? "Y" : "N");
173 if (is_set($arFields, "AUTHOR_ID")) $arFields["AUTHOR_ID"] = intval($arFields["AUTHOR_ID"]);
174
175 if(!empty($aMsg))
176 {
177 global $APPLICATION;
178 $e = new CAdminException(array_reverse($aMsg));
179 $APPLICATION->ThrowException($e);
180 return false;
181 }
182 return true;
183 }
184
192 public static function Add($arFields, $strUploadDir = false)
193 {
194 $result = \Bitrix\Vote\VoteTable::add($arFields);
195 if (!$result->isSuccess())
196 {
197 $aMsg = [];
198 $errCollection = $result->getErrorCollection();
199 for ($errCollection->rewind(); $errCollection->valid(); $errCollection->next())
200 {
202 $error = $errCollection->current();
203 $aMsg[] = ["id" => $error->getCode(), "text" => $error->getMessage()];
204 }
205 if (!empty($aMsg))
206 {
207 global $APPLICATION;
208 $APPLICATION->ThrowException((new CAdminException(array_reverse($aMsg))));
209 }
210 return false;
211 }
212 return $result->getId();
213 }
214
222 public static function Update($ID, $arFields, $strUploadDir = false)
223 {
224 $result = \Bitrix\Vote\VoteTable::update($ID, $arFields);
225 if (!$result->isSuccess())
226 {
227 $aMsg = [];
228 $errCollection = $result->getErrorCollection();
229 for ($errCollection->rewind(); $errCollection->valid(); $errCollection->next())
230 {
232 $error = $errCollection->current();
233 $aMsg[] = ["id" => $error->getCode(), "text" => $error->getMessage()];
234 }
235 if (!empty($aMsg))
236 {
237 global $APPLICATION;
238 $APPLICATION->ThrowException((new CAdminException(array_reverse($aMsg))));
239 }
240 return false;
241 }
242 return $result->getId();
243 }
244
245 public static function Delete($ID)
246 {
247 global $DB;
248
249 $ID = intval($ID);
250 if ($ID <= 0):
251 return false;
252 endif;
253
254 /***************** Event onBeforeVoteDelete *************************/
255 foreach (GetModuleEvents("vote", "onBeforeVoteDelete", true) as $arEvent)
256 if (ExecuteModuleEventEx($arEvent, array(&$ID)) === false)
257 return false;
258 /***************** /Event ******************************************/
259
260 @set_time_limit(1000);
261 $DB->StartTransaction();
262
263 // delete questions
266 // delete vote images
267 $strSql = "SELECT IMAGE_ID FROM b_vote WHERE ID = ".$ID." AND IMAGE_ID > 0";
268 $z = $DB->Query($strSql);
269 while ($zr = $z->Fetch()) CFile::Delete($zr["IMAGE_ID"]);
270
271 // delete vote events
272 $DB->Query("DELETE FROM b_vote_event WHERE VOTE_ID='$ID'");
273 // delete vote
274 $res = $DB->Query("DELETE FROM b_vote WHERE ID='$ID'");
275 $DB->Commit();
276 /***************** Event onAfterVoteDelete *************************/
277 foreach (GetModuleEvents("vote", "onAfterVoteDelete", true) as $arEvent)
278 ExecuteModuleEventEx($arEvent, array($ID));
279 /***************** /Event ******************************************/
280 return $res;
281 }
282
283 public static function Reset($ID)
284 {
286 unset($GLOBALS["VOTE_CACHE_VOTING"][$ID]);
287 if (isset($_SESSION['VOTE']['VOTES'][$ID]))
288 {
289 unset($_SESSION["VOTE"]["VOTES"][$ID]);
290 }
291 return true;
292 }
293
294 public static function Copy($ID)
295 {
296 global $DB;
297
298 $ID = intval($ID);
299 if ($ID <= 0):
300 return false;
301 endif;
302 $rCurrentVote = CVote::GetByID($ID);
303 if (!$arCurrentVote = $rCurrentVote->Fetch())
304 return false;
305 unset($arCurrentVote["ID"]);
306 $arCurrentVote['ACTIVE'] = "N";
307
308 $newImageId = false;
309 if (intval($arCurrentVote['IMAGE_ID'] > 0))
310 {
311 $imageId = $arCurrentVote['IMAGE_ID'];
312 $newImageId = CFile::CopyFile($imageId);
313 $arCurrentVote["IMAGE_ID"] = NULL;
314 }
315 $newID = CVote::Add($arCurrentVote);
316 if ($newID === false)
317 return false;
318 $DB->Update("b_vote", array("COUNTER"=>"0"), "WHERE ID=".$newID);
319 if ($newImageId)
320 {
321 $DB->Update("b_vote", array("IMAGE_ID"=>$newImageId), "WHERE ID=".$newID);
322 }
323
324 $state = true;
325 $rQuestions = CVoteQuestion::GetList($ID);
326 while ($arQuestion = $rQuestions->Fetch())
327 {
328 $state = $state && ( CVoteQuestion::Copy($arQuestion['ID'], $newID) !== false);
329 }
330
331 if ($state == true)
332 return $newID;
333 else return $state;
334 }
335
336 public static function IsOldVersion()
337 {
338 $res = "N";
339 $arr = GetTemplateList("RV");
340 if (is_array($arr) && count($arr["reference"])>0) $res = "Y";
341 else
342 {
343 $arr = GetTemplateList("SV");
344 if (is_array($arr) && count($arr["reference"])>0) $res = "Y";
345 else
346 {
347 $arr = GetTemplateList("RQ");
348 if (is_array($arr) && count($arr["reference"])>0) $res = "Y";
349 }
350 }
351 return $res;
352 }
353
354 public static function GetByID($ID)
355 {
356 $ID = intval($ID);
357 return CVote::GetList("s_id", "desc", array("ID" => $ID));
358 }
359
360 public static function GetByIDEx($ID)
361 {
362 $ID = intval($ID);
363 if ($ID <= 0)
364 return false;
365
366 if (!isset($GLOBALS["VOTE_CACHE"]["VOTE"][$ID]))
367 {
368 global $CACHE_MANAGER;
369 if (!!VOTE_CACHE_TIME && $CACHE_MANAGER->Read(VOTE_CACHE_TIME, $ID, "b_vote"))
370 {
371 $GLOBALS["VOTE_CACHE"]["VOTE"][$ID] = $CACHE_MANAGER->Get($ID);
372 }
373 else
374 {
375 $db_res = CVote::GetListEx(array("ID" => "ASC"), array("ID" => $ID));
376 if ($db_res && ($res = $db_res->Fetch()))
377 {
378 $GLOBALS["VOTE_CACHE"]["VOTE"][$ID] = $res;
379 if (!!VOTE_CACHE_TIME)
380 $CACHE_MANAGER->Set($ID, $res);
381 }
382 }
383 }
384 $db_res = new CDBResult();
385 $db_res->InitFromArray(array($GLOBALS["VOTE_CACHE"]["VOTE"][$ID]));
386 return $db_res;
387 }
388
389 public static function UserAlreadyVote($voteId, $VOTE_USER_ID, $UNIQUE_TYPE, $delay, $USER_ID = false)
390 {
391 global $DB, $USER;
392
393 $voteId = intval($voteId);
394 $UNIQUE_TYPE = intval($UNIQUE_TYPE);
395 $VOTE_USER_ID = intval($VOTE_USER_ID);
396 $USER_ID = intval($USER_ID);
397
398 if ($voteId <= 0 || $UNIQUE_TYPE <= 0)
399 return false;
400
401 //One session
402 if (($UNIQUE_TYPE & 1) && IsModuleInstalled('statistic') && isset($_SESSION["VOTE"]["VOTES"][$voteId]))
403 return 1;
404
405
406 $return = array();
407 $arSqlSearch = array();
408 $arSqlSelect = array("VE.ID");
409
410 //Same cookie
411 if ($UNIQUE_TYPE & 2 && ($VOTE_USER_ID > 0))
412 {
413 $arSqlSelect[] = "VE.VOTE_USER_ID";
414 $arSqlSearch[] = "VE.VOTE_USER_ID='".$VOTE_USER_ID."'";
415 }
416
417 // Same IP
418 if ($UNIQUE_TYPE & 4)
419 {
420 $tmp = \CVote::CheckVotingIP($voteId, $_SERVER["REMOTE_ADDR"], $delay, array("RETURN_SEARCH_ARRAY" => "Y"));
421 $arSqlSelect[] = $tmp["select"];
422 $arSqlSearch[] = $tmp["search"];
423 }
424
425 // Same ID
426 if ($UNIQUE_TYPE & 8)
427 {
428 if ($USER_ID <= 0 || $USER_ID == $USER->GetID() && isset($_SESSION["VOTE"]["VOTES"][$voteId]))
429 {
430 $return[] = 8;
431 }
432 else
433 {
434 $arSqlSelect[] = "VU.AUTH_USER_ID";
435 $arSqlSearch[] = "VU.AUTH_USER_ID=".$USER_ID;
436 }
437 // Register date
438 if (($UNIQUE_TYPE & 16) &&
439 ($arUser = \CUser::GetByID($USER_ID)->fetch()) &&
440 is_array($arUser) &&
441 ($userRegister = MakeTimeStamp($arUser['DATE_REGISTER'])) &&
442 ($vote = \CVote::GetByID($voteId)->Fetch()) &&
443 is_array($vote) &&
444 ($voteStart = MakeTimeStamp($vote['DATE_START'])) &&
445 ($userRegister > $voteStart)
446 )
447 {
448 $return[] = 16;
449 }
450 }
451
452 if (!empty($arSqlSearch))
453 {
454 $db_res = $DB->Query("SELECT ".implode(",", $arSqlSelect)."
455 FROM b_vote_event VE
456 LEFT JOIN b_vote_user VU ON (VE.VOTE_USER_ID = VU.ID)
457 WHERE VE.VOTE_ID=".$voteId." AND ((".implode(") OR (", $arSqlSearch)."))");
458 while ($res = $db_res->Fetch())
459 {
460 if ($USER_ID > 0 && $USER_ID == $USER->GetID())
461 $_SESSION["VOTE"]["VOTES"][$voteId] = $res["ID"];
462 // $UNIQUE_TYPE & 2
463 if (isset($res["VOTE_USER_ID"]) && $res["VOTE_USER_ID"] == $VOTE_USER_ID)
464 {
465 $return[] = 2;
466 }
467 //$UNIQUE_TYPE & 4
468 if (isset($res["IP"]) && $res["IP"] == $_SERVER["REMOTE_ADDR"]
469 && ($delay <= 0 || !isset($res["KEEP_IP_SEC"]) || $delay > $res["KEEP_IP_SEC"]))
470 {
471 $return[] = 4;
472 }
473 // $UNIQUE_TYPE & 8
474 if (isset($res["AUTH_USER_ID"]) && $res["AUTH_USER_ID"] == $USER_ID)
475 {
476 $return[] = 8;
477 }
478 }
479 }
480 $return = empty($return) ? 0 : min($return);
481 return ($return > 0 ? $return : false);
482 }
483
484 public static function UserGroupPermission($CHANNEL_ID)
485 {
486 global $USER;
487 return CVoteChannel::GetGroupPermission($CHANNEL_ID, $USER->GetUserGroupArray());
488 }
489
490 public static function SetVoteUserID()
491 {
492 return \Bitrix\Vote\User::getCurrent()->setVotedUserId();
493 }
494
495 public static function UpdateVoteUserID($VOTE_USER_ID)
496 {
497 global $DB;
498
499 $VOTE_USER_ID = intval($VOTE_USER_ID);
501 "DATE_LAST" => $DB->GetNowFunction(),
502 "COUNTER" => "COUNTER+1"
503 );
504 return $DB->Update("b_vote_user", $arFields, "WHERE ID='".$VOTE_USER_ID."'");
505 }
506
507 public static function keepVoting()
508 {
509 global $USER;
511 $r = \Bitrix\Main\Context::getCurrent()->getRequest();
512 $request = array_merge($r->getQueryList()->toArray(), $r->getPostList()->toArray());
513
514 $PUBLIC_VOTE_ID = intval($request["PUBLIC_VOTE_ID"]);
515 $errorCollection = new \Bitrix\Main\ErrorCollection();
516
517 try
518 {
519 if (empty($request["vote"]) || $PUBLIC_VOTE_ID <= 0 || !check_bitrix_sessid())
520 throw new \Bitrix\Main\ArgumentException(GetMessage("VOTE_NOT_FOUND"), "bad_params");
521
522 $vote = new \Bitrix\Vote\Vote($PUBLIC_VOTE_ID);
523
524 if (\CVote::UserGroupPermission($vote["CHANNEL_ID"]) < 2)
525 throw new \Bitrix\Main\AccessDeniedException();
526
527 $channel = $vote->getChannel();
528 if ($channel["USE_CAPTCHA"] == "Y" && !$USER->IsAuthorized())
529 {
530 $cpt = new CCaptcha();
531 if ((!empty($request["captcha_code"]) && !$cpt->CheckCodeCrypt($request["captcha_word"], $request["captcha_code"])) ||
532 empty($request["captcha_code"]) && !$cpt->CheckCode($request["captcha_word"], 0))
533 {
534 $GLOBALS["BAD_CAPTCHA"] = "Y";
535 throw new \Bitrix\Main\ArgumentException(GetMessage("VOTE_BAD_CAPTCHA"), "captcha");
536 }
537 }
538 if (!$vote->voteFor($request))
539 $errorCollection->add($vote->getErrors());
540 else
541 $GLOBALS["VOTING_ID"] = $vote->getId();
542 }
543 catch (\Exception $e)
544 {
545 $errorCollection->add(array(new \Bitrix\Main\Error($e->getMessage(), $e->getCode())));
546 }
547
548 if ($errorCollection->isEmpty())
549 {
550 $GLOBALS["VOTING_OK"] = "Y";
551 return true;
552 }
553 global $APPLICATION, $VOTING_OK;
554 $VOTING_OK = "N";
555 $m = [];
556 for ($errorCollection->rewind(); $errorCollection->valid(); $errorCollection->next())
557 $m[] = $errorCollection->current()->getMessage();
558
559 $APPLICATION->ThrowException(implode("", $m), "CVote::KeepVoting");
560
561 return false;
562 }
563
564 public static function GetNextSort($CHANNEL_ID)
565 {
566 global $DB;
567
568 $CHANNEL_ID = intval($CHANNEL_ID);
569 $strSql = "SELECT max(C_SORT) MAX_SORT FROM b_vote WHERE CHANNEL_ID='$CHANNEL_ID'";
570 $z = $DB->Query($strSql);
571 $zr = $z->Fetch();
572 return intval($zr["MAX_SORT"])+100;
573 }
574
575 public static function WrongDateInterval($CURRENT_VOTE_ID, $DATE_START, $DATE_END, $CHANNEL_ID)
576 {
577 global $DB;
578
579 $CURRENT_VOTE_ID = intval($CURRENT_VOTE_ID);
580 $CURRENT_VOTE_ID = ($CURRENT_VOTE_ID > 0 ? $CURRENT_VOTE_ID : false);
581 $CHANNEL_ID = intval($CHANNEL_ID);
582 $CHANNEL_ID = ($CHANNEL_ID > 0 ? $CHANNEL_ID : false);
583 $DATE_START = ($DATE_START == false ? false : (trim($DATE_START) == '' ? false : trim($DATE_START)));
584 $DATE_END = ($DATE_END == false ? false : (trim($DATE_END) == '' ? false : trim($DATE_END)));
585
586 if($CURRENT_VOTE_ID == false && $CHANNEL_ID == false)
587 {
588 return 0;
589 }
590 elseif($CHANNEL_ID > 0)
591 {
592 $db_res = CVoteChannel::GetByID($CHANNEL_ID);
593 if($db_res && $res = $db_res->Fetch())
594 if($res["VOTE_SINGLE"] != "Y")
595 return 0;
596 }
597
598 $st = ($DATE_START == false ? "VV.DATE_START" : $DB->CharToDateFunction($DATE_START, "FULL"));
599 $en = ($DATE_END == false ? "VV.DATE_END" : $DB->CharToDateFunction($DATE_END, "FULL"));
600 if($CURRENT_VOTE_ID <= 0)
601 {
602 if($DATE_START == false)
603 $st = $DB->CurrentTimeFunction();
604 if($DATE_END == false)
605 $en = $DB->CharToDateFunction(ConvertTimeStamp(1924984799, "FULL"), "FULL"); // '31.12.2030 23:59:59'
606 }
607
608 $strSql = "
609 SELECT V.ID
610 FROM b_vote V
611 ".($CURRENT_VOTE_ID > 0 ?
612 "LEFT JOIN b_vote VV ON (VV.ID = ".$CURRENT_VOTE_ID.") " : "")."
613 INNER JOIN b_vote_channel VC ON (V.CHANNEL_ID = VC.ID AND VC.VOTE_SINGLE = 'Y')
614 WHERE
615 V.CHANNEL_ID=".($CHANNEL_ID == false ? "VV.CHANNEL_ID" : $CHANNEL_ID)." AND
616 V.ACTIVE='Y' AND
617 ".($CURRENT_VOTE_ID > 0 ?
618 "V.ID<>'".$CURRENT_VOTE_ID."' AND " : "")."
619 (
620 (".$st." between V.DATE_START and V.DATE_END) OR
621 (".$en." between V.DATE_START and V.DATE_END) OR
622 (V.DATE_START between ".$st." and ".$en.") OR
623 (V.DATE_END between ".$st." and ".$en.")
624 )";
625 $db_res = $DB->Query($strSql);
626 if($db_res && $res = $db_res->Fetch())
627 return intval($res["ID"]);
628
629 return 0;
630 }
631}
632
634{
635 public function __construct($res, $params = array())
636 {
637 parent::__construct($res);
638 }
639 function Fetch()
640 {
641 if($res = parent::Fetch())
642 {
643 if ($res["LAMP"] == "yellow" && !empty($res["CHANNEL_ID"]))
644 {
645 $res["LAMP"] = ($res["ID"] == CVote::GetActiveVoteId($res["CHANNEL_ID"]) ? "green" : "red");
646 }
647 }
648 return $res;
649 }
650}
651?>
$type
Определения options.php:106
$db_res
Определения options_user_settings.php:8
global $APPLICATION
Определения include.php:80
if(!Loader::includeModule('catalog')) if(!AccessController::getCurrent() ->check(ActionDictionary::ACTION_PRICE_EDIT)) if(!check_bitrix_sessid()) $request
Определения catalog_reindex.php:36
Определения vote.php:634
__construct($res, $params=array())
Определения vote.php:635
Fetch()
Определения vote.php:639
Определения error.php:15
static deleteByFilter(array $filter)
Определения attach.php:140
static resetStatistic($voteId)
Определения event.php:340
static GetFilterOperation($key)
Определения group.php:320
static GetByID($ID)
Определения channel.php:396
static GetGroupPermission($channel_id, $arGroups=false, $params=array())
Определения channel.php:423
static GetList($by='s_id', $order='desc', $arFilter=[])
Определения channel.php:210
Определения vote.php:13
static UpdateVoteUserID($VOTE_USER_ID)
Определения vote.php:495
static GetFilterOperation($key)
Определения vote.php:14
static Delete($ID)
Определения vote.php:245
static Reset($ID)
Определения vote.php:283
static UserGroupPermission($CHANNEL_ID)
Определения vote.php:484
static GetByID($ID)
Определения vote.php:354
static UserAlreadyVote($voteId, $VOTE_USER_ID, $UNIQUE_TYPE, $delay, $USER_ID=false)
Определения vote.php:389
static CheckFields($ACTION, &$arFields, $ID=0)
Определения vote.php:19
static WrongDateInterval($CURRENT_VOTE_ID, $DATE_START, $DATE_END, $CHANNEL_ID)
Определения vote.php:575
static IsOldVersion()
Определения vote.php:336
static Copy($ID)
Определения vote.php:294
static SetVoteUserID()
Определения vote.php:490
static GetNextSort($CHANNEL_ID)
Определения vote.php:564
static GetByIDEx($ID)
Определения vote.php:360
static GetList($VOTE_ID, $by='s_c_sort', $order='asc', $arFilter=[])
Определения question.php:268
static Copy($ID, $newVoteID)
Определения question.php:206
static Delete($ID, $VOTE_ID=false)
Определения question.php:406
Определения dbresult.php:88
static GetListEx($arOrder=array(), $arFilter=array())
Определения vote.php:210
static CheckVotingIP($VOTE_ID, $REMOTE_ADDR, $KEEP_IP_SEC, $params=array())
Определения vote.php:47
static GetList($by='s_id', $order='desc', $arFilter=[])
Определения vote.php:98
global $CACHE_MANAGER
Определения clear_component_cache.php:7
$str
Определения commerceml2.php:63
if(!is_array($prop["VALUES"])) $tmp
Определения component_props.php:203
$arFields
Определения dblapprove.php:5
$arr
Определения file_new.php:624
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$res
Определения filter_act.php:7
$zr
Определения options.php:5
$result
Определения get_property_values.php:14
if($ajaxMode) $ID
Определения get_user.php:27
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
global $DB
Определения cron_frame.php:29
global $USER
Определения csv_new_run.php:40
$ACTION
Определения csv_new_setup.php:27
endif
Определения csv_new_setup.php:990
$z
Определения options.php:31
check_bitrix_sessid($varname='sessid')
Определения tools.php:4686
ExecuteModuleEventEx($arEvent, $arParams=[])
Определения tools.php:5214
IsModuleInstalled($module_id)
Определения tools.php:5301
GetTime($timestamp, $type="SHORT", $site=false, $bSearchInSitesOnly=false)
Определения tools.php:1890
GetModuleEvents($MODULE_ID, $MESSAGE_ID, $bReturnArray=false)
Определения tools.php:5177
IncludeModuleLangFile($filepath, $lang=false, $bReturnArray=false)
Определения tools.php:3778
is_set($a, $k=false)
Определения tools.php:2133
GetMessage($name, $aReplace=null)
Определения tools.php:3397
MakeTimeStamp($datetime, $format=false)
Определения tools.php:538
trait Error
Определения error.php:11
return false
Определения prolog_main_admin.php:185
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
if(empty($signedUserToken)) $key
Определения quickway.php:257
</p ></td >< td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 2.0pt 0cm 2.0pt;height:9.0pt'>< p class=Normal align=center style='margin:0cm;margin-bottom:.0001pt;text-align:center;line-height:normal'>< a name=ТекстовоеПоле54 ></a ><?=($taxRate > count( $arTaxList) > 0) ? $taxRate."%"
Определения waybill.php:936
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
Определения template.php:799
$error
Определения subscription_card_product.php:20
$GLOBALS['_____370096793']
Определения update_client.php:1
GetTemplateList($type="SV", $path="xxx")
Определения vote_tools.php:296