$arVoteList = array("ID" => $_REQUEST["ID"], "answer_id" => $_REQUEST["answer_id"], "request_id" => $_REQUEST["request_id"], "items" => array(), "StatusPage" => "done"); $_REQUEST["ID"] = is_array($_REQUEST["ID"]) ? $_REQUEST["ID"] : !empty($_REQUEST["ID"]) ? explode(",", $_REQUEST["ID"]) : array(); $_REQUEST["URL_TEMPLATE"] = !empty($_REQUEST["URL_TEMPLATE"]) ? $_REQUEST["URL_TEMPLATE"] : '/company/personal/user/#USER_ID#/'; $_REQUEST["NAME_TEMPLATE"] = !empty($_REQUEST["NAME_TEMPLATE"]) ? $_REQUEST["NAME_TEMPLATE"] : CSite::GetNameFormat(false); if ((!empty($_REQUEST["ID"]) || !empty($_REQUEST["answer_id"])) && check_bitrix_sessid()) { $arParams["CACHE_TIME"] = 600; global $CACHE_MANAGER; $cache = new CPHPCache(); $cache_id = "vote_user_list_" . serialize(array($arResult["nPageSize"], $_REQUEST["ID"], $_REQUEST["answer_id"], $_REQUEST["iNumPage"], $_REQUEST["NAME_TEMPLATE"], $_REQUEST["URL_TEMPLATE"])); $cache_path = $CACHE_MANAGER->GetCompCachePath(CComponentEngine::MakeComponentPath("voting.current")); $arVoteList = $arParams["CACHE_TIME"] > 0 && $cache->InitCache($arParams["CACHE_TIME"], $cache_id, $cache_path) ? $cache->GetVars() : array(); if (!is_array($arVoteList) || empty($arVoteList)) { $arEventsInfo = array(); $arVoteList = array("ID" => $_REQUEST["ID"], "answer_id" => $_REQUEST["answer_id"], "request_id" => $_REQUEST["request_id"], "items" => array(), "StatusPage" => "done"); if (empty($_REQUEST["ID"]) && CModule::IncludeModule("vote")) { $db_res = CVoteEvent::GetUserAnswerStat(array(), array("ANSWER_ID" => $_REQUEST["answer_id"], "VALID" => "Y", "bGetVoters" => "Y", "bGetMemoStat" => "N"), array("nPageSize" => $arResult["nPageSize"], "bShowAll" => false, "iNumPage" => $_REQUEST["iNumPage"] > 0 ? $_REQUEST["iNumPage"] : false)); if ($db_res && ($res = $db_res->Fetch())) { $arEventsInfo = $res; $arVoteList["StatusPage"] = $db_res->NavPageNomer >= $db_res->NavPageCount || $arResult["nPageSize"] > $db_res->NavRecordCount ? "done" : "continue"; if ($_REQUEST["iNumPage"] <= $db_res->NavPageCount) { $_REQUEST["ID"] = array(); do { $_REQUEST["ID"][] = $res["AUTH_USER_ID"]; } while ($res = $db_res->Fetch()); } else { $arVoteList["StatusPage"] = "done"; } } } if (!empty($_REQUEST["ID"])) { $db_res = CUser::GetList($by = "ID", $order = "ASC", array("ID" => implode("|", $_REQUEST["ID"])), array("FIELDS" => array("ID", "NAME", "LAST_NAME", "SECOND_NAME", "LOGIN", "PERSONAL_PHOTO")));
function GetVoteDataByID($VOTE_ID, &$arChannel, &$arVote, &$arQuestions, &$arAnswers, &$arDropDown, &$arMultiSelect, &$arGroupAnswers, $arAddParams = "N") { $VOTE_ID = intval($VOTE_ID); $arChannel = array(); $arVote = array(); $arQuestions = array(); $arAnswers = array(); $arDropDown = array(); $arMultiSelect = array(); $GLOBALS["VOTE_CACHE_VOTING"][$VOTE_ID] = (is_array($GLOBALS["VOTE_CACHE_VOTING"][$VOTE_ID]) ? $GLOBALS["VOTE_CACHE_VOTING"][$VOTE_ID] : array()); if (empty($GLOBALS["VOTE_CACHE_VOTING"][$VOTE_ID])) { $db_res = CVote::GetByIDEx($VOTE_ID); if (!($db_res && $arVote = $db_res->GetNext())) { return false; } foreach ($arVote as $key => $res) { if (strpos($key, "CHANNEL_") === 0) { $arChannel[substr($key, 8)] = $res; } elseif (strpos($key, "~CHANNEL_") === 0) { $arChannel["~".substr($key, 9)] = $res; } } $by = "s_c_sort"; $order = "asc"; $db_res = CVoteQuestion::GetList($VOTE_ID, $by, $order, array("ACTIVE" => "Y"), $is_filtered); while ($res = $db_res->GetNext()) { $arQuestions[$res["ID"]] = $res + array("ANSWERS" => array()); } if (!empty($arQuestions)) { $db_res = CVoteAnswer::GetListEx( array("C_SORT" => "ASC"), array("VOTE_ID" => $VOTE_ID, "ACTIVE" => "Y", "@QUESTION_ID" => array_keys($arQuestions))); while ($res = $db_res->GetNext()) { $arQuestions[$res["QUESTION_ID"]]["ANSWERS"][$res["ID"]] = $res; $arAnswers[$res["QUESTION_ID"]][] = $res; switch ($res["FIELD_TYPE"]) // dropdown and multiselect and text inputs { case 2: $arDropDown[$res["QUESTION_ID"]] = (is_array($arDropDown[$res["QUESTION_ID"]]) ? $arDropDown[$res["QUESTION_ID"]] : array("reference" => array(), "reference_id" => array(), "~reference" => array())); $arDropDown[$res["QUESTION_ID"]]["reference"][] = $res["MESSAGE"]; $arDropDown[$res["QUESTION_ID"]]["~reference"][] = $res["~MESSAGE"]; $arDropDown[$res["QUESTION_ID"]]["reference_id"][] = $res["ID"]; break; case 3: $arMultiSelect[$res["QUESTION_ID"]] = (is_array($arMultiSelect[$res["QUESTION_ID"]]) ? $arMultiSelect[$res["QUESTION_ID"]] : array("reference" => array(), "reference_id" => array(), "~reference" => array())); $arMultiSelect[$res["QUESTION_ID"]]["reference"][] = $res["MESSAGE"]; $arMultiSelect[$res["QUESTION_ID"]]["~reference"][] = $res["~MESSAGE"]; $arMultiSelect[$res["QUESTION_ID"]]["reference_id"][] = $res["ID"]; break; } } $event_id = intval($arAddParams["bRestoreVotedData"] == "Y" && !!$_SESSION["VOTE"]["VOTES"][$VOTE_ID] ? $_SESSION["VOTE"]["VOTES"][$VOTE_ID] : 0); $db_res = CVoteEvent::GetUserAnswerStat($VOTE_ID, array("bGetMemoStat" => "N", "bGetEventResults" => $event_id)); if ($db_res && ($res = $db_res->Fetch())) { do { if (isset($arQuestions[$res["QUESTION_ID"]]) && is_array($arQuestions[$res["QUESTION_ID"]]["ANSWERS"][$res["ANSWER_ID"]]) && is_array($res)) { $arQuestions[$res["QUESTION_ID"]]["ANSWERS"][$res["ANSWER_ID"]] += $res; if ($event_id > 0 && !empty($res["RESTORED_ANSWER_ID"])) { switch ($arQuestions[$res["QUESTION_ID"]]["ANSWERS"][$res["ANSWER_ID"]]["FIELD_TYPE"]): case 0: // radio case 2: // dropdown list $fieldName = ($arQuestions[$res["QUESTION_ID"]]["ANSWERS"][$res["ANSWER_ID"]]["FIELD_TYPE"] == 0 ? "vote_radio_" : "vote_dropdown_").$res["QUESTION_ID"]; $_REQUEST[$fieldName] = $res["RESTORED_ANSWER_ID"]; break; case 1: // checkbox case 3: // multiselect list $fieldName = ($arQuestions[$res["QUESTION_ID"]]["ANSWERS"][$res["ANSWER_ID"]]["FIELD_TYPE"] == 1 ? "vote_checkbox_" : "vote_multiselect_").$res["QUESTION_ID"]; $_REQUEST[$fieldName] = (is_array($_REQUEST[$fieldName]) ? $_REQUEST[$fieldName] : array()); $_REQUEST[$fieldName][] = $res["ANSWER_ID"]; break; case 4: // field case 5: // text // do not restored break; endswitch; } } } while ($res = $db_res->Fetch()); } } reset($arChannel); reset($arVote); reset($arQuestions); reset($arDropDown); reset($arMultiSelect); reset($arAnswers); $GLOBALS["VOTE_CACHE_VOTING"][$VOTE_ID] = array( "V" => $arVote, "C" => $arChannel, "QA" => array( "Q" => $arQuestions, "A" => $arAnswers, "M" => $arMultiSelect, "D" => $arDropDown, "G" => array(), "GA" => "N" ) ); } if ($arAddParams["bGetMemoStat"] == "Y" && $GLOBALS["VOTE_CACHE_VOTING"][$VOTE_ID]["QA"]["GA"] == "N") { $db_res = CVoteEvent::GetUserAnswerStat($VOTE_ID, array("bGetMemoStat" => "Y")); while($res = $db_res->GetNext(true, false)) { $arGroupAnswers[$res['ANSWER_ID']][] = $res; } $GLOBALS["VOTE_CACHE_VOTING"][$VOTE_ID]["QA"]["G"] = $arGroupAnswers; $GLOBALS["VOTE_CACHE_VOTING"][$VOTE_ID]["QA"]["GA"] = "Y"; } $arVote = $GLOBALS["VOTE_CACHE_VOTING"][$VOTE_ID]["V"]; $arChannel = $GLOBALS["VOTE_CACHE_VOTING"][$VOTE_ID]["C"]; $arQuestions = $GLOBALS["VOTE_CACHE_VOTING"][$VOTE_ID]["QA"]["Q"]; $arAnswers = $GLOBALS["VOTE_CACHE_VOTING"][$VOTE_ID]["QA"]["A"]; $arMultiSelect = $GLOBALS["VOTE_CACHE_VOTING"][$VOTE_ID]["QA"]["M"]; $arDropDown = $GLOBALS["VOTE_CACHE_VOTING"][$VOTE_ID]["QA"]["D"]; $arGroupAnswers = $GLOBALS["VOTE_CACHE_VOTING"][$VOTE_ID]["QA"]["G"]; return $arVote["ID"]; }