/**
  * @override
  */
 function WdfRender()
 {
     $tempvars = system_render_object_tree($this->get_vars());
     foreach ($GLOBALS as $key => &$val) {
         ${$key} = $val;
     }
     $buf = array();
     foreach ($tempvars as $key => &$val) {
         if (isset(${$key})) {
             $buf[$key] = ${$key};
         }
         ${$key} = $val;
     }
     if ($this instanceof HtmlPage && stripos($this->file, "htmlpage.tpl.php") !== false) {
         $__template_file = __autoload__template($this, $this->SubTemplate ? $this->SubTemplate : "");
         if ($__template_file === false) {
             WdfException::Raise("SubTemplate for class '" . get_class($this) . "' not found: " . $this->file, $this->SubTemplate);
         }
         if (stripos($__template_file, "htmlpage.tpl.php") === false) {
             ob_start();
             require $__template_file;
             $sub_template_content = ob_get_contents();
             ob_end_clean();
         }
         $this->file = __DIR__ . "/htmlpage.tpl.php";
     }
     $__template_file = __autoload__template($this, $this->file);
     if ($__template_file === false) {
         WdfException::Raise("Template for class '" . get_class($this) . "' not found: " . $this->file);
     }
     ob_start();
     require $__template_file;
     $contents = ob_get_contents();
     ob_end_clean();
     foreach ($tempvars as $key => &$val) {
         unset(${$key});
     }
     foreach ($buf as $key => &$val) {
         ${$key} = $val;
     }
     if (system_is_ajax_call() && count($this->_script) > 0) {
         $contents .= "<script> " . implode("\n", $this->_script) . "</script>";
     }
     return $contents;
 }
Esempio n. 2
0
/**
 * Tries to load the template for the calling class
 * @param object|string $controller Object or class to load template for
 * @param string $template_name Pass '' (empty string) for this.
 * @return bool|string Returns the filename if found, else false
 */
function __autoload__template($controller, $template_name)
{
    global $CONFIG;
    if (is_object($controller)) {
        $class = strtolower(get_class($controller));
    } else {
        $class = $controller;
    }
    if ($template_name != "") {
        $key = "autoload_template-" . getAppVersion('nc') . $template_name;
        $r = cache_get($key);
        if ($r != false && file_exists($r)) {
            return $r;
        }
        if (file_exists($template_name)) {
            cache_set($key, $template_name, $CONFIG['system']['cache_ttl']);
            return $template_name;
        }
        $template_name2 = dirname(__search_file_for_class($class)) . "/" . $template_name;
        if (file_exists($template_name2)) {
            cache_set($key, $template_name2, $CONFIG['system']['cache_ttl']);
            return $template_name2;
        }
        $template_name2 = dirname(__search_file_for_class($class)) . "/base/" . $template_name;
        if (file_exists($template_name2)) {
            cache_set($key, $template_name2, $CONFIG['system']['cache_ttl']);
            return $template_name2;
        }
    }
    $key = "autoload_template_class-" . $class;
    $r = cache_get($key);
    if ($r != false && file_exists($r)) {
        return $r;
    }
    $file = __search_file_for_class($class);
    foreach (array_reverse($CONFIG['system']['tpl_ext']) as $tpl_ext) {
        $tpl_file = str_replace("class.php", $tpl_ext, $file ? $file : "");
        if (file_exists($tpl_file)) {
            cache_set($key, $tpl_file, $CONFIG['system']['cache_ttl']);
            return $tpl_file;
        }
    }
    $pclass = get_parent_class($class);
    if ($pclass !== false && strtolower($pclass) != "template") {
        return __autoload__template($pclass, "");
    }
    return false;
}