public static function UserGroupPermission($CHANNEL_ID) { global $USER; return CVoteChannel::GetGroupPermission($CHANNEL_ID, $USER->GetUserGroupArray()); }
<?php if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED !== true) { die; } if (!CModule::IncludeModule("vote")) { return false; } $permission = intval($arParams["PERMISSION"] ? $arParams["PERMISSION"] : CVoteChannel::GetGroupPermission($arParams["CHANNEL_ID"])); if ($permission < 4) { return false; } /******************************************************************** Input params ********************************************************************/ $arParams["CHANNEL_ID"] = intval($arParams["CHANNEL_ID"]); $arParams["MULTIPLE"] = $arParams["MULTIPLE"] == "Y" ? "Y" : "N"; if (preg_match("/[^a-z0-9_]+/i", $arParams["INPUT_NAME"])) { showError(GetMessage("V_BAD_NAME_FORMAT")); return false; } $arParams["~INPUT_NAME"] = trim($arParams["INPUT_NAME"]); $arParams["INPUT_NAME"] = $arParams["~INPUT_NAME"] . ($arParams["MULTIPLE"] == "Y" ? "[]" : ""); $arParams["INPUT_VALUE"] = empty($arParams["INPUT_VALUE"]) ? array() : (is_array($arParams["INPUT_VALUE"]) ? $arParams["INPUT_VALUE"] : array($arParams["INPUT_VALUE"])); $arParams["VOTE_UNIQUE"] = is_array($arParams["VOTE_UNIQUE"]) ? $arParams["VOTE_UNIQUE"] : array($arParams["VOTE_UNIQUE"]); if (!isset($arParams["VOTE_UNIQUE_IP_DELAY"]) || !preg_match("/\\d+ \\w/is", $arParams["VOTE_UNIQUE_IP_DELAY"], $matches)) { $arParams["VOTE_UNIQUE_IP_DELAY"] = "10 D"; } $arParams["CONTROL_ID"] = preg_match("/^[a-zA-Z0-9_]+\$/", $arParams["CONTROL_ID"]) ? $arParams["CONTROL_ID"] : randString(); $arParams["bVarsFromForm"] = $arParams["bVarsFromForm"] ? true : false; /********************************************************************
} if ($USER_ALREADY_VOTE == "Y") { $strError .= GetMessage("VOTE_ALREADY_VOTE") . "<br>"; } if ($VOTING_LAMP == "red") { $strError .= GetMessage("VOTE_RED_LAMP") . "<br>"; } $IsUserVoted = "N"; if ($VOTING_OK != "Y" && $USER_ALREADY_VOTE != "Y") { $IsUserVoted = IsUserVoted($VOTE_ID) ? "Y" : "N"; } $VOTE_ID = GetVoteDataByID($VOTE_ID, $arChannel, $arVote, $arQuestions, $arAnswers, $arDropDown, $arMultiSelect, $arGroupAnswers, "N"); if (intval($VOTE_ID) > 0) { echo ShowError($strError); echo ShowNote($strNote); $VOTE_PERMISSION = CVoteChannel::GetGroupPermission($arChannel["ID"]); if ($IsUserVoted != "Y" && $VOTING_OK != "Y" && $USER_ALREADY_VOTE != "Y") { if (intval($VOTE_PERMISSION) >= 2) { ?> <table cellspacing="0" cellpadding="5" width="100%"> <form name="vote_form" action="<?php echo $APPLICATION->GetCurPageParam("", array("VOTE_ID", "VOTING_OK")); ?> " method="POST"> <input type="hidden" name="PUBLIC_VOTE_ID" value="<?php echo $VOTE_ID; ?> "> <?php while (list($key, $arQuestion) = each($arQuestions)) { $QUESTION_ID = $arQuestion["ID"];
if ($obCache->InitCache($arParams["CACHE_TIME"], $cache_id, $cache_path) && !$_SESSION["VOTE"]["VOTES"][$arParams["VOTE_ID"]]) { $arVars = $obCache->GetVars(); $arResult["VOTE"] = $arVars["arResult"]["VOTE"]; $arResult["CHANNEL"] = $arVars["arResult"]["CHANNEL"]; $arResult["QUESTIONS"] = $arVars["arResult"]["QUESTIONS"]; } elseif (CModule::IncludeModule("vote")) { $tmp = array("bGetMemoStat" => array("bGetMemoStat" => "N", "bRestoreVotedData" => "Y")); $tmp = array("bGetMemoStat" => array("bGetMemoStat" => "N", "bRestoreVotedData" => "Y")); $arParams["VOTE_ID"] = GetVoteDataByID($arParams["VOTE_ID"], $arChannel, $arVote, $arQuestions, $arAnswers, $tmp["DropDown"], $tmp["MultiSelect"], $tmp["arGroupAnswers"], $tmp["bGetMemoStat"]); $permission = ($arParams["PERMISSION"] === false ? CVoteChannel::GetGroupPermission($arChannel["ID"]) : $arParams["PERMISSION"]); if ($permission < 2) { $arError[] = array( "id" => "access denied", "text" => GetMessage("VOTE_ACCESS_DENIED")); } else { //Vote Image $arVote["IMAGE"] = CFile::GetFileArray($arVote["IMAGE_ID"]); $arResult["VOTE"] = $arVote; $arResult["CHANNEL"] = $arChannel;
if ($arParams["MESSAGE_TYPE"] == "REPLY" && $arParams["TID"] > 0) $bShowForm = CForumMessage::CanUserAddMessage($arParams["TID"], $USER->GetUserGroupArray(), $USER->GetID()); elseif ($arParams["MESSAGE_TYPE"] == "EDIT" && $arParams["MID"] > 0) $bShowForm = CForumMessage::CanUserUpdateMessage($arParams["MID"], $USER->GetUserGroupArray(), intVal($USER->GetID())); elseif ($arParams["MESSAGE_TYPE"] == "NEW" && $arParams["FID"] > 0) $bShowForm = CForumTopic::CanUserAddTopic($arParams["FID"], $USER->GetUserGroupArray(), $USER->GetID()); if (!$bShowForm): return 0; endif; if ($arParams["SHOW_VOTE"] == "Y" && CModule::IncludeModule("vote")) { $permission = ((isset($arParams['PERMISSION']) && (intval($arParams['PERMISSION'] > 0 || $arParams['PERMISSION'] === 0))) ? intval($arParams['PERMISSION']) : CVoteChannel::GetGroupPermission($arParams["VOTE_CHANNEL_ID"])); if ($permission < 2) { $arParams["SHOW_VOTE"] = "N"; } else if (!empty($arParams["VOTE_GROUP_ID"])) { $res = array_intersect($USER->GetUserGroupArray(), $arParams["VOTE_GROUP_ID"]); $arParams["SHOW_VOTE"] = (empty($res) ? "N" : $arParams["SHOW_VOTE"]); } else if ($permission < 4) { $arParams["SHOW_VOTE"] = "N"; } } /******************************************************************** Data ********************************************************************/ if ($arParams["MESSAGE_TYPE"] == "EDIT") {
/Default params ********************************************************************/ $bShowForm = false; if ($arParams["MESSAGE_TYPE"] == "REPLY" && $arParams["TID"] > 0) { $bShowForm = CForumMessage::CanUserAddMessage($arParams["TID"], $USER->GetUserGroupArray(), $USER->GetID()); } elseif ($arParams["MESSAGE_TYPE"] == "EDIT" && $arParams["MID"] > 0) { $bShowForm = CForumMessage::CanUserUpdateMessage($arParams["MID"], $USER->GetUserGroupArray(), intVal($USER->GetID())); } elseif ($arParams["MESSAGE_TYPE"] == "NEW" && $arParams["FID"] > 0) { $bShowForm = CForumTopic::CanUserAddTopic($arParams["FID"], $USER->GetUserGroupArray(), $USER->GetID()); } if (!$bShowForm) { return 0; } if ($arParams["SHOW_VOTE"] == "Y") { CModule::IncludeModule("vote"); $permission = isset($arParams['PERMISSION']) && intval($arParams['PERMISSION'] > 0 || $arParams['PERMISSION'] === 0) ? intval($arParams['PERMISSION']) : CVoteChannel::GetGroupPermission($arParams["VOTE_CHANNEL_ID"]); if ($permission < 2) { $arParams["SHOW_VOTE"] = "N"; } $res = array_intersect($USER->GetUserGroupArray(), $arParams["VOTE_GROUP_ID"]); $arParams["SHOW_VOTE"] = empty($res) ? "N" : $arParams["SHOW_VOTE"]; } /******************************************************************** Data ********************************************************************/ if ($arParams["MESSAGE_TYPE"] == "EDIT") { $arMessage = CForumMessage::GetByIDEx($arParams["MID"], array("GET_FORUM_INFO" => "N", "GET_TOPIC_INFO" => "Y", "FILTER" => "N")); if (empty($arMessage)) { ShowError(GetMessage("F_ERROR_MESSAGE_NOT_FOUND")); return 0; }
//Images $arResult["QUESTIONS"][$qID]["IMAGE"] = CFile::GetFileArray($arResult["QUESTIONS"][$qID]["IMAGE_ID"]); //Diagram type if (!empty($arParams["QUESTION_DIAGRAM_" . $qID]) && $arParams["QUESTION_DIAGRAM_" . $qID] != "-") { $arResult["QUESTIONS"][$qID]["DIAGRAM_TYPE"] = trim($arParams["QUESTION_DIAGRAM_" . $qID]); } //Answers $arResult["QUESTIONS"][$qID]["ANSWERS"] = $arQuestion["ANSWERS"]; } //Vote Image $arResult["VOTE"]["IMAGE"] = CFile::GetFileArray($arResult["VOTE"]["IMAGE_ID"]); $obCache->StartDataCache(); CVoteCacheManager::SetTag($cache_path, array("C" => $arResult["VOTE"]["CHANNEL_ID"], "V" => $arResult["VOTE"]["ID"], "Q" => array_keys($arResult["QUESTIONS"]))); $obCache->EndDataCache(array("arResult" => $arResult)); } $arParams["PERMISSION"] = $arParams["PERMISSION"] === false && CModule::IncludeModule("vote") ? CVoteChannel::GetGroupPermission($arResult["CHANNEL"]["ID"]) : $arParams["PERMISSION"]; if ($arParams["PERMISSION"] < 1) { ShowError(GetMessage("VOTE_ACCESS_DENIED")); return false; } if ($_REQUEST["VOTE_ID"] == $arParams["VOTE_ID"]) { $arError = array(); $arNote = array(); if ($GLOBALS["VOTING_OK"] == "Y" || $_REQUEST["VOTE_SUCCESSFULL"] == "Y") { $arNote[] = array("id" => "ok", "text" => GetMessage("VOTE_OK")); } if ($GLOBALS["USER_ALREADY_VOTE"] == "Y") { $arError[] = array("id" => "already vote", "text" => GetMessage("VOTE_ALREADY_VOTE")); } if ($GLOBALS["VOTING_LAMP"] == "red") { $arError[] = array("id" => "red lamp", "text" => GetMessage("VOTE_RED_LAMP"));
function UserGroupPermission($CHANNEL_ID) { return CVoteChannel::GetGroupPermission($CHANNEL_ID, $GLOBALS['USER']->GetUserGroupArray()); }
$arResult["QUESTIONS"][$qID]["ANSWERS"] = $arQuestion["ANSWERS"]; } //Vote Image $arResult["VOTE"]["IMAGE"] = CFile::GetFileArray($arResult["VOTE"]["IMAGE_ID"]); $obCache->StartDataCache(); CVoteCacheManager::SetTag($cache_path, array( "C" => $arResult["VOTE"]["CHANNEL_ID"], "V" => $arResult["VOTE"]["ID"], "Q" => array_keys($arResult["QUESTIONS"]))); $obCache->EndDataCache(array("arResult" => $arResult)); } $arParams["PERMISSION"] = (($arParams["PERMISSION"] === false && CModule::IncludeModule("vote")) ? CVoteChannel::GetGroupPermission($arResult["CHANNEL"]["ID"]) : $arParams["PERMISSION"]); if ($arParams["PERMISSION"] < 1): ShowError(GetMessage("VOTE_ACCESS_DENIED")); return false; endif; if ($_REQUEST["VOTE_ID"] == $arParams["VOTE_ID"]) { $arError = array(); $arNote = array(); if ($GLOBALS["VOTING_OK"] == "Y" || $_REQUEST["VOTE_SUCCESSFULL"] == "Y") $arNote[] = array("id" => "ok", "text" => GetMessage("VOTE_OK")); if ($GLOBALS["USER_ALREADY_VOTE"] == "Y") $arError[] = array("id" => "already vote", "text" => GetMessage("VOTE_ALREADY_VOTE")); if ($GLOBALS["VOTING_LAMP"] == "red") $arError[] = array("id" => "red lamp", "text" => GetMessage("VOTE_RED_LAMP"));
function ShowVoteResults($VOTE_ID, $template1="") { global $APPLICATION; $VOTE_ID = GetVoteDataByID($VOTE_ID, $arChannel, $arVote, $arQuestions, $arAnswers, $arDropDown, $arMultiSelect, $arGroupAnswers, "Y"); if (intval($VOTE_ID)>0) { /***** for old pre-component templates **********/ global $VOTE_PERMISSION; $VOTE_PERMISSION = CVote::UserGroupPermission($arChannel["ID"]); /***** /old *************************************/ $perm = CVoteChannel::GetGroupPermission($arChannel["ID"]); if (intval($perm)>=1) { $template = (strlen($arVote["RESULT_TEMPLATE"])<=0) ? "default.php" : $arVote["RESULT_TEMPLATE"]; require_once ($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/vote/include.php"); IncludeModuleLangFile(__FILE__); $path = COption::GetOptionString("vote", "VOTE_TEMPLATE_PATH_VOTE"); if (strlen($template1)>0) $template = $template1; if ($APPLICATION->GetShowIncludeAreas()) { $arIcons = Array(); if (CModule::IncludeModule("fileman")) { $arIcons[] = Array( "URL" => "/bitrix/admin/fileman_file_edit.php?lang=".LANGUAGE_ID."&site=".SITE_ID."&full_src=Y&path=". urlencode($path.$template), "SRC" => "/bitrix/images/vote/panel/edit_template.gif", "ALT" => GetMessage("VOTE_PUBLIC_ICON_TEMPLATE") ); $arrUrl = parse_url($_SERVER["REQUEST_URI"]); $arIcons[] = Array( "URL" => "/bitrix/admin/fileman_file_edit.php?lang=".LANGUAGE_ID."&site=".SITE_ID."&full_src=Y&path=". urlencode($arrUrl["path"]), "SRC" => "/bitrix/images/vote/panel/edit_file.gif", "ALT" => GetMessage("VOTE_PUBLIC_ICON_HANDLER") ); } $arIcons[] = Array( "URL" => "/bitrix/admin/vote_edit.php?lang=".LANGUAGE_ID."&ID=".$VOTE_ID, "SRC" => "/bitrix/images/vote/panel/edit_vote.gif", "ALT" => GetMessage("VOTE_PUBLIC_ICON_SETTINGS") ); echo $APPLICATION->IncludeStringBefore($arIcons); } $template = Rel2Abs('/', $template); include($_SERVER["DOCUMENT_ROOT"].$path.$template); if ($APPLICATION->GetShowIncludeAreas()) { echo $APPLICATION->IncludeStringAfter(); } } } }
} } $arVote = $db_res ? $db_res->Fetch() : array(); if (empty($arVote) || $arVote["CHANNEL_ACTIVE"] != "Y" || $arVote["ACTIVE"] != "Y") { return false; } $arResult = array("VOTE" => $arVote, "VOTE_ID" => $arVote["ID"], "VOTE_RESULT_TEMPLATE" => $APPLICATION->GetCurPageParam("", array("VOTE_SUCCESSFULL", "VOTE_ID", "view_form")), "ADDITIONAL_CACHE_ID" => "current_vote"); $obCache->StartDataCache(); CVoteCacheManager::SetTag($cache_path, array("C" => $arVote["CHANNEL_ID"], "V" => $arVote["ID"])); $obCache->EndDataCache(array("arResult" => $arResult)); } else { $arVars = $obCache->GetVars(); $arResult = $arVars["arResult"]; $this->SetTemplateCachedData($arVars["templateCachedData"]); } $arParams["PERMISSION"] = $arParams["PERMISSION"] === false ? CVoteChannel::GetGroupPermission($arResult["VOTE"]["CHANNEL_ID"]) : $arParams["PERMISSION"]; if ($arParams["PERMISSION"] <= 0) { return false; } elseif ($GLOBALS["VOTING_OK"] == "Y" && $GLOBALS["VOTING_ID"] == $arParams["VOTE_ID"] && !empty($arParams["VOTE_RESULT_TEMPLATE"])) { $var = array("VOTE_ID", "VOTING_OK", "VOTE_SUCCESSFULL", "view_result", "view_form"); $url = CComponentEngine::MakePathFromTemplate($arParams["VOTE_RESULT_TEMPLATE"], array("VOTE_ID" => $arVote["ID"])); if (strpos($url, "?") === false) { $url .= "?"; } elseif (($token = substr($url, strpos($url, "?") + 1)) && !empty($token) && preg_match_all("/(?<=^|\\&)\\w+(?=\$|\\=)/is", $token, $matches)) { $var = array_merge($var, $matches); } $strNavQueryString = DeleteParam($var); LocalRedirect($url . "&VOTE_SUCCESSFULL=Y&VOTE_ID=" . intval($_REQUEST["VOTE_ID"]) . ($strNavQueryString != "" ? "&" : "") . $strNavQueryString); } $voteUserID = $_SESSION["VOTE_USER_ID"] ? $_SESSION["VOTE_USER_ID"] : intval($GLOBALS["APPLICATION"]->get_cookie("VOTE_USER_ID")); $arParams["VOTED"] = CVote::UserAlreadyVote($arResult["VOTE_ID"], $voteUserID, $arResult["VOTE"]["UNIQUE_TYPE"], $arResult["VOTE"]["KEEP_IP_SEC"], $GLOBALS["USER"]->GetID());