function CheckSettings(&$arParams) { $arSettings = is_array($arParams["SETTINGS"]) ? $arParams["SETTINGS"] : @unserialize($arParams["SETTINGS"]); $arSettings = is_array($arSettings) ? $arSettings : array($arSettings); if (array_key_exists("CHANNEL_ID", $arSettings)) { $arSettings["CHANNEL_ID"] = intval($arSettings["CHANNEL_ID"]); if ($arSettings["CHANNEL_ID"] <= 0 && CModule::IncludeModule("vote")) { $db_res = CVoteChannel::GetList($by = "ID", $order = "ASC", array("SYMBOLIC_NAME" => $arSettings["CHANNEL_SYMBOLIC_NAME"], "SYMBOLIC_NAME_EXACT_MATCH" => "Y"), $is_filtered); if (!($db_res && ($arChannel = $db_res->Fetch()) && !!$arChannel)) { $res = array("TITLE" => $arSettings["CHANNEL_TITLE"], "SYMBOLIC_NAME" => $arSettings["CHANNEL_SYMBOLIC_NAME"], "ACTIVE" => "Y", "HIDDEN" => "Y", "C_SORT" => 100, "VOTE_SINGLE" => "N", "USE_CAPTCHA" => $arSettings["CHANNEL_USE_CAPTCHA"], "SITE" => array(), "GROUP_ID" => array()); $by = "sort"; $order = "asc"; $db_res = CSite::GetList($by, $order); while ($site = $db_res->GetNext()) { $res["SITE"][] = $site["ID"]; } $db_res = CGroup::GetList($by = "sort", $order = "asc", array("ADMIN" => "N")); while ($group = $db_res->GetNext()) { $res["GROUP_ID"][$group["ID"]] = $group["ID"] == 2 ? 1 : 4; } $res["GROUP_ID"] = is_array($arSettings["GROUP_ID"]) ? array_intersect_key($arSettings["GROUP_ID"], $res["GROUP_ID"]) : $res["GROUP_ID"]; $channelId = CVoteChannel::Add($res); } else { $channelId = $arChannel["ID"]; } $arSettings["CHANNEL_ID"] = $channelId; unset($arSettings["CHANNEL_TITLE"]); unset($arSettings["CHANNEL_SYMBOLIC_NAME"]); unset($arSettings["CHANNEL_USE_CAPTCHA"]); if (!$arSettings["CHANNEL_ID"]) { return false; } } $uniqType = $arSettings["UNIQUE"]; if (is_array($arSettings["UNIQUE"])) { foreach ($arSettings["UNIQUE"] as $res) { $uniqType |= $res; } $uniqType += 5; } $arSettings["UNIQUE"] = $uniqType; $arSettings["UNIQUE_IP_DELAY"] = is_array($arSettings["UNIQUE_IP_DELAY"]) ? $arSettings["UNIQUE_IP_DELAY"] : array("DELAY" => "10", "DELAY_TYPE" => "D"); $arParams["SETTINGS"] = serialize($arSettings); $arParams["MULTIPLE"] = "N"; $arParams["MANDATORY"] = "N"; $arParams["SHOW_FILTER"] = "N"; $arParams["IS_SEARCHABLE"] = "N"; } return true; }
if ((!empty($save) || !empty($apply)) && $REQUEST_METHOD == "POST" && $VOTE_RIGHT >= "W" && check_bitrix_sessid()) { $arFields = array_intersect_key($_REQUEST, array_flip(array("TITLE", "SYMBOLIC_NAME", "ACTIVE", "HIDDEN", "C_SORT", "VOTE_SINGLE", "USE_CAPTCHA", "SITE", "GROUP_ID"))); if (is_array($arFields["SITE"])) { $arFields["FIRST_SITE_ID"] = reset($arFields["SITE"]); } foreach (array("ACTIVE", "HIDDEN", "VOTE_SINGLE", "USE_CAPTCHA") as $key) { if (!isset($arFields[$key])) { $arFields[$key] = "N"; } } foreach (array("SITE", "GROUP_ID") as $key) { if (!isset($arFields[$key])) { $arFields[$key] = array(); } } $res = $ID > 0 ? CVoteChannel::Update($ID, $arFields) : CVoteChannel::Add($arFields); if ($res > 0) { if (!empty($save)) { LocalRedirect("vote_channel_list.php?lang=" . LANGUAGE_ID); } LocalRedirect($APPLICATION->GetCurPage() . "?lang=" . LANGUAGE_ID . "&ID=" . $res . "&" . $tabControl->ActiveTabParam()); } else { $bVarsFromForm = true; if ($e = $APPLICATION->GetException()) { $message = new CAdminMessage(GetMessage("VOTE_GOT_ERROR"), $e); } } } $db_res = $ID > 0 ? CVoteChannel::GetByID($ID) : false; if (!($db_res && ($res = $db_res->Fetch()))) { $APPLICATION->SetTitle(GetMessage("VOTE_NEW_RECORD"));