--- /dev/null
+<?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');
+
+?>
--- /dev/null
+<?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;
+ }
+}
+
+?>
--- /dev/null
+<?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;
+}
+
+?>