/** * Create document(s) update XML * * @param array $documents * * @return string */ protected function createUpdates(array $documents) { $xml = new \XmlWriter(); $xml->openMemory(); $xml->startElement('add'); foreach ($documents as $document) { $xml->startElement('doc'); foreach ($document as $field) { foreach ((array) $this->fieldValueMapper->map($field) as $value) { $xml->startElement('field'); $xml->writeAttribute('name', $this->nameGenerator->getTypedName($field->name, $field->type)); $xml->text($value); $xml->endElement(); } } $xml->endElement(); } $xml->endElement(); return $xml->outputMemory(true); }
/** * Get field type information * * Returns an array in the form: * * <code> * array( * "field-identifier" => array( * "solr_field_name", * … * ), * … * ) * </code> * * @param \eZ\Publish\API\Repository\Values\Content\Query\CustomFieldInterface $criterion * * @return array */ public function getFieldTypes(CustomFieldInterface $criterion) { // @TODO: temp fixed by disabling caching, see https://jira.ez.no/browse/EZP-22834 $this->fieldTypes = array(); foreach ($this->contentTypeHandler->loadAllGroups() as $group) { foreach ($this->contentTypeHandler->loadContentTypes($group->id) as $contentType) { foreach ($contentType->fieldDefinitions as $fieldDefinition) { if (!$fieldDefinition->isSearchable) { continue; } if ($customField = $criterion->getCustomField($contentType->identifier, $fieldDefinition->identifier)) { $this->fieldTypes[$fieldDefinition->identifier]["custom"][] = $customField; continue; } $fieldType = $this->fieldRegistry->getType($fieldDefinition->fieldType); foreach ($fieldType->getIndexDefinition() as $name => $type) { $this->fieldTypes[$fieldDefinition->identifier][$type->type][] = $this->nameGenerator->getTypedName($this->nameGenerator->getName($name, $fieldDefinition->identifier, $contentType->identifier), $type); } } } } return $this->fieldTypes; }