- Модуль: calendar
- Путь к файлу: ~/bitrix/modules/calendar/classes/general/calendar_livefeed.php
- Класс: CCalendarLiveFeed
- Вызов: CCalendarLiveFeed::OnChangeMeetingStatusEventEntry
static function OnChangeMeetingStatusEventEntry($params): void
{
$codesList = [];
$unfolowersList = [];
if (isset($params['event']))
{
if ($params['event']['IS_MEETING'])
{
if (
isset($params['event']['MEETING_HOST'])
&& (int)$params['event']['MEETING_HOST'] > 0
)
{
$codesList[] = 'U' . (int)$params['event']['MEETING_HOST'];
}
if (isset($params['event']['ATTENDEE_LIST']) && is_array($params['event']['ATTENDEE_LIST']))
{
foreach ($params['event']['ATTENDEE_LIST'] as $attendee)
{
if (
(
(int)$attendee['id'] === (int)$params['userId']
&& $params['status'] === 'N'
)
|| (
(int)$attendee['id'] !== (int)$params['userId']
&& $attendee['status'] === 'N'
)
)
{
$unfolowersList[] = (int)$attendee['id'];
}
}
}
}
if (isset($params['event']['ATTENDEES_CODES']) && is_array($params['event']['ATTENDEES_CODES']))
{
foreach ($params['event']['ATTENDEES_CODES'] as $code)
{
if ($code === 'UA')
{
$codesList[] = 'G2';
}
else if (mb_strpos($code, 'U') === 0)
{
$attendeeId = (int)mb_substr($code, 1);
if (!in_array($attendeeId, $unfolowersList, true))
{
$codesList[] = $code;
}
}
else
{
if (mb_strpos($code, 'SG') === 0)
{
$codesList[] = $code . '_K';
}
$codesList[] = $code;
}
}
}
}
if (
($params['status'] === 'N' || $params['status'] === 'Y')
&& (int)$params['userId']
)
{
$dbRes = CSocNetLog::GetList(array("ID" => "DESC"), array("EVENT_ID" => "calendar", "SOURCE_ID" => $params['eventId']), false, false, array("ID"));
while ($logEntry = $dbRes->Fetch())
{
CSocNetLogRights::DeleteByLogID($logEntry['ID']);
foreach ($unfolowersList as $value)
{
CSocNetLogFollow::Set((int)$value, "L" . $logEntry['ID'], 'N');
}
CSocNetLogFollow::Set((int)$params['userId'], "L" . $logEntry['ID'], $params['status']);
if (
$params['status'] === 'Y'
&& method_exists(ComponentHelper::class, 'userLogSubscribe')
)
{
ComponentHelper::userLogSubscribe(array(
'logId' => $logEntry['ID'],
'userId' => (int)$params['userId'],
'typeList' => [
'COUNTER_COMMENT_PUSH',
]
));
}
if (!empty($codesList))
{
$codesList = array_unique($codesList);
CSocNetLogRights::Add($logEntry['ID'], $codesList);
}
}
}
}