/**
  * 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;
 }