Smile\ElasticsuiteCore\Index\Analysis\Config\Converter::parseFilters PHP Method

parseFilters() private method

Filters parser by language.
private parseFilters ( DOMXPath $xpath, string $rootNodeName, string $nodeName, string $language = 'default' ) : array
$xpath DOMXPath XPath access to the document parsed.
$rootNodeName string Parsing root node.
$nodeName string Name of the nodes look up.
$language string Language searched.
return array
    private function parseFilters(\DOMXPath $xpath, $rootNodeName, $nodeName, $language = 'default')
    {
        $filters = [];
        $languagePath = sprintf("[@language='%s']", $language);
        $searchPath = sprintf("/%s/%s/%s%s", self::ROOT_NODE_NAME, $rootNodeName, $nodeName, $languagePath);
        $filterNodes = $xpath->query($searchPath);
        foreach ($filterNodes as $filterNode) {
            $filterName = $filterNode->getAttribute('name');
            $filter = ['type' => $filterNode->getAttribute('type')];
            foreach ($filterNode->childNodes as $childNode) {
                if ($childNode instanceof \DOMElement) {
                    try {
                        $filter[$childNode->tagName] = $this->jsonDecoder->decode($childNode->nodeValue);
                    } catch (\Exception $e) {
                        $filter[$childNode->tagName] = $childNode->nodeValue;
                    }
                }
            }
            $filters[$filterName] = $filter;
        }
        return $filters;
    }