- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/log_comments.php
- Класс: CAllSocNetLogComments
- Вызов: CAllSocNetLogComments::CheckFields
static function CheckFields($ACTION, &$arFields, $ID = 0)
{
static $arSiteWorkgroupsPage;
global $DB, $USER_FIELD_MANAGER, $APPLICATION;
if (
!$arSiteWorkgroupsPage
&& IsModuleInstalled("extranet")
&& ($arFields["ENTITY_TYPE"] ?? null) == SONET_ENTITY_GROUP
)
{
$rsSite = CSite::GetList("sort", "desc", Array("ACTIVE" => "Y"));
while($arSite = $rsSite->Fetch())
{
$arSiteWorkgroupsPage[$arSite["ID"]] = COption::GetOptionString("socialnetwork", "workgroups_page", $arSite["DIR"]."workgroups/", $arSite["ID"]);
}
}
if ($ACTION != "ADD" && intval($ID) <= 0)
{
$APPLICATION->ThrowException("System error 870164", "ERROR");
return false;
}
$newEntityType = "";
if ((is_set($arFields, "ENTITY_TYPE") || $ACTION=="ADD") && $arFields["ENTITY_TYPE"] == '')
{
$APPLICATION->ThrowException(GetMessage("SONET_GLC_EMPTY_ENTITY_TYPE"), "EMPTY_ENTITY_TYPE");
return false;
}
elseif (is_set($arFields, "ENTITY_TYPE"))
{
if (!in_array($arFields["ENTITY_TYPE"], CSocNetAllowed::GetAllowedEntityTypes()))
{
$APPLICATION->ThrowException(GetMessage("SONET_GLC_ERROR_NO_ENTITY_TYPE"), "ERROR_NO_ENTITY_TYPE");
return false;
}
$newEntityType = $arFields["ENTITY_TYPE"];
}
if ((is_set($arFields, "ENTITY_ID") || $ACTION=="ADD") && intval($arFields["ENTITY_ID"]) <= 0)
{
$APPLICATION->ThrowException(GetMessage("SONET_GLC_EMPTY_ENTITY_ID"), "EMPTY_ENTITY_ID");
return false;
}
elseif (is_set($arFields, "ENTITY_ID"))
{
if ($newEntityType == '' && $ID > 0)
{
$arRe = CAllSocNetLog::GetByID($ID);
if ($arRe)
{
$newEntityType = $arRe["ENTITY_TYPE"];
}
}
if ($newEntityType == '')
{
$APPLICATION->ThrowException(GetMessage("SONET_GL_ERROR_CALC_ENTITY_TYPE"), "ERROR_CALC_ENTITY_TYPE");
return false;
}
if ($newEntityType == SONET_ENTITY_GROUP)
{
$arResult = CSocNetGroup::GetByID($arFields["ENTITY_ID"]);
if ($arResult == false)
{
$APPLICATION->ThrowException(GetMessage("SONET_GLC_ERROR_NO_ENTITY_ID"), "ERROR_NO_ENTITY_ID");
return false;
}
}
elseif ($newEntityType == SONET_ENTITY_USER)
{
$dbResult = CUser::GetByID($arFields["ENTITY_ID"]);
if (!$dbResult->Fetch())
{
$APPLICATION->ThrowException(GetMessage("SONET_GLC_ERROR_NO_ENTITY_ID"), "ERROR_NO_ENTITY_ID");
return false;
}
}
}
if ((is_set($arFields, "LOG_ID") || $ACTION=="ADD") && intval($arFields["LOG_ID"]) <= 0)
{
$APPLICATION->ThrowException(GetMessage(BitrixMainModuleManager::isModuleInstalled('intranet') ? "SONET_GLC_EMPTY_LOG_ID2" : "SONET_GLC_EMPTY_LOG_ID"), "EMPTY_LOG_ID");
return false;
}
if ((is_set($arFields, "EVENT_ID") || $ACTION=="ADD") && $arFields["EVENT_ID"] == '')
{
$APPLICATION->ThrowException(GetMessage("SONET_GLC_EMPTY_EVENT_ID"), "EMPTY_EVENT_ID");
return false;
}
elseif (is_set($arFields, "EVENT_ID"))
{
$arFields["EVENT_ID"] = mb_strtolower($arFields["EVENT_ID"]);
$arEvent = CSocNetLogTools::FindLogCommentEventByID($arFields["EVENT_ID"]);
if (!$arEvent)
{
$APPLICATION->ThrowException(GetMessage("SONET_GLC_ERROR_NO_FEATURE_ID"), "ERROR_NO_FEATURE");
return false;
}
}
if (is_set($arFields, "USER_ID"))
{
$dbResult = CUser::GetByID($arFields["USER_ID"]);
if (!$dbResult->Fetch())
{
$APPLICATION->ThrowException(GetMessage("SONET_GLC_ERROR_NO_USER_ID"), "ERROR_NO_USER_ID");
return false;
}
}
if (is_set($arFields, "LOG_DATE") && (!$DB->IsDate($arFields["LOG_DATE"], false, LANG, "FULL")))
{
$APPLICATION->ThrowException(GetMessage("SONET_GLC_EMPTY_DATE_CREATE"), "EMPTY_LOG_DATE");
return false;
}
if (is_set($arFields["URL"]) && is_array($arSiteWorkgroupsPage))
foreach($arSiteWorkgroupsPage as $groups_page)
if (mb_strpos($arFields["URL"], $groups_page) === 0)
$arFields["URL"] = "#GROUPS_PATH#".mb_substr($arFields["URL"], mb_strlen($groups_page), mb_strlen($arFields["URL"]) - mb_strlen($groups_page));
if (!$USER_FIELD_MANAGER->CheckFields("SONET_COMMENT", $ID, $arFields, (isset($arFields["USER_ID"]) && intval($arFields["USER_ID"]) > 0 ? intval($arFields["USER_ID"]) : false)))
return false;
if (!empty($arFields['TEXT_MESSAGE']))
{
$arFields["TEXT_MESSAGE"] = BitrixMainTextEmoji::encode($arFields["TEXT_MESSAGE"]);
}
if (!empty($arFields['MESSAGE']))
{
$arFields["MESSAGE"] = BitrixMainTextEmoji::encode($arFields["MESSAGE"]);
}
return True;
}