function solr() { $document = new \xml\document(); $fields = $document->element('fields'); $this->traverse(function ($path, $property) use($document, $fields) { $types = ['boolean' => 'boolean', 'datetime' => 'date', 'enum' => 'string', 'integer' => 'int', 'number' => 'float', 'string' => 'string']; $required = (isset($property->required) and $property->required) ? 'true' : 'false'; $stored = 'true'; $multiValued = 'false'; if (isset($types[$property->type])) { $field = $document->element('field'); $field['@name'] = $path; $field['@type'] = $types[$property->type]; $field['@required'] = $required; $field['@indexed'] = in_array($property->type, ['string']) ? (isset($property->indexed) and $property->indexed) ? 'true' : 'false' : 'true'; $field['@stored'] = $stored; $field['@multiValued'] = $multiValued; $fields->append($field); } }); $document->append($fields); return $document->render(); }
<?php require_once www_root . 'xml/document.php'; $config = xml\document::load($filename); $result = (object) ['batch' => $config['@batch'], 'schema' => $config['@schema'], 'documentation' => $config['@documentation'], 'datasources' => [], 'collections' => [], 'resources' => [], 'schemas' => []]; if (isset($config['@vars'])) { $result->vars = $config['@vars']; } foreach ($config->query('/config/datasources//datasource[@name and @type]') as $datasource) { $name = $datasource['@name']; unset($datasource['@name']); $result->datasources[$name] = (object) iterator_to_array($datasource->attributes()); } foreach ($config->query('/config//collection[@name]') as $collection) { $procedures = []; foreach ($collection->query('.//procedure[@name and @datasource]') as $procedure) { $params = []; $output = []; if (isset($procedure['@params'])) { foreach (explode(',', $procedure['@params']) as $param) { $options = (object) []; $name = trim($param); $filter = explode('|', $name); if (count($filter) == 2) { $name = trim($filter[0]); $options->filter = trim($filter[1]); } $params[$name] = $options; } } if ($attrib = isset($procedure['@output']) ? $procedure['@output'] : (isset($collection['@output']) ? $collection['@output'] : null)) {