Beispiel #1
0
 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();
 }
Beispiel #2
0
<?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)) {