403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/search/classes/general/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/search/classes/general/comp_parameters.php
<?php
IncludeModuleLangFile(__FILE__);

class CSearchParameters
{
	public static function ConvertParamsToFilter($arParams, $strFilterParamName)
	{
		$exFILTER = [];

		if (!is_array($arParams[$strFilterParamName]) && $arParams[$strFilterParamName] <> '')
		{
			$arParams[$strFilterParamName] = [$arParams[$strFilterParamName]];
		}

		if (is_array($arParams[$strFilterParamName]))
		{
			foreach ($arParams[$strFilterParamName] as $strFILTER)
			{
				switch ($strFILTER)
				{
				case 'main':
					$exFILTER[] = CSearchParameters::_main($arParams[$strFilterParamName . '_main'] ?? null);
					break;
				case 'forum':
					if (IsModuleInstalled('forum'))
					{
						$exFILTER[] = CSearchParameters::_forum($arParams[$strFilterParamName . '_forum'] ?? null);
					}
					break;
				case 'blog':
					$exFILTER[] = CSearchParameters::_blog($arParams[$strFilterParamName . '_blog'] ?? null);
					break;
				case 'microblog':
					$exFILTER[] = [
						'=MODULE_ID' => 'blog',
						'PARAM1' => 'MICROBLOG',
					];
					break;
				case 'socialnetwork':
					$exFILTER[] = CSearchParameters::_socialnetwork($arParams[$strFilterParamName . '_socialnetwork'] ?? null);
					break;
				case 'socialnetwork_user':
					$exFILTER[] = CSearchParameters::_socialnetwork_user($arParams[$strFilterParamName . '_socialnetwork_user'] ?? null);
					break;
				case 'intranet':
					$exFILTER[] = [
						'=MODULE_ID' => 'intranet',
					];
					break;
				case 'crm':
					$exFILTER[] = [
						'=MODULE_ID' => 'crm',
					];
					break;
				case 'disk':
					$exFILTER[] = [
						'=MODULE_ID' => 'disk',
					];
					break;
				case 'no':
					break;
				default:
					if (mb_strpos($strFILTER, 'iblock_') === 0)
					{
						$exFILTER[] = CSearchParameters::_iblock($arParams[$strFilterParamName . '_' . $strFILTER] ?? null, $strFILTER);
					}
					else
					{
						$exFILTER[] = [
							'=MODULE_ID' => $strFILTER,
						];
					}
					break;
				}
			}
		}

		return $exFILTER;
	}

	public static function GetFilterDropDown($bFilter = false)
	{
		if ($bFilter)
		{
			$arrDropdown = [
				'no' => GetMessage('SEARCH_CP_NO_LIMIT'),
				'main' => '[main] ' . GetMessage('SEARCH_CP_STATIC'),
			];
		}
		else
		{
			$arrDropdown = [];
		}

		if (IsModuleInstalled('forum'))
		{
			$arrDropdown['forum'] = '[forum] ' . GetMessage('SEARCH_CP_FORUM');
		}

		if (CModule::IncludeModule('iblock'))
		{
			$rsType = CIBlockType::GetList(['sort' => 'asc'], ['ACTIVE' => 'Y']);
			while ($arr = $rsType->Fetch())
			{
				if ($ar = CIBlockType::GetByIDLang($arr['ID'], LANGUAGE_ID))
				{
					$arrDropdown['iblock_' . $arr['ID']] = '[iblock_' . $arr['ID'] . '] ' . $ar['~NAME'];
				}
			}
		}

		if (IsModuleInstalled('blog'))
		{
			$arrDropdown['blog'] = '[blog] ' . GetMessage('SEARCH_CP_BLOG');
			if ($bFilter)
			{
				$arrDropdown['microblog'] = '[microblog] ' . GetMessage('SEARCH_CP_MICROBLOG');
			}
		}

		if (IsModuleInstalled('socialnetwork'))
		{
			$arrDropdown['socialnetwork'] = '[socialnetwork] ' . GetMessage('SEARCH_CP_SOCNET');
			$arrDropdown['socialnetwork_user'] = '[socialnetwork_user] ' . GetMessage('SEARCH_CP_SOCNET_USER');
		}

		if (IsModuleInstalled('intranet'))
		{
			$arrDropdown['intranet'] = '[intranet] ' . GetMessage('SEARCH_CP_INTRANET_USERS');
		}

		if (IsModuleInstalled('crm'))
		{
			$arrDropdown['crm'] = '[crm] ' . GetMessage('SEARCH_CP_CRM');
		}

		if (IsModuleInstalled('disk'))
		{
			$arrDropdown['disk'] = '[disk] ' . GetMessage('SEARCH_CP_DISK');
		}

		return $arrDropdown;
	}

	public static function GetModulesList()
	{
		$result = [];
		foreach (GetModuleEvents('search', 'OnReindex', true) as $arEvent)
		{
			if (!array_key_exists($arEvent['TO_MODULE_ID'], $result))
			{
				$module = $arEvent['TO_MODULE_ID'];

				if (IsModuleInstalled($module))
				{
					$obModule = CModule::CreateModuleObject($module);
					if ($obModule)
					{
						$result[$module] = '[' . $module . '] ' . $obModule->MODULE_NAME;
					}
				}
			}
		}

		ksort($result);
		return $result;
	}

	public static function AddFilterParams(&$arComponentParameters, $arCurrentValues, $name, $parent, $MULTIPLE = 'Y')
	{
		$arComponentParameters['PARAMETERS'][$name] = [
			'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] = [$arCurrentValues[$name]];
		}

		if (is_array($arCurrentValues[$name]))
		{
			foreach ($arCurrentValues[$name] as $strFILTER)
			{
				if ($strFILTER == 'main')
				{
					$arComponentParameters['PARAMETERS'][$name . '_' . $strFILTER] = [
						'PARENT' => $parent,
						'NAME' => GetMessage('SEARCH_CP_URL'),
						'TYPE' => 'STRING',
						'MULTIPLE' => $MULTIPLE,
						'ADDITIONAL_VALUES' => 'Y',
						'DEFAULT' => '',
					];
				}
				elseif ($strFILTER == 'forum')
				{
					$arrFILTER = [];
					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] = [
						'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 = [];
					if (CModule::IncludeModule('iblock'))
					{
						$arrFILTER['all'] = GetMessage('SEARCH_CP_ALL');
						$rsIBlock = CIBlock::GetList(['SORT' => 'ASC'], ['TYPE' => mb_substr($strFILTER, 7)]);
						while ($arIBlock = $rsIBlock->Fetch())
						{
							$arrFILTER[$arIBlock['ID']] = $arIBlock['NAME'];
						}
					}

					$arComponentParameters['PARAMETERS'][$name . '_' . $strFILTER] = [
						'PARENT' => $parent,
						'NAME' => GetMessage('SEARCH_CP_IBLOCK_TYPE', ['#TYPE_ID#' => $strFILTER]),
						'TYPE' => 'LIST',
						'MULTIPLE' => $MULTIPLE,
						'VALUES' => $arrFILTER,
						'ADDITIONAL_VALUES' => 'N',
						'DEFAULT' => 'all',
					];
				}
				elseif ($strFILTER == 'blog')
				{
					$arrFILTER = [];
					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] = [
						'PARENT' => $parent,
						'NAME' => GetMessage('SEARCH_CP_BLOG'),
						'TYPE' => 'LIST',
						'MULTIPLE' => $MULTIPLE,
						'VALUES' => $arrFILTER,
						'ADDITIONAL_VALUES' => 'N',
						'DEFAULT' => 'all',
					];
				}
				elseif ($strFILTER == 'socialnetwork')
				{
					$arrFILTER = [];
					if (CModule::IncludeModule('socialnetwork'))
					{
						$arrFILTER['all'] = GetMessage('SEARCH_CP_ALL');
						$rsGroup = CSocNetGroup::GetList(['ID' => 'DESC'], [], false, false, ['ID', 'NAME']);
						while ($arGroup = $rsGroup->Fetch())
						{
							$arrFILTER[$arGroup['ID']] = $arGroup['NAME'];
						}
					}

					$arComponentParameters['PARAMETERS'][$name . '_' . $strFILTER] = [
						'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] = [
						'PARENT' => 'DATA_SOURCE',
						'NAME' => GetMessage('SEARCH_CP_SOCIALNETWORK_USER'),
						'TYPE' => 'STRING',
						'DEFAULT' => '',
					];
				}
			}
		}
	}

	protected static function _main($arParam)
	{
		if (is_array($arParam))
		{
			$arURL = [];
			foreach ($arParam as $strURL)
			{
				$strURL = trim($strURL);
				if ($strURL)
				{
					$arURL[] = $strURL . '%';
				}
			}

			if (count($arURL) > 0)
			{
				return [
					'=MODULE_ID' => 'main',
					'URL' => $arURL,
				];
			}
		}
		elseif (mb_strlen($arParam))
		{
			return [
				'=MODULE_ID' => 'main',
				'URL' => $arParam . '%',
			];
		}

		return [
			'=MODULE_ID' => 'main',
			'URL' => ['/%'],
		];
	}

	protected static function _forum($arParam)
	{
		if (is_array($arParam))
		{
			$arForum = [];
			foreach ($arParam as $strForum)
			{
				if ($strForum != 'all')
				{
					$arForum[] = intval($strForum);
				}
			}

			if (count($arForum) > 0)
			{
				return [
					'=MODULE_ID' => 'forum',
					'PARAM1' => $arForum,
				];
			}
		}
		elseif ($arParam > 0)
		{
			return [
				'=MODULE_ID' => 'forum',
				'PARAM1' => intval($arParam),
			];
		}

		return [
			'=MODULE_ID' => 'forum',
		];
	}

	protected static function _iblock($arParam, $strFILTER)
	{
		if (is_array($arParam))
		{
			$arIBlock = [];
			foreach ($arParam as $strIBlock)
			{
				if ($strIBlock != 'all')
				{
					$arIBlock[] = intval($strIBlock);
				}
			}

			if (count($arIBlock) > 0)
			{
				return [
					'=MODULE_ID' => 'iblock',
					'PARAM1' => mb_substr($strFILTER, 7),
					'PARAM2' => $arIBlock,
				];
			}
		}
		elseif ($arParam > 0)
		{
			return [
				'=MODULE_ID' => 'iblock',
				'PARAM1' => mb_substr($strFILTER, 7),
				'PARAM2' => intval($arParam),
			];
		}

		return [
			'=MODULE_ID' => 'iblock',
			'PARAM1' => mb_substr($strFILTER, 7),
		];
	}

	protected static function _blog($arParam)
	{
		if (is_array($arParam))
		{
			$arBlog = [];
			foreach ($arParam as $strBlog)
			{
				if ($strBlog != 'all')
				{
					$arBlog[] = intval($strBlog);
				}
			}

			if (count($arBlog) > 0)
			{
				return [
					'=MODULE_ID' => 'blog',
					'PARAM1' => 'POST',
					'PARAM2' => $arBlog,
				];
			}
		}
		elseif ($arParam > 0)
		{
			return [
				'=MODULE_ID' => 'blog',
				'PARAM1' => 'POST',
				'PARAM2' => intval($arParam),
			];
		}

		return [
			'=MODULE_ID' => 'blog',
			'!=PARAM1' => 'MICROBLOG',
		];
	}

	protected static function _socialnetwork($arParam)
	{
		if (is_array($arParam))
		{
			$arSCGroups = [];
			foreach ($arParam as $strSCGroup)
			{
				if ($strSCGroup != 'all')
				{
					$arSCGroups[] = intval($strSCGroup);
				}
			}

			if (count($arSCGroups) > 0)
			{
				return [
					'PARAMS' => ['socnet_group' => $arSCGroups],
					'USE_TF_FILTER' => false,
				];
			}
		}
		elseif ($arParam > 0)
		{
			return [
				'PARAMS' => ['socnet_group' => intval($arParam)],
			];
		}

		return [
			'=MODULE_ID' => 'socialnetwork',
			'PARAMS' => ['entity' => 'socnet_group'],
		];
	}

	protected static function _socialnetwork_user($arParam)
	{
		$intSCUser = intval($arParam);
		if ($intSCUser > 0)
		{
			return [
				'PARAMS' => ['socnet_user' => $intSCUser],
				'USE_TF_FILTER' => false,
			];
		}
		else
		{
			return [
				'=MODULE_ID' => 'socialnetwork',
			];
		}
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit