JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
support encoding template sections
authorJason Woofenden <jason@jasonwoof.com>
Fri, 14 Feb 2020 13:01:34 +0000 (08:01 -0500)
committerJason Woofenden <jason@jasonwoof.com>
Sun, 22 Mar 2020 02:02:08 +0000 (22:02 -0400)
template.php

index 485cc87..077aa8d 100644 (file)
@@ -99,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);
@@ -202,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.<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
        }
@@ -219,23 +223,27 @@ 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.<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) && isset($piece['pieces']);