• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/group_features.php
  • Класс: CAllSocNetFeatures
  • Вызов: CAllSocNetFeatures::CheckFields
static function CheckFields($ACTION, &$arFields, $ID = 0)
{
	global $APPLICATION, $DB, $arSocNetAllowedEntityTypes;

	if ($ACTION !== "ADD" && (int)$ID <= 0)
	{
		$APPLICATION->ThrowException("System error 870164", "ERROR");
		return false;
	}

	if ((is_set($arFields, "ENTITY_TYPE") || $ACTION === "ADD") && $arFields["ENTITY_TYPE"] == '')
	{
		$APPLICATION->ThrowException(GetMessage("SONET_GF_EMPTY_ENTITY_TYPE"), "EMPTY_ENTITY_TYPE");
		return false;
	}

	if (is_set($arFields, "ENTITY_TYPE"))
	{
		if (!in_array($arFields["ENTITY_TYPE"], $arSocNetAllowedEntityTypes))
		{
			$APPLICATION->ThrowException(GetMessage("SONET_GF_ERROR_NO_ENTITY_TYPE"), "ERROR_NO_ENTITY_TYPE");
			return false;
		}
	}

	if ((is_set($arFields, "ENTITY_ID") || $ACTION === "ADD") && (int)$arFields["ENTITY_ID"] <= 0)
	{
		$APPLICATION->ThrowException(GetMessage("SONET_GF_EMPTY_ENTITY_ID"), "EMPTY_ENTITY_ID");
		return false;
	}

	if (is_set($arFields, "ENTITY_ID"))
	{
		$type = "";
		if (is_set($arFields, "ENTITY_TYPE"))
		{
			$type = $arFields["ENTITY_TYPE"];
		}
		elseif ($ACTION !== 'ADD')
		{
			$arRe = CSocNetFeatures::GetByID($ID);
			if ($arRe)
				$type = $arRe["ENTITY_TYPE"];
		}
		if ($type == '')
		{
			$APPLICATION->ThrowException(GetMessage("SONET_GF_ERROR_CALC_ENTITY_TYPE"), "ERROR_CALC_ENTITY_TYPE");
			return false;
		}

		if ($type === SONET_ENTITY_GROUP)
		{
			$arResult = CSocNetGroup::GetByID($arFields["ENTITY_ID"]);
			if ($arResult == false)
			{
				$APPLICATION->ThrowException(GetMessage("SONET_GF_ERROR_NO_ENTITY_ID"), "ERROR_NO_ENTITY_ID");
				return false;
			}
		}
		elseif ($type === SONET_ENTITY_USER)
		{
			$dbResult = CUser::GetByID($arFields["ENTITY_ID"]);
			if (!$dbResult->Fetch())
			{
				$APPLICATION->ThrowException(GetMessage("SONET_GF_ERROR_NO_ENTITY_ID"), "ERROR_NO_ENTITY_ID");
				return false;
			}
		}
		else
		{
			$APPLICATION->ThrowException(GetMessage("SONET_GF_ERROR_CALC_ENTITY_TYPE"), "ERROR_CALC_ENTITY_TYPE");
			return false;
		}
	}

	if ((is_set($arFields, "FEATURE") || $ACTION === "ADD") && $arFields["FEATURE"] == '')
	{
		$APPLICATION->ThrowException(GetMessage("SONET_GF_EMPTY_FEATURE_ID"), "EMPTY_FEATURE");
		return false;
	}

	if (is_set($arFields, "FEATURE"))
	{
		$arFields["FEATURE"] = mb_strtolower($arFields["FEATURE"]);
		$arSocNetFeaturesSettings = CSocNetAllowed::GetAllowedFeatures();

		if (!array_key_exists($arFields["FEATURE"], $arSocNetFeaturesSettings))
		{
			$APPLICATION->ThrowException(GetMessage("SONET_GF_ERROR_NO_FEATURE_ID"), "ERROR_NO_FEATURE");
			return false;
		}
	}

	if (is_set($arFields, "DATE_CREATE") && (!$DB->IsDate($arFields["DATE_CREATE"], false, LANG, "FULL")))
	{
		$APPLICATION->ThrowException(GetMessage("SONET_GB_EMPTY_DATE_CREATE"), "EMPTY_DATE_CREATE");
		return false;
	}

	if (is_set($arFields, "DATE_UPDATE") && (!$DB->IsDate($arFields["DATE_UPDATE"], false, LANG, "FULL")))
	{
		$APPLICATION->ThrowException(GetMessage("SONET_GB_EMPTY_DATE_UPDATE"), "EMPTY_DATE_UPDATE");
		return false;
	}

	if (
		(is_set($arFields, "ACTIVE") || $ACTION === "ADD")
		&& !in_array($arFields["ACTIVE"], array("Y", "N"))
	)
	{
		$arFields["ACTIVE"] = "Y";
	}

	return True;
}