public function processFilterData(&$result): void
{
global $USER;
$params = $this->getComponent()->arParams;
if ($params['LOG_ID'] > 0)
{
$this->setFilterKey('ID', $params['LOG_ID']);
$this->showPinnedPanel = false;
}
$turnFollowModeOff = false;
if (isset($params['DISPLAY']))
{
$result['SHOW_UNREAD'] = 'N';
if (in_array($params['DISPLAY'], [ 'forme', 'my']))
{
$accessCodesList = $USER->getAccessCodes();
foreach ($accessCodesList as $i => $code)
{
if (!preg_match('/^(U|D|DR)/', $code)) //Users and Departments
{
unset($accessCodesList[$i]);
}
}
$this->setFilterKey('LOG_RIGHTS', $accessCodesList);
}
if ($params['DISPLAY'] === 'forme')
{
$this->setFilterKey('!USER_ID', $result['currentUserId']);
}
elseif ($params['DISPLAY'] === 'mine')
{
$this->setFilterKey('USER_ID', $result['currentUserId']);
}
elseif (is_numeric($params['DISPLAY']))
{
$this->setFilterKey('USER_ID', (int)$params['DISPLAY']);
}
if (
is_numeric($params['DISPLAY'])
|| in_array($params['DISPLAY'], [ 'forme', 'mine'])
)
{
$result['IS_FILTERED'] = true;
}
$this->showPinnedPanel = false;
}
if (
!empty($params['DESTINATION'])
&& is_array($params['DESTINATION'])
)
{
$this->setFilterKey('LOG_RIGHTS', $params['DESTINATION']);
if (count($params['DESTINATION']) == 1)
{
$code = array_shift($params['DESTINATION']);
if (preg_match('/^U(d+)$/', $code, $matches))
{
$this->setFilterKey('!USER_ID', $matches[1]);
}
}
if (
$params['MODE'] === 'LANDING'
&& !empty($params['DESTINATION_AUTHOR_ID'])
&& (int)$params['DESTINATION_AUTHOR_ID'] > 0
) // landing author filter
{
$this->setFilterKey('USER_ID', (int)$params['DESTINATION_AUTHOR_ID']);
}
}
elseif ($params['GROUP_ID'] > 0)
{
$this->setFilterKey('LOG_RIGHTS', 'SG'.$params['GROUP_ID']);
if (
isset($result['Group'])
&& $result['Group']['OPENED'] === 'Y'
)
{
$this->setFilterKey('LOG_RIGHTS_SG', 'OSG' . $params['GROUP_ID'].'_' . (Util::checkUserAuthorized() ? SONET_ROLES_AUTHORIZED : SONET_ROLES_ALL));
}
$result['SHOW_FOLLOW_CONTROL'] = 'N';
$this->showPinnedPanel = false;
}
elseif ($params['TO_USER_ID'] > 0)
{
$this->setFilterKey('LOG_RIGHTS', 'U'.$params['TO_USER_ID']);
$this->setFilterKey('!USER_ID', $params['TO_USER_ID']);
$result['SHOW_FOLLOW_CONTROL'] = 'N';
$res = UserTable::getList([
'filter' => [
'=ID' => $params['TO_USER_ID']
],
'select' => [ 'ID', 'NAME', 'LAST_NAME', 'SECOND_NAME', 'LOGIN' ]
]);
if ($userFields = $res->fetch())
{
$result['ToUser'] = [
'ID' => $userFields['ID'],
'NAME' => CUser::formatName($params['NAME_TEMPLATE'], $userFields, $this->getComponent()->useLogin)
];
}
}
elseif ($params['USER_ID'] > 0)
{
$this->setFilterKey('ENTITY_TYPE', SONET_ENTITY_USER);
$this->setFilterKey('ENTITY_ID', $params['USER_ID']);
}
elseif ($params['ENTITY_TYPE'] <> '')
{
$this->setFilterKey('ENTITY_TYPE', $params['ENTITY_TYPE']);
}
if ($params['~TAG'] <> '')
{
$this->setFilterKey('=TAG', $params['~TAG']);
$turnFollowModeOff = true;
}
elseif ($params['FIND'] <> '')
{
$this->setFilterKey('*CONTENT', LogIndex::prepareToken($params['FIND']));
$this->showPinnedPanel = false;
}
if (
isset($params['!EXACT_EVENT_ID'])
&& $params['!EXACT_EVENT_ID'] <> ''
)
{
$this->setFilterKey('!EVENT_ID', $params['!EXACT_EVENT_ID']);
$turnFollowModeOff = true;
}
if (
isset($params['EXACT_EVENT_ID'])
&& $params['EXACT_EVENT_ID'] <> ''
)
{
$this->setFilterKey('EVENT_ID', [ $params['EXACT_EVENT_ID'] ]);
$turnFollowModeOff = true;
}
elseif (
isset($params['EVENT_ID'])
&& is_array($params['EVENT_ID'])
)
{
if (!in_array('all', $params['EVENT_ID'], true))
{
$eventIdList = [];
foreach ($params['EVENT_ID'] as $eventId)
{
$eventIdList = array_merge($eventIdList, CSocNetLogTools::findFullSetByEventID($eventId));
}
if (!empty($eventIdList))
{
$this->setFilterKey('EVENT_ID', array_unique($eventIdList));
}
$turnFollowModeOff = true;
}
}
elseif (
isset($params['EVENT_ID'])
&& $params['EVENT_ID'] <> ''
)
{
$this->setFilterKey('EVENT_ID', CSocNetLogTools::findFullSetByEventID($params['EVENT_ID']));
$turnFollowModeOff = true;
}
elseif ($this->getComponent()->getPresetFilterIdValue() === 'extranet')
{
$turnFollowModeOff = true;
}
if ($params['CREATED_BY_ID'] > 0)
{
if ($this->getComponent()->getCommentsNeededValue())
{
$this->setFilterKey('USER_ID|COMMENT_USER_ID', $params['CREATED_BY_ID']);
}
else
{
$this->setFilterKey('USER_ID', $params['CREATED_BY_ID']);
}
$this->unsetFilterKey('!USER_ID');
$turnFollowModeOff = true;
}
if ($params['GROUP_ID'] > 0)
{
$result['IS_FILTERED'] = true;
}
if (
isset($params['FLT_ALL'])
&& $params['FLT_ALL'] === 'Y'
)
{
$this->setFilterKey('ALL', 'Y');
}
if (isset($params['FILTER_SITE_ID']))
{
$this->setFilterKey('SITE_ID', $params['FILTER_SITE_ID']);
}
elseif ($params['MODE'] !== 'LANDING')
{
$this->setFilterKey('SITE_ID', (
$result['isExtranetSite']
? SITE_ID
: [ SITE_ID, false ]
));
}
if (
isset($params['LOG_DATE_FROM'])
&& $params['LOG_DATE_FROM'] <> ''
&& $this->makeTimeStampFromDateTime($params['LOG_DATE_FROM'], 'SHORT') < time() + $result['TZ_OFFSET']
)
{
$this->setFilterKey('>=LOG_DATE', $params['LOG_DATE_FROM']);
$turnFollowModeOff = true;
}
else
{
unset($_REQUEST['flt_date_from']);
}
if (
isset($params['LOG_DATE_TO'])
&& $params['LOG_DATE_TO'] <> ''
&& $this->makeTimeStampFromDateTime($params['LOG_DATE_TO'], 'SHORT') < time() + $result['TZ_OFFSET']
)
{
$this->setFilterKey('<=LOG_DATE', convertTimeStamp($this->makeTimeStampFromDateTime($params['LOG_DATE_TO'], 'SHORT')+86399, 'FULL'));
$turnFollowModeOff = true;
}
else
{
$this->setFilterKey('<=LOG_DATE', 'NOW');
unset($_REQUEST['flt_date_to']);
}
$this->processMainUIFilterData($result);
if ($params['IS_CRM'] === 'Y')
{
if (Loader::includeModule('crm'))
{
$result['CRM_ENTITY_TYPE_NAME'] = CCrmOwnerType::resolveName(CCrmLiveFeedEntity::resolveEntityTypeID($params['CRM_ENTITY_TYPE']));
$result['CRM_ENTITY_ID'] = $params['CRM_ENTITY_ID'];
}
if (
$params['CRM_ENTITY_TYPE'] <> ''
|| $this->getComponent()->getPresetFilterTopIdValue()
)
{
$result['SHOW_UNREAD'] = 'N';
}
$this->showPinnedPanel = false;
}
$result['presetFilterTopIdValue'] = $this->getComponent()->getPresetFilterTopIdValue();
$result['presetFilterIdValue'] = $this->getComponent()->getPresetFilterIdValue();
if (
(
!isset($params['USE_FAVORITES'])
|| $params['USE_FAVORITES'] !== 'N'
)
&& isset($params['FAVORITES'])
&& $params['FAVORITES'] === 'Y'
)
{
$this->setFilterKey('>FAVORITES_USER_ID', 0);
$result['SHOW_UNREAD'] = 'N';
}
if ($turnFollowModeOff)
{
$result['SHOW_UNREAD'] = 'N';
$result['SHOW_FOLLOW_CONTROL'] = 'N';
$result['IS_FILTERED'] = true;
}
if (
$params["IS_CRM"] !== "Y"
&& !BitrixSocialnetworkComponentHelper::checkLivefeedTasksAllowed()
)
{
$eventIdFilter = $this->getFilterKey('EVENT_ID');
$notEventIdFilter = $this->getFilterKey('!EVENT_ID');
if (empty($notEventIdFilter))
{
$notEventIdFilter = [];
}
elseif (!is_array($notEventIdFilter))
{
$notEventIdFilter = [ $notEventIdFilter ];
}
if (empty($eventIdFilter))
{
$eventIdFilter = [];
}
elseif (!is_array($eventIdFilter))
{
$eventIdFilter = [ $eventIdFilter ];
}
if (ModuleManager::isModuleInstalled('tasks'))
{
$notEventIdFilter = array_merge($notEventIdFilter, [ 'tasks' ]);
$eventIdFilter = array_filter($eventIdFilter, static function($eventId) { return ($eventId !== 'tasks'); });
}
if (
ModuleManager::isModuleInstalled('crm')
&& Option::get('crm', 'enable_livefeed_merge', 'N') === 'Y'
)
{
$notEventIdFilter = array_merge($notEventIdFilter, [ 'crm_activity_add' ]);
$eventIdFilter = array_filter($eventIdFilter, static function($eventId) { return ($eventId !== 'crm_activity_add'); });
}
if (!empty($notEventIdFilter))
{
$this->setFilterKey('!EVENT_ID', $notEventIdFilter);
}
$this->setFilterKey('EVENT_ID', $eventIdFilter);
}
$result['USE_PINNED'] = 'N';
$result['SHOW_PINNED_PANEL'] = 'N';
if (
$result['currentUserId'] > 0
&& $params['MODE'] !== 'LANDING'
&& $params['IS_CRM'] !== 'Y'
)
{
$result['USE_PINNED'] = 'Y';
if ($this->showPinnedPanel)
{
$this->setFilterKey('PINNED_USER_ID', 0);
$result['SHOW_PINNED_PANEL'] = 'Y';
}
}
}