make granting and revoking way, way better. now it remembers field contents when...
authorchriskl <chriskl>
Thu, 22 Jul 2004 04:52:50 +0000 (04:52 +0000)
committerchriskl <chriskl>
Thu, 22 Jul 2004 04:52:50 +0000 (04:52 +0000)
BUGS
HISTORY
lang/english.php
lang/recoded/english.php
privileges.php

diff --git a/BUGS b/BUGS
index 93d5b565726a81c7168746699f8799e4879ff8f1..13e1223e45b491f8872d6ca33cb37ff4acb241f8 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -33,3 +33,4 @@ NEEDS TESTING
 * Allows tabs in textareas on IE: http://devilock.mine.nu/textarea_tab.html
 * add help links everywhere.  fix formatting of help links.
 * Deal with named parameters that have ',' in the type name
+
diff --git a/HISTORY b/HISTORY
index 46fcebdb87bfae266c7344420eff2d761b60c83f..71aea5c1cf019d05def7c9e685479940f7140931 100644 (file)
--- a/HISTORY
+++ b/HISTORY
@@ -18,6 +18,7 @@ Features
   looking at (eg. 'Indexes') when you change which table you are viewing.
 * New fast navigation bar.  A breadcrumb style navigation bar for fast
   jumping between areas.
+* Much improved grant/revoke feature
 
 Translations
 * Arabic from Zaki
index 4f0a60c1ebb9cc71c3664ee803813e3a6d1fe330..66bffaeaf248701204f4113e2e04b3bb2e35cc50 100755 (executable)
@@ -4,7 +4,7 @@
         * English language file for phpPgAdmin.  Use this as a basis
         * for new translations.
         *
-        * $Id: english.php,v 1.155 2004/07/15 10:06:25 soranzo Exp $
+        * $Id: english.php,v 1.156 2004/07/22 04:52:50 chriskl Exp $
         */
 
        // Language and character set
        $lang['strgranted'] = 'Privileges changed.';
        $lang['strgrantfailed'] = 'Failed to change privileges.';
        $lang['strgrantbad'] = 'You must specify at least one user or group and at least one privilege.';
-       $lang['stralterprivs'] = 'Alter privileges';
        $lang['strgrantor'] = 'Grantor';
        $lang['strasterisk'] = '*';
 
index e2b16c1dd10ea6f73ea2a87830132cf0bb935ea3..041846140935d5458a3f226df76e8dadfd5fabc1 100644 (file)
@@ -4,7 +4,7 @@
         * English language file for phpPgAdmin.  Use this as a basis
         * for new translations.
         *
-        * $Id: english.php,v 1.108 2004/07/15 10:06:25 soranzo Exp $
+        * $Id: english.php,v 1.109 2004/07/22 04:52:50 chriskl Exp $
         */
 
        // Language and character set
        $lang['strgranted'] = 'Privileges changed.';
        $lang['strgrantfailed'] = 'Failed to change privileges.';
        $lang['strgrantbad'] = 'You must specify at least one user or group and at least one privilege.';
-       $lang['stralterprivs'] = 'Alter privileges';
        $lang['strgrantor'] = 'Grantor';
        $lang['strasterisk'] = '*';
 
index bc656bde5fcac9e80f90c0588e60a58ac456bc39..867e32c0576996844e50e3296694d6a981def73e 100644 (file)
@@ -3,7 +3,7 @@
        /**
         * Manage privileges in a database
         *
-        * $Id: privileges.php,v 1.27 2004/07/19 08:13:02 jollytoad Exp $
+        * $Id: privileges.php,v 1.28 2004/07/22 04:52:50 chriskl Exp $
         */
 
        // Include application functions
 
        /**
         * Grant permissions on an object to a user
-        * @peram $confirm To show entry screen
+        * @param $confirm To show entry screen
+        * @param $mode 'grant' or 'revoke'
         * @param $msg (optional) A message to show
         */
-       function doAlter($confirm, $msg = '') {
+       function doAlter($confirm, $mode, $msg = '') {
                global $data, $misc;
                global $PHP_SELF, $lang;
 
                        // Get groups from the database
                        $groups = &$data->getGroups();
 
-                       echo "<h2>{$lang['strprivileges']}: ", $misc->printVal($name), ": {$lang['stralterprivs']}</h2>\n";
+                       if ($mode == 'grant')
+                               echo "<h2>{$lang['strprivileges']}: ", $misc->printVal($name), ": {$lang['strgrant']}</h2>\n";
+                       elseif ($mode == 'revoke')
+                               echo "<h2>{$lang['strprivileges']}: ", $misc->printVal($name), ": {$lang['strrevoke']}</h2>\n";
                        $misc->printMsg($msg);
-
                        echo "<form action=\"$PHP_SELF\" method=\"post\">\n";
                        echo "<table>\n";
                        echo "<tr><th class=\"data left\">{$lang['strusers']}</th>\n";
                        echo "<td class=\"data1\"><select name=\"username[]\" multiple=\"multiple\" size=\"", min(6, $users->recordCount()), "\">\n";
                        while (!$users->EOF) {
-                               $uname = htmlspecialchars($users->f['usename']);
-                               echo "<option value=\"{$uname}\"",
-                                       ($uname == $_REQUEST['username']) ? ' selected="selected"' : '', ">{$uname}</option>\n";
+                               $uname = htmlspecialchars($users->f['usename']);                                
+                               echo "<option value=\"  {$uname}\"",
+                                       in_array($users->f['usename'], $_REQUEST['username']) ? ' selected="selected"' : '', ">{$uname}</option>\n";
                                $users->moveNext();
                        }
                        echo "</select></td></tr>\n";
                        echo "<tr><th class=\"data left\">{$lang['strgroups']}</th>\n";
                        echo "<td class=\"data1\">\n";
-                       echo "<input type=\"checkbox\" name=\"public\"", (isset($_REQUEST['public']) ? ' selected="selected"' : ''), " />PUBLIC\n";
+                       echo "<input type=\"checkbox\" name=\"public\"", (isset($_REQUEST['public']) ? ' checked="checked"' : ''), " />PUBLIC\n";
                        // Only show groups if there are groups!
                        if ($groups->recordCount() > 0) {
                                echo "<br /><select name=\"groupname[]\" multiple=\"multiple\" size=\"", min(6, $groups->recordCount()), "\">\n";
                                while (!$groups->EOF) {
                                        $gname = htmlspecialchars($groups->f['groname']);
                                        echo "<option value=\"{$gname}\"",
-                                               ($gname == $_REQUEST['groupname']) ? ' selected="selected"' : '', ">{$gname}</option>\n";
+                                               in_array($groups->f['groname'], $_REQUEST['groupname']) ? ' selected="selected"' : '', ">{$gname}</option>\n";
                                        $groups->moveNext();
                                }
                                echo "</select>\n";
                        foreach ($data->privlist[$_REQUEST['type']] as $v) {
                                $v = htmlspecialchars($v);
                                echo "<input type=\"checkbox\" name=\"privilege[$v]\"", 
-                                                       isset($_REQUEST['privilege'][$v]) ? ' selected="selected"' : '', " />{$v}<br />\n";
+                                                       isset($_REQUEST['privilege'][$v]) ? ' checked="checked"' : '', " />{$v}<br />\n";
                        }
                        echo "</td></tr>\n";
                        // Grant option
                        if ($data->hasGrantOption()) {
                                echo "<tr><th class=\"data left\">{$lang['stroptions']}</th>\n";
                                echo "<td class=\"data1\">\n";
-                               echo "<input type=\"checkbox\" name=\"grantoption\"", 
-                                                       isset($_REQUEST['grantoption']) ? ' selected="selected"' : '', " />GRANT OPTION<br />\n";
-                               echo "<input type=\"checkbox\" name=\"cascade\"", 
-                                                       isset($_REQUEST['cascade']) ? ' selected="selected"' : '', " />CASCADE ({$lang['strrevoke']})<br />\n";
+                               if ($mode == 'grant') {
+                                       echo "<input type=\"checkbox\" name=\"grantoption\"", 
+                                                               isset($_REQUEST['grantoption']) ? ' checked="checked"' : '', " />GRANT OPTION\n";
+                               }
+                               elseif ($mode == 'revoke') {
+                                       echo "<input type=\"checkbox\" name=\"grantoption\"", 
+                                                               isset($_REQUEST['grantoption']) ? ' checked="checked"' : '', " />GRANT OPTION FOR<br />\n";
+                                       echo "<input type=\"checkbox\" name=\"cascade\"", 
+                                                               isset($_REQUEST['cascade']) ? ' checked="checked"' : '', " />CASCADE<br />\n";
+                               }
                                echo "</td></tr>\n";
                        }
                        echo "</table>\n";
 
                        echo "<input type=\"hidden\" name=\"action\" value=\"save\" />\n";
+                       echo "<input type=\"hidden\" name=\"mode\" value=\"", htmlspecialchars($mode), "\" />\n";
                        echo "<input type=\"hidden\" name=\"type\" value=\"", htmlspecialchars($_REQUEST['type']), "\" />\n";
                        echo "<input type=\"hidden\" name=\"object\" value=\"", htmlspecialchars($_REQUEST['object']), "\" />\n";
                        switch ($_REQUEST['type']) {
                                default:
                        }
                        echo $misc->form;
-                       echo "<p><input type=\"submit\" name=\"grant\" value=\"{$lang['strgrant']}\" />\n";
-                       echo "<input type=\"submit\" name=\"revoke\" value=\"{$lang['strrevoke']}\" />\n";
-                       echo "<input type=\"submit\" name=\"cancel\" value=\"{$lang['strcancel']}\" /></p>\n";
+                       echo "<p>";
+                       if ($mode == 'grant')
+                               echo "<input type=\"submit\" name=\"grant\" value=\"{$lang['strgrant']}\" />\n";
+                       elseif ($mode == 'revoke')
+                               echo "<input type=\"submit\" name=\"revoke\" value=\"{$lang['strrevoke']}\" />\n";
+                       echo "<input type=\"submit\" name=\"cancel\" value=\"{$lang['strcancel']}\" />";
+                       echo "</p>\n";
                        echo "</form>\n";
                }
                else {
-                       $status = $data->setPrivileges(isset($_REQUEST['grant']) ? 'GRANT' : 'REVOKE', $_REQUEST['type'], $_REQUEST['object'],
+                       $status = $data->setPrivileges(($mode == 'grant') ? 'GRANT' : 'REVOKE', $_REQUEST['type'], $_REQUEST['object'],
                                isset($_REQUEST['public']), $_REQUEST['username'], $_REQUEST['groupname'], array_keys($_REQUEST['privilege']),
                                isset($_REQUEST['grantoption']), isset($_REQUEST['cascade']));
                        if ($status == 0)
                                doDefault($lang['strgranted']);
                        elseif ($status == -3 || $status == -4)
-                               doAlter(true, $lang['strgrantbad']);
+                               doAlter(true, $_REQUEST['mode'], $lang['strgrantbad']);
                        else
-                               doAlter(true, $lang['strgrantfailed']);
+                               doAlter(true, $_REQUEST['mode'], $lang['strgrantfailed']);
                }
        }
 
                switch ($_REQUEST['type']) {
                        case 'table':
                                echo "<p><a class=\"navlink\" href=\"{$PHP_SELF}?action=alter&amp;{$misc->href}&amp;type={$_REQUEST['type']}&amp;object=",
-                                       urlencode($_REQUEST['object']), "&amp;table=", urlencode($_REQUEST['table']), "\">{$lang['stralterprivs']}</a></p>\n";
+                                       urlencode($_REQUEST['object']), "&amp;table=", urlencode($_REQUEST['table']), "&amp;mode=grant\">{$lang['strgrant']}</a> |\n";
+                               echo "<a class=\"navlink\" href=\"{$PHP_SELF}?action=alter&amp;{$misc->href}&amp;type={$_REQUEST['type']}&amp;object=",
+                                       urlencode($_REQUEST['object']), "&amp;table=", urlencode($_REQUEST['table']), "&amp;mode=revoke\">{$lang['strrevoke']}</a></p>\n";
                                break;
                        case 'view':
                                echo "<p><a class=\"navlink\" href=\"{$PHP_SELF}?action=alter&amp;{$misc->href}&amp;type={$_REQUEST['type']}&amp;object=",
-                                       urlencode($_REQUEST['object']), "&amp;view=", urlencode($_REQUEST['view']), "\">{$lang['stralterprivs']}</a></p>\n";
+                                       urlencode($_REQUEST['object']), "&amp;view=", urlencode($_REQUEST['view']), "&amp;mode=grant\">{$lang['strgrant']}</a> |\n";
+                               echo "<a class=\"navlink\" href=\"{$PHP_SELF}?action=alter&amp;{$misc->href}&amp;type={$_REQUEST['type']}&amp;object=",
+                                       urlencode($_REQUEST['object']), "&amp;view=", urlencode($_REQUEST['view']), "&amp;mode=revoke\">{$lang['strrevoke']}</a></p>\n";
                                break;
                        case 'sequence':
                                if (!isset($_REQUEST['sequence'])) $_REQUEST['sequence'] = $_REQUEST['object'];
                                echo "<p><a class=\"navlink\" href=\"{$PHP_SELF}?action=alter&amp;{$misc->href}&amp;type={$_REQUEST['type']}&amp;object=",
-                                       urlencode($_REQUEST['object']), "&amp;sequence=", urlencode($_REQUEST['sequence']), "\">{$lang['stralterprivs']}</a>\n";
-                               echo "| <a class=\"navlink\" href=\"sequences.php?{$misc->href}\">{$lang['strshowallsequences']}</a></p>\n";
+                                       urlencode($_REQUEST['object']), "&amp;sequence=", urlencode($_REQUEST['sequence']), "&amp;mode=grant\">{$lang['strgrant']}</a> |\n";
+                               echo "<a class=\"navlink\" href=\"{$PHP_SELF}?action=alter&amp;{$misc->href}&amp;type={$_REQUEST['type']}&amp;object=",
+                                       urlencode($_REQUEST['object']), "&amp;sequence=", urlencode($_REQUEST['sequence']), "&amp;mode=revoke\">{$lang['strrevoke']}</a> |\n";
+                               echo "<a class=\"navlink\" href=\"sequences.php?{$misc->href}\">{$lang['strshowallsequences']}</a></p>\n";
                                break;
                        case 'database':
                                if (!isset($_REQUEST['database'])) $_REQUEST['database'] = $_REQUEST['object'];
                                echo "<p><a class=\"navlink\" href=\"{$PHP_SELF}?action=alter&amp;type={$_REQUEST['type']}&amp;object=",
-                                       urlencode($_REQUEST['object']), "&amp;database=", urlencode($_REQUEST['database']), "\">{$lang['stralterprivs']}</a>\n";
-                               echo "| <a class=\"navlink\" href=\"all_db.php\">{$lang['strshowalldatabases']}</a></p>\n";
+                                       urlencode($_REQUEST['object']), "&amp;database=", urlencode($_REQUEST['database']), "&amp;mode=grant\">{$lang['strgrant']}</a> |\n";
+                               echo "<a class=\"navlink\" href=\"{$PHP_SELF}?action=alter&amp;type={$_REQUEST['type']}&amp;object=",
+                                       urlencode($_REQUEST['object']), "&amp;database=", urlencode($_REQUEST['database']), "&amp;mode=revoke\">{$lang['strrevoke']}</a> |\n";
+                               echo "<a class=\"navlink\" href=\"all_db.php\">{$lang['strshowalldatabases']}</a></p>\n";
                                break;
                        case 'function':
                                echo "<p><a class=\"navlink\" href=\"{$PHP_SELF}?action=alter&amp;{$misc->href}&amp;type={$_REQUEST['type']}&amp;object=",
-                                       urlencode($_REQUEST['object']), "&amp;function=", urlencode($_REQUEST['function']), "\">{$lang['stralterprivs']}</a>\n";
-                               echo "| <a class=\"navlink\" href=\"functions.php?{$misc->href}\">{$lang['strshowallfunctions']}</a></p>\n";
+                                       urlencode($_REQUEST['object']), "&amp;function=", urlencode($_REQUEST['function']), "&amp;mode=grant\">{$lang['strgrant']}</a> |\n";
+                               echo "<a class=\"navlink\" href=\"{$PHP_SELF}?action=alter&amp;{$misc->href}&amp;type={$_REQUEST['type']}&amp;object=",
+                                       urlencode($_REQUEST['object']), "&amp;function=", urlencode($_REQUEST['function']), "&amp;mode=revoke\">{$lang['strrevoke']}</a> |\n";
+                               echo "<a class=\"navlink\" href=\"functions.php?{$misc->href}\">{$lang['strshowallfunctions']}</a></p>\n";
                                break;
                        case 'schema':
                                if (!isset($_REQUEST['schema'])) $_REQUEST['schema'] = $_REQUEST['object'];
                                echo "<p><a class=\"navlink\" href=\"{$PHP_SELF}?action=alter&amp;{$misc->href}&amp;type={$_REQUEST['type']}&amp;object=",
-                                       urlencode($_REQUEST['object']), "&amp;schema=", urlencode($_REQUEST['schema']), "\">{$lang['stralterprivs']}</a>\n";
-                               echo "| <a class=\"navlink\" href=\"database.php?database=", urlencode($_REQUEST['database']),
+                                       urlencode($_REQUEST['object']), "&amp;schema=", urlencode($_REQUEST['schema']), "&amp;mode=grant\">{$lang['strgrant']}</a> |\n";
+                               echo "<a class=\"navlink\" href=\"{$PHP_SELF}?action=alter&amp;{$misc->href}&amp;type={$_REQUEST['type']}&amp;object=",
+                                       urlencode($_REQUEST['object']), "&amp;schema=", urlencode($_REQUEST['schema']), "&amp;mode=revoke\">{$lang['strrevoke']}</a> |\n";
+                               echo "<a class=\"navlink\" href=\"database.php?database=", urlencode($_REQUEST['database']),
                                        "\">{$lang['strshowallschemas']}</a></p>\n";
                                break;
                        case 'tablespace':
                                if (!isset($_REQUEST['tablespace'])) $_REQUEST['tablespace'] = $_REQUEST['object'];
                                echo "<p><a class=\"navlink\" href=\"{$PHP_SELF}?action=alter&amp;type={$_REQUEST['type']}&amp;object=",
-                                       urlencode($_REQUEST['object']), "&amp;tablespace=", urlencode($_REQUEST['tablespace']), "\">{$lang['stralterprivs']}</a>\n";
-                               echo "| <a class=\"navlink\" href=\"tablespaces.php\">{$lang['strshowalltablespaces']}</a></p>\n";
+                                       urlencode($_REQUEST['object']), "&amp;tablespace=", urlencode($_REQUEST['tablespace']), "&amp;mode=grant\">{$lang['strgrant']}</a> |\n";
+                               echo "<a class=\"navlink\" href=\"{$PHP_SELF}?action=alter&amp;type={$_REQUEST['type']}&amp;object=",
+                                       urlencode($_REQUEST['object']), "&amp;tablespace=", urlencode($_REQUEST['tablespace']), "&amp;mode=revoke\">{$lang['strrevoke']}</a> |\n";
+                               echo "<a class=\"navlink\" href=\"tablespaces.php\">{$lang['strshowalltablespaces']}</a></p>\n";
                                break;
                }
                echo "</p>\n";
        switch ($action) {
                case 'save':
                        if (isset($_REQUEST['cancel'])) doDefault();
-                       else doAlter(false);
+                       else doAlter(false, $_REQUEST['mode']);
                        break;
                case 'alter':
-                       doAlter(true);
+                       doAlter(true, $_REQUEST['mode']);
                        break;
                default:
                        doDefault();