Automatic update of PMA-tables on update/deletion/duplication of
DBs/Tables/Columns.
This commit is contained in:
136
sql.php3
136
sql.php3
@@ -181,6 +181,9 @@ if ($do_confirm) {
|
||||
<input type="hidden" name="goto" value="<?php echo $goto; ?>" />
|
||||
<input type="hidden" name="back" value="<?php echo isset($back) ? $back : ''; ?>" />
|
||||
<input type="hidden" name="reload" value="<?php echo isset($reload) ? $reload : 0; ?>" />
|
||||
<input type="hidden" name="purge" value="<?php echo isset($purge) ? $purge : ''; ?>" />
|
||||
<input type="hidden" name="cpurge" value="<?php echo isset($cpurge) ? $cpurge : ''; ?>" />
|
||||
<input type="hidden" name="purgekey" value="<?php echo isset($purgekey) ? $purgekey : ''; ?>" />
|
||||
<input type="hidden" name="show_query" value="<?php echo isset($show_query) ? $show_query : ''; ?>" />
|
||||
<input type="submit" name="btnDrop" value="<?php echo $strYes; ?>" />
|
||||
<input type="submit" name="btnDrop" value="<?php echo $strNo; ?>" />
|
||||
@@ -430,27 +433,144 @@ else {
|
||||
} // end rows total count
|
||||
|
||||
// garvin: if a table or database gets dropped, check column comments.
|
||||
if (isset($purge)) {
|
||||
if (isset($purge) && $purge == '1') {
|
||||
include('./libraries/relation.lib.php3');
|
||||
$cfgRelation = PMA_getRelationsParam();
|
||||
|
||||
if ($cfgRelation['commwork']) {
|
||||
if (isset($table) && isset($db) && !empty($table) && !empty($db)) {
|
||||
$remove_query = 'DELETE FROM ' . PMA_backquote($cfgRelation['column_info'])
|
||||
if (isset($table) && isset($db) && !empty($table) && !empty($db)) {
|
||||
// garvin: Only a table is deleted. Remove all references in PMA_*
|
||||
if ($cfgRelation['commwork']) {
|
||||
$remove_query = 'DELETE FROM ' . PMA_backquote($cfgRelation['column_info'])
|
||||
. ' WHERE db_name = \'' . PMA_sqlAddslashes($db) . '\''
|
||||
. ' AND table_name = \'' . PMA_sqlAddslashes($table) . '\'';
|
||||
$rmv_rs = PMA_query_as_cu($remove_query);
|
||||
unset($rmv_query);
|
||||
}
|
||||
|
||||
if ($cfgRelation['displaywork']) {
|
||||
$remove_query = 'DELETE FROM ' . PMA_backquote($cfgRelation['table_info'])
|
||||
. ' WHERE db_name = \'' . PMA_sqlAddslashes($db) . '\''
|
||||
. ' AND table_name = \'' . PMA_sqlAddslashes($table) . '\'';
|
||||
$rmv_rs = PMA_query_as_cu($remove_query);
|
||||
unset($rmv_query);
|
||||
} elseif (isset($db) && !empty($db)) {
|
||||
}
|
||||
|
||||
if ($cfgRelation['pdfwork']) {
|
||||
$remove_query = 'DELETE FROM ' . PMA_backquote($cfgRelation['table_coords'])
|
||||
. ' WHERE db_name = \'' . PMA_sqlAddslashes($db) . '\''
|
||||
. ' AND table_name = \'' . PMA_sqlAddslashes($table) . '\'';
|
||||
$rmv_rs = PMA_query_as_cu($remove_query);
|
||||
unset($rmv_query);
|
||||
}
|
||||
|
||||
if ($cfgRelation['relwork']) {
|
||||
$remove_query = 'DELETE FROM ' . PMA_backquote($cfgRelation['relation'])
|
||||
. ' WHERE master_db = \'' . PMA_sqlAddslashes($db) . '\''
|
||||
. ' AND master_table = \'' . PMA_sqlAddslashes($table) . '\'';
|
||||
$rmv_rs = PMA_query_as_cu($remove_query);
|
||||
unset($rmv_query);
|
||||
|
||||
$remove_query = 'DELETE FROM ' . PMA_backquote($cfgRelation['relation'])
|
||||
. ' WHERE foreign_db = \'' . PMA_sqlAddslashes($db) . '\''
|
||||
. ' AND foreign_table = \'' . PMA_sqlAddslashes($table) . '\'';
|
||||
$rmv_rs = PMA_query_as_cu($remove_query);
|
||||
unset($rmv_query);
|
||||
}
|
||||
} elseif (isset($db) && !empty($db)) {
|
||||
// garvin: A whole DB gets deleted. Remove all references in PMA_*
|
||||
if ($cfgRelation['commwork']) {
|
||||
$remove_query = 'DELETE FROM ' . PMA_backquote($cfgRelation['column_info'])
|
||||
. ' WHERE db_name = \'' . PMA_sqlAddslashes($db) . '\'';
|
||||
$rmv_rs = PMA_query_as_cu($remove_query);
|
||||
unset($rmv_query);
|
||||
}
|
||||
} // end if relation-stuff
|
||||
} // end if ($purge)
|
||||
} // end else "didn't ask to see php code"
|
||||
|
||||
if ($cfgRelation['bookmarkwork']) {
|
||||
$remove_query = 'DELETE FROM ' . PMA_backquote($cfgRelation['bookmark'])
|
||||
. ' WHERE dbase = \'' . PMA_sqlAddslashes($db) . '\'';
|
||||
$rmv_rs = PMA_query_as_cu($remove_query);
|
||||
unset($rmv_query);
|
||||
}
|
||||
|
||||
if ($cfgRelation['displaywork']) {
|
||||
$remove_query = 'DELETE FROM ' . PMA_backquote($cfgRelation['table_info'])
|
||||
. ' WHERE db_name = \'' . PMA_sqlAddslashes($db) . '\'';
|
||||
$rmv_rs = PMA_query_as_cu($remove_query);
|
||||
unset($rmv_query);
|
||||
}
|
||||
|
||||
if ($cfgRelation['pdfwork']) {
|
||||
$remove_query = 'DELETE FROM ' . PMA_backquote($cfgRelation['pdf_pages'])
|
||||
. ' WHERE db_name = \'' . PMA_sqlAddslashes($db) . '\'';
|
||||
$rmv_rs = PMA_query_as_cu($remove_query);
|
||||
unset($rmv_query);
|
||||
|
||||
$remove_query = 'DELETE FROM ' . PMA_backquote($cfgRelation['table_coords'])
|
||||
. ' WHERE db_name = \'' . PMA_sqlAddslashes($db) . '\'';
|
||||
$rmv_rs = PMA_query_as_cu($remove_query);
|
||||
unset($rmv_query);
|
||||
}
|
||||
|
||||
if ($cfgRelation['relwork']) {
|
||||
$remove_query = 'DELETE FROM ' . PMA_backquote($cfgRelation['relation'])
|
||||
. ' WHERE master_db = \'' . PMA_sqlAddslashes($db) . '\'';
|
||||
$rmv_rs = PMA_query_as_cu($remove_query);
|
||||
unset($rmv_query);
|
||||
|
||||
$remove_query = 'DELETE FROM ' . PMA_backquote($cfgRelation['relation'])
|
||||
. ' WHERE foreign_db = \'' . PMA_sqlAddslashes($db) . '\'';
|
||||
$rmv_rs = PMA_query_as_cu($remove_query);
|
||||
unset($rmv_query);
|
||||
}
|
||||
|
||||
} else {
|
||||
// garvin: VOID. No DB/Table gets deleted.
|
||||
} // end if relation-stuff
|
||||
} // end if ($purge)
|
||||
|
||||
// garvin: If a column gets dropped, do relation magic.
|
||||
if (isset($cpurge) && $cpurge == '1' && isset($purgekey)
|
||||
&& isset($db) && isset($table)
|
||||
&& !empty($db) && !empty($table) && !empty($purgekey)) {
|
||||
include('./libraries/relation.lib.php3');
|
||||
$cfgRelation = PMA_getRelationsParam();
|
||||
|
||||
if ($cfgRelation['commwork']) {
|
||||
$remove_query = 'DELETE FROM ' . PMA_backquote($cfgRelation['column_info'])
|
||||
. ' WHERE db_name = \'' . PMA_sqlAddslashes($db) . '\''
|
||||
. ' AND table_name = \'' . PMA_sqlAddslashes($table) . '\''
|
||||
. ' AND column_name = \'' . PMA_sqlAddslashes(urldecode($purgekey)) . '\'';
|
||||
$rmv_rs = PMA_query_as_cu($remove_query);
|
||||
unset($rmv_query);
|
||||
}
|
||||
|
||||
if ($cfgRelation['displaywork']) {
|
||||
$remove_query = 'DELETE FROM ' . PMA_backquote($cfgRelation['table_info'])
|
||||
. ' WHERE db_name = \'' . PMA_sqlAddslashes($db) . '\''
|
||||
. ' AND table_name = \'' . PMA_sqlAddslashes($table) . '\''
|
||||
. ' AND display_field = \'' . PMA_sqlAddslashes(urldecode($purgekey)) . '\'';
|
||||
$rmv_rs = PMA_query_as_cu($remove_query);
|
||||
unset($rmv_query);
|
||||
}
|
||||
|
||||
if ($cfgRelation['relwork']) {
|
||||
$remove_query = 'DELETE FROM ' . PMA_backquote($cfgRelation['relation'])
|
||||
. ' WHERE master_db = \'' . PMA_sqlAddslashes($db) . '\''
|
||||
. ' AND master_table = \'' . PMA_sqlAddslashes($table) . '\''
|
||||
. ' AND master_field = \'' . PMA_sqlAddslashes(urldecode($purgekey)) . '\'';
|
||||
$rmv_rs = PMA_query_as_cu($remove_query);
|
||||
unset($rmv_query);
|
||||
|
||||
$remove_query = 'DELETE FROM ' . PMA_backquote($cfgRelation['relation'])
|
||||
. ' WHERE foreign_db = \'' . PMA_sqlAddslashes($db) . '\''
|
||||
. ' AND foreign_table = \'' . PMA_sqlAddslashes($table) . '\''
|
||||
. ' AND foreign_field = \'' . PMA_sqlAddslashes(urldecode($purgekey)) . '\'';
|
||||
$rmv_rs = PMA_query_as_cu($remove_query);
|
||||
unset($rmv_query);
|
||||
}
|
||||
} // end if column PMA_* purge
|
||||
} // end else "didn't ask to see php code"
|
||||
|
||||
|
||||
// No rows returned -> move back to the calling page
|
||||
if ($num_rows < 1 || $is_affected) {
|
||||
|
Reference in New Issue
Block a user