<?php
-# Copyright (C) 2008,2009 Joshua Grams <josh@qualdan.com>
-#
-# 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 <http://www.gnu.org/licenses/>.
+# 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
$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);
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.<br>\n");
+ if (function_exists("enc_" . $tem['args'][0])) {
+ $auto_func = false;
+ } else {
+ die("ERROR: template auto function '$auto_func' not found.<br>\n");
+ }
}
# NAMESPACIFY $auto_func
}
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.<br>\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.
if($tem) return $tem;
}
}
- return false;
+ $false = false;
+ return $false;
}
class tem {
}
function append($key, $value) {
+ if (!isset($this->data[$key])) {
+ $this->data[$key] = '';
+ }
$this->data[$key] .= $value;
}
}
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);
}
}
}
function tem_init() {
- if(!$GLOBALS['wfpl_template']) {
+ if(!isset($GLOBALS['wfpl_template']) || !$GLOBALS['wfpl_template']) {
$GLOBALS['wfpl_template'] = new tem();
}
}
function tem_sub($name) {
tem_show($name);
}
-
-?>