]> andersk Git - sql-web.git/commitdiff
move SQL to use external joe libraries
authorJoe Presbrey <presbrey@mit.edu>
Thu, 2 Nov 2006 18:08:56 +0000 (18:08 +0000)
committerJoe Presbrey <presbrey@mit.edu>
Thu, 2 Nov 2006 18:08:56 +0000 (18:08 +0000)
git-svn-id: svn://presbrey.mit.edu/sql/web/dev@120 a142d4bd-2cfb-0310-9673-cb33a7e74f58

lib/joe/errors.lib.php [new file with mode: 0644]
lib/joe/joe.lib.php [new symlink]
lib/joe/mysql.lib.php [new file with mode: 0644]
lib/joe/util.lib.php [new file with mode: 0644]

diff --git a/lib/joe/errors.lib.php b/lib/joe/errors.lib.php
new file mode 100644 (file)
index 0000000..3fe1ca7
--- /dev/null
@@ -0,0 +1,96 @@
+<?php
+
+function ErrorHandler($errno, $errstr, $errfile, $errline, $errcontext) {
+       $error_halt = true;
+       $error_type = 'Error';
+       $error_msg = " $errstr occured in $errfile on $errline at ".date("D M j G:i:s T Y");
+       $email_to = 'USER@localhost';
+       $email_from = 'USER@localhost';
+       switch($errno) {
+               case E_USER_NOTICE:
+               case E_NOTICE:
+                       $type = 'Notice';
+                       $error_halt = false;
+                       break;
+               case E_USER_WARNING:
+               case E_COMPILE_WARNING:
+               case E_CORE_WARNING:
+               case E_WARNING:
+                       $type = 'Warning';
+                       $error_halt = false;
+                       break;
+               case E_USER_ERROR:
+               case E_COMPILE_ERROR:
+               case E_CORE_ERROR:
+               case E_ERROR:
+                       $type = 'Fatal Error';
+                       break;
+               case E_PARSE:
+                       $type = 'Parse Error';
+                       break;
+               default:
+                       $type = 'Unknown Error';
+                       break;
+       }
+       $error_bt = ErrorBacktrace(debug_backtrace());
+       $error_msg = $type . ':' . $error_msg . "\n" . $error_bt . "\n\n";
+               $error_msg .= print_r(get_included_files(),1)."\n";
+               $error_msg .= print_r($errcontext,1);
+               error_log($error_msg, 1, $email_to);
+               if ($error_halt) {
+                       while(ob_get_level()) { ob_end_clean(); }
+                       exit -1;
+               }
+}
+
+function ErrorBacktrace($debug_backtrace) {
+       array_shift($debug_backtrace);
+       $output = '';
+   foreach ($debug_backtrace as $bt) {
+       $args = '';
+       foreach ($bt['args'] as $a) {
+           if (!empty($args)) {
+               $args .= ', ';
+           }
+           switch (gettype($a)) {
+           case 'integer':
+           case 'double':
+               $args .= $a;
+               break;
+           case 'string':
+               $a = htmlspecialchars(substr($a, 0, 64)).((strlen($a) > 64) ? '...' : '');
+               $args .= "\"$a\"";
+               break;
+           case 'array':
+               //$args .= 'Array('.count($a).')';
+               $args .= print_r($a,1);
+               break;
+           case 'object':
+               $args .= 'Object('.get_class($a).')';
+               break;
+           case 'resource':
+               $args .= 'Resource('.strstr($a, '#').')';
+               break;
+           case 'boolean':
+               $args .= $a ? 'True' : 'False';
+               break;
+           case 'NULL':
+               $args .= 'Null';
+               break;
+           default:
+               $args .= 'Unknown';
+           }
+       }
+          empty($bt['class']) && $bt['class'] = '';
+          empty($bt['type']) && $bt['type'] = '';
+          empty($bt['function']) && $bt['function'] = '';
+          $output .= "\n";
+       $output .= "file: {$bt['line']} - {$bt['file']}\n";
+       $output .= "call: {$bt['class']}{$bt['type']}{$bt['function']}($args)\n";
+   }
+       return $output;
+}
+
+set_error_handler('ErrorHandler');
+
+?>
diff --git a/lib/joe/joe.lib.php b/lib/joe/joe.lib.php
new file mode 120000 (symlink)
index 0000000..42c1507
--- /dev/null
@@ -0,0 +1 @@
+util.lib.php
\ No newline at end of file
diff --git a/lib/joe/mysql.lib.php b/lib/joe/mysql.lib.php
new file mode 100644 (file)
index 0000000..bc52148
--- /dev/null
@@ -0,0 +1,55 @@
+<?php
+
+require_once('joe.lib.php');
+
+function DBMaster($sql) {
+       sessTime($sql);
+       $res = mysql_query($sql);
+       sessTime();
+       return $res;
+}
+function DBSlave($sql) {
+       sessTime($sql);
+       $res = mysql_query($sql);
+       sessTime();
+       if (mysql_error()) trigger_error($sql."<br />\n".mysql_error(),E_USER_ERROR);
+       return $res;
+}
+
+function DBSelect($sql) { return DBSlave($sql); }
+function DBInsert($sql) {
+       DBMaster($sql);
+       if (mysql_error()) trigger_error($sql."<br />\n".mysql_error(),E_USER_ERROR);
+       return mysql_insert_id();
+}
+function DBUpdate($sql) { DBInsert($sql); }
+function DBDelete($sql) { DBInsert($sql); }
+function DBCreate($sql) { DBMaster($sql); }
+function DBDrop($sql) { DBMaster($sql); }
+function DBGrant($sql) { DBInsert($sql); }
+function DBRevoke($sql) { DBInsert($sql); }
+function DBSet($sql) { DBInsert($sql); }
+function DBShow($sql) { return DBSlave($sql); }
+
+function calcDBSize($tdb) {
+       $sql_result = "SHOW DATABASES LIKE '".mysql_escape_string($tdb)."'";
+       $result = DBShow($sql_result);
+       if (!mysql_num_rows($result)) return null;
+       
+   $sql_result = "SHOW TABLE STATUS FROM `" .mysql_escape_string($tdb)."`";
+   $result = DBShow($sql_result);
+
+   if($result) {
+       $size = 0;
+       while ($data = mysql_fetch_array($result)) {
+             $size += $data["Data_length"] + $data["Index_length"];
+       }
+       mysql_free_result($result);
+       return $size;
+   }
+   else {
+       return null;
+   }
+}
+
+?>
diff --git a/lib/joe/util.lib.php b/lib/joe/util.lib.php
new file mode 100644 (file)
index 0000000..dd7be0a
--- /dev/null
@@ -0,0 +1,211 @@
+<?php
+/*
+    (c) 2005 Joe Presbrey
+    joepresbrey@gmail.com
+*/
+
+function isPost() {
+  if($_SERVER['REQUEST_METHOD'] == 'POST') {
+    return true;
+  } else {
+    return false;
+  }
+}
+function isFormPost() { return isPost(); }
+
+function isSess($id) {
+  return isset($_SESSION[$id]);
+}
+
+function sess($id,$val=null) {
+  if (is_null($val)) {
+    return (isSess($id)?$_SESSION[$id]:null);
+  } elseif (empty($val)) {
+    unset($_SESSION[$id]);
+  } else {
+    $prev = sess($id);
+    $_SESSION[$id] = $val;
+    return $prev;
+  }
+}
+
+function stopSess() {
+  $sid[] = session_id();
+  @session_destroy();
+  session_start();
+  $sid[] = session_id();
+  session_regenerate_id();
+  $sid[] = session_id();
+  session_write_close();
+  @session_destroy();
+
+  foreach($sid as $id) {
+    @unlink(session_save_path().'/sess_'.$id);
+  }
+}
+
+function sessTime($query=null) {
+  global $timingc;
+  global $timings;
+
+  if(!isset($timings)) {
+    $timings = array();
+  }
+
+  if (!isset($timingc) || empty($timingc)) {
+       $timingc = 1;
+  } elseif (!is_null($query)) {
+    $current = $timingc;
+       $timingc = ++$current;
+  }
+  $key = $timingc;
+
+  if (is_null($query)) {
+    $timings[$key]['time'] = microtime(true)-$timings[$key]['time'];
+       if (mysql_error())
+               $timings[$key]['error'] = mysql_error();
+    return true;
+  } else {
+    $timings[$key] = array();
+    $timings[$key]['time'] = microtime(true);
+    $timings[$key]['query'] = $query;
+    return false;
+  }
+}
+
+function fetchRows($rs, $key = null) {
+    if (!$rs) return array();
+    $kn = is_null($key);
+    $n = mysql_num_rows($rs);
+    if ($n > 0) {
+        $arr = array();
+        if (is_null($key)) {
+            while ($r = mysql_fetch_assoc($rs)) {
+                $arr[] = $r;
+            }
+        } elseif (is_numeric($key)) {
+            while ($r = mysql_fetch_row($rs)) {
+                $arr[$r[$key]] = $r;
+            }
+        } else {
+            while ($r = mysql_fetch_assoc($rs)) {
+                $arr[$r[$key]] = $r;
+            }
+        }
+        mysql_free_result($rs);
+        return $arr;
+    } else {
+        mysql_free_result($rs);
+        return array();
+    }
+}
+
+function printErrors($err) { printList('err', $err); }
+function printMsgs($err) { printList('msg', $err); }
+
+function printList($class,$err) {
+    if (is_array($err) && count($err)) {
+        echo '<div class="',$class,'">',(count($err)>1?'<ul>':'');
+        foreach($err as $e) {
+                       if (count($err)>1) {
+                               echo '<li><p>',$e,'</p></li>';
+                       } else {
+                               echo '<p>',$e,'</p>';
+                       }
+        }
+        echo (count($err)>1?'</ul>':''),'</div>';
+    }
+}
+
+function buildSQLSet($fields, $values=null, $safeFields=false) {
+    $ex = array('NOW()','NULL','/FROM_UNIXTIME\(\d+\)/');
+    $sql = '';
+    $c = 0;
+    if (!is_null($values)) {
+        foreach($fields as $field) {
+            if ($c++) $sql .= ',';
+                       $value = array_shift($values);
+                       if (is_numeric($value))
+                               $sql .= " `$field`=".mysql_real_escape_string($value);
+                       else
+                               $sql .= " `$field`='".mysql_real_escape_string($value)."'";
+        }
+    } else {
+        foreach($fields as $field=>$value) {
+            if ($c++) $sql .= ',';
+            if (in_array($value,$ex) || (is_array($safeFields) && in_array($field,$safeFields))) {
+                $sql .= " `$field`=$value";
+            } elseif (is_numeric($value)) {
+                $sql .= " `$field`=".mysql_real_escape_string($value);
+                       } else {
+                $sql .= " `$field`='".mysql_real_escape_string($value)."'";
+            }
+        }
+    }
+    return $sql;
+}
+
+function buildSQLInsert($array, $table=null, $safeFields=false) {
+    $ex = array('NOW()','NULL','/FROM_UNIXTIME\(\d+\)/');
+    $sql = '(';
+    $c = 0;
+    foreach($array as $field=>$value) {
+        if ($c++) $sql .= ',';
+        $sql .= " `$field` ";
+    }
+    $sql .= ') VALUES (';
+    $c = 0;
+       foreach($array as $field=>$value) {
+        if ($c++) $sql .= ',';
+        if (in_array($value, $ex) || (is_array($safeFields) && in_array($field,$safeFields))) {
+            $sql .= " $value ";
+               } else {
+               $value = mysql_real_escape_string($value);
+                       if (is_numeric($value)) {
+                               $sql .= " $value ";
+                       } else {
+                               $sql .= " '$value' ";
+                       }
+               }
+    }
+    $sql .= ')';
+    return (is_null($table)?$sql:('INSERT INTO `'.$table.'` '.$sql));
+}
+
+function build_str($query_array) {
+    $query_string = array();
+    foreach ($query_array as $k => $v) {
+        $new = $k;
+        if (strlen($v))
+            $new .= '='.$v;
+        $query_string[] = $new;
+    }
+    return join('&', $query_string);
+}
+
+function newQS($key, $val=null) {
+    return newQSA(array($key=>$val));
+}
+
+function newQSA($array=array()) {
+    parse_str($_SERVER['QUERY_STRING'], $arr);
+    $s = count($arr);
+    foreach($array as $key=>$val) {
+        $arr[$key] = $val;
+        if (is_null($val))
+            unset($arr[$key]);
+    }
+    return (count($arr)||$s)?'?'.build_str($arr):'';
+}
+
+function formQSA($array=array()) {
+    if (!count($array)) $array = $_SERVER['QUERY_STRING'];
+    parse_str($array, $arr);
+    $text = '';
+    foreach($arr as $key=>$val) {
+        $text .= sprintf('<input type="hidden" name="%s" value="%s">', $key, $val);
+    }
+    return $text;
+}
+
+?>
This page took 0.043688 seconds and 5 git commands to generate.