changes to use new central db for relation and bookmark tables
This commit is contained in:
@@ -9,74 +9,106 @@ require('./libraries/grab_globals.lib.php3');
|
||||
require('./libraries/common.lib.php3');
|
||||
require('./tbl_properties_common.php3');
|
||||
require('./tbl_properties_table_info.php3');
|
||||
require('./libraries/relation.lib.php3');
|
||||
|
||||
$cfgRelation = PMA_getRelationsParam();
|
||||
|
||||
/**
|
||||
* Updates
|
||||
*/
|
||||
if (!empty($cfg['Server']['relation'])
|
||||
if ($cfgRelation['relwork']) {
|
||||
$existrel = getForeigners($db,$table);
|
||||
}
|
||||
if ($cfgRelation['displaywork']) {
|
||||
$disp = getDisplayField($db,$table);
|
||||
}
|
||||
if ($cfgRelation['relwork']
|
||||
&& isset($submit_rel) && $submit_rel == 'true') {
|
||||
// first check if there is a entry allready
|
||||
$upd_query = 'SELECT master_field, foreign_table, foreign_field FROM ' . PMA_backquote($cfg['Server']['relation'])
|
||||
. ' WHERE master_table = \'' . PMA_sqlAddslashes($table) . '\'';
|
||||
$upd_rs = PMA_mysql_query($upd_query) or PMA_mysqlDie('', $upd_query, '', $err_url_0);
|
||||
|
||||
while ($foundrel = @PMA_mysql_fetch_array($upd_rs)) {
|
||||
$currfield = $foundrel['master_field'];
|
||||
$existrel[$currfield] = $foundrel['foreign_table'] . '.' . $foundrel['foreign_field'];
|
||||
}
|
||||
while (list($key, $value) = each($destination)) {
|
||||
if ($value != 'nix') {
|
||||
$for = explode('.', $value);
|
||||
if (!isset($existrel[$key])) {
|
||||
$for = explode('.', $destination[$key]);
|
||||
$upd_query = 'INSERT INTO ' . PMA_backquote($cfg['Server']['relation'])
|
||||
. '(master_table, master_field, foreign_table, foreign_field)'
|
||||
$upd_query = 'INSERT INTO ' . PMA_backquote($cfgRelation['relation'])
|
||||
. '(master_db, master_table, master_field, foreign_db, foreign_table, foreign_field)'
|
||||
. ' values('
|
||||
. '\'' . PMA_sqlAddslashes($db) . '\', '
|
||||
. '\'' . PMA_sqlAddslashes($table) . '\', '
|
||||
. '\'' . PMA_sqlAddslashes($key) . '\', '
|
||||
. '\'' . PMA_sqlAddslashes($for[0]) . '\', '
|
||||
. '\'' . PMA_sqlAddslashes($for[1]) . '\')';
|
||||
$upd_rs = PMA_mysql_query($upd_query) or PMA_mysqlDie('', $upd_query, '', $err_url_0);
|
||||
. '\'' . PMA_sqlAddslashes($for[1]) . '\','
|
||||
. '\'' . PMA_sqlAddslashes($for[2]) . '\')';
|
||||
} else if ($existrel[$key] != $value) {
|
||||
$for = explode('.', $destination[$key]);
|
||||
$upd_query = 'UPDATE ' . PMA_backquote($cfg['Server']['relation']) . ' SET'
|
||||
. ' foreign_table = \'' . PMA_sqlAddslashes($for[0]) . '\', foreign_field = \'' . PMA_sqlAddslashes($for[1]) . '\' '
|
||||
. ' WHERE master_table = \'' . PMA_sqlAddslashes($table) . '\' AND master_field = \'' . PMA_sqlAddslashes($key) . '\'';
|
||||
$upd_rs = PMA_mysql_query($upd_query) or PMA_mysqlDie('', $upd_query, '', $err_url_0);
|
||||
$upd_query = 'UPDATE ' . PMA_backquote($cfgRelation['relation']) . ' SET'
|
||||
. ' foreign_db = \'' . PMA_sqlAddslashes($for[0]) .'\', '
|
||||
. ' foreign_table = \'' . PMA_sqlAddslashes($for[1]) .'\', '
|
||||
. ' foreign_field = \'' . PMA_sqlAddslashes($for[2]) .'\' '
|
||||
. ' WHERE master_db = \'' . PMA_sqlAddslashes($db) . '\''
|
||||
. ' AND master_table = \'' . PMA_sqlAddslashes($table) . '\''
|
||||
. ' AND master_field = \'' . PMA_sqlAddslashes($key) . '\'';
|
||||
} // end if... else....
|
||||
} else if (isset($existrel[$key])) {
|
||||
$for = explode('.', $destination[$key]);
|
||||
$upd_query = 'DELETE FROM ' . PMA_backquote($cfg['Server']['relation'])
|
||||
. ' WHERE master_table = \'' . PMA_sqlAddslashes($table) . '\' AND master_field = \'' . PMA_sqlAddslashes($key) . '\'';
|
||||
$upd_rs = PMA_mysql_query($upd_query) or PMA_mysqlDie('', $upd_query, '', $err_url_0);
|
||||
$upd_query = 'DELETE FROM ' . PMA_backquote($cfgRelation['relation'])
|
||||
. ' WHERE master_db = \'' . PMA_sqlAddslashes($db) . '\''
|
||||
. ' AND master_table = \'' . PMA_sqlAddslashes($table) . '\''
|
||||
. ' AND master_field = \'' . PMA_sqlAddslashes($key) . '\'';
|
||||
} // end if... else....
|
||||
if(isset($upd_query)){
|
||||
if (isset($dbh)) {
|
||||
mysql_select_db($cfgRelation['db'],$dbh);
|
||||
$upd_rs = PMA_mysql_query($upd_query, $dbh) or PMA_mysqlDie(mysql_error($dbh), $upd_query, '', $err_url_0);
|
||||
mysql_select_db($db,$dbh);
|
||||
} else {
|
||||
mysql_select_db($cfgRelation['db']);
|
||||
$upd_rs = PMA_mysql_query($upd_query, $GLOBALS['dbh']) or PMA_mysqlDie('', $upd_query, '', $err_url_0);
|
||||
mysql_select_db($db);
|
||||
}
|
||||
}
|
||||
} // end while
|
||||
} // end if
|
||||
|
||||
if (!empty($cfg['Server']['table_info'])
|
||||
if ($cfgRelation['displaywork']
|
||||
&& isset($submit_show) && $submit_show == 'true') {
|
||||
$test_query = 'SELECT display_field FROM ' . PMA_backquote($cfg['Server']['table_info'])
|
||||
. ' WHERE table_name = \'' . PMA_sqlAddslashes($table) . '\'';
|
||||
$test_rs = PMA_mysql_query($test_query) or PMA_mysqlDie('', $test_query, '', $err_url_0);
|
||||
if ($test_rs && mysql_num_rows($test_rs) > 0) {
|
||||
$upd_query = 'UPDATE ' . PMA_backquote($cfg['Server']['table_info']) . ' SET'
|
||||
. ' display_field = \'' . PMA_sqlAddslashes($display_field) . '\''
|
||||
. ' WHERE table_name = \'' . PMA_sqlAddslashes($table) . '\'';
|
||||
$upd_rs = PMA_mysql_query($upd_query) or PMA_mysqlDie('', $upd_query, '', $err_url_0);
|
||||
|
||||
if ($disp) {
|
||||
$upd_query = 'UPDATE ' . PMA_backquote($cfgRelation['table_info'])
|
||||
. ' SET display_field = \'' . PMA_sqlAddslashes($display_field) . '\''
|
||||
. ' WHERE db_name = \'' . PMA_sqlAddslashes($db) . '\''
|
||||
. ' AND table_name = \'' . PMA_sqlAddslashes($table) . '\'';
|
||||
} else {
|
||||
$ins_query = 'INSERT INTO ' . PMA_backquote($cfg['Server']['table_info']) . ' (table_name, display_field)'
|
||||
. ' VALUES(\'' . PMA_sqlAddslashes($table) . '\', \'' . PMA_sqlAddslashes($display_field) .'\')';
|
||||
$ins_rs = PMA_mysql_query($ins_query) or PMA_mysqlDie('', $ins_query, '', $err_url_0);
|
||||
$upd_query = 'INSERT INTO ' . PMA_backquote($cfgRelation['table_info'])
|
||||
. '(db_name,table_name,display_field) '
|
||||
. ' VALUES('
|
||||
. '\'' . PMA_sqlAddslashes($db) . '\','
|
||||
. '\'' . PMA_sqlAddslashes($table) . '\','
|
||||
. '\'' . PMA_sqlAddslashes($display_field) .'\')';
|
||||
}
|
||||
if(isset($upd_query)){
|
||||
if (isset($dbh)) {
|
||||
mysql_select_db($cfgRelation['db'],$dbh);
|
||||
$upd_rs = PMA_mysql_query($upd_query, $dbh) or PMA_mysqlDie(mysql_error($dbh), $upd_query, '', $err_url_0);
|
||||
mysql_select_db($db,$dbh);
|
||||
} else {
|
||||
mysql_select_db($cfgRelation['db']);
|
||||
$upd_rs = PMA_mysql_query($upd_query, $GLOBALS['dbh']) or PMA_mysqlDie('', $upd_query, '', $err_url_0);
|
||||
mysql_select_db($db);
|
||||
}
|
||||
}
|
||||
} // end if
|
||||
|
||||
|
||||
// now that we might have changed we have to see again
|
||||
if ($cfgRelation['relwork']) {
|
||||
$existrel = getForeigners($db,$table);
|
||||
}
|
||||
if ($cfgRelation['displaywork']) {
|
||||
$disp = getDisplayField($db,$table);
|
||||
}
|
||||
/**
|
||||
* Dialog
|
||||
*/
|
||||
if ($cfg['Server']['relation']) {
|
||||
$rel_work = FALSE;
|
||||
// Mike Beck: get all Table-Fields to choose relation
|
||||
if ($cfgRelation['relwork']) {
|
||||
|
||||
// to choose Relations we first need all tablenames in current db
|
||||
$tab_query = 'SHOW TABLES FROM ' . PMA_backquote($db);
|
||||
$tab_rs = PMA_mysql_query($tab_query) or PMA_mysqlDie('', $tab_query, '', $err_url_0);
|
||||
$selectboxall['nix'] = '--';
|
||||
@@ -87,12 +119,12 @@ if ($cfg['Server']['relation']) {
|
||||
if ($fi_rs && mysql_num_rows($fi_rs) > 0) {
|
||||
while ($curr_field = PMA_mysql_fetch_array($fi_rs)) {
|
||||
if (isset($curr_field['Key_name']) && $curr_field['Key_name'] == 'PRIMARY') {
|
||||
$field_full = $curr_field['Table'] . '.' . $curr_field['Column_name'];
|
||||
$field_full = $db . '.' .$curr_field['Table'] . '.' . $curr_field['Column_name'];
|
||||
$field_v = $curr_field['Table'] . '->' . $curr_field['Column_name'];
|
||||
break;
|
||||
} else if (isset($curr_field['non_unique']) && $curr_field['non_unique'] == 0) {
|
||||
// if we can't find a primary key we take any unique one
|
||||
$field_full = $curr_field['Table'] . '.' . $curr_field['Column_name'];
|
||||
$field_full = $db . '.' . $curr_field['Table'] . '.' . $curr_field['Column_name'];
|
||||
$field_v = $curr_field['Table'] . '->' . $curr_field['Column_name'];
|
||||
} // end if
|
||||
} // end while
|
||||
@@ -102,23 +134,10 @@ if ($cfg['Server']['relation']) {
|
||||
}
|
||||
} // end if (mysql_num_rows)
|
||||
}
|
||||
if ($curr_table[0] == $cfg['Server']['relation']) {
|
||||
$rel_work = TRUE;
|
||||
}
|
||||
} // end while
|
||||
|
||||
// create Array of Relations (Mike Beck)
|
||||
if ($rel_work) {
|
||||
$rel_query = 'SELECT master_field, concat(foreign_table, \'.\', foreign_field) AS rel'
|
||||
. ' FROM ' . PMA_backquote($cfg['Server']['relation'])
|
||||
. ' WHERE master_table = \'' . PMA_sqlAddslashes($table) . '\'';
|
||||
$relations = @PMA_mysql_query($rel_query) or PMA_mysqlDie('', $rel_query, '', $err_url);
|
||||
|
||||
while ($relrow = @PMA_mysql_fetch_array($relations)) {
|
||||
$rel_col = $relrow['master_field'];
|
||||
$rel_dest[$rel_col] = $relrow['rel'];
|
||||
} // end while
|
||||
} // end if
|
||||
$rel_dest = getForeigners($db,$table);
|
||||
} // end if
|
||||
|
||||
// now find out the columns of our $table
|
||||
@@ -154,9 +173,16 @@ if ($col_rs && mysql_num_rows($col_rs) > 0) {
|
||||
reset($selectboxall);
|
||||
while (list($key, $value) = each($selectboxall)) {
|
||||
$myfield = $row['Field'];
|
||||
if(isset($existrel[$myfield])){
|
||||
$test = $existrel[$myfield]['foreign_db'] . '.'
|
||||
. $existrel[$myfield]['foreign_table'] . '.'
|
||||
. $existrel[$myfield]['foreign_field'];
|
||||
} else {
|
||||
$test = FALSE;
|
||||
}
|
||||
echo ' '
|
||||
. '<option value="' . htmlspecialchars($key) . '"';
|
||||
if (isset($rel_dest[$myfield]) && $key == $rel_dest[$myfield]) {
|
||||
if ( $test && $key == $test) {
|
||||
echo ' selected="selected"';
|
||||
}
|
||||
echo '>' . $value . '</option>'. "\n";
|
||||
@@ -179,15 +205,9 @@ if ($col_rs && mysql_num_rows($col_rs) > 0) {
|
||||
</form>
|
||||
|
||||
<?php
|
||||
if (!empty($cfg['Server']['table_info'])) {
|
||||
if ($cfgRelation['displaywork']) {
|
||||
// Get "display_filed" infos
|
||||
$disp_query = 'SELECT display_field FROM ' . PMA_backquote($cfg['Server']['table_info'])
|
||||
. ' WHERE table_name = \'' . PMA_sqlAddslashes($table) . '\'';
|
||||
$disp_rs = PMA_mysql_query($disp_query) or PMA_mysqlDie('', $disp_query, '', $err_url_0);
|
||||
$row = ($disp_rs ? PMA_mysql_fetch_array($disp_rs) : '');
|
||||
if (isset($row['display_field'])) {
|
||||
$disp = $row['display_field'];
|
||||
}
|
||||
$disp = getDisplayField($db,$table);
|
||||
|
||||
echo "\n";
|
||||
?>
|
||||
|
Reference in New Issue
Block a user