function CheckFields($arUserField, $value) { if (!($arUserField && is_array($arUserField["USER_TYPE"]) && $arUserField["USER_TYPE"]["CLASS_NAME"] == __CLASS__)) return true; $arData = (isset($GLOBALS[$arUserField["FIELD_NAME"]."_DATA"]) ? $GLOBALS[$arUserField["FIELD_NAME"]."_DATA"] : false); $aMsg = array(); if (!empty($arData) && CModule::IncludeModule("vote")) { $arVote = array( "ID" => $value, "CHANNEL_ID" => $arUserField["SETTINGS"]["CHANNEL_ID"], "TITLE" => $arData["TITLE"], "URL" => $arData["URL"], "NOTIFY" => $arUserField["SETTINGS"]["NOTIFY"], "DATE_END" => GetTime((isset($arData["DATE_END"]) ? MakeTimeStamp($arData["DATE_END"]) : 1924984799), "FULL"), "QUESTIONS" => array()); $arVoteQuestions = array(); $arQuestions = is_array($arData["QUESTIONS"]) ? $arData["QUESTIONS"] : array(); if (!$arVote["ID"]) { $arVote["DATE_START"] = GetTime(CVote::GetNowTime(), "FULL"); } else { $db_res = CVoteQuestion::GetListEx(array("ID" => "ASC"), array("CHANNEL_ID" => $arVote["CHANNEL_ID"], "VOTE_ID" => $arVote["ID"])); if ($db_res && $res = $db_res->Fetch()) { do { $arVoteQuestions[$res["ID"]] = $res + array("ANSWERS" => array()); } while ($res = $db_res->Fetch()); } if (!empty($arVoteQuestions)) { $db_res = CVoteAnswer::GetListEx(array("ID" => "ASC"), array("CHANNEL_ID" => $arVote["CHANNEL_ID"], "VOTE_ID" => $arVote["ID"])); if ($db_res && $res = $db_res->Fetch()) { do { if (is_set($arVoteQuestions, $res["QUESTION_ID"])) $arVoteQuestions[$res["QUESTION_ID"]]["ANSWERS"][$res["ID"]] = $res; } while ($res = $db_res->Fetch()); } } } foreach ($arQuestions as $key => $arQuestion) { $res = array( "ID" => (array_key_exists($arQuestion["ID"], $arVoteQuestions) ? $arQuestion["ID"] : false), "QUESTION" => trim($arQuestion["QUESTION"]), "MULTI" => ($arQuestion["MULTI"] == "Y" ? "Y" : "N"), "ANSWERS" => array()); $arQuestion["ANSWERS"] = (is_array($arQuestion["ANSWERS"]) ? $arQuestion["ANSWERS"] : array()); $arVoteAnswers = ($res["ID"] > 0 ? $arVoteQuestions[$res["ID"]]["ANSWERS"] : array()); foreach ($arQuestion["ANSWERS"] as $arAnswer) { $resa = array( "ID" => (array_key_exists($arAnswer["ID"], $arVoteAnswers) ? $arAnswer["ID"] : false), "MESSAGE" => trim($arAnswer["MESSAGE"]), "FIELD_TYPE" => ($res["MULTI"] == "Y" ? 1 : 0)); if (empty($resa["MESSAGE"])){ continue; } if (!!$resa["ID"]) { unset($arVoteAnswers[$resa["ID"]]); } $res["ANSWERS"][] = $resa; } foreach ($arVoteAnswers as $arAnswer) { $res["ANSWERS"][] = array_merge($arAnswer, array("DEL" => "Y")); } if (empty($res["ANSWERS"]) && empty($res["QUESTION"]) && !$res["ID"]) { continue; } if (!!$res["ID"]) { unset($arVoteQuestions[$res["ID"]]); } $arVote["QUESTIONS"][] = $res; } $arVoteParams = array(); if (!empty($arVote["QUESTIONS"])) { $arVoteParams = array( "UNIQUE_TYPE" => $arUserField["SETTINGS"]['UNIQUE'], "DELAY" => intval($arUserField["SETTINGS"]['UNIQUE_IP_DELAY']["DELAY"]), "DELAY_TYPE" => $arUserField["SETTINGS"]['UNIQUE_IP_DELAY']["DELAY_TYPE"]); } if (!VoteVoteEditFromArray($arUserField["SETTINGS"]["CHANNEL_ID"], $arVote["ID"], $arVote, ($res = ($arVoteParams + array("bOnlyCheck" => "Y"))))) { $aMsg[] = array( "id" => $arUserField["FIELD_NAME"], "text" => (($e = $GLOBALS['APPLICATION']->GetException()) && $e ? preg_replace("/\<br(.*?)\>/", " ", $e->GetString()) : GetMessage("VT_UNKNOWN_ERROR_ADD_VOTE")) ); } else { $GLOBALS[__CLASS__.$arUserField["ENTITY_VALUE_ID"]] = array("VOTE" => $arVote, "PARAMS" => $arVoteParams); } } return $aMsg; }
$arParams["SHOW_VOTE"] = $arParams["PERMISSION"] == "A" ? "N" : $arParams["SHOW_VOTE"]; } /************** Message ********************************************/ if ($arParams["MESSAGE_TYPE"] == "EDIT") { $res = CForumMessage::GetByIDEx($arParams["MID"], array("GET_TOPIC_INFO" => "Y")); if (!is_array($res) || empty($res)) { $arError[] = array("id" => "mid_is_lost", "text" => GetMessage("F_MID_IS_LOST")); } elseif ($arParams["MODE"] != "GROUP" && $res["FORUM_ID"] != $arParams["FID"]) { $arError[] = array("id" => "mid_is_lost", "text" => GetMessage("F_MID_IS_LOST_IN_FORUM")); } elseif ($arParams["MODE"] == "GROUP" && $res["TOPIC_INFO"]["SOCNET_GROUP_ID"] == $arParams["SOCNET_GROUP_ID"] || $arParams["MODE"] != "GROUP" && $res["TOPIC_INFO"]["OWNER_ID"] == $arParams["USER_ID"]) { $arResult["MESSAGE"] = $res; $arParams["TID"] = $res["TOPIC_INFO"]["ID"]; $arResult["TOPIC"] = $res["TOPIC_INFO"]; $arResult["TOPIC_FILTER"] = CForumTopic::GetByID($arParams["TID"]); if ($arParams["SHOW_VOTE"] == "Y" && $arResult["MESSAGE"]["PARAM1"] == "VT" && intVal($arResult["MESSAGE"]["PARAM2"]) > 0) { $db_res = CVoteQuestion::GetListEx(array("ID" => "ASC"), array("CHANNEL_ID" => $arParams["VOTE_CHANNEL_ID"], "VOTE_ID" => $arResult["MESSAGE"]["PARAM2"])); if ($db_res && ($res = $db_res->Fetch())) { do { $arResult["~QUESTIONS"][$res["ID"]] = $res + array("ANSWERS" => array()); } while ($res = $db_res->Fetch()); } if (!empty($arResult["~QUESTIONS"])) { $db_res = CVoteAnswer::GetListEx(array("ID" => "ASC"), array("VOTE_ID" => $arResult["MESSAGE"]["PARAM2"])); if ($db_res && ($res = $db_res->Fetch())) { do { if (is_set($arResult["~QUESTIONS"], $res["QUESTION_ID"])) { $arResult["~QUESTIONS"][$res["QUESTION_ID"]]["ANSWERS"][$res["ID"]] = $res; } } while ($res = $db_res->Fetch()); } }
********************************************************************/ /******************************************************************** Data ********************************************************************/ $arResult["CONTROL_UID"] = md5(randString(15)); $arResult["VOTES"] = array(); if ($arParams["bVarsFromForm"]) { $arResult["VOTES"] = is_array($_POST[$arParams["~INPUT_NAME"]]) ? $_POST[$arParams["~INPUT_NAME"] . "_DATA"] : array($_POST[$arParams["~INPUT_NAME"] . "_DATA"]); } else { if (!empty($arParams["INPUT_VALUE"])) { $db_res = CVote::GetListEx(array("ID" => "ASC"), array("CHANNEL_ID" => $arParams["CHANNEL_ID"], "ACTIVE" => "Y", "@ID" => $arParams["INPUT_VALUE"])); while ($res = $db_res->Fetch()) { $arResult["VOTES"][$res["ID"]] = $res + array("QUESTIONS" => array()); } if (!empty($arResult["VOTES"])) { $db_res = CVoteQuestion::GetListEx(array("ID" => "ASC"), array("CHANNEL_ID" => $arParams["CHANNEL_ID"], "ACTIVE" => "Y", "@VOTE_ID" => array_keys($arResult["VOTES"]))); while ($res = $db_res->Fetch()) { $arResult["VOTES"][$res["VOTE_ID"]]["QUESTIONS"][$res["ID"]] = $res + array("ANSWERS" => array()); } $db_res = CVoteAnswer::GetListEx(array("ID" => "ASC"), array("CHANNEL_ID" => $arParams["CHANNEL_ID"], "ACTIVE" => "Y", "@VOTE_ID" => array_keys($arResult["VOTES"]))); while ($res = $db_res->Fetch()) { if ($res["FIELD_TYPE"] == 1) { $arResult["VOTES"][$res["VOTE_ID"]]["QUESTIONS"][$res["QUESTION_ID"]]["MULTI"] = "Y"; } $arResult["VOTES"][$res["VOTE_ID"]]["QUESTIONS"][$res["QUESTION_ID"]]["ANSWERS"][$res["ID"]] = $res; } } } } if (!empty($arResult["VOTES"])) { function htmlspecialcharsmix(&$mixed)
$arResult["TOPIC"] = $arMessage["TOPIC_INFO"]; $arResult["TOPIC_FILTER"] = CForumTopic::GetByID($arMessage["TOPIC_ID"]); $arResult["MESSAGE"] = $arMessage; $arResult["MESSAGE"]["FILES"] = array(); $db_res = CForumFiles::GetList(array(), array("MESSAGE_ID" => $arParams["MID"])); if ($db_res && ($res = $db_res->Fetch())) { do { $arResult["MESSAGE"]["FILES"][$res["FILE_ID"]] = $res; } while ($res = $db_res->Fetch()); } if ($arParams["SHOW_VOTE"] == "Y" && $arMessage["PARAM1"] == "VT" && intVal($arMessage["PARAM2"]) > 0) { $db_vote = CVote::GetByID(intVal($arMessage["PARAM2"])); if ($db_vote && ($arVote = $db_vote->GetNext())) { $arResult['DATE_END'] = $arVote['DATE_END']; } $db_res = CVoteQuestion::GetListEx(array("ID" => "ASC"), array("CHANNEL_ID" => $arParams["VOTE_CHANNEL_ID"], "VOTE_ID" => $arMessage["PARAM2"])); if ($db_res && ($res = $db_res->Fetch())) { do { $arResult["~QUESTIONS"][$res["ID"]] = $res; $arResult["~QUESTIONS"][$res["ID"]]["ANSWERS"] = array(); } while ($res = $db_res->Fetch()); } if (!empty($arResult["~QUESTIONS"])) { $db_res = CVoteAnswer::GetListEx(array("ID" => "ASC"), array("VOTE_ID" => $arMessage["PARAM2"])); if ($db_res && ($res = $db_res->Fetch())) { do { if (is_set($arResult["~QUESTIONS"], $res["QUESTION_ID"])) { $arResult["~QUESTIONS"][$res["QUESTION_ID"]]["ANSWERS"][$res["ID"]] = $res; if (intVal($res["FIELD_TYPE"]) == 1) { $arResult["~QUESTIONS"][$res["QUESTION_ID"]]["MULTI"] = "Y"; }