• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/user_group.php
  • Класс: CAllSocNetUserToGroup
  • Вызов: CAllSocNetUserToGroup::CheckFields
static function CheckFields($ACTION, &$relationFields, $id = 0): bool
{
	global $APPLICATION, $DB, $arSocNetAllowedRolesForUserInGroup, $arSocNetAllowedInitiatedByType;

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

	if (
		(isset($relationFields['USER_ID']) || $ACTION === "ADD")
		&& (int)$relationFields["USER_ID"] <= 0
	)
	{
		$APPLICATION->ThrowException(Loc::getMessage('SONET_UG_EMPTY_USER_ID'), 'EMPTY_USER_ID');
		return false;
	}

	if (isset($relationFields['USER_ID']))
	{
		$res = CUser::getById($relationFields["USER_ID"]);
		if (!$res->fetch())
		{
			$APPLICATION->ThrowException(Loc::getMessage('SONET_UG_ERROR_NO_USER_ID'), 'ERROR_NO_USER_ID');
			return false;
		}
	}

	if (
		(isset($relationFields['GROUP_ID']) || $ACTION === "ADD")
		&& (int)$relationFields["GROUP_ID"] <= 0
	)
	{
		$APPLICATION->ThrowException(Loc::getMessage('SONET_UG_EMPTY_GROUP_ID'), 'EMPTY_GROUP_ID');
		return false;
	}

	if (
		isset($relationFields["GROUP_ID"])
		&& !CSocNetGroup::getById($relationFields["GROUP_ID"])
	)
	{
		$APPLICATION->ThrowException(Loc::getMessage('SONET_UG_ERROR_NO_GROUP_ID'), 'ERROR_NO_GROUP_ID');
		return false;
	}

	if (
		(isset($relationFields["ROLE"]) || $ACTION === "ADD")
		&& $relationFields["ROLE"] === ''
	)
	{
		$APPLICATION->ThrowException(Loc::getMessage('SONET_UG_EMPTY_ROLE'), 'EMPTY_ROLE');
		return false;
	}

	if (
		isset($relationFields["ROLE"])
		&& !in_array($relationFields["ROLE"], $arSocNetAllowedRolesForUserInGroup, true)
	)
	{
		$APPLICATION->ThrowException(str_replace(
			"#ID#",
			$relationFields["ROLE"],
			Loc::getMessage('SONET_UG_ERROR_NO_ROLE')
		), 'ERROR_NO_ROLE');
		return false;
	}

	if (
		(isset($relationFields["INITIATED_BY_TYPE"]) || $ACTION === "ADD")
		&& (string)$relationFields["INITIATED_BY_TYPE"] === ''
	)
	{
		$APPLICATION->ThrowException(Loc::getMessage('SONET_UG_EMPTY_INITIATED_BY_TYPE'), 'EMPTY_INITIATED_BY_TYPE');
		return false;
	}

	if (
		isset($relationFields["INITIATED_BY_TYPE"])
		&& !in_array($relationFields["INITIATED_BY_TYPE"], $arSocNetAllowedInitiatedByType, true)
	)
	{
		$APPLICATION->ThrowException(str_replace(
			'#ID#',
			$relationFields["INITIATED_BY_TYPE"],
			Loc::getMessage('SONET_UG_ERROR_NO_INITIATED_BY_TYPE')
		), 'ERROR_NO_INITIATED_BY_TYPE');
		return false;
	}

	if (
		(isset($relationFields['INITIATED_BY_USER_ID']) || $ACTION === "ADD")
		&& (int)$relationFields['INITIATED_BY_USER_ID'] <= 0
	)
	{
		$APPLICATION->ThrowException(
			Loc::getMessage('SONET_UG_EMPTY_INITIATED_BY_USER_ID'),
			'EMPTY_INITIATED_BY_USER_ID'
		);
		return false;
	}

	if (isset($relationFields["INITIATED_BY_USER_ID"]))
	{
		$res = CUser::GetByID($relationFields["INITIATED_BY_USER_ID"]);
		if (!$res->fetch())
		{
			$APPLICATION->ThrowException(
				Loc::getMessage('SONET_UG_ERROR_NO_INITIATED_BY_USER_ID'),
				'ERROR_NO_INITIATED_BY_USER_ID'
			);
			return false;
		}
	}

	if (
		isset($relationFields['DATE_CREATE'])
		&& !$DB->IsDate($relationFields['DATE_CREATE'], false, LANG, 'FULL')
	)
	{
		$APPLICATION->ThrowException(Loc::getMessage('SONET_UG_EMPTY_DATE_CREATE'), 'EMPTY_DATE_CREATE');
		return false;
	}

	if (
		isset($relationFields['DATE_UPDATE'])
		&& !$DB->IsDate($relationFields['DATE_UPDATE'], false, LANG, 'FULL')
	)
	{
		$APPLICATION->ThrowException(Loc::getMessage('SONET_UG_EMPTY_DATE_UPDATE'), 'EMPTY_DATE_UPDATE');
		return false;
	}

	if (
		isset($relationFields['DATE_LAST_VIEW'])
		&& !$DB->IsDate($relationFields['DATE_LAST_VIEW'], false, LANG, 'FULL')
	)
	{
		$APPLICATION->ThrowException(Loc::getMessage('SONET_UG_EMPTY_DATE_LAST_VIEW'), 'EMPTY_DATE_LAST_VIEW');
		return false;
	}

	if (
		(
			isset($relationFields["SEND_MAIL"])
			&& $relationFields["SEND_MAIL"] !== "N"
		)
		|| !isset($relationFields['SEND_MAIL'])
	)
	{
		$relationFields["SEND_MAIL"] = "Y";
	}

	return true;
}