* A class that implements the DB interface for Postgres\r
* Note: This class uses ADODB and returns RecordSets.\r
*\r
- * $Id: BaseDB.php,v 1.1 2002/02/11 09:32:47 chriskl Exp $\r
+ * $Id: BaseDB.php,v 1.2 2002/02/18 13:06:13 chriskl Exp $\r
*/\r
\r
include_once('../classes/database/ADODB_base.php');\r
class BaseDB extends ADODB_base {\r
\r
// Filter objects for user?\r
- var $_filterTables = true;\r
-\r
+// var $_filterTables = true;\r
+ var $_showSystem = false;\r
+ \r
function BaseDB($type) {\r
$this->ADODB_base($type);\r
}\r
* Set object filtering for user\r
* @param $state (boolean)\r
*/\r
- function setFilterTables($state) {\r
- $this->$_filterTables = $state;\r
+// function setFilterTables($state) {\r
+// $this->_filterTables = $state;\r
+// }\r
+ \r
+ /**\r
+ * Turn off or on the showing of 'system' object\r
+ * @param True to turn system objects on, false to turn them off\r
+ */\r
+ function setShowSystem($state) {\r
+ $this->_showSystem = $state;\r
}\r
+ \r
+ \r
\r
/*\r
// Feature functions\r
* A class that implements the DB interface for Postgres\r
* Note: This class uses ADODB and returns RecordSets.\r
*\r
- * $Id: Postgres71.php,v 1.3 2002/02/12 08:50:26 chriskl Exp $\r
+ * $Id: Postgres71.php,v 1.4 2002/02/18 13:06:13 chriskl Exp $\r
*/\r
\r
// @@@ THOUGHT: What about inherits? ie. use of ONLY???\r
class Postgres71 extends BaseDB {\r
\r
var $dbFields = array('dbname' => 'datname', 'dbcomment' => 'description');\r
- var $tbFields = array('tbname' => 'relname', 'tbowner' => 'relowner');\r
+ var $tbFields = array('tbname' => 'tablename', 'tbowner' => 'tableowner');\r
+\r
+ // @@ Should we bother querying for this?\r
+ var $_lastSystemOID = 18539;\r
\r
function Postgres71($host, $port, $database, $user, $password) {\r
$this->BaseDB('postgres7');\r
* @return A list of databases, sorted alphabetically\r
*/\r
function &getDatabases() {\r
- $sql = "SELECT pdb.datname, pdb.datistemplate, pde.description FROM \r
+ $sql = "SELECT pdb.datname, pde.description FROM \r
pg_database pdb LEFT JOIN pg_description pde ON pdb.oid=pde.objoid\r
+ WHERE NOT pdb.datistemplate\r
ORDER BY pdb.datname";\r
return $this->selectSet($sql);\r
}\r
* @return All tables, sorted alphabetically \r
*/\r
function &getTables() {\r
- $sql = "SELECT relname, relowner FROM pg_class ORDER BY relname";\r
+ if (!$this->_showSystem) $where = "WHERE tablename NOT LIKE 'pg_%' ";\r
+ else $where = '';\r
+ $sql = "SELECT tablename, tableowner FROM pg_tables {$where}ORDER BY tablename";\r
return $this->selectSet($sql);\r
}\r
\r
function doUpdate()\r
*/\r
\r
+ // Operator functions\r
+ \r
+ /**\r
+ * Returns a list of all operators in the database\r
+ * @return All operators\r
+ */\r
+ function getOperators() {\r
+ if ($this->_showSystem)\r
+ $where = "WHERE po.oid > '{$this->_lastSystemOID}'::oid";\r
+ else $where = '';\r
+ \r
+ $sql = "\r
+ SELECT\r
+ po.oid,\r
+ po.oprname,\r
+ (SELECT typname FROM pg_type pt WHERE pt.oid=po.oprleft) AS oprleftname,\r
+ (SELECT typname FROM pg_type pt WHERE pt.oid=po.oprright) AS oprrightname,\r
+ (SELECT typname FROM pg_type pt WHERE pt.oid=po.oprresult) AS resultname\r
+ FROM\r
+ pg_operator po\r
+ {$where} \r
+ ORDER BY\r
+ po.oprname, po.oid\r
+ ";\r
+\r
+ return $this->selectSet($sql);\r
+ }\r
+ \r
+ \r
+ /**\r
+ * Creates a new operator\r
+ */\r
+ \r
// Capabilities\r
function hasTables() { return true; }\r
function hasViews() { return true; }\r
/**\r
* Central WebDB configuration\r
*\r
- * $Id: config.inc.php,v 1.3 2002/02/12 08:50:26 chriskl Exp $\r
+ * $Id: config.inc.php,v 1.4 2002/02/18 13:06:13 chriskl Exp $\r
*/\r
\r
// Set error reporting level\r
$appVersion = '0.1-dev';\r
\r
// GUI settings\r
- $guiLeftFrameWidth = 150;\r
+ $guiLeftFrameWidth = 200;\r
\r
// Servers and types\r
$confServers = array();\r
$webdbPassword);\r
}\r
\r
+ // Theme\r
+ echo "<style type=\"text/css\">\n<!--\n";\r
+ include("../themes/default/global.css");\r
+ echo "\n-->\n</style>\n";\r
\r
-\r
?>
\ No newline at end of file
* Language template file for WebDB. Use this to base language\r
* files.\r
*\r
- * $Id: template.php,v 1.2 2002/02/12 08:50:26 chriskl Exp $\r
+ * $Id: template.php,v 1.3 2002/02/18 13:06:13 chriskl Exp $\r
*/\r
\r
$appLang = 'english';\r
$strNoFrames = 'You need a frames-enabled browser to use this application.';\r
$strLogin = 'Login';\r
$strNoTables = 'No tables found.';\r
- \r
+ $strTables = 'Tables';\r
+ $strViews = 'Views';\r
+ $strTriggers = 'Triggers';\r
+ $strRules = 'Rules';\r
+ $strSequences = 'Sequences';\r
+ $strFunctions = 'Functions';\r
+ $strOperators = 'Operators';\r
+ $strTypes = 'Types';\r
+ $strAggregates = 'Aggregates';\r
\r
?>
\ No newline at end of file
/**\r
* Main object browser\r
*\r
- * $Id: browser.php,v 1.3 2002/02/12 06:58:18 chriskl Exp $\r
+ * $Id: browser.php,v 1.4 2002/02/18 13:06:13 chriskl Exp $\r
*/\r
\r
// Include application functions\r
include_once('../conf/config.inc.php');\r
+ \r
+ // Include tree classes\r
+ include_once('class.tree/class.tree.php');\r
?>\r
\r
<html>\r
<body>\r
<?php\r
\r
+ // Construct expanding tree\r
+ $tree = new Tree ('class.tree');\r
+ $tree->set_frame ('detail');\r
+ $root = $tree->open_tree (htmlspecialchars($confServers[$webdbServerID]['desc']), '');\r
+\r
$databases = &$data->getDatabases();\r
while (!$databases->EOF) {\r
- echo htmlspecialchars($databases->f[$data->dbFields['dbname']]), "<br>\n";\r
+ $node = $tree->add_folder($root, htmlspecialchars($databases->f[$data->dbFields['dbname']]), \r
+ 'database.php?database=' . urlencode($databases->f[$data->dbFields['dbname']]));\r
if ($data->hasTables())\r
- echo " <a href=\"tables.php?database=", \r
- urlencode($databases->f[$data->dbFields['dbname']]), "\" target=detail>Tables</a><br>\n";\r
+ $tree->add_document($node, $strTables, 'tables.php?database=' . urlencode($databases->f[$data->dbFields['dbname']]));\r
if ($data->hasViews())\r
- echo " <a href=\"views.php\" target=detail>Views</a><br>\n";\r
- if ($data->hasSequences())\r
- echo " <a href=\"sequences.php\" target=detail>Sequences</a><br>\n";\r
+ $tree->add_document($node, $strViews, 'views.php?database=' . urlencode($databases->f[$data->dbFields['dbname']]));\r
+/* if ($data->hasTriggers())\r
+ $tree->add_document($node, $strTriggers, 'triggers.php?database=' . urlencode($databases->f[$data->dbFields['dbname']]));\r
+ if ($data->hasRules())\r
+ $tree->add_document($node, $strRules, 'rules.php?database=' . urlencode($databases->f[$data->dbFields['dbname']]));\r
+ if ($data->hasSequences())*/\r
+ $tree->add_document($node, $strSequences, 'sequences.php?database=' . urlencode($databases->f[$data->dbFields['dbname']]));\r
if ($data->hasFunctions())\r
- echo " <a href=\"functions.php\" target=detail>Functions</a><br>\n";\r
- if ($data->hasTriggers())\r
- echo " <a href=\"triggers.php\" target=detail>Triggers</a><br>\n";\r
+ $tree->add_document($node, $strFunctions, 'functions.php?database=' . urlencode($databases->f[$data->dbFields['dbname']]));\r
if ($data->hasOperators())\r
- echo " <a href=\"operators.php\" target=detail>Operators</a><br>\n";\r
+ $tree->add_document($node, $strOperators, 'operators.php?database=' . urlencode($databases->f[$data->dbFields['dbname']]));\r
if ($data->hasTypes())\r
- echo " <a href=\"types.php\" target=detail>Types</a><br>\n";\r
+ $tree->add_document($node, $strTypes, 'types.php?database=' . urlencode($databases->f[$data->dbFields['dbname']]));\r
if ($data->hasAggregates())\r
- echo " <a href=\"aggregates.php\" target=detail>Aggregates</a><br>\n";\r
- if ($data->hasRules())\r
- echo " <a href=\"rules.php\" target=detail>Rules</a><br>\n";\r
+ $tree->add_document($node, $strAggregates, 'aggregates.php?database=' . urlencode($databases->f[$data->dbFields['dbname']]));\r
$databases->moveNext();\r
}\r
+ \r
+ $tree->close_tree ( );\r
\r
?>\r
</body>\r