<?php
-# Copyright (C) 2006 Jason Woofenden
-#
-# 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/
+
+
+# pass an integer, returns the suffix
+function ordinal_suffix($i) {
+ # teens are all __th
+ if(strlen($i) > 1 && substr($i, -2, 1) === '1') {
+ return 'th';
+ }
+ switch(substr($i, -1)) {
+ case '':
+ return '';
+ case '1':
+ return 'st';
+ case '2':
+ return 'nd';
+ case '3':
+ return 'rd';
+ default;
+ return 'th';
+ }
+}
+
+# ordinalize(1) => "1st"
+# ordinalize(2) => "2nd"
+# ordinalize(3) => "3rd"
+# ordinalize(111) => "111th"
+# ordinalize("62") => "62nd"
+function ordinalize($i) {
+ return $i . ordinal_suffix($i);
+}
+
+# remove the $key from $_REQUEST and return it's value (or null if it's not there)
+function _REQUEST_cut($key) {
+ if(!isset($_REQUEST[$key])) {
+ return null;
+ }
+ $ret = $_REQUEST[$key];
+ unset($_REQUEST[$key]);
+ return $ret;
+}
# returns an array containing just the elements of $pipes that are readable (without blocking)
# timeout 0 means don't wait, timeout NULL means wait indefinitely
}
-
-
-
-
function unix_newlines($str) {
$str = str_replace("\r\n", "\n", $str);
return str_replace("\r", "\n", $str);
}
+
# return current year (all 4 digits)
function this_year() {
return strftime('%Y');
# return the number of the current month (1..12)
function this_month() {
- return ereg_replace('^0', '', strftime('%m'));
+ return preg_replace('|^0|', '', strftime('%m'));
}
# return today's date in yyyy-mm-dd format
return strftime('%Y-%m-%d');
}
+function now_yyyymmdd() {
+ return strftime('%Y-%m-%d');
+}
+
+function now_yyyymmddhhmmss() {
+ return strftime('%Y-%m-%d %H:%M:%S');
+}
+
function get_text_between($text, $start_text, $end_text) {
$start = strpos($text, $start_text);
return substr($text, 0, $end);
}
+# Make it easy to insert an array into the template data structure so that each
+# element of the array gets its own row.
+#
+# passed this: columnize(array('a', 'b', 'c'), 'k');
+# it returns: array(array('k' => 'a'),
+# array('k' => 'b'),
+# array('k' => 'c'));
+# passed this: columnize(array(), 'k');
+# it returns: false
+function columnize($arr, $key = 'data') {
+ if(!$arr) {
+ return false;
+ }
+ $ret = array();
+ foreach($arr as $val) {
+ $ret[] = array($key => $val);
+ }
+ return $ret;
+}
+
# php4 is broken, in that you cannot set a default value for a parameter that
# is passed by reference. So, this is set up to use the following screwy
# syntax:
return new stupid_reference($foo);
}
-?>
+function &last(&$array) {
+ if(count($array)) return $array[count($array) - 1];
+}