%PDF- %PDF-
| Direktori : /home/bitrix/www/bitrix/modules/catalog/lib/ |
| Current File : /home/bitrix/www/bitrix/modules/catalog/lib/searchhandlers.php |
<?php
namespace Bitrix\Catalog;
class SearchHandlers
{
protected static $catalogList = array();
/**
* Fill parameters before create search index.
*
* @param array $fields Item fields.
* @return array
*/
public static function onBeforeIndex($fields)
{
if (!isset($fields['MODULE_ID']) || $fields['MODULE_ID'] != 'iblock')
return $fields;
if (empty($fields['PARAM2']))
return $fields;
if (!isset(self::$catalogList[$fields['PARAM2']]))
{
self::$catalogList[$fields['PARAM2']] = false;
$catalog = CatalogIblockTable::getList(array(
'select' => array('IBLOCK_ID'),
'filter' => array('=IBLOCK_ID' => $fields['PARAM2'])
))->fetch();
if (!empty($catalog))
self::$catalogList[$fields['PARAM2']] = $catalog['IBLOCK_ID'];
unset($catalog);
}
if (!empty(self::$catalogList[$fields['PARAM2']]))
{
$fields["PARAMS"]["iblock_section"] = array();
if (strpos($fields['ITEM_ID'], 'S') === false)
{
/** @noinspection PhpMethodOrClassCallIsNotCaseSensitiveInspection */
$sections = \CIBlockElement::getElementGroups($fields["ITEM_ID"], true, array('ID'));
/** @noinspection PhpMethodOrClassCallIsNotCaseSensitiveInspection */
while ($section = $sections->fetch())
{
/** @noinspection PhpMethodOrClassCallIsNotCaseSensitiveInspection */
$nav = \CIBlockSection::getNavChain($fields['PARAM2'], $section["ID"], array('ID'));
while ($chain = $nav->fetch())
$fields["PARAMS"]["iblock_section"][] = $chain['ID'];
unset($chain, $nav);
}
unset($section, $sections);
}
else
{
/** @noinspection PhpMethodOrClassCallIsNotCaseSensitiveInspection */
$nav = \CIBlockSection::getNavChain($fields['PARAM2'], preg_replace('#[^0-9]+#', '', $fields["ITEM_ID"]), array('ID'));
while ($chain = $nav->fetch())
$fields["PARAMS"]["iblock_section"][] = $chain['ID'];
unset($chain, $nav);
}
}
return $fields;
}
}