]> andersk Git - sql-web.git/blob - lib/joe.lib.php
is_numeric bug in fetchRows and more
[sql-web.git] / lib / joe.lib.php
1 <?php
2 /*
3     (c) 2005 Joe Presbrey
4
5     ATTN:  This library was assembled and completed in its entirety independent of
6     any and all corporate projects and/or work environ.
7
8     You may NOT use this library elsewhere!
9
10 */
11
12 function isPost() {
13   if($_SERVER['REQUEST_METHOD'] == 'POST') {
14     return true;
15   } else {
16     return false;
17   }
18 }
19 function isFormPost() { return isPost(); }
20
21 function isSess($id) {
22   return isset($_SESSION[$id]);
23 }
24
25 function sess($id,$val=null) {
26   if (is_null($val)) {
27     return (isSess($id)?$_SESSION[$id]:null);
28   } elseif (empty($val)) {
29     unset($_SESSION[$id]);
30   } else {
31     $prev = sess($id);
32     $_SESSION[$id] = $val;
33     return $prev;
34   }
35 }
36
37 function stopSess() {
38   $sid[] = session_id();
39   @session_destroy();
40   session_start();
41   $sid[] = session_id();
42   session_regenerate_id();
43   $sid[] = session_id();
44   session_write_close();
45   @session_destroy();
46
47   foreach($sid as $id) {
48     @unlink(session_save_path().'/sess_'.$id);
49   }
50 }
51
52 function sessTime($query=null) {
53   global $timingc;
54   global $timings;
55
56   if(!isset($timings)) {
57     $timings = array();
58   }
59
60   if (!isset($timingc) || empty($timingc)) {
61         $timingc = 1;
62   } elseif (!is_null($query)) {
63     $current = $timingc;
64         $timingc = ++$current;
65   }
66   $key = $timingc;
67
68   if (is_null($query)) {
69     $timings[$key]['time'] = microtime(true)-$timings[$key]['time'];
70         if (mysql_error())
71                 $timings[$key]['error'] = mysql_error();
72     return true;
73   } else {
74     $timings[$key] = array();
75     $timings[$key]['time'] = microtime(true);
76     $timings[$key]['query'] = $query;
77     return false;
78   }
79 }
80
81 function fetchRows($rs, $key = null) {
82     /* ask me how to use this if its not obvious ~ Joe */
83     if (!$rs) return array();
84     $kn = is_null($key);
85     $n = mysql_num_rows($rs);
86     if ($n > 0) {
87         $arr = array();
88         if (is_null($key)) {
89             while ($r = mysql_fetch_assoc($rs)) {
90                 $arr[] = $r;
91             }
92         } elseif (is_numeric($key)) {
93             while ($r = mysql_fetch_row($rs)) {
94                 $arr[$r[$key]] = $r;
95             }
96         } else {
97             while ($r = mysql_fetch_assoc($rs)) {
98                 $arr[$r[$key]] = $r;
99             }
100         }
101         mysql_free_result($rs);
102         return $arr;
103     } else {
104         mysql_free_result($rs);
105         return array();
106     }
107 }
108
109 function printErrors($err) { printList('err', $err); }
110 function printMsgs($err) { printList('msg', $err); }
111
112 function printList($class,$err) {
113     if (is_array($err) && count($err)) {
114         echo '<div class="',$class,'">',(count($err)>1?'<ul>':'');
115         foreach($err as $e) {
116                         if (count($err)>1) {
117                                 echo '<li><p>',$e,'</p></li>';
118                         } else {
119                                 echo '<p>',$e,'</p>';
120                         }
121         }
122         echo (count($err)>1?'</ul>':''),'</div>';
123     }
124 }
125
126 function buildSQLSet($fields, $values=null) {
127     $ex = array('NOW()','NULL');
128     $sql = 'SET';
129     $c = 0;
130     if (!is_null($values)) {
131         foreach($fields as $field) {
132             if ($c++) $sql .= ',';
133             $sql .= " `$field`='".mysql_escape_string(array_shift($values))."'";
134         }
135     } else {
136         foreach($fields as $field=>$value) {
137             if ($c++) $sql .= ',';
138             if (in_array($value,$ex)) {
139                 $sql .= " `$field`= $value";
140             } else {
141                 $sql .= " `$field`='".mysql_escape_string($value)."'";
142             }
143         }
144     }
145     return $sql;
146 }
147
148 function buildSQLInsert($array, $table=null) {
149     $ex = array('NOW()','NULL');
150     $sql = '(';
151     $c = 0;
152     foreach($array as $field=>$value) {
153         if ($c++) $sql .= ',';
154         $sql .= " `$field` ";
155     }
156     $sql .= ') VALUES (';
157     $c = 0;
158        foreach($array as $field=>$value) {
159         $v = mysql_escape_string($value);
160         if ($c++) $sql .= ',';
161         if (in_array($v, $ex))
162             $sql .= " $v ";
163         else
164             $sql .= " '$v' ";
165     }
166     $sql .= ')';
167     return (is_null($table)?$sql:('INSERT INTO `'.$table.'` '.$table));
168 }
169
170 function build_str($query_array) {
171     $query_string = array();
172     foreach ($query_array as $k => $v) {
173         $new = $k;
174         if (strlen($v))
175             $new .= '='.$v;
176         $query_string[] = $new;
177     }
178     return join('&', $query_string);
179 }
180
181 function newQS($key, $val=null) {
182     /*
183     parse_str($_SERVER['QUERY_STRING'], $arr);
184     $arr[$key] = $val;
185     return '?'.build_str($arr);
186     */
187     return newQSA(array($key=>$val));
188 }
189
190 function newQSA($array=array()) {
191     parse_str($_SERVER['QUERY_STRING'], $arr);
192     $s = count($arr);
193     foreach($array as $key=>$val) {
194         $arr[$key] = $val;
195         if (is_null($val))
196             unset($arr[$key]);
197     }
198     return (count($arr)||$s)?'?'.build_str($arr):'';
199 }
200
201 function formQSA($array=array()) {
202     if (!count($array)) $array = $_SERVER['QUERY_STRING'];
203     parse_str($array, $arr);
204     $text = '';
205     foreach($arr as $key=>$val) {
206         $text .= sprintf('<input type="hidden" name="%s" value="%s">', $key, $val);
207     }
208     return $text;
209 }
210
211 ?>
This page took 0.059619 seconds and 5 git commands to generate.