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(); +?>