* Add Support For IN/OUT Parameters (John Jawed)
* Add column level information into the tree browser (ioguix)
* Promote column level interaction into its own page (ioguix)
+* Add automatic lookup of foreign key values in insert/update fields (John Jawed)
+* Add enable/disable trigger
Version 4.0
-----------
--------
* Allow functions from other schemas.
-* Support ENABLE/DISABLE trigger in 8.1
+* -Support ENABLE/DISABLE trigger in 8.1 (Jawed)
Aggregates
----------
* A class that implements the DB interface for Postgres
* Note: This class uses ADODB and returns RecordSets.
*
- * $Id: Postgres.php,v 1.288 2006/08/09 21:19:44 xzilla Exp $
+ * $Id: Postgres.php,v 1.289 2006/08/13 15:31:13 xzilla Exp $
*/
// @@@ THOUGHT: What about inherits? ie. use of ONLY???
// We include constraint triggers
$sql = "SELECT t.tgname, t.tgisconstraint, t.tgdeferrable, t.tginitdeferred, t.tgtype,
- t.tgargs, t.tgnargs, t.tgconstrrelid,
+ t.tgargs, t.tgnargs, t.tgconstrrelid,
(SELECT relname FROM pg_class c2 WHERE c2.oid=t.tgconstrrelid) AS tgconstrrelname,
(SELECT proname FROM pg_proc p WHERE t.tgfoid=p.oid) AS tgfname,
c.relname, NULL AS tgdef
function hasAlterSequence() { return false; }
function hasLocksView() { return false; }
function hasPreparedXacts() { return false; }
+ function hasDisableTriggers() { return false; }
function hasAlterAggregate() { return false; }
-
}
?>
* A class that implements the DB interface for Postgres
* Note: This class uses ADODB and returns RecordSets.
*
- * $Id: Postgres74.php,v 1.53 2006/08/09 21:19:44 xzilla Exp $
+ * $Id: Postgres74.php,v 1.54 2006/08/13 15:31:13 xzilla Exp $
*/
include_once('./classes/database/Postgres73.php');
function getTriggers($table = '') {
$this->clean($table);
- $sql = "SELECT t.tgname, pg_catalog.pg_get_triggerdef(t.oid) AS tgdef
+ $sql = "SELECT t.tgname, pg_catalog.pg_get_triggerdef(t.oid) AS tgdef, t.tgenabled
FROM pg_catalog.pg_trigger t
WHERE t.tgrelid = (SELECT oid FROM pg_catalog.pg_class WHERE relname='{$table}'
AND relnamespace=(SELECT oid FROM pg_catalog.pg_namespace WHERE nspname='{$this->_schema}'))
/**
* PostgreSQL 8.1 support
*
- * $Id: Postgres81.php,v 1.9 2006/07/18 19:01:46 xzilla Exp $
+ * $Id: Postgres81.php,v 1.10 2006/08/13 15:31:13 xzilla Exp $
*/
include_once('./classes/database/Postgres80.php');
return $this->selectSet($sql);
}
+
+ /**
+ * Enables a trigger
+ * @param $tgname The name of the trigger to enable
+ * @param $table The table in which to enable the trigger
+ * @return 0 success
+ */
+ function enableTrigger($tgname, $table) {
+ $this->fieldClean($tgname);
+ $this->fieldClean($table);
+
+ $sql = "ALTER TABLE \"{$table}\" ENABLE TRIGGER \"{$tgname}\"";
+
+ return $this->execute($sql);
+ }
+
+ /**
+ * Disables a trigger
+ * @param $tgname The name of the trigger to disable
+ * @param $table The table in which to disable the trigger
+ * @return 0 success
+ */
+ function disableTrigger($tgname, $table) {
+ $this->fieldClean($tgname);
+ $this->fieldClean($table);
+
+ $sql = "ALTER TABLE \"{$table}\" DISABLE TRIGGER \"{$tgname}\"";
+
+ return $this->execute($sql);
+ }
+
// Capabilities
function hasServerAdminFuncs() { return true; }
function hasRoles() { return true; }
function hasAutovacuum() { return true; }
function hasPreparedXacts() { return true; }
+ function hasDisableTriggers() { return true; }
}
?>
* English language file for phpPgAdmin. Use this as a basis
* for new translations.
*
- * $Id: english.php,v 1.194 2006/08/09 21:19:44 xzilla Exp $
+ * $Id: english.php,v 1.195 2006/08/13 15:31:13 xzilla Exp $
*/
// Language and character set
$lang['strdefinition'] = 'Definition';
$lang['strproperties'] = 'Properties';
$lang['strbrowse'] = 'Browse';
+ $lang['strenable'] = 'Enable';
+ $lang['strdisable'] = 'Disable';
$lang['strdrop'] = 'Drop';
$lang['strdropped'] = 'Dropped';
$lang['strnull'] = 'Null';
$lang['strtriggercreated'] = 'Trigger created.';
$lang['strtriggercreatedbad'] = 'Trigger creation failed.';
$lang['strconfdroptrigger'] = 'Are you sure you want to drop the trigger "%s" on "%s"?';
+ $lang['strconfenabletrigger'] = 'Are you sure you want to enable the trigger "%s" on "%s"?';
+ $lang['strconfdisabletrigger'] = 'Are you sure you want to disable the trigger "%s" on "%s"?';
$lang['strtriggerdropped'] = 'Trigger dropped.';
$lang['strtriggerdroppedbad'] = 'Trigger drop failed.';
+ $lang['strtriggerenabled'] = 'Trigger enabled.';
+ $lang['strtriggerenabledbad'] = 'Trigger enable failed.';
+ $lang['strtriggerdisabled'] = 'Trigger disabled.';
+ $lang['strtriggerdisabledbad'] = 'Trigger disable failed.';
$lang['strtriggeraltered'] = 'Trigger altered.';
$lang['strtriggeralteredbad'] = 'Trigger alteration failed.';
$lang['strforeach'] = 'For each';
* English language file for phpPgAdmin. Use this as a basis
* for new translations.
*
- * $Id: english.php,v 1.147 2006/08/09 21:19:44 xzilla Exp $
+ * $Id: english.php,v 1.148 2006/08/13 15:31:13 xzilla Exp $
*/
// Language and character set
$lang['strdefinition'] = 'Definition';
$lang['strproperties'] = 'Properties';
$lang['strbrowse'] = 'Browse';
+ $lang['strenable'] = 'Enable';
+ $lang['strdisable'] = 'Disable';
$lang['strdrop'] = 'Drop';
$lang['strdropped'] = 'Dropped';
$lang['strnull'] = 'Null';
$lang['strtriggercreated'] = 'Trigger created.';
$lang['strtriggercreatedbad'] = 'Trigger creation failed.';
$lang['strconfdroptrigger'] = 'Are you sure you want to drop the trigger "%s" on "%s"?';
+ $lang['strconfenabletrigger'] = 'Are you sure you want to enable the trigger "%s" on "%s"?';
+ $lang['strconfdisabletrigger'] = 'Are you sure you want to disable the trigger "%s" on "%s"?';
$lang['strtriggerdropped'] = 'Trigger dropped.';
$lang['strtriggerdroppedbad'] = 'Trigger drop failed.';
+ $lang['strtriggerenabled'] = 'Trigger enabled.';
+ $lang['strtriggerenabledbad'] = 'Trigger enable failed.';
+ $lang['strtriggerdisabled'] = 'Trigger disabled.';
+ $lang['strtriggerdisabledbad'] = 'Trigger disable failed.';
$lang['strtriggeraltered'] = 'Trigger altered.';
$lang['strtriggeralteredbad'] = 'Trigger alteration failed.';
$lang['strforeach'] = 'For each';
/**
* List triggers on a table
*
- * $Id: triggers.php,v 1.29 2006/06/17 12:57:36 xzilla Exp $
+ * $Id: triggers.php,v 1.30 2006/08/13 15:31:13 xzilla Exp $
*/
// Include application functions
}
+ /**
+ * Show confirmation of enable trigger and perform enabling the trigger
+ */
+ function doEnable($confirm) {
+ global $data, $misc;
+ global $PHP_SELF, $lang;
+
+ if ($confirm) {
+ $misc->printTrail('trigger');
+ $misc->printTitle($lang['strenable'],'pg.table.alter');
+
+ echo "<p>", sprintf($lang['strconfenabletrigger'], $misc->printVal($_REQUEST['trigger']),
+ $misc->printVal($_REQUEST['table'])), "</p>\n";
+
+ echo "<form action=\"$PHP_SELF\" method=\"post\">\n";
+ echo "<input type=\"hidden\" name=\"action\" value=\"enable\" />\n";
+ echo "<input type=\"hidden\" name=\"table\" value=\"", htmlspecialchars($_REQUEST['table']), "\" />\n";
+ echo "<input type=\"hidden\" name=\"trigger\" value=\"", htmlspecialchars($_REQUEST['trigger']), "\" />\n";
+ echo $misc->form;
+ echo "<input type=\"submit\" name=\"yes\" value=\"{$lang['stryes']}\" />\n";
+ echo "<input type=\"submit\" name=\"no\" value=\"{$lang['strno']}\" />\n";
+ echo "</form>\n";
+ }
+ else {
+ $status = $data->enableTrigger($_POST['trigger'], $_POST['table']);
+ if ($status == 0)
+ doDefault($lang['strtriggerenabled']);
+ else
+ doDefault($lang['strtriggerenabledbad']);
+ }
+
+ }
+
+ /**
+ * Show confirmation of disable trigger and perform disabling the trigger
+ */
+ function doDisable($confirm) {
+ global $data, $misc;
+ global $PHP_SELF, $lang;
+
+ if ($confirm) {
+ $misc->printTrail('trigger');
+ $misc->printTitle($lang['strdisable'],'pg.table.alter');
+
+ echo "<p>", sprintf($lang['strconfdisabletrigger'], $misc->printVal($_REQUEST['trigger']),
+ $misc->printVal($_REQUEST['table'])), "</p>\n";
+
+ echo "<form action=\"$PHP_SELF\" method=\"post\">\n";
+ echo "<input type=\"hidden\" name=\"action\" value=\"disable\" />\n";
+ echo "<input type=\"hidden\" name=\"table\" value=\"", htmlspecialchars($_REQUEST['table']), "\" />\n";
+ echo "<input type=\"hidden\" name=\"trigger\" value=\"", htmlspecialchars($_REQUEST['trigger']), "\" />\n";
+ echo $misc->form;
+ echo "<input type=\"submit\" name=\"yes\" value=\"{$lang['stryes']}\" />\n";
+ echo "<input type=\"submit\" name=\"no\" value=\"{$lang['strno']}\" />\n";
+ echo "</form>\n";
+ }
+ else {
+ $status = $data->disableTrigger($_POST['trigger'], $_POST['table']);
+ if ($status == 0)
+ doDefault($lang['strtriggerdisabled']);
+ else
+ doDefault($lang['strtriggerdisabledbad']);
+ }
+
+ }
+
/**
* Let them create s.th.
*/
'vars' => array('trigger' => 'tgname'),
),
);
+ if($data->hasDisableTriggers()) {
+ if(!$data->phpBool($triggers->fields["tgenabled"])) {
+ $actions['enable'] = array(
+ 'title' => $lang['strenable'],
+ 'url' => "{$PHP_SELF}?action=confirm_enable&{$misc->href}&table=".urlencode($_REQUEST['table'])."&",
+ 'vars' => array('trigger' => 'tgname'),
+ );
+ } else {
+ $actions['disable'] = array(
+ 'title' => $lang['strdisable'],
+ 'url' => "{$PHP_SELF}?action=confirm_disable&{$misc->href}&table=".urlencode($_REQUEST['table'])."&",
+ 'vars' => array('trigger' => 'tgname'),
+ );
+ }
+ }
if (!$data->hasAlterTrigger()) unset($actions['alter']);
case 'confirm_alter':
doAlter();
break;
+ case 'confirm_enable':
+ doEnable(true);
+ break;
+ case 'confirm_disable':
+ doDisable(true);
+ break;
case 'save_create':
if (isset($_POST['cancel'])) doDefault();
else doSaveCreate();
case 'confirm_drop':
doDrop(true);
break;
+ case 'enable':
+ if (isset($_POST['yes'])) doEnable(false);
+ else doDefault();
+ break;
+ case 'disable':
+ if (isset($_POST['yes'])) doDisable(false);
+ else doDefault();
+ break;
default:
doDefault();
break;