• Модуль: seo
  • Путь к файлу: ~/bitrix/modules/seo/lib/Sitemap/Internals/Sitemap.php
  • Класс: BitrixSeoSitemapInternalsSitemapTable
  • Вызов: SitemapTable::prepareSettings
static function prepareSettings($arSettings)
{
	if(is_array($arSettings))
	{
		$arSettings['FILE_MASK_REGEXP'] = self::compileMask($arSettings['FILE_MASK']);

		if(!isset($arSettings['DIR']) || !is_array($arSettings['DIR']))
		{
			$arSettings['DIR'] = array();
		}

		if(isset($arSettings['FILE']) && is_array($arSettings['FILE']))
		{
			ksort($arSettings['FILE'], SORT_STRING);

			foreach($arSettings['FILE'] as $file => $value)
			{
				$pos = mb_strrpos($file, '/');
				$parentDir = $pos > 0? mb_substr($file, 0, $pos) : '/';

				if(isset($arSettings['DIR'][$parentDir]) && $arSettings['DIR'][$parentDir] == $value)
				{
					unset($arSettings['FILE'][$file]);
				}
			}
		}

		if(isset($arSettings['DIR']) && is_array($arSettings['DIR']))
		{
			krsort($arSettings['DIR'], SORT_STRING);

			foreach($arSettings['DIR'] as $dir => $value)
			{
				if($dir != '/')
				{
					$pos = mb_strrpos($dir, '/');
					$parentDir = mb_substr($dir, 0, $pos);

					if($parentDir == '')
						$parentDir = '/';

					if(isset($arSettings['DIR'][$parentDir]) && $arSettings['DIR'][$parentDir] == $value)
					{
						unset($arSettings['DIR'][$dir]);
					}
				}
			}

			$arSettings['DIR'] = array_reverse($arSettings['DIR']);
		}

		if(isset($arSettings['IBLOCK_ACTIVE']) && is_array($arSettings['IBLOCK_ACTIVE']))
		{
			foreach($arSettings['IBLOCK_ACTIVE'] as $iblockId => $value)
			{
				if ($value == 'N')
				{
					unset($arSettings['IBLOCK_LIST'][$iblockId]);
					unset($arSettings['IBLOCK_SECTION'][$iblockId]);
					unset($arSettings['IBLOCK_ELEMENT'][$iblockId]);
					unset($arSettings['IBLOCK_SECTION_SECTION'][$iblockId]);
					unset($arSettings['IBLOCK_SECTION_ELEMENT'][$iblockId]);
				}
			}
		}

		if(isset($arSettings['FORUM_ACTIVE']) && is_array($arSettings['FORUM_ACTIVE']))
		{
			foreach($arSettings['FORUM_ACTIVE'] as $forumId => $value)
			{
				if ($value == 'N')
				{
					unset($arSettings['FORUM_TOPIC'][$forumId]);
				}
			}
		}
	}

	return $arSettings;
}