?? template.class.php
字號:
<?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);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -