- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/classes/general/rest.php
- Класс: CSocNetLogBlogPostRestProxy
- Вызов: CSocNetLogBlogPostRestProxy::processEvent
static function processEvent(array $arParams, array $arHandler)
{
static $processedIdList = array();
if (!Loader::includeModule('blog'))
{
return false;
}
$eventName = $arHandler['EVENT_NAME'];
$appKey = $arHandler['APP_ID'].$arHandler['APPLICATION_TOKEN'];
if (!isset($processedIdList[$appKey]))
{
$processedIdList[$appKey] = array();
}
switch(mb_strtolower($eventName))
{
case 'onlivefeedpostadd':
case 'onlivefeedpostupdate':
case 'onlivefeedpostdelete':
$id = 0;
if (mb_strtolower($eventName) === 'onlivefeedpostadd')
{
$fields = isset($arParams[0]) && is_array($arParams[0])? $arParams[0] : array();
$id = (int)($fields['ID'] ?? 0);
}
elseif (in_array(mb_strtolower($eventName), array('onlivefeedpostupdate', 'onlivefeedpostdelete')))
{
$id = (int)($arParams[0] ?? 0);
$fields = isset($arParams[1]) && is_array($arParams[1])? $arParams[1] : array();
}
if ($id <= 0)
{
throw new RestException('Could not find livefeed entity ID in fields of event "' . $eventName . '"');
}
if (
mb_strtolower($eventName) === 'onlivefeedpostupdate'
&& in_array($id, $processedIdList[$appKey], true)
)
{
throw new RestException('ID ' . $id . 'has already been processed');
}
if (in_array(mb_strtolower($eventName), array('onlivefeedpostadd', 'onlivefeedpostupdate')))
{
$processedIdList[$appKey][] = $id;
}
if (
!isset($fields['SOURCE_ID'], $fields['EVENT_ID'])
&& mb_strtolower($eventName) === 'onlivefeedpostupdate'
)
{
$res = BitrixSocialnetworkLogTable::getList(array(
'filter' => array(
'ID' => $id
),
'select' => array('EVENT_ID', 'SOURCE_ID')
));
if ($logFields = $res->fetch())
{
$sourceId = (int)($logFields['SOURCE_ID'] ?? 0);
$logEventId = $logFields['EVENT_ID'] ?? false;
}
}
else
{
$sourceId = isset($fields['SOURCE_ID']) ? (int)$fields['SOURCE_ID'] : 0;
$logEventId = $fields['EVENT_ID'] ?? false;
}
if (in_array($logEventId, BitrixBlogIntegrationSocialnetworkLog::getEventIdList(), true))
{
if ($sourceId <= 0)
{
throw new RestException('Could not find livefeed source ID in fields of event "' . $eventName . '"');
}
return array('FIELDS' => array('POST_ID' => $sourceId));
}
throw new RestException('The event "' . $logEventId .'" is not processed by the log.blogpost REST events');
default:
throw new RestException("Incorrect handler ID");
}
}