From ae0bac832fd101f0687c5edc20ce9bdc2e989191 Mon Sep 17 00:00:00 2001 From: Robert Treat Date: Sat, 9 Jan 2010 17:15:31 -0500 Subject: [PATCH] fix for bug #1963050, we emit 'No Access' now in cases where we dont have permissions to see database sizes --- classes/Misc.php | 24 ++++++++++++++---------- classes/database/Postgres.php | 5 ++++- lang/english.php | 1 + lang/recoded/english.php | 3 ++- 4 files changed, 21 insertions(+), 12 deletions(-) diff --git a/classes/Misc.php b/classes/Misc.php index 35d75254..a037db6c 100644 --- a/classes/Misc.php +++ b/classes/Misc.php @@ -180,31 +180,35 @@ $out = $params['function']($str, $params); break; case 'prettysize': - $mult = 1; - $limit = 10 * 1024; - - if ($str < $limit * $mult) - $out = $str.' '.$lang['strbytes']; + if ($str == -1) + $out = $lang['strnoaccess']; else { - $mult *= 1024; + $limit = 10 * 1024; + $mult = 1; if ($str < $limit * $mult) - $out = floor(($str + $mult / 2) / $mult).' '.$lang['strkb']; + $out = $str.' '.$lang['strbytes']; else { $mult *= 1024; if ($str < $limit * $mult) - $out = floor(($str + $mult / 2) / $mult).' '.$lang['strmb']; + $out = floor(($str + $mult / 2) / $mult).' '.$lang['strkb']; else { $mult *= 1024; if ($str < $limit * $mult) - $out = floor(($str + $mult / 2) / $mult).' '.$lang['strgb']; + $out = floor(($str + $mult / 2) / $mult).' '.$lang['strmb']; else { $mult *= 1024; if ($str < $limit * $mult) - $out = floor(($str + $mult / 2) / $mult).' '.$lang['strtb']; + $out = floor(($str + $mult / 2) / $mult).' '.$lang['strgb']; + else + { + $mult *= 1024; + if ($str < $limit * $mult) + $out = floor(($str + $mult / 2) / $mult).' '.$lang['strtb']; + } } } } diff --git a/classes/database/Postgres.php b/classes/database/Postgres.php index c6484211..fb524824 100755 --- a/classes/database/Postgres.php +++ b/classes/database/Postgres.php @@ -476,7 +476,10 @@ class Postgres extends ADODB_base { SELECT pdb.datname AS datname, pr.rolname AS datowner, pg_encoding_to_char(encoding) AS datencoding, (SELECT description FROM pg_catalog.pg_shdescription pd WHERE pdb.oid=pd.objoid) AS datcomment, (SELECT spcname FROM pg_catalog.pg_tablespace pt WHERE pt.oid=pdb.dattablespace) AS tablespace, - pg_catalog.pg_database_size(pdb.oid) as dbsize, pdb.datcollate, pdb.datctype + CASE WHEN pg_catalog.has_database_privilege(current_user, pdb.oid, 'CONNECT') + THEN pg_catalog.pg_database_size(pdb.oid) + ELSE -1 -- set this magic value, which we will convert to no access later + END as dbsize, pdb.datcollate, pdb.datctype FROM pg_catalog.pg_database pdb LEFT JOIN pg_catalog.pg_roles pr ON (pdb.datdba = pr.oid) WHERE true diff --git a/lang/english.php b/lang/english.php index d1834e4f..cceb8bd3 100644 --- a/lang/english.php +++ b/lang/english.php @@ -152,6 +152,7 @@ $lang['strnodatabaseselected'] = 'Please, select a database.'; // Database sizes + $lang['strnoaccess'] = 'No Access'; $lang['strsize'] = 'Size'; $lang['strbytes'] = 'bytes'; $lang['strkb'] = 'kB'; diff --git a/lang/recoded/english.php b/lang/recoded/english.php index c231e2de..eeb70025 100644 --- a/lang/recoded/english.php +++ b/lang/recoded/english.php @@ -152,6 +152,7 @@ $lang['strnodatabaseselected'] = 'Please, select a database.'; // Database sizes + $lang['strnoaccess'] = 'No Access'; $lang['strsize'] = 'Size'; $lang['strbytes'] = 'bytes'; $lang['strkb'] = 'kB'; @@ -214,7 +215,7 @@ $lang['strinsertrow'] = 'Insert row'; $lang['strrowinserted'] = 'Row inserted.'; $lang['strrowinsertedbad'] = 'Row insert failed.'; - $lang['strnofkref'] = 'There is no matching value for this foreign key in %s.'; + $lang['strnofkref'] = 'There is no matching value in the foreign key %s.'; $lang['strrowduplicate'] = 'Row insert failed, attempted to do duplicate insert.'; $lang['streditrow'] = 'Edit row'; $lang['strrowupdated'] = 'Row updated.'; -- 2.39.5