• Модуль: search
  • Путь к файлу: ~/bitrix/modules/search/classes/general/comp_parameters.php
  • Класс: CSearchParameters
  • Вызов: CSearchParameters::AddFilterParams
static function AddFilterParams(&$arComponentParameters, $arCurrentValues, $name, $parent, $MULTIPLE = "Y")
{
	$arComponentParameters["PARAMETERS"][$name] = array(
		"PARENT" => $parent,
		"NAME" => GetMessage("SEARCH_CP_WHERE_FILTER"),
		"TYPE" => "LIST",
		"MULTIPLE" => $MULTIPLE,
		"VALUES" => CSearchParameters::GetFilterDropDown(true),
		"DEFAULT" => "all",
		"REFRESH" => "Y",
	);

	if (!is_array($arCurrentValues[$name]) && $arCurrentValues[$name] <> '')
	{
		$arCurrentValues[$name] = array($arCurrentValues[$name]);
	}

	if (is_array($arCurrentValues[$name]))
	{
		foreach ($arCurrentValues[$name] as $strFILTER)
		{
			if ($strFILTER == "main")
			{
				$arComponentParameters["PARAMETERS"][$name."_".$strFILTER] = array(
					"PARENT" => $parent,
					"NAME" => GetMessage("SEARCH_CP_URL"),
					"TYPE" => "STRING",
					"MULTIPLE" => $MULTIPLE,
					"ADDITIONAL_VALUES" => "Y",
					"DEFAULT" => "",
				);
			}
			elseif ($strFILTER == "forum")
			{
				$arrFILTER = array();
				if (CModule::IncludeModule("forum"))
				{
					$arrFILTER["all"] = GetMessage("SEARCH_CP_ALL");
					$rsForum = CForumNew::GetList();
					while ($arForum = $rsForum->Fetch())
						$arrFILTER[$arForum["ID"]] = $arForum["NAME"];
				}

				$arComponentParameters["PARAMETERS"][$name."_".$strFILTER] = array(
					"PARENT" => $parent,
					"NAME" => GetMessage("SEARCH_CP_FORUM"),
					"TYPE" => "LIST",
					"MULTIPLE" => $MULTIPLE,
					"VALUES" => $arrFILTER,
					"ADDITIONAL_VALUES" => "N",
					"DEFAULT" => "all",
				);
			}
			elseif (mb_strpos($strFILTER, "iblock_") === 0)
			{
				$arrFILTER = array();
				if (CModule::IncludeModule("iblock"))
				{
					$arrFILTER["all"] = GetMessage("SEARCH_CP_ALL");
					$rsIBlock = CIBlock::GetList(array("SORT" => "ASC"), array("TYPE" => mb_substr($strFILTER, 7)));
					while ($arIBlock = $rsIBlock->Fetch())
						$arrFILTER[$arIBlock["ID"]] = $arIBlock["NAME"];
				}

				$arComponentParameters["PARAMETERS"][$name."_".$strFILTER] = array(
					"PARENT" => $parent,
					"NAME" => GetMessage("SEARCH_CP_IBLOCK_TYPE", array("#TYPE_ID#" => $strFILTER)),
					"TYPE" => "LIST",
					"MULTIPLE" => $MULTIPLE,
					"VALUES" => $arrFILTER,
					"ADDITIONAL_VALUES" => "N",
					"DEFAULT" => "all",
				);
			}
			elseif ($strFILTER == "blog")
			{
				$arrFILTER = array();
				if (CModule::IncludeModule("blog"))
				{
					$arrFILTER["all"] = GetMessage("SEARCH_CP_ALL");
					$rsBlog = CBlog::GetList();
					while ($arBlog = $rsBlog->Fetch())
						$arrFILTER[$arBlog["ID"]] = $arBlog["NAME"];
				}

				$arComponentParameters["PARAMETERS"][$name."_".$strFILTER] = array(
					"PARENT" => $parent,
					"NAME" => GetMessage("SEARCH_CP_BLOG"),
					"TYPE" => "LIST",
					"MULTIPLE" => $MULTIPLE,
					"VALUES" => $arrFILTER,
					"ADDITIONAL_VALUES" => "N",
					"DEFAULT" => "all",
				);
			}
			elseif ($strFILTER == "socialnetwork")
			{
				$arrFILTER = array();
				if (CModule::IncludeModule("socialnetwork"))
				{
					$arrFILTER["all"] = GetMessage("SEARCH_CP_ALL");
					$rsGroup = CSocNetGroup::GetList(array("ID" => "DESC"), array(), false, false, array("ID", "NAME"));
					while ($arGroup = $rsGroup->Fetch())
						$arrFILTER[$arGroup["ID"]] = $arGroup["NAME"];
				}

				$arComponentParameters["PARAMETERS"][$name."_".$strFILTER] = array(
					"PARENT" => $parent,
					"NAME" => GetMessage("SEARCH_CP_SOCIALNETWORK_GROUPS"),
					"TYPE" => "LIST",
					"MULTIPLE" => $MULTIPLE,
					"VALUES" => $arrFILTER,
					"ADDITIONAL_VALUES" => "N",
					"DEFAULT" => "all",
				);
			}
			elseif ($strFILTER == "socialnetwork_user")
			{
				$arComponentParameters["PARAMETERS"][$name."_".$strFILTER] = array(
					"PARENT" => "DATA_SOURCE",
					"NAME" => GetMessage("SEARCH_CP_SOCIALNETWORK_USER"),
					"TYPE" => "STRING",
					"DEFAULT" => "",
				);
			}
		}
	}
}