X-Git-Url: https://jasonwoof.com/gitweb/?a=blobdiff_plain;ds=sidebyside;f=template.php;h=077aa8daf4547b33693af1df1f008811e41862db;hb=6be2bf0ba344177f0d1e57d9135bcb97579c54a3;hp=7539a19dcb387b89c02f40eb5c1119f94dbf2514;hpb=203b704003fa9bfbe823e5ebc8d8e7cff919a073;p=wfpl.git
diff --git a/template.php b/template.php
index 7539a19..077aa8d 100644
--- a/template.php
+++ b/template.php
@@ -1,19 +1,9 @@
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
-#
-# This program 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 General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
+# This program is in the public domain within the United States. Additionally,
+# we waive copyright and related rights in the work worldwide through the CC0
+# 1.0 Universal public domain dedication, which can be found at
+# http://creativecommons.org/publicdomain/zero/1.0/
# This is a simple template-handling system. You pass it a big data
@@ -109,7 +99,7 @@ function fill_template($template, &$data, &$context = NULL) {
$context['rows'] =& $rows;
foreach($rows as $key => &$row) {
$context['cur'] = $key;
- $output .= fill_template($tem, $row, $context);
+ $output .= tem_apply_encodings($tem['name'], fill_template($tem, $row, $context), $tem['args']);
}
} else { # variable
$output .= tem_encoded_data($tem, $context);
@@ -212,7 +202,11 @@ function &tem_row_data($tem, $context)
if(count($tem['args'])) {
$auto_func = "tem_auto_" . $tem['args'][0];
if (!function_exists($auto_func)) {
- die("ERROR: template auto function '$auto_func' not found.
\n");
+ if (function_exists("enc_" . $tem['args'][0])) {
+ $auto_func = false;
+ } else {
+ die("ERROR: template auto function '$auto_func' not found.
\n");
+ }
}
# NAMESPACIFY $auto_func
}
@@ -229,30 +223,34 @@ function &tem_row_data($tem, $context)
return $rows;
}
-# Return the value for a tag as an encoded string.
-function tem_encoded_data($tag, $context)
-{
- $key = $tag['name'];
- $value = tem_get_data($key, $context);
- foreach($tag['args'] as $encoding) {
+function tem_apply_encodings ($key, $value, $encodings) {
+ if ($encodings) foreach($encodings as $encoding) {
$func = "enc_$encoding";
if (function_exists($func)) {
# NAMESPACIFY $func
$value = $func($value, $key);
- } else {
+ } elseif (!function_exists("tem_auto_$encoding")) {
die("ERROR: encoder function '$func' not found.
\n");
}
}
return $value;
}
+# Return the value for a tag as an encoded string.
+function tem_encoded_data($tag, $context)
+{
+ $key = $tag['name'];
+ $value = tem_get_data($key, $context);
+ return tem_apply_encodings($key, $value, $tag['args']);
+}
+
function is_sub_template(&$piece) {
- return is_array($piece) and $piece['pieces'];
+ return is_array($piece) && isset($piece['pieces']);
}
function is_value_slot(&$piece) {
- return is_array($piece) and !$piece['pieces'];
+ return is_array($piece) && !isset($piece['pieces']);
}
# Return a hash containing the top-level sub-templates of tem.
@@ -434,7 +432,8 @@ function &tem_is_old_sub($name, &$template) {
if($tem) return $tem;
}
}
- return false;
+ $false = false;
+ return $false;
}
class tem {
@@ -457,6 +456,9 @@ class tem {
}
function append($key, $value) {
+ if (!isset($this->data[$key])) {
+ $this->data[$key] = '';
+ }
$this->data[$key] .= $value;
}
@@ -469,12 +471,19 @@ class tem {
}
function get($key) {
- return $this->data[$key];
+ if (isset($this->data[$key])) {
+ return $this->data[$key];
+ } else {
+ return;
+ }
}
function show($name) {
$tem = tem_is_old_sub($name, $this->template);
if($tem) {
+ if (!isset($this->data[$name])) {
+ $this->data[$name] = '';
+ }
$this->data[$name] .= fill_template($tem, $this->data);
}
}
@@ -550,7 +559,7 @@ class tem {
}
function tem_init() {
- if(!$GLOBALS['wfpl_template']) {
+ if(!isset($GLOBALS['wfpl_template']) || !$GLOBALS['wfpl_template']) {
$GLOBALS['wfpl_template'] = new tem();
}
}
@@ -636,5 +645,3 @@ function tem_load_new($filename) {
function tem_sub($name) {
tem_show($name);
}
-
-?>