/** * Function to get update query for updating internal relations * * @param array $multi_edit_columns_name multi edit column names * @param array $destination_db destination tables * @param array $destination_table destination tables * @param array $destination_column destination columns * @param array $cfgRelation configuration relation * @param array|null $existrel db, table, column * * @return boolean */ public function updateInternalRelations($multi_edit_columns_name, $destination_db, $destination_table, $destination_column, $cfgRelation, $existrel) { $updated = false; foreach ($destination_db as $master_field_md5 => $foreign_db) { $upd_query = null; // Map the fieldname's md5 back to its real name $master_field = $multi_edit_columns_name[$master_field_md5]; $foreign_table = $destination_table[$master_field_md5]; $foreign_field = $destination_column[$master_field_md5]; if (!empty($foreign_db) && !empty($foreign_table) && !empty($foreign_field)) { if (!isset($existrel[$master_field])) { $upd_query = 'INSERT INTO ' . Util::backquote($GLOBALS['cfgRelation']['db']) . '.' . Util::backquote($cfgRelation['relation']) . '(master_db, master_table, master_field, foreign_db,' . ' foreign_table, foreign_field)' . ' values(' . '\'' . Util::sqlAddSlashes($this->_db_name) . '\', ' . '\'' . Util::sqlAddSlashes($this->_name) . '\', ' . '\'' . Util::sqlAddSlashes($master_field) . '\', ' . '\'' . Util::sqlAddSlashes($foreign_db) . '\', ' . '\'' . Util::sqlAddSlashes($foreign_table) . '\',' . '\'' . Util::sqlAddSlashes($foreign_field) . '\')'; } elseif ($existrel[$master_field]['foreign_db'] != $foreign_db || $existrel[$master_field]['foreign_table'] != $foreign_table || $existrel[$master_field]['foreign_field'] != $foreign_field) { $upd_query = 'UPDATE ' . Util::backquote($GLOBALS['cfgRelation']['db']) . '.' . Util::backquote($cfgRelation['relation']) . ' SET foreign_db = \'' . Util::sqlAddSlashes($foreign_db) . '\', ' . ' foreign_table = \'' . Util::sqlAddSlashes($foreign_table) . '\', ' . ' foreign_field = \'' . Util::sqlAddSlashes($foreign_field) . '\' ' . ' WHERE master_db = \'' . Util::sqlAddSlashes($this->_db_name) . '\'' . ' AND master_table = \'' . Util::sqlAddSlashes($this->_name) . '\'' . ' AND master_field = \'' . Util::sqlAddSlashes($master_field) . '\''; } // end if... else.... } elseif (isset($existrel[$master_field])) { $upd_query = 'DELETE FROM ' . Util::backquote($GLOBALS['cfgRelation']['db']) . '.' . Util::backquote($cfgRelation['relation']) . ' WHERE master_db = \'' . Util::sqlAddSlashes($this->_db_name) . '\'' . ' AND master_table = \'' . Util::sqlAddSlashes($this->_name) . '\'' . ' AND master_field = \'' . Util::sqlAddSlashes($master_field) . '\''; } // end if... else.... if (isset($upd_query)) { $this->_dbi->query($upd_query, $GLOBALS['controllink'], 0, false); $updated = true; } } return $updated; }