Viewing file: display_structure.inc.php (7.11 KB) -rw-rw-rw- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php /* vim: set expandtab sw=4 ts=4 sts=4: */ /** * Displays the table structure ('show table' works correct since 3.23.03) * * @package PhpMyAdmin */
require_once 'libraries/common.inc.php'; require_once 'libraries/mysql_charsets.inc.php'; require_once 'libraries/structure.lib.php'; require_once 'libraries/index.lib.php'; require_once 'libraries/tbl_info.inc.php';
if (! defined('PHPMYADMIN')) { exit; }
/* TABLE INFORMATION */ // table header
$HideStructureActions = ''; if ($GLOBALS['cfg']['HideStructureActions'] === true) { $HideStructureActions .= ' HideStructureActions'; }
$html_form = '<form method="post" action="tbl_structure.php" name="fieldsForm" ' . 'id="fieldsForm" class="ajax' . $HideStructureActions . '">';
$response->addHTML($html_form); $response->addHTML(PMA_URL_getHiddenInputs($db, $table));
$tabletype = '<input type="hidden" name="table_type" value='; if ($db_is_system_schema) { $tabletype .= '"information_schema" />'; } else if ($tbl_is_view) { $tabletype .= '"view" />'; } else { $tabletype .= '"table" />'; } $response->addHTML($tabletype);
$tablestructure = '<table id="tablestructure" class="data">'; $response->addHTML($tablestructure);
$response->addHTML( PMA_getHtmlForTableStructureHeader( $db_is_system_schema, $tbl_is_view ) );
$response->addHTML('<tbody>');
// table body
// prepare comments $comments_map = array(); $mime_map = array();
if ($GLOBALS['cfg']['ShowPropertyComments']) { include_once 'libraries/transformations.lib.php'; $comments_map = PMA_getComments($db, $table); if ($cfgRelation['mimework'] && $cfg['BrowseMIME']) { $mime_map = PMA_getMIME($db, $table, true); } }
$rownum = 0; $columns_list = array(); $save_row = array(); $odd_row = true; foreach ($fields as $row) { $save_row[] = $row; $rownum++; $columns_list[] = $row['Field'];
$type = $row['Type']; $extracted_columnspec = PMA_Util::extractColumnSpec($row['Type']);
if ('set' == $extracted_columnspec['type'] || 'enum' == $extracted_columnspec['type'] ) { $type_nowrap = ''; } else { $type_nowrap = ' class="nowrap"'; } $type = $extracted_columnspec['print_type']; if (empty($type)) { $type = ' '; }
$field_charset = ''; if ($extracted_columnspec['can_contain_collation'] && ! empty($row['Collation']) ) { $field_charset = $row['Collation']; }
// Display basic mimetype [MIME] if ($cfgRelation['commwork'] && $cfgRelation['mimework'] && $cfg['BrowseMIME'] && isset($mime_map[$row['Field']]['mimetype']) ) { $type_mime = '<br />MIME: ' . str_replace('_', '/', $mime_map[$row['Field']]['mimetype']); } else { $type_mime = ''; }
$attribute = $extracted_columnspec['attribute'];
// prepare a common variable to reuse below; however, // in case of a VIEW, $analyzed_sql[0]['create_table_fields'] is empty if (isset($analyzed_sql[0]['create_table_fields'][$row['Field']])) { $tempField = $analyzed_sql[0]['create_table_fields'][$row['Field']]; } else { $tempField = array(); }
// MySQL 4.1.2+ TIMESTAMP options // (if on_update_current_timestamp is set, then it's TRUE) if (isset($tempField['on_update_current_timestamp'])) { $attribute = 'on update CURRENT_TIMESTAMP'; }
// here, we have a TIMESTAMP that SHOW FULL COLUMNS reports as having the // NULL attribute, but SHOW CREATE TABLE says the contrary. Believe // the latter. if (! empty($tempField['type']) && $tempField['type'] == 'TIMESTAMP' && $tempField['timestamp_not_null'] ) { $row['Null'] = ''; }
if (! isset($row['Default'])) { if ($row['Null'] == 'YES') { $row['Default'] = '<i>NULL</i>'; } } else { $row['Default'] = htmlspecialchars($row['Default']); }
$field_encoded = urlencode($row['Field']); $field_name = htmlspecialchars($row['Field']); $displayed_field_name = $field_name;
// underline commented fields and display a hover-title (CSS only)
if (isset($comments_map[$row['Field']])) { $displayed_field_name = '<span class="commented_column" title="' . htmlspecialchars($comments_map[$row['Field']]) . '">' . $field_name . '</span>'; }
if ($primary && $primary->hasColumn($field_name)) { $displayed_field_name = '<u>' . $field_name . '</u>'; } $response->addHTML( '<tr class="' . ($odd_row ? 'odd': 'even') . '">' ); $odd_row = !$odd_row;
$response->addHTML( PMA_getHtmlTableStructureRow( $row, $rownum, $displayed_field_name, $type_nowrap, $extracted_columnspec, $type_mime, $field_charset, $attribute, $tbl_is_view, $db_is_system_schema, $url_query, $field_encoded, $titles, $table ) );
if (! $tbl_is_view && ! $db_is_system_schema) { $response->addHTML( PMA_getHtmlForActionsInTableStructure( $type, $tbl_storage_engine, $primary, $field_name, $url_query, $titles, $row, $rownum, $hidden_titles, $columns_with_unique_index ) ); } // end if (! $tbl_is_view && ! $db_is_system_schema)
$response->addHTML('</tr>');
unset($field_charset); } // end foreach
$response->addHTML('</tbody></table>');
$response->addHTML( PMA_getHtmlForCheckAllTableColumn( $pmaThemeImage, $text_dir, $tbl_is_view, $db_is_system_schema, $tbl_storage_engine ) );
$response->addHTML( '</form><hr />' ); $response->addHTML( PMA_getHtmlDivForMoveColumnsDialog() );
/** * Work on the table */
$response->addHTML('<div id="structure-action-links">');
if ($tbl_is_view) { $response->addHTML(PMA_getHtmlForEditView($url_params)); } $response->addHTML( PMA_getHtmlForOptionalActionLinks( $url_query, $tbl_is_view, $db_is_system_schema, $tbl_storage_engine, $cfgRelation ) );
$response->addHTML('</div>');
if (! $tbl_is_view && ! $db_is_system_schema) { $response->addHTML('<br />'); $response->addHTML(PMA_getHtmlForAddColumn($columns_list)); }
/** * Displays indexes */
if (! $tbl_is_view && ! $db_is_system_schema && 'ARCHIVE' != $tbl_storage_engine ) { //return the list of index $response->addJSON( 'indexes_list', PMA_Index::getView($GLOBALS['table'], $GLOBALS['db']) ); $response->addHTML(PMA_getHtmlForDisplayIndexes()); }
/** * Displays Space usage and row statistics */ // BEGIN - Calc Table Space // Get valid statistics whatever is the table type if ($cfg['ShowStats']) { //get table stats in HTML format $tablestats = PMA_getHtmlForDisplayTableStats( $showtable, $table_info_num_rows, $tbl_is_view, $db_is_system_schema, $tbl_storage_engine, $url_query, $tbl_collation ); //returning the response in JSON format to be used by Ajax $response->addJSON('tableStat', $tablestats); $response->addHTML($tablestats); } // END - Calc Table Space
$response->addHTML( '<div class="clearfloat"></div>' ); ?>
|