JasonWoof Got questions, comments, patches, etc.? Contact Jason Woofenden
metaform: fix download_tar() (stylus not less)
[wfpl.git] / encode.php
index 8a41eeb..ca4a919 100644 (file)
@@ -28,10 +28,18 @@ function enc_cap($str) {
        return $str;
 }
 
+# quote for placing between single quotes in php
+function enc_phpsq($str) {
+       $str = str_replace("\\", "\\\\", $str);
+       $str = str_replace("'", "\\'", $str);
+       return $str;
+}
+
 function enc_jsdq($str) {
        $str = enc_sql($str);
        $str = str_replace("\n", "\\n", $str);
-       return str_replace("\r", "\\r", $str);
+       $str = str_replace("\r", "\\r", $str);
+       return $str;
 }
 
 # encode for putting within double-quotes in SQL
@@ -61,13 +69,13 @@ function enc_htmlbr($str) {
 }
 
 # Encode for output in html. Preserves newlines and indentation by converting
-# newlines to <br> and spaces at the begining of lines to &nbsp;&nbsp;
+# newlines to <br> and spaces/tabs at the begining of lines to &nbsp;s
 #
 # Example: <p>~foo htmlbrtab~</p>
 function enc_htmlbrtab($str) {
        $str = enc_htmlbr($str);
-       $space_to_nbsp = create_function('$matches', 'return str_repeat(\'&nbsp;\', strlen($matches[0]) * 2);');
-       $str = preg_replace_callback("|^ *|m", $space_to_nbsp, $str);
+       $whitespace_to_nbsp = create_function('$matches', '$count = 0; $chars = str_split($matches[0]); foreach ($chars as $c) { if ($c == " ") { $count += 2; } else if ($c == "\t") { $count += 8; } } return str_repeat("&nbsp;", $count);');
+       $str = preg_replace_callback("|^[ \t]+|m", $whitespace_to_nbsp, $str);
        return $str;
 }
 
@@ -174,11 +182,16 @@ function enc_mdy($str) {
        return enc_mmddyyyy($str);
 }
 
-function enc_mmddyyyyhhmm($seconds) {
-       return date('m/d/Y g:ia', (int)$seconds);
+# pass unix timestamp or "2012-12-20 22:23:34"
+function enc_mmddyyyyhhmm($str) {
+       if(is_numeric($str)) {
+               return date('m/d/Y g:ia', (int)$str);
+       } else {
+               return enc_mmddyyyy(substr($str, 0, 10)) . substr($str, 10, 6);
+       }
 }
 
-# takes decimal
+# takes decimal number of hours
 # returns hh:mm
 function enc_hhmm($str) {
        if(strlen($str) == 0) {
@@ -190,7 +203,7 @@ function enc_hhmm($str) {
        return $str;
 }
 
-# takes decimal
+# takes decimal number of hours
 # returns hh:mm followed by "am" or "pm" with no space
 function enc_12hr($str) {
        if(strlen($str) == 0) {
@@ -260,7 +273,7 @@ function enc_options($values, $name) {
        if($GLOBALS[$name . '_options']['multiple']) { # FIXME test this
                $values = explode(', ', $values);
        }
-       return encode_options($values, $GLOBALS[$name . '_options']['options'], PULLDOWN_2D);
+       return encode_options($values, $GLOBALS[$name . '_options']['options']);
 }
 
 # for radios and pulldowns:
@@ -332,16 +345,12 @@ function enc_radio_caption_7($str, $name) { return enc_radio_caption_n($str, $na
 #
 #    selected: can be a string or (for multiple-selects) an array
 #
-#    options, keys_from: see documentation for pulldown() above
-function encode_options($selected, $options, $keys_from) {
+#    options: see documentation for pulldown() above
+function encode_options($selected, $options) {
        if(!is_array($selected)) {
                $selected = array($selected);
        }
 
-       if($keys_from != PULLDOWN_2D) {
-               $options = pulldown_options_to_2d($options, $keys_from);
-       }
-
        $out = '';
        foreach($options as $option) {
                list($value, $display, $arg3) = $option;
@@ -369,22 +378,22 @@ function encode_options($selected, $options, $keys_from) {
        return $out;
 }
 
-$GLOBALS['wfpl_states_assoc'] = array("AL" => "Alabama", "AK" => "Alaska", "AZ" => "Arizona", "AR" => "Arkansas", "CA" => "California", "CO" => "Colorado", "CT" => "Connecticut", "DE" => "Delaware", "FL" => "Florida", "GA" => "Georgia", "HI" => "Hawaii", "ID" => "Idaho", "IL" => "Illinois", "IN" => "Indiana", "IA" => "Iowa", "KS" => "Kansas", "KY" => "Kentucky", "LA" => "Louisiana", "ME" => "Maine", "MD" => "Maryland", "MA" => "Massachusetts", "MI" => "Michigan", "MN" => "Minnesota", "MS" => "Mississippi", "MO" => "Missouri", "MT" => "Montana", "NE" => "Nebraska", "NV" => "Nevada", "NH" => "New Hampshire", "NJ" => "New Jersey", "NM" => "New Mexico", "NY" => "New York", "NC" => "North Carolina", "ND" => "North Dakota", "OH" => "Ohio", "OK" => "Oklahoma", "OR" => "Oregon", "PA" => "Pennsylvania", "RI" => "Rhode Island", "SC" => "South Carolina", "SD" => "South Dakota", "TN" => "Tennessee", "TX" => "Texas", "UT" => "Utah", "VT" => "Vermont", "VA" => "Virginia", "WA" => "Washington", "DC" => "Washington, DC", "WV" => "West Virginia", "WI" => "Wisconsin", "WY" => "Wyoming");
+$GLOBALS['wfpl_states_assoc'] = array(array("AL", "Alabama"), array("AK", "Alaska"), array("AZ", "Arizona"), array("AR", "Arkansas"), array("CA", "California"), array("CO", "Colorado"), array("CT", "Connecticut"), array("DE", "Delaware"), array("FL", "Florida"), array("GA", "Georgia"), array("HI", "Hawaii"), array("ID", "Idaho"), array("IL", "Illinois"), array("IN", "Indiana"), array("IA", "Iowa"), array("KS", "Kansas"), array("KY", "Kentucky"), array("LA", "Louisiana"), array("ME", "Maine"), array("MD", "Maryland"), array("MA", "Massachusetts"), array("MI", "Michigan"), array("MN", "Minnesota"), array("MS", "Mississippi"), array("MO", "Missouri"), array("MT", "Montana"), array("NE", "Nebraska"), array("NV", "Nevada"), array("NH", "New Hampshire"), array("NJ", "New Jersey"), array("NM", "New Mexico"), array("NY", "New York"), array("NC", "North Carolina"), array("ND", "North Dakota"), array("OH", "Ohio"), array("OK", "Oklahoma"), array("OR", "Oregon"), array("PA", "Pennsylvania"), array("RI", "Rhode Island"), array("SC", "South Carolina"), array("SD", "South Dakota"), array("TN", "Tennessee"), array("TX", "Texas"), array("UT", "Utah"), array("VT", "Vermont"), array("VA", "Virginia"), array("WA", "Washington"), array("DC", "Washington, DC"), array("WV", "West Virginia"), array("WI", "Wisconsin"), array("WY", "Wyoming"));
 
 # display <option>s
 function enc_states($str) {
        $ret = '';
 
-       return encode_options($str, $GLOBALS['wfpl_states_assoc'], PULLDOWN_HASH);
+       return encode_options($str, $GLOBALS['wfpl_states_assoc']);
 }
 
-$GLOBALS['wfpl_provinces_assoc'] = array("AB" => "Alberta", "BC" => "British Columbia", "MB" => "Manitoba", "NF" => "Newfoundland", "NB" => "New Brunswick", "NS" => "Nova Scotia", "NT" => "Northwest Territories", "NU" => "Nunavut", "ON" => "Ontario", "PE" => "Prince Edward Island", "QC" => "Quebec", "SK" => "Saskatchewan", "YT" => "Yukon Territory");
+$GLOBALS['wfpl_provinces_assoc'] = array(array("AB", "Alberta"), array("BC", "British Columbia"), array("MB", "Manitoba"), array("NF", "Newfoundland"), array("NB", "New Brunswick"), array("NS", "Nova Scotia"), array("NT", "Northwest Territories"), array("NU", "Nunavut"), array("ON", "Ontario"), array("PE", "Prince Edward Island"), array("QC", "Quebec"), array("SK", "Saskatchewan"), array("YT", "Yukon Territory"));
 
 # display <option>s
 function enc_provinces($str) {
        $ret = '';
 
-       return encode_options($str, $GLOBALS['wfpl_provinces_assoc'], PULLDOWN_HASH);
+       return encode_options($str, $GLOBALS['wfpl_provinces_assoc']);
 }
 
 # returns "odd", then "even", then "odd" etc.
@@ -457,3 +466,12 @@ function enc_linkify($str) {
        }
        return $ret;
 }
+
+# turns a filename into the unix timestamp of that files modification date
+function enc_mtime($dummy, $filename) {
+       $stat = stat($filename);
+       if ($stat === false) {
+               return '';
+       }
+       return '' . $stat['mtime'];
+}