* Integration with the PostgreSQL statistics collector. See
table and index performance and usage information.
* Display user session defaults for PostgreSQL >= 7.3
+* Rename user feature for PostgreSQL >= 7.4
* Create functions returning arrays and table types
Bugs
* A class that implements the DB interface for Postgres
* Note: This class uses ADODB and returns RecordSets.
*
- * $Id: Postgres74.php,v 1.22 2004/01/07 16:29:40 soranzo Exp $
+ * $Id: Postgres74.php,v 1.23 2004/01/18 16:03:10 soranzo Exp $
*/
include_once('./classes/database/Postgres73.php');
return $this->execute($sql);
}
+ /**
+ * Adjusts a user's info and renames the user
+ * @param $username The username of the user to modify
+ * @param $password A new password for the user
+ * @param $createdb boolean Whether or not the user can create databases
+ * @param $createuser boolean Whether or not the user can create other users
+ * @param $expiry string Format 'YYYY-MM-DD HH:MM:SS'. '' means never expire.
+ * @param $newname The new name of the user
+ * @return 0 success
+ * @return -1 transaction error
+ * @return -2 set user attributes error
+ * @return -3 rename error
+ */
+ function setRenameUser($username, $password, $createdb, $createuser, $expiry, $newname) {
+ $status = $this->beginTransaction();
+ if ($status != 0) return -1;
+
+ $status = $this->setUser($username, $password, $createdb, $createuser, $expiry);
+ if ($status != 0) {
+ $this->rollbackTransaction();
+ return -2;
+ }
+
+ if ($username != $newname){
+ $status = $this->renameUser($username, $newname);
+ if ($status != 0) {
+ $this->rollbackTransaction();
+ return -3;
+ }
+ }
+
+ return $this->endTransaction();
+ }
+
// Capabilities
function hasGrantOption() { return true; }
function hasDomainConstraints() { return true; }
* English language file for phpPgAdmin. Use this as a basis
* for new translations.
*
- * $Id: english.php,v 1.129 2004/01/07 16:29:40 soranzo Exp $
+ * $Id: english.php,v 1.130 2004/01/18 16:03:11 soranzo Exp $
*/
// Language and character set
$lang['strcreatedb'] = 'Create DB?';
$lang['strexpires'] = 'Expires';
$lang['strsessiondefaults'] = 'Session Defaults';
- $lang['strnewname'] = 'New name';
$lang['strnousers'] = 'No users found.';
- $lang['strrename'] = 'Rename';
- $lang['struserrenamed'] = 'User renamed.';
- $lang['struserrenamedbad'] = 'Failed to rename user.';
$lang['struserupdated'] = 'User updated.';
$lang['struserupdatedbad'] = 'User update failed.';
$lang['strshowallusers'] = 'Show all users';
* Italian language file, based on the english language file for phpPgAdmin.
* Nicola Soranzo [nsoranzo@tiscali.it]
*
- * $Id: italian.php,v 1.25 2004/01/07 16:29:41 soranzo Exp $
+ * $Id: italian.php,v 1.26 2004/01/18 16:03:11 soranzo Exp $
*/
// Language and character set - Lingua e set di caratteri
$lang['strcreatedb'] = 'Può creare DB?';
$lang['strexpires'] = 'Scadenza';
$lang['strsessiondefaults'] = 'Defaults della sessione';
- $lang['strnewname'] = 'Nuovo nome';
$lang['strnousers'] = 'Nessun utente trovato';
- $lang['strrename'] = 'Rinomina';
- $lang['struserrenamed'] = 'Utente rinominato.';
- $lang['struserrenamedbad'] = 'Rinomina dell\'utente fallita.';
$lang['struserupdated'] = 'Utente aggiornato.';
$lang['struserupdatedbad'] = 'Aggiornamento utente fallito.';
$lang['strshowallusers'] = 'Mostra tutti gli utenti';
* English language file for phpPgAdmin. Use this as a basis
* for new translations.
*
- * $Id: english.php,v 1.81 2004/01/07 16:29:41 soranzo Exp $
+ * $Id: english.php,v 1.82 2004/01/18 16:03:11 soranzo Exp $
*/
// Language and character set
$lang['strcreatedb'] = 'Create DB?';
$lang['strexpires'] = 'Expires';
$lang['strsessiondefaults'] = 'Session Defaults';
- $lang['strnewname'] = 'New name';
$lang['strnousers'] = 'No users found.';
- $lang['strrename'] = 'Rename';
- $lang['struserrenamed'] = 'User renamed.';
- $lang['struserrenamedbad'] = 'Failed to rename user.';
$lang['struserupdated'] = 'User updated.';
$lang['struserupdatedbad'] = 'User update failed.';
$lang['strshowallusers'] = 'Show all users';
* Italian language file, based on the english language file for phpPgAdmin.
* Nicola Soranzo [nsoranzo@tiscali.it]
*
- * $Id: italian.php,v 1.20 2004/01/07 16:29:41 soranzo Exp $
+ * $Id: italian.php,v 1.21 2004/01/18 16:03:11 soranzo Exp $
*/
// Language and character set - Lingua e set di caratteri
$lang['strcreatedb'] = 'Può creare DB?';
$lang['strexpires'] = 'Scadenza';
$lang['strsessiondefaults'] = 'Defaults della sessione';
- $lang['strnewname'] = 'Nuovo nome';
$lang['strnousers'] = 'Nessun utente trovato';
- $lang['strrename'] = 'Rinomina';
- $lang['struserrenamed'] = 'Utente rinominato.';
- $lang['struserrenamedbad'] = 'Rinomina dell\'utente fallita.';
$lang['struserupdated'] = 'Utente aggiornato.';
$lang['struserupdatedbad'] = 'Aggiornamento utente fallito.';
$lang['strshowallusers'] = 'Mostra tutti gli utenti';
/**
* Manage users in a database cluster
*
- * $Id: users.php,v 1.22 2004/01/03 19:15:44 soranzo Exp $
+ * $Id: users.php,v 1.23 2004/01/18 16:03:07 soranzo Exp $
*/
// Include application functions
echo "<tr>\n\t<td class=\"data1\">", $misc->printVal($userdata->f[$data->uFields['uname']]), "</td>\n";
echo "\t<td class=\"data1\">", (($userdata->f[$data->uFields['usuper']]) ? $lang['stryes'] : $lang['strno']), "</td>\n";
echo "\t<td class=\"data1\">", (($userdata->f[$data->uFields['ucreatedb']]) ? $lang['stryes'] : $lang['strno']), "</td>\n";
- echo "\t<td class=\"data1\">", $misc->printVal($userdata->f[$data->uFields['uexpires']]), "</td>\n";
+ echo "\t<td class=\"data1\">", ($userdata->f[$data->uFields['uexpires']] == 'infinity' ? '' : $misc->printVal($userdata->f[$data->uFields['uexpires']])), "</td>\n";
if ($data->hasUserSessionDefaults()) echo "\t<td class=\"data1\">", $misc->printVal($userdata->f[$data->uFields['udefaults']]), "</td>\n";
echo "</tr>\n</table>\n";
}
$userdata = &$data->getUser($_REQUEST['username']);
if ($userdata->recordCount() > 0) {
+ $canRename = $data->hasUserRename() && ($_REQUEST['username'] != $_SESSION['webdbUsername']);
$userdata->f[$data->uFields['usuper']] = $data->phpBool($userdata->f[$data->uFields['usuper']]);
$userdata->f[$data->uFields['ucreatedb']] = $data->phpBool($userdata->f[$data->uFields['ucreatedb']]);
if (!isset($_POST['formExpires'])){
+ if ($canRename) $_POST['newname'] = $userdata->f[$data->uFields['uname']];
if ($userdata->f[$data->uFields['usuper']]) $_POST['formSuper'] = '';
if ($userdata->f[$data->uFields['ucreatedb']]) $_POST['formCreateDB'] = '';
- $_POST['formExpires'] = $userdata->f[$data->uFields['uexpires']];
+ $_POST['formExpires'] = $userdata->f[$data->uFields['uexpires']] == 'infinity' ? '' : $userdata->f[$data->uFields['uexpires']];
$_POST['formPassword'] = '';
}
echo "<form action=\"$PHP_SELF\" method=\"post\">\n";
echo "<table>\n";
echo "\t<tr>\n\t\t<th class=\"data left\">{$lang['strusername']}</th>\n";
- echo "\t\t<td class=\"data1\">", $misc->printVal($userdata->f[$data->uFields['uname']]), "</td>\n\t</tr>\n";
+ echo "\t\t<td class=\"data1\">", ($canRename ? "<input name=\"newname\" size=\"15\" value=\"" . htmlspecialchars($_POST['newname']) . "\" />" : $misc->printVal($userdata->f[$data->uFields['uname']])), "</td>\n\t</tr>\n";
echo "\t<tr>\n\t\t<th class=\"data left\">{$lang['strsuper']}</th>\n";
echo "\t\t<td class=\"data1\"><input type=\"checkbox\" name=\"formSuper\"",
(isset($_POST['formSuper'])) ? ' checked="checked"' : '', " /></td>\n\t</tr>\n";
function doSaveEdit() {
global $data, $lang;
- // Check password
- if ($_POST['formPassword'] != $_POST['formConfirm'])
+ // Check name and password
+ if (isset($_POST['newname']) && $_POST['newname'] == '')
+ doEdit($lang['struserneedsname']);
+ else if ($_POST['formPassword'] != $_POST['formConfirm'])
doEdit($lang['strpasswordconfirm']);
- else {
- $status = $data->setUser($_POST['username'], $_POST['formPassword'], isset($_POST['formCreateDB']), isset($_POST['formSuper']), $_POST['formExpires']);
+ else {
+ if (isset($_POST['newname'])) $status = $data->setRenameUser($_POST['username'], $_POST['formPassword'], isset($_POST['formCreateDB']), isset($_POST['formSuper']), $_POST['formExpires'], $_POST['newname']);
+ else $status = $data->setUser($_POST['username'], $_POST['formPassword'], isset($_POST['formCreateDB']), isset($_POST['formSuper']), $_POST['formExpires']);
if ($status == 0)
doDefault($lang['struserupdated']);
else
echo "<tr>\n\t<td class=\"data{$id}\">", $misc->printVal($users->f[$data->uFields['uname']]), "</td>\n";
echo "\t<td class=\"data{$id}\">", ($users->f[$data->uFields['usuper']]) ? $lang['stryes'] : $lang['strno'], "</td>\n";
echo "\t<td class=\"data{$id}\">", ($users->f[$data->uFields['ucreatedb']]) ? $lang['stryes'] : $lang['strno'], "</td>\n";
- echo "\t<td class=\"data{$id}\">", $misc->printVal($users->f[$data->uFields['uexpires']]), "</td>\n";
+ echo "\t<td class=\"data{$id}\">", ($users->f[$data->uFields['uexpires']] == 'infinity' ? '' : $misc->printVal($users->f[$data->uFields['uexpires']])), "</td>\n";
if ($data->hasUserSessionDefaults()) echo "\t<td class=\"data{$id}\">", $misc->printVal($users->f[$data->uFields['udefaults']]), "</td>\n";
echo "\t<td class=\"opbutton{$id}\"><a href=\"$PHP_SELF?action=edit&username=",
urlencode($users->f[$data->uFields['uname']]), "\">{$lang['stralter']}</a></td>\n";
break;
case 'confirm_drop':
doDrop(true);
- break;
+ break;
case 'save_edit':
if (isset($_REQUEST['cancel'])) doDefault();
else doSaveEdit();