JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
template: pass additional args to tem_auto_*
[wfpl.git] / encode.php
index 2dbf756..3e9ee0c 100644 (file)
@@ -138,19 +138,12 @@ function enc_yesno($str) {
 }
 
 
-# add a tab at the begining of each non-empty line
+# add a tab at the begining of each line
 function enc_tab($str) {
-       $lines = explode("\n", $str);
-       $out = '';
-       foreach($lines as $line) {
-               if($line) {
-                       $out .= "\t$line";
-               }
-               $out .= "\n";
+       if('' . $str === '') {
+               return '';
        }
-
-       # remove the extra newline added above
-       return substr($out, 0, -1);
+       return "\t" . implode("\n\t", explode("\n", $str));
 }
 
 function enc_upper($str) {
@@ -343,12 +336,14 @@ function encode_options($selected, $options, $keys_from) {
        }
 
        $out = '';
-       foreach($options as $valdisp) {
-               list($value, $display) = $valdisp;
+       foreach($options as $option) {
+               list($value, $display, $arg3) = $option;
                $out .= '<option';
 
-               if(in_array($value, $selected)) {
-                       $out .= ' selected="selected"';
+               if($arg3 == 'disabled') {
+                       $out .= ' disabled';
+               } elseif(in_array($value, $selected)) {
+                       $out .= ' selected';
                }
 
                if($value !== $display || strpos($value, ' ') !== false) {
@@ -437,3 +432,21 @@ function enc_s($str) {
 
        return 's';
 }
+
+# turn http/ftp (s) urls into html links (and encode everything for html)
+# does not encode without protocol (eg "www.foo.com")
+# does not linkify email addresses
+function enc_linkify($str) {
+       $ret = '';
+       $even = true;
+       $pieces = preg_split("/((?:ht|f)tps?:\/\/[^ \,\"\n\r\t<]+)/is", $str, null, PREG_SPLIT_DELIM_CAPTURE);
+       foreach($pieces as $piece) {
+               if($even) {
+                       $ret .= enc_html($piece);
+               } else {
+                       $ret .= '<a href="' . enc_attr($piece) . '">' . enc_html($piece) . '</a>';
+               }
+               $even = !$even;
+       }
+       return $ret;
+}