diff --git a/htdocs/sql/pmd_common.php b/htdocs/sql/pmd_common.php
new file mode 100755
--- /dev/null
+++ b/htdocs/sql/pmd_common.php
@@ -0,0 +1,326 @@
+' . "\n" .
+ '// ' . "\n" .
+ '' . "\n";
+ // return $GLOBALS['PMD']; // many bases // not use ??????
+}
+
+/**
+ * retrieves table column info
+ *
+ * @uses $GLOBALS['db']
+ * @uses PMA_DBI_QUERY_STORE
+ * @uses PMA_DBI_select_db()
+ * @uses PMA_DBI_query()
+ * @uses PMA_DBI_num_rows()
+ * @uses PMA_backquote()
+ * @uses count()
+ * @return array table column nfo
+ */
+function get_tab_info()
+{
+ PMA_DBI_select_db($GLOBALS['db']);
+ $tab_column = array();
+ for ($i = 0; $i < count($GLOBALS['PMD']["TABLE_NAME"]); $i++) {
+ $fields_rs = PMA_DBI_query('SHOW FULL FIELDS FROM '.PMA_backquote($GLOBALS['PMD']["TABLE_NAME_SMALL"][$i]), NULL, PMA_DBI_QUERY_STORE);
+ $j = 0;
+ while ($row = PMA_DBI_fetch_assoc($fields_rs)) {
+ $tab_column[$GLOBALS['PMD']['TABLE_NAME'][$i]]['COLUMN_ID'][$j] = $j;
+ $tab_column[$GLOBALS['PMD']['TABLE_NAME'][$i]]['COLUMN_NAME'][$j] = $row['Field'];
+ $tab_column[$GLOBALS['PMD']['TABLE_NAME'][$i]]['TYPE'][$j] = $row['Type'];
+ $tab_column[$GLOBALS['PMD']['TABLE_NAME'][$i]]['NULLABLE'][$j] = $row['Null'];
+ $j++;
+ }
+ }
+ return $tab_column;
+}
+
+/**
+ * returns JavaScript code for intializing vars
+ *
+ * @uses $GLOBALS['db']
+ * @uses PMA_DBI_QUERY_STORE
+ * @uses PMA_DBI_select_db()
+ * @uses PMA_DBI_query()
+ * @uses PMA_backquote()
+ * @uses PMA_DBI_fetch_row()
+ * @uses PMA_getForeigners()
+ * @uses urlencode()
+ * @uses count()
+ * @uses in_array()
+ * @return string JavaScript code
+ */
+function get_script_contr()
+{
+ PMA_DBI_select_db($GLOBALS['db']);
+ $con["C_NAME"] = array();
+ $i = 0;
+ $alltab_rs = PMA_DBI_query('SHOW TABLES FROM ' . PMA_backquote($GLOBALS['db']), NULL, PMA_DBI_QUERY_STORE);
+ while ($val = @PMA_DBI_fetch_row($alltab_rs)) {
+ $row = PMA_getForeigners($GLOBALS['db'], $val[0], '', 'internal');
+ //echo "
internal ".$GLOBALS['db']." - ".$val[0]." - ";
+ //print_r($row);
+ if ($row !== false) {
+ foreach ($row as $field => $value) {
+ $con['C_NAME'][$i] = '';
+ $con['DTN'][$i] = urlencode($GLOBALS['db'] . "." . $val[0]);
+ $con['DCN'][$i] = urlencode($field);
+ $con['STN'][$i] = urlencode($value['foreign_db'] . "." . $value['foreign_table']);
+ $con['SCN'][$i] = urlencode($value['foreign_field']);
+ $i++;
+ }
+ }
+ $row = PMA_getForeigners($GLOBALS['db'], $val[0], '', 'innodb');
+ //echo "
INNO ";
+ //print_r($row);
+ if ($row !== false) {
+ foreach ($row as $field => $value) {
+ $con['C_NAME'][$i] = '';
+ $con['DTN'][$i] = urlencode($GLOBALS['db'].".".$val[0]);
+ $con['DCN'][$i] = urlencode($field);
+ $con['STN'][$i] = urlencode($value['foreign_db'].".".$value['foreign_table']);
+ $con['SCN'][$i] = urlencode($value['foreign_field']);
+ $i++;
+ }
+ }
+ }
+
+ $ti = 0;
+ $script_contr =
+ '' . "\n";
+ return $script_contr;
+}
+
+/**
+ * @uses $GLOBALS['db']
+ * @uses $GLOBALS['PMD']
+ * @uses PMA_DBI_select_db()
+ * @uses PMA_get_indexes()
+ * @uses PMA_extract_indexes()
+ * @uses count()
+ * @return array unique or primary indizes
+ */
+function get_pk_or_unique_keys()
+{
+ require_once './libraries/tbl_indexes.lib.php';
+
+ PMA_DBI_select_db($GLOBALS['db']);
+ $tables_pk_or_unique_keys = array();
+
+ for ($I = 0; $I < count($GLOBALS['PMD']['TABLE_NAME_SMALL']); $I++) {
+ $ret_keys = PMA_get_indexes($GLOBALS['PMD']['TABLE_NAME_SMALL'][$I]);
+ if (! empty($ret_keys)) {
+ // reset those as the function uses them by reference
+ $indexes = $indexes_info = $indexes_data = array();
+ PMA_extract_indexes($ret_keys, $indexes, $indexes_info, $indexes_data);
+ // for now, take into account only the first index segment
+ foreach ($indexes_data as $key_name => $one_index) {
+ $column_name = $one_index[1]['Column_name'];
+ if (isset($indexes_info[$key_name])
+ && $indexes_info[$key_name]['Non_unique'] == 0) {
+ $tables_pk_or_unique_keys[$GLOBALS['PMD']['OWNER'][$I] . '.' .$GLOBALS['PMD']['TABLE_NAME_SMALL'][$I] . '.' . $column_name] = 1;
+ }
+ }
+ }
+ }
+ return $tables_pk_or_unique_keys;
+}
+
+/**
+ * returns all indizes
+ *
+ * @uses $GLOBALS['db']
+ * @uses $GLOBALS['PMD']
+ * @uses PMA_DBI_select_db()
+ * @uses PMA_get_indexes()
+ * @uses PMA_extract_indexes()
+ * @uses count()
+ * @return array indizes
+ */
+function get_all_keys()
+{
+ require_once './libraries/tbl_indexes.lib.php';
+
+ PMA_DBI_select_db($GLOBALS['db']);
+ $tables_all_keys = array();
+
+ for ($I = 0; $I < count($GLOBALS['PMD']['TABLE_NAME_SMALL']); $I++) {
+ $ret_keys = PMA_get_indexes($GLOBALS['PMD']['TABLE_NAME_SMALL'][$I]);
+ if (! empty($ret_keys)) {
+ // reset those as the function uses them by reference
+ $indexes = $indexes_info = $indexes_data = array();
+ PMA_extract_indexes($ret_keys, $indexes, $indexes_info, $indexes_data);
+ // for now, take into account only the first index segment
+ foreach ($indexes_data as $one_index) {
+ $column_name = $one_index[1]['Column_name'];
+ $tables_all_keys[$GLOBALS['PMD']['OWNER'][$I] . '.' .$GLOBALS['PMD']['TABLE_NAME_SMALL'][$I] . '.' . $column_name] = 1;
+ }
+ }
+ }
+ return $tables_all_keys;
+}
+
+/**
+ *
+ *
+ * @uses $GLOBALS['PMD']
+ * @uses count()
+ * @uses in_array()
+ * @return array ???
+ */
+function get_script_tabs()
+{
+ $script_tabs =
+ '' . "\n";
+ return $script_tabs;
+}
+
+/**
+ * @uses $GLOBALS['controllink']
+ * @uses $cfgRelation['designerwork']
+ * @uses $cfgRelation['db']
+ * @uses $cfgRelation['designer_coords']
+ * @uses PMA_DBI_QUERY_STORE
+ * @uses PMA_getRelationsParam()
+ * @uses PMA_backquote()
+ * @uses PMA_DBI_fetch_result()
+ * @uses count()
+ * @return array table positions and sizes
+ */
+function get_tab_pos()
+{
+ $cfgRelation = PMA_getRelationsParam();
+
+ if (! $cfgRelation['designerwork']) {
+ return null;
+ }
+
+ $query = "
+ SELECT CONCAT_WS('.', `db_name`, `table_name`) AS `name`,
+ `x` AS `X`,
+ `y` AS `Y`,
+ `v` AS `V`,
+ `h` AS `H`
+ FROM " . PMA_backquote($cfgRelation['db']) . "." . PMA_backquote($cfgRelation['designer_coords']);
+ $tab_pos = PMA_DBI_fetch_result($query, 'name', null, $GLOBALS['controllink'], PMA_DBI_QUERY_STORE);
+ return count($tab_pos) ? $tab_pos : null;
+}
+
+/**
+ * returns distinct values from $GLOBALS['PMD']['OWNER']
+ *
+ * @uses array_values()
+ * @uses array_unique()
+ * @uses $GLOBALS['PMD']['OWNER']
+ * @return array owner
+ */
+function get_owners()
+{
+ return array_values(array_unique($GLOBALS['PMD']['OWNER']));
+}
+
+get_tabs();
+?>