Viewing file: tbl_relation.php (4.54 KB) -rw-rw-rw- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php /* vim: set expandtab sw=4 ts=4 sts=4: */ /** * Display table relations for viewing and editing * * includes phpMyAdmin relations and InnoDB relations * * @todo fix name handling: currently names with dots (.) are not properly handled * for internal relations (but foreign keys relations are correct) * @todo foreign key constraints require both fields being of equal type and size * @todo check foreign fields to be from same type and size, all other makes no sense * @todo if above todos are fullfilled we can add all fields meet requirements * in the select dropdown * @package PhpMyAdmin */
/** * Gets some core libraries */ require_once 'libraries/common.inc.php'; require_once 'libraries/index.lib.php'; require_once 'libraries/tbl_relation.lib.php';
$response = PMA_Response::getInstance();
// Send table of column names to populate corresponding dropdowns depending // on the current selection if (isset($_REQUEST['getDropdownValues']) && $_REQUEST['getDropdownValues'] === 'true' ) { PMA_sendHtmlForTableOrColumnDropdownList(); }
$header = $response->getHeader(); $scripts = $header->getScripts(); $scripts->addFile('tbl_relation.js'); $scripts->addFile('indexes.js');
/** * Sets globals from $_POST */ $post_params = array( 'destination_foreign_db', 'destination_foreign_table', 'destination_foreign_column', 'display_field', 'fields_name', 'on_delete', 'on_update' );
foreach ($post_params as $one_post_param) { if (isset($_POST[$one_post_param])) { $GLOBALS[$one_post_param] = $_POST[$one_post_param]; } }
/** * Gets tables informations */ require_once 'libraries/tbl_info.inc.php';
$options_array = array( 'CASCADE' => 'CASCADE', 'SET_NULL' => 'SET NULL', 'NO_ACTION' => 'NO ACTION', 'RESTRICT' => 'RESTRICT', );
/** * Gets the relation settings */ $cfgRelation = PMA_getRelationsParam();
/** * Updates */ if ($cfgRelation['relwork']) { $existrel = PMA_getForeigners($db, $table, '', 'internal'); } if (PMA_Util::isForeignKeySupported($tbl_storage_engine)) { $existrel_foreign = PMA_getForeigners($db, $table, '', 'foreign'); } if ($cfgRelation['displaywork']) { $disp = PMA_getDisplayField($db, $table); }
// will be used in the logic for internal relations and foreign keys: $multi_edit_columns_name = isset($_REQUEST['fields_name']) ? $_REQUEST['fields_name'] : null;
// u p d a t e s f o r I n t e r n a l r e l a t i o n s if (isset($_POST['destination_db']) && $cfgRelation['relwork']) { PMA_handleUpdatesForInternalRelations( $_POST['destination_db'], $multi_edit_columns_name, $_POST['destination_table'], $_POST['destination_column'], $cfgRelation, $db, $table, isset($existrel) ? $existrel : null ); } // end if (updates for internal relations)
$html_output = '';
// u p d a t e s f o r f o r e i g n k e y s // (for now, one index name only; we keep the definitions if the // foreign db is not the same) if (isset($destination_foreign_db)) { $html_output .= PMA_handleUpdatesForForeignKeys( $destination_foreign_db, $multi_edit_columns_name, $destination_foreign_table, $destination_foreign_column, $options_array, $table, isset($existrel_foreign) ? $existrel_foreign : null ); } // end if isset($destination_foreign)
// U p d a t e s f o r d i s p l a y f i e l d if ($cfgRelation['displaywork'] && isset($display_field)) { PMA_handleUpdateForDisplayField( $disp, $display_field, $db, $table, $cfgRelation ); } // end if
// If we did an update, refresh our data if (isset($_POST['destination_db']) && $cfgRelation['relwork']) { $existrel = PMA_getForeigners($db, $table, '', 'internal'); } if (isset($destination_foreign_db) && PMA_Util::isForeignKeySupported($tbl_storage_engine) ) { $existrel_foreign = PMA_getForeigners($db, $table, '', 'foreign'); }
if ($cfgRelation['displaywork']) { $disp = PMA_getDisplayField($db, $table); }
/** * Dialog */ // Now find out the columns of our $table // need to use PMA_DatabaseInterface::QUERY_STORE with $GLOBALS['dbi']->numRows() // in mysqli $columns = $GLOBALS['dbi']->getColumns($db, $table);
// common form $html_output .= PMA_getHtmlForCommonForm( $db, $table, $columns, $cfgRelation, $tbl_storage_engine, $existrel, isset($existrel_foreign) ? $existrel_foreign : null, $options_array );
if (PMA_Util::isForeignKeySupported($tbl_storage_engine)) { $html_output .= PMA_getHtmlForDisplayIndexes(); } // Render HTML output PMA_Response::getInstance()->addHTML($html_output); ?>
|