• Модуль: vote
  • Путь к файлу: ~/bitrix/modules/vote/lib/uf/voteusertype.php
  • Класс: BitrixVoteUfVoteUserType
  • Вызов: VoteUserType::checkSettings
static function checkSettings(&$params)
{
	$settings = (is_array($params["SETTINGS"]) ? $params["SETTINGS"] : @unserialize($params["SETTINGS"], ["allowed_classes" => false]));
	$settings = is_array($settings) ? $settings : array($settings);
	if (array_key_exists("CHANNEL_ID", $settings))
	{
		$settings["CHANNEL_ID"] = intval($settings["CHANNEL_ID"]);
		if ($settings["CHANNEL_ID"] <= 0 && BitrixMainLoader::includeModule("vote"))
		{
			$dbRes = CVoteChannel::GetList('', '',
				array("SYMBOLIC_NAME" => $settings["CHANNEL_SYMBOLIC_NAME"], "SYMBOLIC_NAME_EXACT_MATCH" => "Y"));
			if (!($dbRes && ($channel = $dbRes->fetch()) && !!$channel))
			{
				$res = array(
					"TITLE" => $settings["CHANNEL_TITLE"],
					"SYMBOLIC_NAME" => $settings["CHANNEL_SYMBOLIC_NAME"],
					"ACTIVE" => "Y",
					"HIDDEN" => "Y",
					"C_SORT" => 100,
					"VOTE_SINGLE" => "N",
					"USE_CAPTCHA" => $settings["CHANNEL_USE_CAPTCHA"],
					"SITE" => array(),
					"GROUP_ID" => array()
				);
				$dbRes = CSite::GetList();
				while ($site = $dbRes->getNext())
					$res["SITE"][] = $site["ID"];
				$dbRes = CGroup::GetList("sort", "asc", Array("ADMIN" => "N"));
				while ($group = $dbRes->getNext())
					$res["GROUP_ID"][$group["ID"]] = ($group["ID"] == 2 ? 1 : 4);
				$res["GROUP_ID"] = (is_array($settings["GROUP_ID"]) ? array_intersect_key($settings["GROUP_ID"], $res["GROUP_ID"]) : $res["GROUP_ID"]);
				$channelId = CVoteChannel::Add($res);
			}
			else
			{
				$channelId = $channel["ID"];
			}

			$settings["CHANNEL_ID"] = $channelId;
			unset($settings["CHANNEL_TITLE"]);
			unset($settings["CHANNEL_SYMBOLIC_NAME"]);
			unset($settings["CHANNEL_USE_CAPTCHA"]);
			if (!$settings["CHANNEL_ID"])
				return false;
		}
		$uniqType = $settings["UNIQUE"];
		if (is_array($settings["UNIQUE"]))
		{
			foreach ( $settings["UNIQUE"] as $res)
				$uniqType |= $res;
		}

		$settings["UNIQUE"] = $uniqType;
		$settings["UNIQUE_IP_DELAY"] = is_array($settings["UNIQUE_IP_DELAY"]) ?
			$settings["UNIQUE_IP_DELAY"] : array("DELAY" => "10", "DELAY_TYPE" => "D");
		$params["SETTINGS"] = serialize($settings);
		$params["MULTIPLE"] = "N";
		$params["MANDATORY"] = "N";
		$params["SHOW_FILTER"] = "N";
		$params["IS_SEARCHABLE"] = "N";
	}
	return true;
}