• Модуль: cluster
  • Путь к файлу: ~/bitrix/modules/cluster/classes/mysql/dbnode.php
  • Класс: CClusterDBNode
  • Вызов: CClusterDBNode::CheckFields
function CheckFields(&$arFields, $ID)
{
	global $DB, $APPLICATION;
	$aMsg = array();

	if(array_key_exists("NAME", $arFields))
		$arFields["NAME"] = trim($arFields["NAME"]);

	if(array_key_exists("ACTIVE", $arFields))
		$arFields["ACTIVE"] = $arFields["ACTIVE"] === "Y"? "Y": "N";

	if(array_key_exists("SELECTABLE", $arFields))
		$arFields["SELECTABLE"] = $arFields["SELECTABLE"] == "N"? "N": "Y";

	if(array_key_exists("WEIGHT", $arFields))
	{
		$weight = intval($arFields["WEIGHT"]);
		if($weight < 0)
			$weight = 0;
		elseif($weight > 100)
			$weight = 100;
		$arFields["WEIGHT"] = $weight;
	}

	if($arFields["ACTIVE"] == "Y" && $arFields["ROLE_ID"] != "SLAVE")
	{
		$obCheck = new CClusterDBNodeCheck;
		$nodeDB = $obCheck->SlaveNodeConnection(
			$arFields["DB_HOST"],
			$arFields["DB_NAME"],
			$arFields["DB_LOGIN"],
			$arFields["DB_PASSWORD"],
			$arFields["ROLE_ID"] == "MASTER"? $arFields["MASTER_HOST"]: false,
			$arFields["ROLE_ID"] == "MASTER"? $arFields["MASTER_PORT"]: false
		);
		if(is_object($nodeDB))
		{
			$arFields["SERVER_ID"] = intval($obCheck->GetServerVariable($nodeDB, "server_id"));
		}
		else
		{
			if(!array_key_exists("STATUS", $arFields))
				$arFields["STATUS"] = "OFFLINE";
			$aMsg[] = array("id" => "", "text" => $nodeDB);
		}
	}

	if(!empty($aMsg))
	{
		$e = new CAdminException($aMsg);
		$APPLICATION->ThrowException($e);
		return false;
	}
	return true;
}