Пример #1
0
 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;
 }
Пример #2
0
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"));