123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926 |
- <?php
- /*
- * Project: template_lite, a smarter template engine
- * File: class.template.php
- * Author: Paul Lockaby <paul@paullockaby.com>, Mark Dickenson <akapanamajack@sourceforge.net>
- * Copyright: 2003,2004,2005 by Paul Lockaby, 2005,2006 Mark Dickenson
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- * The latest version of template_lite can be obtained from:
- * http://templatelite.sourceforge.net
- *
- */
- if (!defined('TEMPLATE_LITE_DIR')) {
- define('TEMPLATE_LITE_DIR', dirname(__FILE__) . DIRECTORY_SEPARATOR);
- }
- class Template_Lite {
- // public configuration variables
- var $left_delimiter = "{"; // the left delimiter for template tags
- var $right_delimiter = "}"; // the right delimiter for template tags
- var $cache = false; // whether or not to allow caching of files
- var $force_compile = false; // force a compile regardless of saved state
- var $template_dir = "templates"; // where the templates are to be found
- var $plugins_dir = array("plugins"); // where the plugins are to be found
- var $compile_dir = "compiled"; // the directory to store the compiled files in
- var $config_dir = "templates"; // where the config files are
- var $cache_dir = "cached"; // where cache files are stored
- var $config_overwrite = false;
- var $config_booleanize = true;
- var $config_fix_new_lines = true;
- var $config_read_hidden = true;
- var $cache_lifetime = 0; // how long the file in cache should be considered "fresh"
- var $encode_file_name = true; // Set this to false if you do not want the name of the compiled/cached file to be md5 encoded.
- var $php_extract_vars = false; // Set this to true if you want the $this->_tpl variables to be extracted for use by PHP code inside the template.
- var $reserved_template_varname = "templatelite";
- var $default_modifiers = array();
- var $debugging = false;
- var $compiler_file = 'class.compiler.php';
- var $compiler_class = 'Template_Lite_Compiler';
- var $config_class = 'config';
- // gzip output configuration
- var $send_now = 1;
- var $force_compression = 0;
- var $compression_level = 9;
- var $enable_gzip = 1;
- // private internal variables
- var $_vars = array(); // stores all internal assigned variables
- var $_confs = array(); // stores all internal config variables
- var $_plugins = array( 'modifier' => array(),
- 'function' => array(),
- 'block' => array(),
- 'compiler' => array(),
- 'resource' => array(),
- 'prefilter' => array(),
- 'postfilter' => array(),
- 'outputfilter' => array());
- var $_linenum = 0; // the current line number in the file we are processing
- var $_file = ""; // the current file we are processing
- var $_config_obj = null;
- var $_compile_obj = null;
- var $_cache_id = null;
- var $_cache_dir = ""; // stores where this specific file is going to be cached
- var $_cache_info = array('config' => array(), 'template' => array());
- var $_sl_md5 = '39fc70570b8b60cbc1b85839bf242aff';
- var $_version = 'V2.10 Template Lite 4 January 2007 (c) 2005-2007 Mark Dickenson. All rights reserved. Released LGPL.';
- var $_version_date = "2007-01-04 10:34:21";
- var $_config_module_loaded = false;
- var $_templatelite_debug_info = array();
- var $_templatelite_debug_loop = false;
- var $_templatelite_debug_dir = "";
- var $_inclusion_depth = 0;
- var $_null = null;
- var $_resource_type = 1;
- var $_resource_time;
- var $_sections = array();
- var $_foreach = array();
- function Template_Lite()
- {
- $this->_version_date = strtotime($this->_version_date);
- }
- function load_filter($type, $name)
- {
- switch ($type)
- {
- case 'output':
- include_once( $this->_get_plugin_dir($type . "filter." . $name . ".php") . $type . "filter." . $name . ".php");
- $this->_plugins['outputfilter'][$name] = "template_" . $type . "filter_" . $name;
- break;
- case 'pre':
- case 'post':
- if (!isset($this->_plugins[$type . 'filter'][$name]))
- {
- $this->_plugins[$type . 'filter'][$name] = "template_" . $type . "filter_" . $name;
- }
- break;
- }
- }
- function assign($key, $value = null)
- {
- if (is_array($key))
- {
- foreach($key as $var => $val)
- if ($var != "")
- {
- $this->_vars[$var] = $val;
- }
- }
- else
- {
- if ($key != "")
- {
- $this->_vars[$key] = $value;
- }
- }
- }
- function assign_by_ref($key, $value = null)
- {
- if ($key != '')
- {
- $this->_vars[$key] = &$value;
- }
- }
- function assign_config($key, $value = null)
- {
- if (is_array($key))
- {
- foreach($key as $var => $val)
- {
- if ($var != "")
- {
- $this->_confs[$var] = $val;
- }
- }
- }
- else
- {
- if ($key != "")
- {
- $this->_confs[$key] = $value;
- }
- }
- }
- function append($key, $value=null, $merge=false)
- {
- if (is_array($key))
- {
- foreach ($key as $_key => $_value)
- {
- if ($_key != '')
- {
- if(!@is_array($this->_vars[$_key]))
- {
- settype($this->_vars[$_key],'array');
- }
- if($merge && is_array($_value))
- {
- foreach($_value as $_mergekey => $_mergevalue)
- {
- $this->_vars[$_key][$_mergekey] = $_mergevalue;
- }
- }
- else
- {
- $this->_vars[$_key][] = $_value;
- }
- }
- }
- }
- else
- {
- if ($key != '' && isset($value))
- {
- if(!@is_array($this->_vars[$key]))
- {
- settype($this->_vars[$key],'array');
- }
- if($merge && is_array($value))
- {
- foreach($value as $_mergekey => $_mergevalue)
- {
- $this->_vars[$key][$_mergekey] = $_mergevalue;
- }
- }
- else
- {
- $this->_vars[$key][] = $value;
- }
- }
- }
- }
- function append_by_ref($key, &$value, $merge=false)
- {
- if ($key != '' && isset($value))
- {
- if(!@is_array($this->_vars[$key]))
- {
- settype($this->_vars[$key],'array');
- }
- if ($merge && is_array($value))
- {
- foreach($value as $_key => $_val)
- {
- $this->_vars[$key][$_key] = &$value[$_key];
- }
- }
- else
- {
- $this->_vars[$key][] = &$value;
- }
- }
- }
- function clear_assign($key = null)
- {
- if ($key == null)
- {
- $this->_vars = array();
- }
- else
- {
- if (is_array($key))
- {
- foreach($key as $index => $value)
- {
- if (in_array($value, $this->_vars))
- {
- unset($this->_vars[$index]);
- }
- }
- }
- else
- {
- if (in_array($key, $this->_vars))
- {
- unset($this->_vars[$index]);
- }
- }
- }
- }
- function clear_all_assign()
- {
- $this->_vars = array();
- }
- function clear_config($key = null)
- {
- if ($key == null)
- {
- $this->_conf = array();
- }
- else
- {
- if (is_array($key))
- {
- foreach($key as $index => $value)
- {
- if (in_array($value, $this->_conf))
- {
- unset($this->_conf[$index]);
- }
- }
- }
- else
- {
- if (in_array($key, $this->_conf))
- {
- unset($this->_conf[$key]);
- }
- }
- }
- }
- function &get_template_vars($key = null)
- {
- if ($key == null)
- {
- return $this->_vars;
- }
- else
- {
- if (isset($this->_vars[$key]))
- {
- return $this->_vars[$key];
- }
- else
- {
- return $this->_null;
- }
- }
- }
- function &get_config_vars($key = null)
- {
- if ($key == null)
- {
- return $this->_confs;
- }
- else
- {
- if (isset($this->_confs[$key]))
- {
- return $this->_confs[$key];
- }
- else
- {
- return $this->_null;
- }
- }
- }
- function clear_compiled_tpl($file = null)
- {
- $this->_destroy_dir($file, null, $this->_get_dir($this->compile_dir));
- }
- function clear_cache($file = null, $cache_id = null, $compile_id = null, $exp_time = null)
- {
- if (!$this->cache)
- {
- return;
- }
- $this->_destroy_dir($file, $cache_id, $this->_get_dir($this->cache_dir));
- }
- function clear_all_cache($exp_time = null)
- {
- $this->clear_cache();
- }
- function is_cached($file, $cache_id = null)
- {
- if (!$this->force_compile && $this->cache && $this->_is_cached($file, $cache_id))
- {
- return true;
- }
- else
- {
- return false;
- }
- }
- function register_modifier($modifier, $implementation)
- {
- $this->_plugins['modifier'][$modifier] = $implementation;
- }
- function unregister_modifier($modifier)
- {
- unset($this->_plugins['modifier'][$modifier]);
- }
- function register_function($function, $implementation)
- {
- $this->_plugins['function'][$function] = $implementation;
- }
- function unregister_function($function)
- {
- unset($this->_plugins['function'][$function]);
- }
- function register_block($function, $implementation)
- {
- $this->_plugins['block'][$function] = $implementation;
- }
- function unregister_block($function)
- {
- unset($this->_plugins['block'][$function]);
- }
- function register_compiler($function, $implementation)
- {
- $this->_plugins['compiler'][$function] = $implementation;
- }
- function unregister_compiler($function)
- {
- unset($this->_plugins['compiler'][$function]);
- }
- function register_prefilter($function)
- {
- $_name = (is_array($function)) ? $function[1] : $function;
- $this->_plugins['prefilter'][$_name] = $_name;
- }
- function unregister_prefilter($function)
- {
- unset($this->_plugins['prefilter'][$function]);
- }
- function register_postfilter($function)
- {
- $_name = (is_array($function)) ? $function[1] : $function;
- $this->_plugins['postfilter'][$_name] = $_name;
- }
- function unregister_postfilter($function)
- {
- unset($this->_plugins['postfilter'][$function]);
- }
- function register_outputfilter($function)
- {
- $_name = (is_array($function)) ? $function[1] : $function;
- $this->_plugins['outputfilter'][$_name] = $_name;
- }
- function unregister_outputfilter($function)
- {
- unset($this->_plugins['outputfilter'][$function]);
- }
- function register_resource($type, $functions)
- {
- if (count($functions) == 4)
- {
- $this->_plugins['resource'][$type] = $functions;
- }
- else
- {
- $this->trigger_error("malformed function-list for '$type' in register_resource");
- }
- }
- function unregister_resource($type)
- {
- unset($this->_plugins['resource'][$type]);
- }
- function template_exists($file)
- {
- if (file_exists($this->_get_dir($this->template_dir).$file))
- {
- $this->_resource_time = filemtime($this->_get_dir($this->template_dir).$file);
- $this->_resource_type = 1;
- return true;
- }
- else
- {
- if (file_exists($file))
- {
- $this->_resource_time = filemtime($file);
- $this->_resource_type = "file";
- return true;
- }
- return false;
- }
- }
- function _get_resource($file)
- {
- $_resource_name = explode(':', trim($file));
- if (count($_resource_name) == 1 || $_resource_name[0] == "file")
- {
- if($_resource_name[0] == "file")
- {
- $file = substr($file, 5);
- }
- $exists = $this->template_exists($file);
- if (!$exists)
- {
- $this->trigger_error("file '$file' does not exist", E_USER_ERROR);
- }
- }
- else
- {
- $this->_resource_type = $_resource_name[0];
- $file = substr($file, strlen($this->_resource_type) + 1);
- $exists = isset($this->_plugins['resource'][$this->_resource_type]) && call_user_func_array($this->_plugins['resource'][$this->_resource_type][1], array($file, &$resource_timestamp, &$this));
- if (!$exists)
- {
- $this->trigger_error("file '$file' does not exist", E_USER_ERROR);
- }
- $this->_resource_time = $resource_timestamp;
- }
- return $file;
- }
- function display($file, $cache_id = null)
- {
- $this->fetch($file, $cache_id, true);
- }
- function fetch($file, $cache_id = null, $display = false)
- {
- $file = $this->_get_resource($file);
- if ($this->debugging)
- {
- $this->_templatelite_debug_info[] = array('type' => 'template',
- 'filename' => $file,
- 'depth' => 0,
- 'exec_time' => array_sum(explode(' ', microtime())) );
- $included_tpls_idx = count($this->_templatelite_debug_info) - 1;
- }
- $this->_cache_id = $cache_id;
- $this->template_dir = $this->_get_dir($this->template_dir);
- $this->compile_dir = $this->_get_dir($this->compile_dir);
- if ($this->cache)
- {
- $this->_cache_dir = $this->_build_dir($this->cache_dir, $this->_cache_id);
- }
- $name = ($this->encode_file_name) ? md5((($this->_resource_type == 1) ? $this->template_dir.$file : $this->_resource_type . "_" . $file)).'.php' : str_replace(".", "_", str_replace("/", "_", $this->_resource_type . "_" . $file)).'.php';
- $this->_error_level = $this->debugging ? error_reporting() : error_reporting(error_reporting() & ~E_NOTICE);
- // $this->_error_level = error_reporting(E_ALL);
- if (!$this->force_compile && $this->cache && $this->_is_cached($file, $cache_id))
- {
- ob_start();
- include($this->_cache_dir.$name);
- $output = ob_get_contents();
- ob_end_clean();
- $output = substr($output, strpos($output, "\n") + 1);
- }
- else
- {
- $output = $this->_fetch_compile($file, $cache_id);
- if ($this->cache)
- {
- $f = fopen($this->_cache_dir.$name, "w");
- fwrite($f, serialize($this->_cache_info) . "\n$output");
- fclose($f);
- }
- }
- if (strpos($output, $this->_sl_md5) !== false)
- {
- preg_match_all('!' . $this->_sl_md5 . '{_run_insert (.*)}' . $this->_sl_md5 . '!U',$output,$_match);
- foreach($_match[1] as $value)
- {
- $arguments = unserialize($value);
- $output = str_replace($this->_sl_md5 . '{_run_insert ' . $value . '}' . $this->_sl_md5, call_user_func_array('insert_' . $arguments['name'], array((array)$arguments, $this)), $output);
- }
- }
- foreach ($this->_plugins['outputfilter'] as $function)
- {
- $output = $function($output, $this);
- }
- error_reporting($this->_error_level);
- if ($this->debugging)
- {
- $this->_templatelite_debug_info[$included_tpls_idx]['exec_time'] = array_sum(explode(' ', microtime())) - $this->_templatelite_debug_info[$included_tpls_idx]['exec_time'];
- }
- if ($display)
- {
- echo $output;
- if($this->debugging && !$this->_templatelite_debug_loop)
- {
- $this->debugging = false;
- if(!function_exists("template_generate_debug_output"))
- {
- require_once(TEMPLATE_LITE_DIR . "internal/template.generate_debug_output.php");
- }
- $debug_output = template_generate_debug_output($this);
- $this->debugging = true;
- echo $debug_output;
- }
- }
- else
- {
- return $output;
- }
- }
- function config_load($file, $section_name = null, $var_name = null)
- {
- require_once(TEMPLATE_LITE_DIR . "internal/template.config_loader.php");
- }
- function _is_cached($file, $cache_id)
- {
- $this->_cache_dir = $this->_get_dir($this->cache_dir, $cache_id);
- $this->config_dir = $this->_get_dir($this->config_dir);
- $this->template_dir = $this->_get_dir($this->template_dir);
- $file = $this->_get_resource($file);
- $name = ($this->encode_file_name) ? md5((($this->_resource_type == 1) ? $this->template_dir.$file : $this->_resource_type . "_" . $file)).'.php' : str_replace(".", "_", str_replace("/", "_", $this->_resource_type . "_" . $file)).'.php';
- if (file_exists($this->_cache_dir.$name) && (((time() - filemtime($this->_cache_dir.$name)) < $this->cache_lifetime) || $this->cache_lifetime == -1) && (filemtime($this->_cache_dir.$name) > $this->_resource_time))
- {
- $fh = fopen($this->_cache_dir.$name, "r");
- if (!feof($fh) && ($line = fgets($fh, filesize($this->_cache_dir.$name))))
- {
- $includes = unserialize($line);
- if (isset($includes['template']))
- {
- foreach($includes['template'] as $value)
- {
- if (!(file_exists($this->template_dir.$value) && (filemtime($this->_cache_dir.$name) > filemtime($this->template_dir.$value))))
- {
- return false;
- }
- }
- }
- if (isset($includes['config']))
- {
- foreach($includes['config'] as $value)
- {
- if (!(file_exists($this->config_dir.$value) && (filemtime($this->_cache_dir.$name) > filemtime($this->config_dir.$value))))
- {
- return false;
- }
- }
- }
- }
- fclose($fh);
- }
- else
- {
- return false;
- }
- return true;
- }
- function _fetch_compile_include($_templatelite_include_file, $_templatelite_include_vars)
- {
- if(!function_exists("template_fetch_compile_include"))
- {
- require_once(TEMPLATE_LITE_DIR . "internal/template.fetch_compile_include.php");
- }
- return template_fetch_compile_include($_templatelite_include_file, $_templatelite_include_vars, $this);
- }
- function _fetch_compile($file)
- {
- $this->template_dir = $this->_get_dir($this->template_dir);
- $name = ($this->encode_file_name) ? md5((($this->_resource_type == 1) ? $this->template_dir.$file : $this->_resource_type . "_" . $file)).'.php' : str_replace(".", "_", str_replace("/", "_", $this->_resource_type . "_" . $file)).'.php';
- if ($this->cache)
- {
- array_push($this->_cache_info['template'], $file);
- }
- if (!$this->force_compile && file_exists($this->compile_dir.'c_'.$name)
- && (filemtime($this->compile_dir.'c_'.$name) > $this->_resource_time)
- && (filemtime($this->compile_dir.'c_'.$name) > $this->_version_date))
- {
- ob_start();
- include($this->compile_dir.'c_'.$name);
- $output = ob_get_contents();
- ob_end_clean();
- error_reporting($this->_error_level);
- return $output;
- }
- $file_contents = "";
- if($this->_resource_type == 1)
- {
- $f = fopen($this->template_dir . $file, "r");
- $size = filesize($this->template_dir . $file);
- if ($size > 0)
- {
- $file_contents = fread($f, $size);
- }
- }
- else
- if($this->_resource_type == "file")
- {
- $f = fopen($file, "r");
- $size = filesize($file);
- if ($size > 0)
- {
- $file_contents = fread($f, $size);
- }
- }
- else
- {
- call_user_func_array($this->_plugins['resource'][$this->_resource_type][0], array($file, &$file_contents, &$this));
- }
- $this->_file = $file;
- fclose($f);
- if (!is_object($this->_compile_obj))
- {
- if (file_exists(TEMPLATE_LITE_DIR . $this->compiler_file)) {
- require_once(TEMPLATE_LITE_DIR . $this->compiler_file);
- } else {
- require_once($this->compiler_file);
- }
- $this->_compile_obj = new $this->compiler_class;
- }
- $this->_compile_obj->left_delimiter = $this->left_delimiter;
- $this->_compile_obj->right_delimiter = $this->right_delimiter;
- $this->_compile_obj->plugins_dir = &$this->plugins_dir;
- $this->_compile_obj->template_dir = &$this->template_dir;
- $this->_compile_obj->_vars = &$this->_vars;
- $this->_compile_obj->_confs = &$this->_confs;
- $this->_compile_obj->_plugins = &$this->_plugins;
- $this->_compile_obj->_linenum = &$this->_linenum;
- $this->_compile_obj->_file = &$this->_file;
- $this->_compile_obj->php_extract_vars = &$this->php_extract_vars;
- $this->_compile_obj->reserved_template_varname = &$this->reserved_template_varname;
- $this->_compile_obj->default_modifiers = $this->default_modifiers;
- $output = $this->_compile_obj->_compile_file($file_contents);
- $f = fopen($this->compile_dir.'c_'.$name, "w");
- fwrite($f, $output);
- fclose($f);
- ob_start();
- eval(' ?>' . $output . '<?php ');
- $output = ob_get_contents();
- ob_end_clean();
- return $output;
- }
- function _run_modifier()
- {
- $arguments = func_get_args();
- list($variable, $modifier, $php_function, $_map_array) = array_splice($arguments, 0, 4);
- array_unshift($arguments, $variable);
- if ($_map_array && is_array($variable))
- {
- foreach($variable as $key => $value)
- {
- if($php_function == "PHP")
- {
- $variable[$key] = call_user_func_array($modifier, $arguments);
- }
- else
- {
- $variable[$key] = call_user_func_array($this->_plugins["modifier"][$modifier], $arguments);
- }
- }
- }
- else
- {
- if($php_function == "PHP")
- {
- $variable = call_user_func_array($modifier, $arguments);
- }
- else
- {
- $variable = call_user_func_array($this->_plugins["modifier"][$modifier], $arguments);
- }
- }
- return $variable;
- }
- function _run_insert($arguments)
- {
- if ($this->cache)
- {
- return $this->_sl_md5 . '{_run_insert ' . serialize((array)$arguments) . '}' . $this->_sl_md5;
- }
- else
- {
- if (!function_exists('insert_' . $arguments['name']))
- {
- $this->trigger_error("function 'insert_" . $arguments['name'] . "' does not exist in 'insert'", E_USER_ERROR);
- }
- if (isset($arguments['assign']))
- {
- $this->assign($arguments['assign'], call_user_func_array('insert_' . $arguments['name'], array((array)$arguments, $this)));
- }
- else
- {
- return call_user_func_array('insert_' . $arguments['name'], array((array)$arguments, $this));
- }
- }
- }
- function _get_dir($dir, $id = null)
- {
- if (empty($dir))
- {
- $dir = '.';
- }
- if (substr($dir, -1) != DIRECTORY_SEPARATOR)
- {
- $dir .= DIRECTORY_SEPARATOR;
- }
- if (!empty($id))
- {
- $_args = explode('|', $id);
- if (count($_args) == 1 && empty($_args[0]))
- {
- return $dir;
- }
- foreach($_args as $value)
- {
- $dir .= $value.DIRECTORY_SEPARATOR;
- }
- }
- return $dir;
- }
- function _get_plugin_dir($plugin_name)
- {
- static $_path_array = null;
- $plugin_dir_path = "";
- $_plugin_dir_list = is_array($this->plugins_dir) ? $this->plugins_dir : (array)$this->plugins_dir;
- foreach ($_plugin_dir_list as $_plugin_dir)
- {
- if (!preg_match("/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/", $_plugin_dir))
- {
- // path is relative
- if (file_exists(dirname(__FILE__) . DIRECTORY_SEPARATOR . $_plugin_dir . DIRECTORY_SEPARATOR . $plugin_name))
- {
- $plugin_dir_path = dirname(__FILE__) . DIRECTORY_SEPARATOR . $_plugin_dir . DIRECTORY_SEPARATOR;
- break;
- }
- }
- else
- {
- // path is absolute
- if(!isset($_path_array))
- {
- $_ini_include_path = ini_get('include_path');
- if(strstr($_ini_include_path,';'))
- {
- // windows pathnames
- $_path_array = explode(';',$_ini_include_path);
- }
- else
- {
- $_path_array = explode(':',$_ini_include_path);
- }
- }
- if(!in_array($_plugin_dir,$_path_array))
- {
- array_unshift($_path_array,$_plugin_dir);
- }
- foreach ($_path_array as $_include_path)
- {
- if (file_exists($_include_path . DIRECTORY_SEPARATOR . $plugin_name))
- {
- $plugin_dir_path = $_include_path . DIRECTORY_SEPARATOR;
- break 2;
- }
- }
- }
- }
- return $plugin_dir_path;
- }
- // function _parse_resource_link($resource_link)
- // {
- // $stuffing = "file:/this/is/the/time_5-23.tpl";
- // $stuffing_data = explode(":", $stuffing);
- // preg_match_all('/(?:([0-9a-z._-]+))/i', $stuffing, $stuff);
- // print_r($stuff);
- // echo "<br>Path: " . str_replace($stuff[0][count($stuff[0]) - 1], "", $stuffing);
- // echo "<br>Filename: " . $stuff[0][count($stuff[0]) - 1];
- // }
- function _build_dir($dir, $id)
- {
- if(!function_exists("template_build_dir"))
- {
- require_once(TEMPLATE_LITE_DIR . "internal/template.build_dir.php");
- }
- return template_build_dir($dir, $id, $this);
- }
- function _destroy_dir($file, $id, $dir)
- {
- if(!function_exists("template_destroy_dir"))
- {
- require_once(TEMPLATE_LITE_DIR . "internal/template.destroy_dir.php");
- }
- return template_destroy_dir($file, $id, $dir, $this);
- }
- function trigger_error($error_msg, $error_type = E_USER_ERROR, $file = null, $line = null)
- {
- if(isset($file) && isset($line))
- {
- $info = ' ('.basename($file).", line $line)";
- }
- else
- {
- $info = null;
- }
- trigger_error('TPL: [in ' . $this->_file . ' line ' . $this->_linenum . "]: syntax error: $error_msg$info", $error_type);
- }
- }
- ?>
|