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;
}