• Модуль: vote
  • Путь к файлу: ~/bitrix/modules/vote/classes/general/vote.php
  • Класс: CAllVote
  • Вызов: CAllVote::UserAlreadyVote
static function UserAlreadyVote($voteId, $VOTE_USER_ID, $UNIQUE_TYPE, $delay, $USER_ID = false)
{
	global $DB, $USER;
	$err_mess = (CAllVote::err_mess())."
Function: UserAlreadyVote
Line: "; $voteId = intval($voteId); $UNIQUE_TYPE = intval($UNIQUE_TYPE); $VOTE_USER_ID = intval($VOTE_USER_ID); $USER_ID = intval($USER_ID); if ($voteId <= 0 || $UNIQUE_TYPE <= 0) return false; //One session if (($UNIQUE_TYPE & 1) && IsModuleInstalled('statistic') && array_key_exists($voteId, $_SESSION["VOTE"]["VOTES"])) return 1; $return = array(); $arSqlSearch = array(); $arSqlSelect = array("VE.ID"); //Same cookie if ($UNIQUE_TYPE & 2 && ($VOTE_USER_ID > 0)) { $arSqlSelect[] = "VE.VOTE_USER_ID"; $arSqlSearch[] = "VE.VOTE_USER_ID='".$VOTE_USER_ID."'"; } // Same IP if ($UNIQUE_TYPE & 4) { $tmp = CVote::CheckVotingIP($voteId, $_SERVER["REMOTE_ADDR"], $delay, array("RETURN_SEARCH_ARRAY" => "Y")); $arSqlSelect[] = $tmp["select"]; $arSqlSearch[] = $tmp["search"]; } // Same ID if ($UNIQUE_TYPE & 8) { if ($USER_ID <= 0 || $USER_ID == $USER->GetID() && isset($_SESSION["VOTE"]["VOTES"][$voteId])) { $return[] = 8; } else { $arSqlSelect[] = "VU.AUTH_USER_ID"; $arSqlSearch[] = "VU.AUTH_USER_ID=".$USER_ID; } // Register date if (($UNIQUE_TYPE & 16) && ($arUser = CUser::GetByID($USER_ID)->fetch()) && is_array($arUser) && ($userRegister = MakeTimeStamp($arUser['DATE_REGISTER'])) && ($vote = CVote::GetByID($voteId)->Fetch()) && is_array($vote) && ($voteStart = MakeTimeStamp($vote['DATE_START'])) && ($userRegister > $voteStart) ) { $return[] = 16; } } if (!empty($arSqlSearch)) { $db_res = $DB->Query("SELECT ".implode(",", $arSqlSelect)." FROM b_vote_event VE LEFT JOIN b_vote_user VU ON (VE.VOTE_USER_ID = VU.ID) WHERE VE.VOTE_ID=".$voteId." AND ((".implode(") OR (", $arSqlSearch)."))", false, $err_mess.__LINE__); while ($res = $db_res->Fetch()) { if ($USER_ID > 0 && $USER_ID == $USER->GetID()) $_SESSION["VOTE"]["VOTES"][$voteId] = $res["ID"]; // $UNIQUE_TYPE & 2 if (isset($res["VOTE_USER_ID"]) && $res["VOTE_USER_ID"] == $VOTE_USER_ID) { $return[] = 2; } //$UNIQUE_TYPE & 4 if (isset($res["IP"]) && $res["IP"] == $_SERVER["REMOTE_ADDR"] && ($delay <= 0 || !isset($res["KEEP_IP_SEC"]) || $delay > $res["KEEP_IP_SEC"])) { $return[] = 4; } // $UNIQUE_TYPE & 8 if (isset($res["AUTH_USER_ID"]) && $res["AUTH_USER_ID"] == $USER_ID) { $return[] = 8; } } } $return = empty($return) ? 0 : min($return); return ($return > 0 ? $return : false); }