From: Joe Presbrey Date: Mon, 3 Apr 2006 03:43:18 +0000 (+0000) Subject: git-svn-id: svn://presbrey.mit.edu/php/php@97 a142d4bd-2cfb-0310-9673-cb33a7e74f58 X-Git-Url: http://andersk.mit.edu/gitweb/sql-web.git/commitdiff_plain/9835a21d68b12f5883c9508695ed8e404a1c671b git-svn-id: svn://presbrey.mit.edu/php/php@97 a142d4bd-2cfb-0310-9673-cb33a7e74f58 --- diff --git a/lib/joe/dbaccess.lib.php b/lib/joe/dbaccess.lib.php new file mode 100644 index 0000000..76a3a34 --- /dev/null +++ b/lib/joe/dbaccess.lib.php @@ -0,0 +1,93 @@ +\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."
\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; + } +} + +function checkQuotas($userId=null) { + if (empty($userId)) { + $sql = 'SELECT DatabaseId,Name FROM DB WHERE bEnabled=1'; + } else { + $sql = sprintf("SELECT DB.DatabaseId,Name FROM DB INNER JOIN DBOwner ON DB.DatabaseId = DBOwner.DatabaseId WHERE bEnabled=1 AND UserId = '%s'", mysql_escape_string($userId)); + } + $databases = fetchRows(DBSelect($sql),'Name'); + foreach($databases as $db) { + $DBId = $db['DatabaseId']; + $arr['dLastCheck'] = 'NOW()'; + $arr['nBytes'] = calcDBSize($db['Name']); + $sql = sprintf("UPDATE DB %s WHERE DatabaseId = '%s'", + buildSQLSet($arr), + mysql_escape_string($DBId)); + DBUpdate($sql); + } + $sql = "UPDATE UserStat SET nBytes = ( + SELECT SUM(nBytes) + FROM DB + INNER JOIN DBOwner ON DBOwner.DatabaseId = DB.DatabaseId + WHERE DBOwner.UserId = UserStat.UserId + AND DB.bEnabled=1 + GROUP BY UserId + ), dLastCheck = NOW()"; + if (!empty($userId)) $sql .= sprintf(" WHERE UserId = '%s'", mysql_escape_string($userId)); + DBUpdate($sql); + $sql = "UPDATE UserStat SET nDatabases = ( + SELECT COUNT(*) + FROM DB + INNER JOIN DBOwner ON DBOwner.DatabaseId = DB.DatabaseId + WHERE DBOwner.UserId = UserStat.UserId + AND DB.bEnabled=1 + GROUP BY UserId + ), dLastCheck = NOW()"; + if (!empty($userId)) $sql .= sprintf(" WHERE UserId = '%s'", mysql_escape_string($userId)); + DBUpdate($sql); +} + +?> diff --git a/lib/joe/errors.lib.php b/lib/joe/errors.lib.php new file mode 100644 index 0000000..6f760fc --- /dev/null +++ b/lib/joe/errors.lib.php @@ -0,0 +1,102 @@ + 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 index 2672321..0bf1fb0 100644 --- a/lib/joe/joe.lib.php +++ b/lib/joe/joe.lib.php @@ -3,28 +3,29 @@ (c) 2005 Joe Presbrey joepresbrey@gmail.com - ATTN: This library was compiled and completed in its entirety independent of - any and all corporate projects and/or work environment. + ATTN: This library was assembled and completed in its entirety independent of + any and all corporate projects and/or work environ. You may NOT use this library elsewhere! */ -function isFormPost() { +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) { +function sess($id,$val=null) { if (is_null($val)) { - return (isSess($id)?$_SESSION[$id]:NULL); + return (isSess($id)?$_SESSION[$id]:null); } elseif (empty($val)) { unset($_SESSION[$id]); } else { @@ -45,28 +46,30 @@ function stopSess() { @session_destroy(); foreach($sid as $id) { - @unlink(SESSIONS_PATH.'/sess_'.$id); + @unlink(session_save_path().'/sess_'.$id); } } function sessTime($query=null) { + global $timingc; global $timings; if(!isset($timings)) { $timings = array(); } - if (!isSess('TIMING')) { - sess('TIMING', '1'); + if (!isset($timingc) || empty($timingc)) { + $timingc = 1; } elseif (!is_null($query)) { - $current = sess('TIMING'); - $current++; - sess('TIMING', $current); + $current = $timingc; + $timingc = ++$current; } - $key = sess('TIMING'); + $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(); @@ -104,17 +107,24 @@ function fetchRows($rs, $key = null) { } } -function printErrors($errArray) { - if (isset($errArray) && count($errArray)) { - echo '':''),''; } } -function buildSQLSet($fields, $values=NULL) { +function buildSQLSet($fields, $values=null) { $ex = array('NOW()','NULL'); $sql = 'SET'; $c = 0; @@ -136,7 +146,7 @@ function buildSQLSet($fields, $values=NULL) { return $sql; } -function buildSQLInsert($array, $table=NULL) { +function buildSQLInsert($array, $table=null) { $ex = array('NOW()','NULL'); $sql = '('; $c = 0; @@ -169,10 +179,13 @@ function build_str($query_array) { return join('&', $query_string); } -function newQS($key, $val) { +function newQS($key, $val=null) { + /* parse_str($_SERVER['QUERY_STRING'], $arr); $arr[$key] = $val; return '?'.build_str($arr); + */ + return newQSA(array($key=>$val)); } function newQSA($array=array()) {