Added class.tree - makes VERY NICE tree. Added theme support. Improved filtering...
authorchriskl <chriskl>
Mon, 18 Feb 2002 13:06:13 +0000 (13:06 +0000)
committerchriskl <chriskl>
Mon, 18 Feb 2002 13:06:13 +0000 (13:06 +0000)
classes/database/BaseDB.php
classes/database/Postgres71.php
conf/config.inc.php
lang/template.php
public_html/browser.php

index c5722abdbaccf5a146ae03fc678c9b7c527a9571..e8780fe8f4dba0a1cf970cf30138db9c787f63fe 100644 (file)
@@ -4,7 +4,7 @@
  * 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
@@ -12,8 +12,9 @@ include_once('../classes/database/ADODB_base.php');
 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
@@ -22,9 +23,19 @@ class BaseDB extends ADODB_base {
         * 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
index a0f80728af4855f2be2509e0891f84296e915e0c..c5d29de26fe1665c7a0db422a2764d8d3f6b91f6 100644 (file)
@@ -4,7 +4,7 @@
  * 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
@@ -14,7 +14,10 @@ include_once('../classes/database/BaseDB.php');
 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
@@ -30,8 +33,9 @@ class Postgres71 extends BaseDB {
         * @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
@@ -64,7 +68,9 @@ class Postgres71 extends BaseDB {
         * @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
@@ -415,6 +421,39 @@ class Postgres71 extends BaseDB {
        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
index b1a3734d3e0fd0d4c67ba7bd783827a449972c59..ccecf1d1905ffbf61691e5f5f57aceb36305c871 100644 (file)
@@ -3,7 +3,7 @@
        /**\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
@@ -16,7 +16,7 @@
        $appVersion = '0.1-dev';\r
        \r
        // GUI settings\r
-       $guiLeftFrameWidth = 150;\r
+       $guiLeftFrameWidth = 200;\r
 \r
        // Servers and types\r
        $confServers = array();\r
@@ -74,6 +74,9 @@
                                                                                        $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
index 893928324d1fc99fd7fdb44396babb01463288c6..85b1f831a1caab7ad546d9d071bc0236840defda 100644 (file)
@@ -4,7 +4,7 @@
         * 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
index 7b8496042824e1897d46dc06cc94f821085a82ca..545027ead9a8934e00105f0d372d7cdcd8df5fb1 100644 (file)
@@ -3,11 +3,14 @@
        /**\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 "&nbsp;&nbsp;<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 "&nbsp;&nbsp;<a href=\"views.php\" target=detail>Views</a><br>\n";\r
-               if ($data->hasSequences())\r
-                       echo "&nbsp;&nbsp;<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 "&nbsp;&nbsp;<a href=\"functions.php\" target=detail>Functions</a><br>\n";\r
-               if ($data->hasTriggers())\r
-                       echo "&nbsp;&nbsp;<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 "&nbsp;&nbsp;<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 "&nbsp;&nbsp;<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 "&nbsp;&nbsp;<a href=\"aggregates.php\" target=detail>Aggregates</a><br>\n";\r
-               if ($data->hasRules())\r
-                       echo "&nbsp;&nbsp;<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