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

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

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

	$arServices = CCloudStorage::GetServiceList();
	if(isset($arFields["SERVICE_ID"]))
	{
		if(!array_key_exists($arFields["SERVICE_ID"], $arServices))
			$aMsg[] = array("id" => "SERVICE_ID", "text" => GetMessage("CLO_STORAGE_WRONG_SERVICE"));
	}

	if(isset($arFields["BUCKET"]))
	{
		$arFields["BUCKET"] = trim($arFields["BUCKET"]);

		$bBadLength = false;
		if(mb_strpos($arFields["BUCKET"], ".") !== false)
		{
			$arName = explode(".", $arFields["BUCKET"]);
			$bBadLength = false;
			foreach($arName as $str)
				if(mb_strlen($str) < 2 || mb_strlen($str) > 63)
					$bBadLength = true;
		}

		if($arFields["BUCKET"] == '')
			$aMsg[] = array("id" => "BUCKET", "text" => GetMessage("CLO_STORAGE_EMPTY_BUCKET"));
		if(preg_match("/[^a-z0-9._-]/", $arFields["BUCKET"]) > 0)
			$aMsg[] = array("id" => "BUCKET", "text" => GetMessage("CLO_STORAGE_BAD_BUCKET_NAME"));
		if(mb_strlen($arFields["BUCKET"]) < 2 || mb_strlen($arFields["BUCKET"]) > 63)
			$aMsg[] = array("id" => "BUCKET", "text" => GetMessage("CLO_STORAGE_WRONG_BUCKET_NAME_LENGTH"));
		if($bBadLength)
			$aMsg[] = array("id" => "BUCKET", "text" => GetMessage("CLO_STORAGE_WRONG_BUCKET_NAME_LENGTH2"));
		if(!preg_match("/^[a-z0-9].*[a-z0-9]$/", $arFields["BUCKET"]))
			$aMsg[] = array("id" => "BUCKET", "text" => GetMessage("CLO_STORAGE_BAD_BUCKET_NAME2"));
		if(preg_match("/(-\.|\.-)/", $arFields["BUCKET"]) > 0)
			$aMsg[] = array("id" => "BUCKET", "text" => GetMessage("CLO_STORAGE_BAD_BUCKET_NAME3"));

		if($arFields["BUCKET"] <> '')
		{
			$rsBucket = self::GetList(array(), array(
				"=SERVICE_ID" => $arFields["SERVICE_ID"],
				"=BUCKET" => $arFields["BUCKET"],
			));
			$arBucket = $rsBucket->Fetch();
			if(is_array($arBucket) && $arBucket["ID"] != $ID)
				$aMsg[] = array("id" => "BUCKET", "text" => GetMessage("CLO_STORAGE_BUCKET_ALREADY_EXISTS"));
		}
	}

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

	if(isset($arFields["FAILOVER_BUCKET_ID"]) && $arFields["FAILOVER_BUCKET_ID"] == $ID)
	{
		unset($arFields["FAILOVER_BUCKET_ID"]);
	}

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

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

	if(array_key_exists("FAILOVER_DELETE_DELAY", $arFields))
	{
		$arFields["FAILOVER_DELETE_DELAY"] = (int)$arFields["FAILOVER_DELETE_DELAY"];
	}

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