Beispiel #1
0
 function parse_query($expression, $document)
 {
     if (preg_match('/\\A([\\w:]+)\\(([^\\)]*)\\)\\Z/', $expression, $match)) {
         return $this->query($match[1], args::decode($match[2]), $document);
     } else {
         if (!isset($this->cache[$expression])) {
             $this->cache[$expression] = xml::load($expression);
         }
         return $this->cache[$expression];
     }
 }
Beispiel #2
0
 function load($filename)
 {
     $this->xml = xml::load($filename);
     $query = array();
     foreach (self::$languages as $language) {
         $query[] = "/local//{$language}";
     }
     foreach ($this->xml->query(implode('|', $query)) as $node) {
         $doc = new xml();
         foreach ($this->xml->query('* | text()', $node) as $piece) {
             $doc->append($doc->import($piece));
         }
         $path = explode(':', str_replace('/', ':', trim($node->path(), '/')));
         array_shift($path);
         $this->local[implode(':', $path)] = xtree::create($doc);
     }
 }
Beispiel #3
0
 public function read($url)
 {
     extract($this->using('xml', 'archive'));
     $file = TM_TEMP_DIR . md5($url);
     @unlink($file);
     $archive->download($url, $file);
     $feed = array('head' => array(), 'body' => array());
     if (file_exists($file)) {
         $xml = new xml();
         $xml->load($file);
         $nodes = $xml->get_nodes('rss/channel');
         if (!empty($nodes['_nodes'])) {
             foreach ($nodes['_nodes'] as $i => $v) {
                 $channel_node =& $nodes['_nodes'][$i]['channel'];
                 if (!empty($channel_node['_nodes'])) {
                     foreach ($channel_node['_nodes'] as $j => $w) {
                         reset($w);
                         list($name) = each($w);
                         if (preg_match('/^(copyright|pubdate|description|link|title)$/', $name)) {
                             $feed['head'][$name] = $w[$name]['_data'];
                         } else {
                             if ($name == 'item') {
                                 $item_node =& $w['item'];
                                 $item =& $feed['body'][];
                                 if (isset($item_node)) {
                                     foreach ($item_node['_nodes'] as $k => $x) {
                                         list($name) = each($x);
                                         if (preg_match('/^(title|link|description|pubdate|guid)$/i', $name)) {
                                             $item[$name] = $x[$name]['_data'];
                                         }
                                     }
                                 }
                             }
                         }
                     }
                 }
             }
         }
         return $feed;
     }
 }
Beispiel #4
0
<?php

$config = xml::load($options->config);
$root = $config->root();
$templates = $root->attribute('templates');
$data = $root->attribute('data');
$scripts = $root->attribute('scripts');
$engine = $root->attribute('engine');
$schema = $root->attribute('schema');
$this->api = new api($schema);
$this->locale = new locale($options->language, $options->country);
$this->locale->load($root['@locale']);
foreach ($config->query('/config/pages//page') as $page) {
    $params = [];
    foreach ($config->query_assoc('param[@name and @value]', $page, '@name', '@value') as $name => $value) {
        $params[$name] = (object) ['type' => 'value', 'value' => $value];
    }
    foreach ($config->query_assoc('param[@name and @query]', $page, '@name', '@query') as $name => $value) {
        $params[$name] = (object) ['type' => 'query', 'value' => $value];
    }
    foreach ($config->query('param[@name and @get]', $page) as $param) {
        $array = ['type' => 'get', 'value' => $param['@get']];
        if ($default = $param->attribute('default')) {
            $array['default'] = $default;
        }
        $params[$param['@name']] = (object) $array;
    }
    foreach ($config->query('param[@name and @post]', $page) as $param) {
        $array = ['type' => 'post', 'value' => $param['@post']];
        if (($default = $param->attribute('default')) !== null) {
            $array['default'] = $default;
Beispiel #5
0
<?php

$config = xml::load(config_location);
foreach ($config->query('/config/vars//var') as $var) {
    $this->vars->insert($var['@name'], $var['@value']);
}
function load_sql_procedures($config, $vars, $drivers)
{
    $procedures = array();
    foreach ($drivers as $easyweb => $pdo) {
        foreach ($config->query('/config/datasources//datasource[@type = "' . $easyweb . '"]') as $ds) {
            $datasource = new sql_datasource($pdo, $ds['@server'], $ds['@username'], $ds['@password'], $ds['@database'], $ds['@charset']);
            foreach ($config->query('/config/procedures//procedure[@datasource = "' . $ds['@name'] . '"]') as $procedure) {
                $procedures[] = new sql_procedure($vars, $datasource, $procedure['@name'], $config->query_assoc('param', $procedure, '@name', '@type'), $procedure->attribute('empty') !== 'false', $procedure->attribute('root'), $procedure->attribute('item'), $procedure->value(), $config->query_assoc('output', $procedure, '@name', '@transform'), $procedure->attribute('permission'), $procedure->attribute('cache') !== 'false');
            }
        }
    }
    return $procedures;
}
function load_template($config, $node)
{
    if ($node) {
        $template = new template($node['@src'], args::decode($node->attribute('args', '')), $node->attribute('xml'));
        foreach ($config->query('template', $node) as $child) {
            $template->insert($child['@name'], load_template($config, $child));
        }
        return $template;
    } else {
        return null;
    }
}
Beispiel #6
0
 static function load($filename)
 {
     return new censor(xml::load($filename));
 }