From: Jason Woofenden Date: Fri, 14 Feb 2020 13:01:34 +0000 (-0500) Subject: support encoding template sections X-Git-Url: https://jasonwoof.com/gitweb/?p=wfpl.git;a=commitdiff_plain;h=aa71e6c696f55d1fa3af661ad37ec02101ad7a08 support encoding template sections --- diff --git a/template.php b/template.php index 485cc87..077aa8d 100644 --- a/template.php +++ b/template.php @@ -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.
\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 } @@ -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.
\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']);