⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 template.class.php

📁 投稿 文章管理 员文章评论回复无限引用简易留言功能简易RSS功...
💻 PHP
📖 第 1 页 / 共 2 页
字号:
<?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 {
	// 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			= "cache/templates";	// the directory to store the compiled files in
	var $cache_dir				= "cache/html";	// where cache files are stored
	
	var $cache_lifetime			= 3600;		// how long the file in cache should be considered "fresh"
	var $encode_file_name		= true;	//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 $php_handling 			= "DreamCMS_PHP_QUOTE";//2007-7-23 0:01 quote php tags
	var $default_modifiers		= array();
	var $debugging	   			= false;
	var $rewrite	   			= false;//2007-11-27 add by 枯木 mod_rewrite
	var $error					= true;//2007-11-27 add by 枯木

	var $compiler_file        	= 'template.compiler.php';
	var $compiler_class        	= 'Template_Compiler';

	var $reserved_template_varname	= "DreamCMS";
	// 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 $_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 $_compile_obj	= null;
	var $_cache_id		= null;
	var $_cache_dir		= "";		// stores where this specific file is going to be cached
	var $_cache_info	= array('template' => array());
	var $_sl_md5		= '69d2cf521ab5d33d99f192a670937618';
	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 $_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(){
		$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 &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 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);
			}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -