1<?php
2
3include dirname(__FILE__).'/structure.php';
4if (!defined('PHPLISTINIT')) {
5    exit;
6}
7
8unset($_SESSION['dbtables']);
9$pass = true;
10
11$ls = new WebblerListing(s('Database structure'));
12$ls->setElementHeading(s('Table'));
13foreach ($GLOBALS['tables'] as $table => $tablename) {
14    $createlink = '';
15    $indexes = $uniques = $engine = $category = '';
16
17    $ls->addElement($table);
18    if ($table != $tablename) {
19        $ls->addColumn($table, s('real name'), $tablename);
20    }
21    if (Sql_Table_Exists($tablename)) {
22        $req = Sql_Query("show columns from $tablename", 0);
23        $columns = array();
24        if (!Sql_Affected_Rows()) {
25            $ls->addColumn($table, 'exist', $GLOBALS['img_cross']);
26        }
27        while ($row = Sql_Fetch_Array($req)) {
28            $columns[strtolower($row['Field'])] = $row['Type'];
29        }
30        $tls = new WebblerListing($table);
31        if (isset($DBstruct[$table])) {
32            $struct = $DBstruct[$table];
33        } else {
34            $struct = '';
35        }
36        $haserror = 0;
37        if (is_array($struct)) {
38            $indexes = $uniques = $engine = $category = '';
39            foreach ($struct as $column => $colstruct) {
40                if (strpos($column, 'index_') === false &&
41                    strpos($column, 'unique_') === false &&
42                    $column != 'primary key' &&
43                    $column != 'storage_engine' &&
44                    $column != 'table_category'
45                ) {
46                    $tls->addElement($column);
47                    $exist = isset($columns[strtolower($column)]);
48                    if ($exist) {
49                        $tls->addColumn($column, s('exist'), $GLOBALS['img_tick']);
50                    } else {
51                        $haserror = 1;
52                        $tls->addColumn($column, s('exist'), $GLOBALS['img_cross']);
53                    }
54                } else {
55                    if (strpos($column, 'index_') !== false) {
56                        $indexes .= $colstruct[0].'<br/>';
57                    }
58                    if (strpos($column, 'unique_') !== false) {
59                        $uniques .= $colstruct[0].'<br/>';
60                    }
61                    //          if ($column == "primary key")
62                    if ($column == 'storage_engine') {
63                        $engine = $colstruct[0];
64                    }
65                    if ($column == 'table_category') {
66                        $category = $colstruct;
67                    }
68                }
69            }
70        }
71    } else {
72        $haserror = true;
73        unset($tls);
74        $createlink = PageUrl2('pageaction&action=createtable&table='.urlencode($table));
75    }
76    if (!$haserror) {
77        $tls->collapse();
78        $ls->addColumn($table, s('ok'), $GLOBALS['img_tick']);
79    } else {
80        $pass = false;
81        $ls->addColumn($table, s('ok'), $GLOBALS['img_cross']);
82    }
83    if (!empty($indexes)) {
84        $ls->addColumn($table, s('index'), $indexes);
85    }
86    if (!empty($uniques)) {
87        $ls->addColumn($table, s('unique'), $uniques);
88    }
89    if (!empty($category)) {
90        $ls->addColumn($table, s('category'), $category);
91    }
92    if (!empty($tls)) {
93        $ls->addColumn($table, s('check'), $tls->display());
94    }
95    /*
96      if (!empty($createlink)) {
97        $ls->addColumn($table,"create",'<div> Table is missing <a href="'.$createlink.'" class="ajaxable">Create</a></div>');
98      }
99    */
100}
101echo $ls->display();
102if ($pass) {
103    cl_output('PASS');
104    $dbversion = getConfig('version');
105    if (empty($dbversion)) {
106        SaveConfig('version', VERSION, 0);
107        if (defined('RELEASEDATE')) {
108            SaveConfig('releaseDBversion', RELEASEDATE, 0);
109        }
110    }
111} else {
112    cl_output('FAIL');
113}
114