eZ\Publish\Core\Search\Elasticsearch\Content\Mapper\StandardMapper::mapFields PHP Method

mapFields() protected method

Each document contains fields for a single language.
protected mapFields ( eZ\Publish\SPI\Persistence\Content $content, eZ\Publish\SPI\Persistence\Content\Type $contentType ) : Document[]
$content eZ\Publish\SPI\Persistence\Content
$contentType eZ\Publish\SPI\Persistence\Content\Type
return eZ\Publish\Core\Search\Elasticsearch\Content\Document[]
    protected function mapFields(Content $content, Type $contentType)
    {
        $fieldMap = array();
        foreach ($content->fields as $field) {
            $fieldMap[$field->languageCode][] = $field;
        }
        $fieldDocuments = array();
        foreach (array_keys($fieldMap) as $languageCode) {
            $fields = array();
            $fields[] = new Field('meta_language_code', $languageCode, new FieldType\StringField());
            $fields[] = new Field('meta_is_main_translation', $content->versionInfo->contentInfo->mainLanguageCode === $languageCode, new FieldType\BooleanField());
            $fields[] = new Field('meta_is_always_available', $content->versionInfo->contentInfo->mainLanguageCode === $languageCode && $content->versionInfo->contentInfo->alwaysAvailable, new FieldType\BooleanField());
            foreach ($fieldMap[$languageCode] as $field) {
                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) {
                        $fields[] = new Field($name = $this->fieldNameGenerator->getName($indexField->name, $fieldDefinition->identifier, $contentType->identifier), $indexField->value, $indexField->type);
                        if ($indexField->type instanceof FieldType\FullTextField) {
                            $fields[] = new Field($name . '_meta_all_' . str_replace('-', '_', $languageCode), $indexField->value, $indexField->type);
                        }
                    }
                }
            }
            $fieldDocuments[] = new Document(array('fields' => $fields));
        }
        return $fieldDocuments;
    }