"; exit; } $tables["core"] = $sql_data; if (!getperms("0")) { header("location:".e_BASE."index.php"); exit; } //Get installed plugins if($sql->db_Select("plugin","plugin_path","plugin_installflag = '1'")){ while($row = $sql->db_Fetch()){ $pluginList[] = $row['plugin_path']; } } //Get any plugin _sql.php files $handle = opendir(e_PLUGIN); $c = 1; while (false !== ($file = readdir($handle))) { if ($file != "." && $file != ".." && is_dir(e_PLUGIN.$file) && in_array($file, $pluginList)) { $plugin_handle = opendir(e_PLUGIN.$file."/"); while (false !== ($file2 = readdir($plugin_handle))) { if (preg_match("/(.*?)_sql.php/", $file2, $matches)) { $filename = e_PLUGIN.$file."/".$file2; @$fd = fopen ($filename, "r"); $sql_data = @fread($fd, filesize($filename)); @fclose ($fd); $tables[$matches[1]] = $sql_data; } } closedir($plugin_handle); } } closedir($handle); function read_tables($tab) { global $tablines; global $table_list; global $tables,$sql,$pref; $file = split("\n", $tables[$tab]); foreach($file as $line) { $line = ltrim(stripslashes($line)); if (preg_match("/CREATE TABLE (.*) /", $line, $match)) { if($match[1] != "user_extended"){ $table_list[$match[1]] = 1; $current_table = $match[1]; $x = 0; $cnt = 0; } } if (strpos($line, "TYPE=") !== FALSE) { $current_table = ""; } if ($current_table && $x) { $tablines[$current_table][$cnt++] = $line; } $x = 1; } // Get multi-language tables as well if($pref['multilanguage']){ $langs = table_list(); foreach($table_list as $name=>$stuff){ if($langs[$name]){ $ltab = $langs[$name]; $table_list[$ltab] = 1; $tablines[$ltab] = $tablines[$name]; } } } } function get_current($tab, $prefix = "") { if (!$prefix) { $prefix = MPREFIX; } $result = mysql_query('SET SQL_QUOTE_SHOW_CREATE = 1'); $qry = 'SHOW CREATE TABLE `'.$prefix.$tab."`"; $z = mysql_query($qry); if ($z) { $row = mysql_fetch_row($z); return str_replace("`", "", stripslashes($row[1])); } else { return FALSE; } } function check_tables($what) { global $tablines; global $table_list; global $ns; $cur=0; $table_list = ""; read_tables($what); $text = "
"; foreach(array_keys($table_list) as $k) { $text .= ""; $prefix = MPREFIX; $current_tab = get_current($k, $prefix); unset($fields); unset($xfields); if ($current_tab) { $lines = split("\n", $current_tab); $fieldnum = 0; foreach($tablines[$k] as $x) { $fieldnum++; $ffound = 0; list($fname, $fparams) = split(" ", $x, 2); if ($fname == "KEY") { list($key, $keyname, $keyparms) = split(" ", $x, 3); $fname = $key." ".$keyname; $fparams = $keyparms; } $fields[$fname] = 1; $fparams = ltrim(rtrim($fparams)); $fparams = preg_replace("/\r?\n$|\r[^\n]$|,$/", "", $fparams); if(stristr($k, "lan_") !== FALSE && $cur != 1){ $text .= ""; $cur = 1; }; $text .= ""; $s = 0; $xfieldnum = -1; foreach($lines as $l) { $xfieldnum++; list($xl, $tmp) = split("\n", $l, 2); $xl = ltrim(rtrim(stripslashes($xl))); $xl = preg_replace("/\r?\n$|\r[^\n]$/", "", $xl); list($xfname, $xfparams) = split(" ", $xl, 2); if ($xfname == "KEY") { list($key, $keyname, $keyparms) = split(" ", $xl, 3); $xfname = $key." ".$keyname; $xfparams = $keyparms; } if ($xfname != "CREATE" && $xfname != ")") { $xfields[$xfname] = 1; } $xfparams = preg_replace("/,$/", "", $xfparams); $fparams = preg_replace("/,$/", "", $fparams); if ($xfname == $fname) { $ffound = 1; if (strcasecmp($fparams, $xfparams) != 0) { $text .= ""; $text .= ""; $fix_active = TRUE; } elseif($fieldnum != $xfieldnum) { $text .= ""; } else { $text .= ""; } } } if ($ffound == 0) { $text .= ""; $fix_active = TRUE; } $prev_fname = $fname; $text .= "\n"; } foreach(array_keys($xfields) as $tf) { if (!$fields[$tf] && $k != "user_extended") { $fix_active = TRUE; $text .= ""; } } } else { // Table Missing. $text .= ""; $fix_active = TRUE; } } $text .= "
".DBLAN_4." ".DBLAN_5." ".DBLAN_6." ".DBLAN_7."
".ADLAN_132."
$k$fname"; if (strpos($fparams, "KEY") !== FALSE) { $text .= " $fparams"; } $text .= "".DBLAN_8."".DBLAN_9."
".$xfparams."
".DBLAN_10."
".$fparams."
".fix_form($k,$fname,$fparams,"alter")."
".DBLAN_5." ".DBLAN_8." ".DBLAN_9." #{$xfieldnum}
".DBLAN_10." #{$fieldnum}
OK  ".DBLAN_11." ".DBLAN_10." [$fparams]
".fix_form($k,$fname,$fparams,"insert",$prev_fname)."
$k$tf".DBLAN_12." ".fix_form($k,$tf,$fparams,"drop")."
$k ".DBLAN_13."
 ".fix_form($k,$tf,$tablines[$k],"create")."
"; if($fix_active){ $text .= "
\n"; } foreach(array_keys($_POST) as $j) { if (preg_match("/table_(.*)/", $j, $mitch)) { $lx = $mitch[1]; $text .= "\n"; } } $text .= "
"; return $text; } global $table_list; // -------------------- Table Fixing ------------------------------ if(isset($_POST['do_fix'])){ $text = "
"; foreach( $_POST['fix_active'] as $key=>$val){ if (MAGIC_QUOTES_GPC == TRUE) { $table = stripslashes($_POST['fix_table'][$key][0]); $newval = stripslashes($_POST['fix_newval'][$key][0]); $mode = stripslashes($_POST['fix_mode'][$key][0]); $after = stripslashes($_POST['fix_after'][$key][0]); } else { $table = $_POST['fix_table'][$key][0]; $newval = $_POST['fix_newval'][$key][0]; $mode = $_POST['fix_mode'][$key][0]; $after = $_POST['fix_after'][$key][0]; } $field= $key; if($mode == "alter"){ $query = "ALTER TABLE `".MPREFIX.$table."` CHANGE `$field` `$field` $newval"; } if($mode == "insert"){ $query = "ALTER TABLE `".MPREFIX.$table."` ADD `$field` $newval AFTER $after"; } if($mode == "drop"){ $query = "ALTER TABLE `".MPREFIX.$table."` DROP `$field` "; } if($mode == "index"){ $query = "ALTER TABLE `".MPREFIX.$table."` ADD INDEX (`$field`) "; } if($mode == "create"){ $query = "CREATE TABLE ".MPREFIX.$table." ($newval) TYPE=MyISAM;"; } $text .= ""; } $text .= "
".$query.""; $text .= (mysql_query($query)) ? " - ".LAN_UPDATED."" : " - ".LAN_UPDATED_FAILED.""; $text .= "
"; $text .="

"; $ns -> tablerender(DBLAN_20, $text); } // ---------------------- Main Form and Submit. ------------------------ if (!$_POST) { $text = "
".DBLAN_14."

"; foreach(array_keys($tables) as $x) { $text .= "".$x."
"; } $text .= "
"; $ns->tablerender(DBLAN_16, $text); } else { foreach(array_keys($_POST) as $k) { if (preg_match("/table_(.*)/", $k, $match)) { $xx = $match[1]; $str = "
"; $ns->tablerender(DBLAN_16." - $xx ".DBLAN_18, check_tables($xx).$str); } } } // -------------------------------------------------------------- function fix_form($table,$field, $newvalue,$mode,$after =''){ if(stristr($field, "KEY ") !== FALSE){ $field = chop(str_replace("KEY ","",$field)); $mode = "index"; $search = array("(",")"); $newvalue = str_replace($search,"",$newvalue); } if($mode == "create"){ $newvalue = implode("\n",$newvalue); } $text .= " ".DBLAN_19."\n"; // 'attempt to fix' $text .= "\n"; $text .= "\n"; $text .= "\n"; $text .= ($after) ? "\n" : ""; return $text; } function table_list() { // grab default language lists. global $mySQLdefaultdb; $exclude[] = "banlist"; $exclude[] = "banner"; $exclude[] = "cache"; $exclude[] = "core"; $exclude[] = "online"; $exclude[] = "parser"; $exclude[] = "plugin"; $exclude[] = "user"; $exclude[] = "upload"; $exclude[] = "userclass_classes"; $exclude[] = "rbinary"; $exclude[] = "session"; $exclude[] = "tmp"; $exclude[] = "flood"; $exclude[] = "stat_info"; $exclude[] = "stat_last"; $exclude[] = "submit_news"; $exclude[] = "rate"; $exclude[] = "stat_counter";$exclude[] = "user_extended"; $exclude[] = "user_extended_struc"; $exclude[] = "pm_messages"; $exclude[] = "pm_blocks"; // print_r($search); $tables = mysql_list_tables($mySQLdefaultdb); while (list($temp) = mysql_fetch_array($tables)){ $prefix = MPREFIX."lan_"; if(preg_match("/^".$prefix."(.*)/", $temp, $match)){ $e107tab = str_replace(MPREFIX, "", $temp); $pos = strrpos($match[1],"_")+1; $core = substr(str_replace("lan_","",$e107tab),$pos); if (str_replace($exclude, "", $e107tab)){ $tabs[$core] = $e107tab; } } } return $tabs; } require_once(e_ADMIN."footer.php"); ?>