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

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

	if(
		($ID === 0 && !is_set($arFields, "SITE_ID"))
		||
		(
			is_set($arFields, "SITE_ID")
			&& (
				(is_array($arFields["SITE_ID"]) && count($arFields["SITE_ID"]) <= 0)
				||
				(!is_array($arFields["SITE_ID"]) && $arFields["SITE_ID"] == '')
			)
		)
	)
	{
		$APPLICATION->ThrowException(GetMessage("SONET_GG_EMPTY_SITE_ID"), "EMPTY_SITE_ID");
		return false;
	}
	elseif(is_set($arFields, "SITE_ID"))
	{
		if(!is_array($arFields["SITE_ID"]))
			$arFields["SITE_ID"] = array($arFields["SITE_ID"]);

		foreach($arFields["SITE_ID"] as $v)
		{
			$r = CSite::GetByID($v);
			if(!$r->Fetch())
			{
				$APPLICATION->ThrowException(str_replace("#ID#", $v, GetMessage("SONET_GG_ERROR_NO_SITE")), "ERROR_NO_SITE");
				return false;
			}
		}
	}

	if ((is_set($arFields, "NAME") || $ACTION === "ADD") && ($arFields["NAME"] ?? '') === '')
	{
		$APPLICATION->ThrowException(GetMessage("SONET_GB_EMPTY_NAME"), "EMPTY_NAME");
		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, "DATE_ACTIVITY") && (!$DB->IsDate($arFields["DATE_ACTIVITY"], false, LANG, "FULL")))
	{
		$APPLICATION->ThrowException(GetMessage("SONET_GB_EMPTY_DATE_ACTIVITY"), "EMPTY_DATE_ACTIVITY");
		return false;
	}

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

	if (is_set($arFields, "OWNER_ID"))
	{
		$dbResult = CUser::GetByID($arFields["OWNER_ID"]);
		if (!$dbResult->Fetch())
		{
			$APPLICATION->ThrowException(GetMessage("SONET_GB_ERROR_NO_OWNER_ID"), "ERROR_NO_OWNER_ID");
			return false;
		}
	}

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

	if (is_set($arFields, "SUBJECT_ID"))
	{
		$arResult = CSocNetGroupSubject::GetByID($arFields["SUBJECT_ID"]);
		if ($arResult == false)
		{
			$APPLICATION->ThrowException(GetMessage("SONET_GB_ERROR_NO_SUBJECT_ID"), "ERROR_NO_SUBJECT_ID");
			return false;
		}
	}

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

	if (
		(is_set($arFields, "VISIBLE") || $ACTION === "ADD")
		&& ($arFields["VISIBLE"] ?? null) !== "Y"
		&& ($arFields["VISIBLE"] ?? null) !== "N"
	)
	{
		$arFields["VISIBLE"] = "Y";
	}

	if (
		(is_set($arFields, "OPENED") || $ACTION === "ADD")
		&& ($arFields["OPENED"] ?? null) !== "Y"
		&& ($arFields["OPENED"] ?? null) !== "N"
	)
	{
		$arFields["OPENED"] = "N";
	}

	if (
		(is_set($arFields, "CLOSED") || $ACTION=="ADD")
		&& ($arFields["CLOSED"] ?? null) != "Y"
		&& ($arFields["CLOSED"] ?? null) !== "N"
	)
	{
		$arFields["CLOSED"] = "N";
	}

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

	if (is_set($arFields, "INITIATE_PERMS") && !in_array($arFields["INITIATE_PERMS"], $arSocNetAllowedInitiatePerms))
	{
		$APPLICATION->ThrowException(str_replace("#ID#", $arFields["INITIATE_PERMS"], GetMessage("SONET_UG_ERROR_NO_INITIATE_PERMS")), "ERROR_NO_INITIATE_PERMS");
		return false;
	}

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

	if (is_set($arFields, "SPAM_PERMS") && !in_array($arFields["SPAM_PERMS"], $arSocNetAllowedSpamPerms))
	{
		$APPLICATION->ThrowException(str_replace("#ID#", $arFields["SPAM_PERMS"], GetMessage("SONET_UG_ERROR_NO_SPAM_PERMS")), "ERROR_NO_SPAM_PERMS");
		return false;
	}

	if (
		is_set($arFields, "IMAGE_ID")
		&& is_array($arFields["IMAGE_ID"])
		&& ($arFields["IMAGE_ID"]["name"] ?? '') == ''
		&& ($arFields["IMAGE_ID"]["del"] == '' || $arFields["IMAGE_ID"]["del"] !== "Y")
	)
	{
		unset($arFields["IMAGE_ID"]);
	}

	if (is_set($arFields, "IMAGE_ID"))
	{
		$arResult = CFile::CheckImageFile($arFields["IMAGE_ID"]);
		if ($arResult <> '')
		{
			$APPLICATION->ThrowException(GetMessage("SONET_GP_ERROR_IMAGE_ID").": ".$arResult, "ERROR_IMAGE_ID");
			return false;
		}
	}

	if (
		is_set($arFields, 'AVATAR_TYPE')
		&& !array_key_exists($arFields['AVATAR_TYPE'], Workgroup::getAvatarTypes())
	)
	{
		unset($arFields['AVATAR_TYPE']);
	}

	if (!$USER_FIELD_MANAGER->CheckFields("SONET_GROUP", $ID, $arFields))
	{
		return false;
	}

	if (!empty($arFields['NAME']))
	{
		$arFields['NAME'] = Emoji::encode($arFields['NAME']);
	}

	if (!empty($arFields['DESCRIPTION']))
	{
		$arFields['DESCRIPTION'] = Emoji::encode($arFields['DESCRIPTION']);
	}

	return True;
}