private function doMapFields(Content $content, ContentType $contentType, $languageCode, $maxDepth, $depth = 0)
    {
        $fields = [];

        foreach ($content->fields as $field) {
            if ($field->languageCode !== $languageCode) {
                continue;
            }

            foreach ($contentType->fieldDefinitions as $fieldDefinition) {
                if ($fieldDefinition->id !== $field->fieldDefinitionId) {
                    continue;
                }

                $fieldType = $this->fieldRegistry->getType($field->type);
                $indexFields = $fieldType->getIndexData($field, $fieldDefinition);

                foreach ($indexFields as $indexField) {
                    if ($indexField->value === null) {
                        continue;
                    }

                    if (!$indexField->type instanceof FieldType\FullTextField || !$fieldDefinition->isSearchable) {
                        continue;
                    }

                    $fields[] = new Field(
                        $this->getIndexFieldName($depth),
                        $indexField->value,
                        $this->getIndexFieldType($contentType)
                    );
                }
            }
        }

        if ($depth < $maxDepth) {
            $relatedFields = $this->doMapRelatedFields($content, $languageCode, $maxDepth, $depth + 1);
            foreach ($relatedFields as $field) {
                $fields[] = $field;
            }
        }

        return $fields;
    }
private function doMapFields(Content $content, ContentType $contentType, $languageCode, $maxDepth, $depth = 0)
    {
        $fields = [];

        foreach ($content->fields as $field) {
            if ($field->languageCode !== $languageCode) {
                continue;
            }

            foreach ($contentType->fieldDefinitions as $fieldDefinition) {
                if ($fieldDefinition->id !== $field->fieldDefinitionId) {
                    continue;
                }

                $fieldType = $this->fieldRegistry->getType($field->type);
                $indexFields = $fieldType->getIndexData($field, $fieldDefinition);

                foreach ($indexFields as $indexField) {
                    if ($indexField->value === null) {
                        continue;
                    }

                    if (!$indexField->type instanceof FieldType\FullTextField || !$fieldDefinition->isSearchable) {
                        continue;
                    }

                    $fields[] = new Field(
                        $this->getIndexFieldName($depth),
                        $indexField->value,
                        $this->getIndexFieldType($contentType)
                    );
                }
            }
        }

        if ($depth < $maxDepth) {
            $relatedFields = $this->doMapRelatedFields($content, $languageCode, $maxDepth, $depth + 1);
            foreach ($relatedFields as $field) {
                $fields[] = $field;
            }
        }

        return $fields;
    }
private function doMapFields ( Content $ content , ContentType $ contentType , $ languageCode , $ maxDepth , $ depth = 0 ) { $ fields = [ ] ; foreach ( $ content -> fields as $ field ) { if ( $ field -> languageCode !== $ languageCode ) { continue ; } foreach ( $ contentType -> fieldDefinitions as $ fieldDefinition ) { if ( $ fieldDefinition -> id !== $ field -> fieldDefinitionId ) { continue ; } $ fieldType = $ this -> fieldRegistry -> getType ( $ field -> type ) ; $ indexFields = $ fieldType -> getIndexData ( $ field , $ fieldDefinition ) ; foreach ( $ indexFields as $ indexField ) { if ( $ indexField -> value === null ) { continue ; } if ( ! $ indexField -> type instanceof FieldType \ FullTextField || ! $ fieldDefinition -> isSearchable ) { continue ; } $ fields [ ] = new Field ( $ this -> getIndexFieldName ( $ depth ) , $ indexField -> value , $ this -> getIndexFieldType ( $ contentType ) ) ; } } } if ( $ depth < $ maxDepth ) { $ relatedFields = $ this -> doMapRelatedFields ( $ content , $ languageCode , $ maxDepth , $ depth + 1 ) ; foreach ( $ relatedFields as $ field ) { $ fields [ ] = $ field ; } } return $ fields ; }
@param \eZ\Publish\SPI\Persistence\Content $content
@param \eZ\Publish\SPI\Persistence\Content\Type $contentType
@param string $languageCode
@param int $maxDepth
@param int $depth

@return \eZ\Publish\SPI\Search\Field[]

@throws \eZ\Publish\API\Repository\Exceptions\NotFoundException
@param \ eZ \ Publish \ SPI \ Persistence \ Content $content @param \ eZ \ Publish \ SPI \ Persistence \ Content \ Type $contentType @param string $languageCode @param int $maxDepth @param int $depth