public function processFilterData(&$result)
{
$params = $this->getComponent()->arParams;
if ($params['LOG_ID'] > 0)
{
$this->setFilterKey('ID', $params['LOG_ID']);
$this->showPinnedPanel = false;
}
elseif (
$result['AJAX_CALL']
&& $params['NEW_LOG_ID'] > 0
)
{
$this->setFilterKey('ID', $params['NEW_LOG_ID']);
$this->showPinnedPanel = false;
}
else
{
if ($params['DESTINATION'] > 0)
{
$this->setFilterKey('LOG_RIGHTS', $params['DESTINATION']);
$this->showPinnedPanel = false;
}
elseif ($params['GROUP_ID'] > 0)
{
$this->setFilterKey('LOG_RIGHTS', 'SG'.(int)$params['GROUP_ID']);
if ($result['GROUP_READ_ONLY'] === 'Y')
{
$this->setFilterKey('LOG_RIGHTS_SG', 'OSG' . (int)$params['GROUP_ID'] . '_' . SONET_ROLES_AUTHORIZED);
}
$this->showPinnedPanel = false;
}
if ($params['FIND'] <> '')
{
$fullTextEnabled = BitrixSocialnetworkLogIndexTable::getEntity()->fullTextIndexEnabled('CONTENT');
$operation = ($fullTextEnabled ? '*' : '*%');
if (
!$fullTextEnabled
|| mb_strlen($params['FIND']) >= $result['ftMinTokenSize']
)
{
$this->setFilterKey($operation.'CONTENT', BitrixSocialnetworkItemLogIndex::prepareToken($params['FIND']));
}
$this->showPinnedPanel = false;
}
if ($params['IS_CRM'] !== 'Y')
{
$logRightsFilterValue = $this->getFilterKey('LOG_RIGHTS');
$this->setFilterKey('!MODULE_ID', ( // can't use !@MODULE_ID because of null
Option::get('crm', 'enable_livefeed_merge', 'N') === 'Y'
|| (
!empty($logRightsFilterValue)
&& !is_array($logRightsFilterValue)
&& preg_match('/^SG(d+)$/', $logRightsFilterValue, $matches)
)
? ['crm']
: ['crm', 'crm_shared']
));
}
}
if (
$params['LOG_ID'] <= 0
&& $params['NEW_LOG_ID'] <= 0
)
{
if (isset($params['EXACT_EVENT_ID']))
{
$this->setFilterKey('EVENT_ID', [$params['EXACT_EVENT_ID']]);
}
elseif (is_array($params['EVENT_ID']))
{
$arraysToMerge = [];
foreach ($params['EVENT_ID'] as $eventId)
{
$arraysToMerge[] = CSocNetLogTools::findFullSetByEventID($eventId);
}
$eventIdFullSet = array_merge([], ...$arraysToMerge);
$this->setFilterKey('EVENT_ID', array_unique($eventIdFullSet));
}
elseif ($params['EVENT_ID'])
{
$this->setFilterKey('EVENT_ID', CSocNetLogTools::findFullSetByEventID($params['EVENT_ID']));
}
if ((int)$params['CREATED_BY_ID'] > 0) // from preset
{
$this->setFilterKey('USER_ID', $params['CREATED_BY_ID']);
}
}
if (
(
$params['GROUP_ID'] > 0
|| $params['USER_ID'] > 0
)
&& $this->getFilterKey('EVENT_ID') === false
)
{
$eventIdFilterValue = [];
$allowedEventIdList = CSocNetAllowed::getAllowedLogEvents();
foreach ($allowedEventIdList as $eventId => $eventData)
{
if (
array_key_exists('HIDDEN', $eventData)
&& $eventData['HIDDEN']
)
{
continue;
}
$eventIdFilterValue[] = $eventId;
}
$featuresList = CSocNetFeatures::GetActiveFeatures(
($params['GROUP_ID'] > 0 ? SONET_ENTITY_GROUP : SONET_ENTITY_USER),
($params["GROUP_ID"] > 0 ? $params['GROUP_ID'] : $params['USER_ID'])
);
$allowedFeaturesList = CSocNetAllowed::getAllowedFeatures();
foreach ($featuresList as $featureId)
{
if (
array_key_exists($featureId, $allowedFeaturesList)
&& array_key_exists('subscribe_events', $allowedFeaturesList[$featureId])
)
{
foreach ($allowedFeaturesList[$featureId]['subscribe_events'] as $eventId => $eventData)
{
$eventIdFilterValue[] = $eventId;
}
}
}
$this->setFilterKey('EVENT_ID', $eventIdFilterValue);
}
if (
$this->getFilterKey('EVENT_ID') === false
|| (is_array($this->getFilterKey('EVENT_ID')) && empty($this->getFilterKey('EVENT_ID')))
)
{
$this->unsetFilterKey('EVENT_ID');
}
$this->setFilterKey('SITE_ID', ($result['bExtranetSite'] ? SITE_ID : [SITE_ID, false]));
$this->setFilterKey('<=LOG_DATE', 'NOW');
if (
$params['LOG_ID'] <= 0
&& $params['NEW_LOG_ID'] <= 0
&& in_array($params['FILTER'], ['favorites', 'my', 'important', 'work', 'bizproc', 'blog'])
)
{
if ($params['FILTER'] === 'favorites')
{
$this->setFilterKey('>FAVORITES_USER_ID', 0);
}
elseif ($params['FILTER'] === 'my')
{
$this->setFilterKey('USER_ID', $result['currentUserId']);
}
elseif ($params['FILTER'] === 'important')
{
$this->setFilterKey('EVENT_ID', 'blog_post_important');
}
elseif ($params['FILTER'] === 'work')
{
$this->setFilterKey('EVENT_ID', ['tasks', 'timeman_entry', 'report']);
}
elseif ($params['FILTER'] === 'bizproc')
{
$this->setFilterKey('EVENT_ID', 'lists_new_element');
}
elseif ($params['FILTER'] === 'blog')
{
$blogPostLivefeedProvider = new BitrixSocialnetworkLivefeedBlogPost;
$this->setFilterKey('EVENT_ID', $blogPostLivefeedProvider->getEventId());
}
}
if (!ComponentHelper::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, 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);
}
if ($result['currentUserId'] > 0)
{
$result['USE_PINNED'] = 'Y';
if ($this->showPinnedPanel)
{
$this->setFilterKey('PINNED_USER_ID', 0);
$result['SHOW_PINNED_PANEL'] = 'Y';
}
}
}