Esempio n. 1
0
 public function eval_function($function, $args)
 {
     $method = '__' . $function;
     $result = '';
     if (strpos($function, '::') !== false) {
         list($class, $class_method) = explode('::', $function, 2);
         if (!isset($this->xt_syntax_plugins[$class]) || $this->xt_syntax_plugins[$class]) {
             if (!isset($this->xt_syntax_plugins[$class])) {
                 if (file_exists($this->xt_syntax_plugins_directory . 'xt_' . $class . '.php')) {
                     require $this->xt_syntax_plugins_directory . 'xt_' . $class . '.php';
                     if (class_exists('xt_' . $class)) {
                         $this->xt_syntax_plugins[$class] = true;
                         if (method_exists('xt_' . $class, '__setup') && is_callable(array('xt_' . $class, '__setup'))) {
                             call_user_func(array('xt_' . $class, '__setup'), $this->url, $this->info);
                         }
                     }
                 }
             }
             foreach ($args as $key => $val) {
                 $args[$key] = $this->eval_vars($val);
             }
             return call_user_func(array('xt_' . $class, $class_method), $args);
         }
     }
     if (method_exists($this, $method)) {
         foreach ($args as $key => $val) {
             $args[$key] = $this->eval_vars($val);
         }
         $result = call_user_func(array($this, $method), $args);
     } else {
         if (!isset($this->xt_syntax_functions[$function]['code'])) {
             $result = 'XtScript Error: Undefined function `' . $function . '`';
         } else {
             $arguments = $this->xt_syntax_functions[$function]['args'];
             foreach ($arguments as $key => $val) {
                 if (isset($args[$key])) {
                     $arguments[$key] = $this->eval_vars($args[$key]);
                 }
             }
             $vars = array_merge($this->vars, $arguments);
             $obj = new script($this->url, $this->info, $vars, $this->xt_syntax_functions);
             $result = $obj->eval_syntax($this->xt_syntax_functions[$function]['code'], $this->version);
         }
     }
     return $result;
 }
Esempio n. 2
0
<?php

$DIR = dirname(__FILE__);
//dummy xtgem functions
require $DIR . '/xtgem.php';
//main xtscript file
require $DIR . '/script.php';
//example content
$contents = file_get_contents($DIR . '/examples.txt');
//example site
$url = 'test.xtgem.com/index';
$info = array();
$url_vars = array();
if (preg_match_all('#<!--parser:xtscript-->(.+?)<!--/parser:xtscript-->#mis', $contents, $sm)) {
    $script = new script($url, $info, $url_vars);
    $version = 1;
    try {
        foreach ($sm[1] as $key => $part) {
            $contents = preg_replace('#' . preg_quote($sm[0][$key], '#') . '#', $script->eval_syntax($part, $version), $contents, 1);
        }
    } catch (SyntaxException $e) {
        die($e->errorMessage($syntax, $e));
    }
}
die($contents);