diff options
| author | David M <davidmj@users.sourceforge.net> | 2006-06-10 16:51:24 +0000 |
|---|---|---|
| committer | David M <davidmj@users.sourceforge.net> | 2006-06-10 16:51:24 +0000 |
| commit | 4613de6f8746ce8ac4edd8e49f53c845394cff4f (patch) | |
| tree | 8e401711bfbacc8ea338a69b0a67df72ba45ff0a /phpBB/includes/functions_admin.php | |
| parent | 6bbeda945047a80fc6542c19bdff17e3f97a8fd0 (diff) | |
| download | forums-4613de6f8746ce8ac4edd8e49f53c845394cff4f.tar forums-4613de6f8746ce8ac4edd8e49f53c845394cff4f.tar.gz forums-4613de6f8746ce8ac4edd8e49f53c845394cff4f.tar.bz2 forums-4613de6f8746ce8ac4edd8e49f53c845394cff4f.tar.xz forums-4613de6f8746ce8ac4edd8e49f53c845394cff4f.zip | |
- BBCode bugs
- PostgreSQL now gives us database info (if you are running 8.1 or have the dbsize contrib module installed)
git-svn-id: file:///svn/phpbb/trunk@6042 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/includes/functions_admin.php')
| -rw-r--r-- | phpBB/includes/functions_admin.php | 124 |
1 files changed, 84 insertions, 40 deletions
diff --git a/phpBB/includes/functions_admin.php b/phpBB/includes/functions_admin.php index af1f486ac4..1b7e6f5647 100644 --- a/phpBB/includes/functions_admin.php +++ b/phpBB/includes/functions_admin.php @@ -2266,66 +2266,110 @@ function get_database_size() global $db, $user, $table_prefix; // This code is heavily influenced by a similar routine in phpMyAdmin 2.2.0 - if (preg_match('#^mysql#', SQL_LAYER)) + switch (SQL_LAYER) { - $sql = 'SELECT VERSION() AS mysql_version'; - $result = $db->sql_query($sql); - $row = $db->sql_fetchrow($result); - $db->sql_freeresult($result); - - if ($row) - { - $version = $row['mysql_version']; + case 'mysql': + case 'mysql4': + case 'mysqli': + + $sql = 'SELECT VERSION() AS mysql_version'; + $result = $db->sql_query($sql); + $row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); - if (preg_match('#(3\.23|[45]\.)#', $version)) + if ($row) { - $db_name = (preg_match('#^(?:3\.23\.(?:[6-9]|[1-9]{2}))|[45]\.#', $version)) ? "`{$db->dbname}`" : $db->dbname; + $version = $row['mysql_version']; - $sql = "SHOW TABLE STATUS - FROM " . $db_name; - $result = $db->sql_query($sql); - - $dbsize = 0; - while ($row = $db->sql_fetchrow($result)) + if (preg_match('#(3\.23|[45]\.)#', $version)) { - if ((isset($row['Type']) && $row['Type'] != 'MRG_MyISAM') || (isset($row['Engine']) && ($row['Engine'] == 'MyISAM' || $row['Engine'] == 'InnoDB'))) + $db_name = (preg_match('#^(?:3\.23\.(?:[6-9]|[1-9]{2}))|[45]\.#', $version)) ? "`{$db->dbname}`" : $db->dbname; + + $sql = 'SHOW TABLE STATUS + FROM ' . $db_name; + $result = $db->sql_query($sql); + + $dbsize = 0; + while ($row = $db->sql_fetchrow($result)) { - if ($table_prefix != '') + if ((isset($row['Type']) && $row['Type'] != 'MRG_MyISAM') || (isset($row['Engine']) && ($row['Engine'] == 'MyISAM' || $row['Engine'] == 'InnoDB'))) { - if (strstr($row['Name'], $table_prefix)) + if ($table_prefix != '') + { + if (strstr($row['Name'], $table_prefix)) + { + $dbsize += $row['Data_length'] + $row['Index_length']; + } + } + else { $dbsize += $row['Data_length'] + $row['Index_length']; } } - else - { - $dbsize += $row['Data_length'] + $row['Index_length']; - } } + $db->sql_freeresult($result); + } + else + { + $dbsize = $user->lang['NOT_AVAILABLE']; } + } + else + { + $dbsize = $user->lang['NOT_AVAILABLE']; + } + + break; + + case 'mssql': + case 'mssql_odbc': + + $sql = 'SELECT ((SUM(size) * 8.0) * 1024.0) as dbsize + FROM sysfiles'; + $result = $db->sql_query($sql); + $dbsize = ($row = $db->sql_fetchrow($result)) ? intval($row['dbsize']) : $user->lang['NOT_AVAILABLE']; + $db->sql_freeresult($result); + + break; + + case 'postgres': + + $sql = "SELECT proname + FROM pg_proc + WHERE proname = 'pg_database_size'"; + $result = $db->sql_query($sql); + $row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + if ($row['proname'] == 'pg_database_size') + { + + $sql = "SELECT oid + FROM pg_database + WHERE datname = '" . $db->dbname . "'"; + $result = $db->sql_query($sql); + $row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + $oid = $row['oid']; + + $sql = 'SELECT pg_database_size(' . $oid . ') as size'; + $result = $db->sql_query($sql); + $row = $db->sql_fetchrow($result); $db->sql_freeresult($result); + + $dbsize = $row['size']; } else { $dbsize = $user->lang['NOT_AVAILABLE']; } - } - else - { + + break; + + default: + $dbsize = $user->lang['NOT_AVAILABLE']; - } - } - else if (preg_match('#^mssql#', SQL_LAYER)) - { - $sql = 'SELECT ((SUM(size) * 8.0) * 1024.0) as dbsize - FROM sysfiles'; - $result = $db->sql_query($sql); - $dbsize = ($row = $db->sql_fetchrow($result)) ? intval($row['dbsize']) : $user->lang['NOT_AVAILABLE']; - $db->sql_freeresult($result); - } - else - { - $dbsize = $user->lang['NOT_AVAILABLE']; } if (is_int($dbsize)) |
