• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/component/loglist/param.php
  • Класс: BitrixSocialnetworkComponentLogListParam
  • Вызов: Param::processPresetFilterParams
public function processPresetFilterParams(&$componentParams): void
{
	global $USER;

	$request = $this->getRequest();

	$presetFilterTopId = $this->getComponent()->getPresetFilterTopIdValue();
	$presetFilterId = $this->getComponent()->getPresetFilterIdValue();
	$commentsNeeded = $this->getComponent()->getCommentsNeededValue();

	if(
		$request->get('preset_filter_top_id') <> ''
		&& $request->get('preset_filter_top_id') !== 'clearall'
	)
	{
		$presetFilterTopId = $request->get('preset_filter_top_id');
	}
	elseif (
		isset($componentParams['preset_filter_top_id'])
		&& $componentParams['preset_filter_top_id'] <> ''
		&& $componentParams['preset_filter_top_id'] !== 'clearall'
	) // from nextPage ajax request
	{
		$presetFilterTopId = $componentParams['preset_filter_top_id'];
	}

	if(
		$request->get('preset_filter_id') <> ''
		&& $request->get('preset_filter_id') !== 'clearall'
	)
	{
		$presetFilterId = $request->get('preset_filter_id');
	}
	elseif (
		isset($componentParams['preset_filter_id'])
		&& $componentParams['preset_filter_id'] <> ''
		&& $componentParams['preset_filter_id'] !== 'clearall'
	) // from nextPage ajax request
	{
		$presetFilterId = $componentParams['preset_filter_id'];
	}

	$presetFiltersOptions = $presetFiltersList = false;
	if (
		$componentParams['SHOW_EVENT_ID_FILTER'] !== 'N'
		&& $USER->isAuthorized()
	)
	{
		$presetFiltersOptions = CUserOptions::getOption('socialnetwork', '~log_filter_'.SITE_ID);
		if (!is_array($presetFiltersOptions))
		{
			$presetFiltersOptions = CUserOptions::getOption('socialnetwork', '~log_filter');
		}
	}

	if (
		is_array($presetFiltersOptions)
		&& $componentParams['SHOW_EVENT_ID_FILTER'] !== 'N'
		&& $componentParams['IS_CRM'] !== 'Y'
	)
	{
		if($request->get('preset_filter_id') <> '')
		{
			CUserOptions::deleteOption('socialnetwork', '~log_'.$componentParams['ENTITY_TYPE'].'_'.($componentParams['ENTITY_TYPE'] == SONET_ENTITY_GROUP ? $componentParams['GROUP_ID'] : $componentParams['USER_ID']));
		}

		$presetFiltersList = CSocNetLogComponent::convertPresetToFilters($presetFiltersOptions, $componentParams);

		// to filter component
		$livefeedFilterHandler = new FilterHandler([
			'filterItems' => $presetFiltersList
		]);
		AddEventHandler('socialnetwork', 'OnBeforeSonetLogFilterFill', [ $livefeedFilterHandler, 'OnBeforeSonetLogFilterFill' ]);
	}

	if (
		$componentParams['IS_CRM'] === 'Y'
		&& isset($componentParams['CRM_ENTITY_TYPE'])
		&& Loader::includeModule('crm')
	)
	{
		$liveFeedFilter = new CCrmLiveFeedFilter([ 'EntityTypeID' => CCrmLiveFeedEntity::resolveEntityTypeID($componentParams['CRM_ENTITY_TYPE']) ]);
		AddEventHandler('socialnetwork', 'OnSonetLogFilterProcess', [ $liveFeedFilter, 'OnSonetLogFilterProcess' ]);
	}

	$presetTopFiltersList = [];
	if (!is_array($presetFiltersList))
	{
		$presetFiltersList = [];
	}

	$res = GetModuleEvents('socialnetwork', 'OnSonetLogFilterProcess');
	while ($eventFields = $res->fetch())
	{
		$eventResult = ExecuteModuleEventEx($eventFields, [ $presetFilterTopId, $presetFilterId, $presetTopFiltersList, $presetFiltersList ]);
		if (is_array($eventResult))
		{
			if (isset($eventResult['GET_COMMENTS']))
			{
				$commentsNeeded = $eventResult['GET_COMMENTS'];
			}
			if (isset($eventResult['PARAMS']) && is_array($eventResult['PARAMS']))
			{
				foreach($eventResult['PARAMS'] as $key => $value)
				{
					$componentParams[$key] = $value;
				}
			}
		}
	}

	if ($componentParams['SHOW_EVENT_ID_FILTER'] !== 'N')
	{
		$eventResult = CSocNetLogComponent::onSonetLogFilterProcess($presetFilterTopId, $presetFilterId, $presetTopFiltersList, $presetFiltersList);
		if (is_array($eventResult))
		{
			if (isset($eventResult['GET_COMMENTS']))
			{
				$commentsNeeded = $eventResult['GET_COMMENTS'];
			}
			if (isset($eventResult['PARAMS']) && is_array($eventResult['PARAMS']))
			{
				foreach($eventResult['PARAMS'] as $key => $value)
				{
					$componentParams[$key] = $value;
				}
			}
		}
	}

	$this->getComponent()->setPresetFilterTopIdValue($presetFilterTopId);
	$this->getComponent()->setPresetFilterIdValue($presetFilterId);
	$this->getComponent()->setCommentsNeededValue($commentsNeeded);
}