• Модуль: security
  • Путь к файлу: ~/bitrix/modules/security/classes/general/iprule.php
  • Класс: CSecurityIPRule
  • Вызов: CSecurityIPRule::Add
public function Add($arFields)
{
	global $DB, $CACHE_MANAGER;

	if(!$this->CheckFields($arFields, 0))
		return false;

	if(!array_key_exists("RULE_TYPE", $arFields))
		$arFields["RULE_TYPE"] = "M";

	if(!array_key_exists("ADMIN_SECTION", $arFields))
		$arFields["ADMIN_SECTION"] = "Y";

	if(!array_key_exists("ACTIVE", $arFields))
		$arFields["ACTIVE"] = "Y";

	if(!array_key_exists("SORT", $arFields))
		$arFields["SORT"] = 500;

	$ID = $DB->Add("b_sec_iprule", $arFields);

	if($ID > 0)
	{
		if(array_key_exists("INCL_MASKS", $arFields))
		{
			if(array_key_exists("EXCL_MASKS", $arFields))
				$this->UpdateRuleMasks($ID, $arFields["INCL_MASKS"], $arFields["EXCL_MASKS"]);
			else
				$this->UpdateRuleMasks($ID, $arFields["INCL_MASKS"], false);
		}
		else
		{
			if(array_key_exists("EXCL_MASKS", $arFields))
				$this->UpdateRuleMasks($ID, false, $arFields["EXCL_MASKS"]);
		}

		if(array_key_exists("INCL_IPS", $arFields))
		{
			if(array_key_exists("EXCL_IPS", $arFields))
				$this->UpdateRuleIPs($ID, $arFields["INCL_IPS"], $arFields["EXCL_IPS"]);
			else
				$this->UpdateRuleIPs($ID, $arFields["INCL_IPS"], false);
		}
		else
		{
			if(array_key_exists("EXCL_IPS", $arFields))
				$this->UpdateRuleIPs($ID, false, $arFields["EXCL_IPS"]);
		}
	}

	COption::RemoveOption("security", "iprules_count");
	CSecurityIPRule::SetActive(CSecurityIPRule::GetActiveCount() > 0);
	if(CACHED_b_sec_iprule !== false)
		$CACHE_MANAGER->CleanDir("b_sec_iprule");

	return $ID;
}