Example #1
0
 public function tables_nav_page($ctl)
 {
     $db_name = null;
     $tables = null;
     if (!empty($_REQUEST['db']) && isset(Database::$config['databases'][$_REQUEST['db']])) {
         $database = new Database($_REQUEST['db']);
         $db_name = $database->database;
         $tables = $database->get_tables();
     }
     return array('database' => $db_name, 'tables' => $tables, 'databases' => Database::get_databases());
 }
Example #2
0
 public function structure_page($ctl)
 {
     if (!isset(Database::$config['databases'][$_REQUEST['db']])) {
         return trigger_error("Invalid database: {$_REQUEST['db']}");
     }
     $database = new Database($_REQUEST['db']);
     if (!in_array($_REQUEST['table'], $database->get_tables())) {
         return trigger_error("Invalid table: {$_REQUEST['table']}");
     }
     $sql = "SELECT * FROM sqlite_master WHERE tbl_name = " . $database->dbh()->quote($_REQUEST['table']) . "";
     $sth = $database->dbh()->query($sql);
     $table_cols = array();
     $table_indexes = array();
     foreach ($sth->fetchAll(PDO::FETCH_ASSOC) as $row) {
         if ($row['type'] == 'table') {
             foreach (explode(',', preg_replace('/^CREATE TABLE \\S+ \\(/', '', preg_replace('/\\)$/', '', trim($row['sql'])))) as $col_def) {
                 ///  PRIMARY KEY
                 if (preg_match('/^PRIMARY KEY\\s*\\(\\s*(\\w+(?:\\s*,\\s*\\w+)*)\\s*\\)/i', trim($col_def), $m)) {
                     $table_indexes['PRIMARY KEY'] = array('definition' => $m[1]);
                 } else {
                     if (preg_match('/^UNIQUE KEY\\s*\\(\\s*(\\w+(?:\\s*,\\s*\\w+)*)\\s*\\)/i', trim($col_def), $m)) {
                         $table_indexes['UNIQUE KEY'] = array('definition' => $m[1]);
                     } else {
                         if (preg_match('/^(PRIMARY|KEY|CONSTRAINT|UNIQUE)/i', trim($col_def), $m)) {
                             continue;
                         } else {
                             if (preg_match('/^(\\w+)\\s*(\\S.+)$/', trim($col_def), $m)) {
                                 $table_cols[$m[1]] = array('definition' => $m[2]);
                                 if (strpos(strtoupper($m[2]), 'PRIMARY KEY') !== false) {
                                     $table_indexes['PRIMARY KEY'] = array('definition' => '(' . $m[1] . ')');
                                 }
                             }
                         }
                     }
                 }
             }
         } else {
             if ($row['type'] == 'index') {
                 $table_indexes[$row['name']] = array('definition' => preg_replace('/^CREATE INDEX \\S+ ON \\w+/i', '', $row['sql']));
             }
         }
     }
     return array('database' => $database->database, 'table' => $_REQUEST['table'], 'data' => $data, 'table_cols' => $table_cols, 'table_indexes' => $table_indexes);
 }