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