<?php /* vim: set expandtab sw=4 ts=4 sts=4: */ /** * functions for displaying server, database and table export * * @package PhpMyAdmin */ use PMA\libraries\Message; use PMA\libraries\plugins\ExportPlugin; use PMA\libraries\Table; /** * Outputs appropriate checked statement for checkbox. * * @param string $str option name * * @return string */ function PMA_exportCheckboxCheck($str) { if (isset($GLOBALS['cfg']['Export'][$str]) && $GLOBALS['cfg']['Export'][$str]) { return ' checked="checked"'; } return null; } /** * Prints Html For Export Selection Options * * @param String $tmp_select Tmp selected method of export * * @return string */ function PMA_getHtmlForExportSelectOptions($tmp_select = '') { $multi_values = '<div>'; $multi_values .= '<a href="#"'; $multi_values .= ' onclick="setSelectOptions' . '(\'dump\', \'db_select[]\', true); return false;">'; $multi_values .= __('Select all'); $multi_values .= '</a>'; $multi_values .= ' / '; $multi_values .= '<a href="#"'; $multi_values .= ' onclick="setSelectOptions' . '(\'dump\', \'db_select[]\', false); return false;">'; $multi_values .= __('Unselect all') . '</a><br />'; $multi_values .= '<select name="db_select[]" ' . 'id="db_select" size="10" multiple="multiple">'; $multi_values .= "\n"; // Check if the selected databases are defined in $_GET // (from clicking Back button on export.php) if (isset($_GET['db_select'])) { $_GET['db_select'] = urldecode($_GET['db_select']); $_GET['db_select'] = explode(",", $_GET['db_select']); } foreach ($GLOBALS['dblist']->databases as $current_db) { if ($GLOBALS['dbi']->isSystemSchema($current_db, true)) { continue; } if (isset($_GET['db_select'])) { if (in_array($current_db, $_GET['db_select'])) { $is_selected = ' selected="selected"'; } else { $is_selected = ''; } } elseif (!empty($tmp_select)) { if (mb_strpos( ' ' . $tmp_select, '|' . $current_db . '|' )) { $is_selected = ' selected="selected"'; } else { $is_selected = ''; } } else { $is_selected = ' selected="selected"'; } $current_db = htmlspecialchars($current_db); $multi_values .= ' <option value="' . $current_db . '"' . $is_selected . '>' . $current_db . '</option>' . "\n"; } // end while $multi_values .= "\n"; $multi_values .= '</select></div>'; return $multi_values; } /** * Prints Html For Export Hidden Input * * @param String $export_type Selected Export Type * @param String $db Selected DB * @param String $table Selected Table * @param String $single_table Single Table * @param String $sql_query Sql Query * * @return string */ function PMA_getHtmlForHiddenInput( $export_type, $db, $table, $single_table, $sql_query ) { global $cfg; $html = ""; if ($export_type == 'server') { $html .= PMA_URL_getHiddenInputs('', '', 1); } elseif ($export_type == 'database') { $html .= PMA_URL_getHiddenInputs($db, '', 1); } else { $html .= PMA_URL_getHiddenInputs($db, $table, 1); } // just to keep this value for possible next display of this form after saving // on server if (!empty($single_table)) { $html .= '<input type="hidden" name="single_table" value="TRUE" />' . "\n"; } $html .= '<input type="hidden" name="export_type" value="' . $export_type . '" />'; $html .= "\n"; // If the export method was not set, the default is quick if (isset($_GET['export_method'])) { $cfg['Export']['method'] = $_GET['export_method']; } elseif (! isset($cfg['Export']['method'])) { $cfg['Export']['method'] = 'quick'; } // The export method (quick, custom or custom-no-form) $html .= '<input type="hidden" name="export_method" value="' . htmlspecialchars($cfg['Export']['method']) . '" />'; if (! empty($sql_query)) { $html .= '<input type="hidden" name="sql_query" value="' . htmlspecialchars($sql_query) . '" />' . "\n"; } elseif (isset($_GET['sql_query'])) { $html .= '<input type="hidden" name="sql_query" value="' . htmlspecialchars($_GET['sql_query']) . '" />' . "\n"; } $html .= '<input type="hidden" name="template_id"' . ' value="' . (isset($_GET['template_id']) ? htmlspecialchars($_GET['template_id']) : '') . '" />'; return $html; } /** * Prints Html For Export Options Header * * @param String $export_type Selected Export Type * @param String $db Selected DB * @param String $table Selected Table * * @return string */ function PMA_getHtmlForExportOptionHeader($export_type, $db, $table) { $html = '<div class="exportoptions" id="header">'; $html .= '<h2>'; $html .= PMA\libraries\Util::getImage('b_export.png', __('Export')); if ($export_type == 'server') { $html .= __('Exporting databases from the current server'); } elseif ($export_type == 'database') { $html .= sprintf( __('Exporting tables from "%s" database'), htmlspecialchars($db) ); } else { $html .= sprintf( __('Exporting rows from "%s" table'), htmlspecialchars($table) ); } $html .= '</h2>'; $html .= '</div>'; return $html; } /** * Returns HTML for export template operations * * @param string $export_type export type - server, database, or table * * @return string HTML for export template operations */ function PMA_getHtmlForExportTemplateLoading($export_type) { $html = '<div class="exportoptions" id="export_templates">'; $html .= '<h3>' . __('Export templates:') . '</h3>'; $html .= '<div class="floatleft">'; $html .= '<form method="post" action="tbl_export.php" id="newTemplateForm"' . ' class="ajax">'; $html .= '<h4>' . __('New template:') . '</h4>'; $html .= '<input type="text" name="templateName" id="templateName" ' . 'maxlength="64"' . 'required="required" ' . 'placeholder="' . __('Template name') . '" />'; $html .= '<input type="submit" name="createTemplate" id="createTemplate" ' . 'value="' . __('Create') . '" />'; $html .= '</form>'; $html .= '</div>'; $html .= '<div class="floatleft" style="margin-left: 50px;">'; $html .= '<form method="post" action="tbl_export.php"' . ' id="existingTemplatesForm" class="ajax">'; $html .= '<h4>' . __('Existing templates:') . '</h4>'; $html .= '<label for="template">' . __('Template:') . '</label>'; $html .= '<select required="required" name="template" id="template">'; $html .= PMA_getOptionsForExportTemplates($export_type); $html .= '</select>'; $html .= '<input type="submit" name="updateTemplate" ' . 'id="updateTemplate" value="' . __('Update') . '" />'; $html .= '<input type="submit" name="deleteTemplate" ' . 'id="deleteTemplate" value="' . __('Delete') . '" />'; $html .= '</form>'; $html .= '</div>'; $html .= '<div class="clearfloat"></div>'; $html .= '</div>'; return $html; } /** * Returns HTML for the options in teplate dropdown * * @param string $export_type export type - server, database, or table * * @return string HTML for the options in teplate dropdown */ function PMA_getOptionsForExportTemplates($export_type) { $ret = '<option value="">-- ' . __('Select a template') . ' --</option>'; // Get the relation settings $cfgRelation = PMA_getRelationsParam(); $query = "SELECT `id`, `template_name` FROM " . PMA\libraries\Util::backquote($cfgRelation['db']) . '.' . PMA\libraries\Util::backquote($cfgRelation['export_templates']) . " WHERE `username` = " . "'" . $GLOBALS['dbi']->escapeString($GLOBALS['cfg']['Server']['user']) . "' AND `export_type` = '" . $GLOBALS['dbi']->escapeString($export_type) . "'" . " ORDER BY `template_name`;"; $result = PMA_queryAsControlUser($query); if (!$result) { return $ret; } while ($row = $GLOBALS['dbi']->fetchAssoc($result, $GLOBALS['controllink'])) { $ret .= '<option value="' . htmlspecialchars($row['id']) . '"'; if (!empty($_GET['template_id']) && $_GET['template_id'] == $row['id']) { $ret .= ' selected="selected"'; } $ret .= '>'; $ret .= htmlspecialchars($row['template_name']) . '</option>'; } return $ret; } /** * Prints Html For Export Options Method * * @return string */ function PMA_getHtmlForExportOptionsMethod() { global $cfg; if (isset($_GET['quick_or_custom'])) { $export_method = $_GET['quick_or_custom']; } else { $export_method = $cfg['Export']['method']; } if ($export_method == 'custom-no-form') { return ''; } $html = '<div class="exportoptions" id="quick_or_custom">'; $html .= '<h3>' . __('Export method:') . '</h3>'; $html .= '<ul>'; $html .= '<li>'; $html .= '<input type="radio" name="quick_or_custom" value="quick" ' . ' id="radio_quick_export"'; if ($export_method == 'quick') { $html .= ' checked="checked"'; } $html .= ' />'; $html .= '<label for ="radio_quick_export">'; $html .= __('Quick - display only the minimal options'); $html .= '</label>'; $html .= '</li>'; $html .= '<li>'; $html .= '<input type="radio" name="quick_or_custom" value="custom" ' . ' id="radio_custom_export"'; if ($export_method == 'custom') { $html .= ' checked="checked"'; } $html .= ' />'; $html .= '<label for="radio_custom_export">'; $html .= __('Custom - display all possible options'); $html .= '</label>'; $html .= '</li>'; $html .= '</ul>'; $html .= '</div>'; return $html; } /** * Prints Html For Export Options Selection * * @param String $export_type Selected Export Type * @param String $multi_values Export Options * * @return string */ function PMA_getHtmlForExportOptionsSelection($export_type, $multi_values) { $html = '<div class="exportoptions" id="databases_and_tables">'; if ($export_type == 'server') { $html .= '<h3>' . __('Databases:') . '</h3>'; } else if ($export_type == 'database') { $html .= '<h3>' . __('Tables:') . '</h3>'; } if (! empty($multi_values)) { $html .= $multi_values; } $html .= '</div>'; return $html; } /** * Prints Html For Export Options Format dropdown * * @param ExportPlugin[] $export_list Export List * * @return string */ function PMA_getHtmlForExportOptionsFormatDropdown($export_list) { $html = '<div class="exportoptions" id="format">'; $html .= '<h3>' . __('Format:') . '</h3>'; $html .= PMA_pluginGetChoice('Export', 'what', $export_list, 'format'); $html .= '</div>'; return $html; } /** * Prints Html For Export Options Format-specific options * * @param ExportPlugin[] $export_list Export List * * @return string */ function PMA_getHtmlForExportOptionsFormat($export_list) { $html = '<div class="exportoptions" id="format_specific_opts">'; $html .= '<h3>' . __('Format-specific options:') . '</h3>'; $html .= '<p class="no_js_msg" id="scroll_to_options_msg">'; $html .= __( 'Scroll down to fill in the options for the selected format ' . 'and ignore the options for other formats.' ); $html .= '</p>'; $html .= PMA_pluginGetOptions('Export', $export_list); $html .= '</div>'; if (function_exists('PMA_Kanji_encodingForm')) { // Encoding setting form appended by Y.Kawada // Japanese encoding setting $html .= '<div class="exportoptions" id="kanji_encoding">'; $html .= '<h3>' . __('Encoding Conversion:') . '</h3>'; $html .= PMA_Kanji_encodingForm(); $html .= '</div>'; } $html .= '<div class="exportoptions" id="submit">'; $html .= PMA\libraries\Util::getExternalBug( __('SQL compatibility mode'), 'mysql', '50027', '14515' ); global $cfg; if ($cfg['ExecTimeLimit'] > 0) { $html .= '<input type="submit" value="' . __('Go') . '" id="buttonGo" onclick="check_time_out(' . $cfg['ExecTimeLimit'] . ')"/>'; } else { // if the time limit set is zero, then time out won't occur // So no need to check for time out. $html .= '<input type="submit" value="' . __('Go') . '" id="buttonGo" />'; } $html .= '</div>'; return $html; } /** * Prints Html For Export Options Rows * * @param String $db Selected DB * @param String $table Selected Table * @param String $unlim_num_rows Num of Rows * * @return string */ function PMA_getHtmlForExportOptionsRows($db, $table, $unlim_num_rows) { $html = '<div class="exportoptions" id="rows">'; $html .= '<h3>' . __('Rows:') . '</h3>'; $html .= '<ul>'; $html .= '<li>'; $html .= '<input type="radio" name="allrows" value="0" id="radio_allrows_0"'; if (isset($_GET['allrows']) && $_GET['allrows'] == 0) { $html .= ' checked="checked"'; } $html .= '/>'; $html .= '<label for ="radio_allrows_0">' . __('Dump some row(s)') . '</label>'; $html .= '<ul>'; $html .= '<li>'; $html .= '<label for="limit_to">' . __('Number of rows:') . '</label>'; $html .= '<input type="text" id="limit_to" name="limit_to" size="5" value="'; if (isset($_GET['limit_to'])) { $html .= htmlspecialchars($_GET['limit_to']); } elseif (!empty($unlim_num_rows)) { $html .= $unlim_num_rows; } else { $_table = new Table($table, $db); $html .= $_table->countRecords(); } $html .= '" onfocus="this.select()" />'; $html .= '</li>'; $html .= '<li>'; $html .= '<label for="limit_from">' . __('Row to begin at:') . '</label>'; $html .= '<input type="text" id="limit_from" name="limit_from" value="'; if (isset($_GET['limit_from'])) { $html .= htmlspecialchars($_GET['limit_from']); } else { $html .= '0'; } $html .= '" size="5" onfocus="this.select()" />'; $html .= '</li>'; $html .= '</ul>'; $html .= '</li>'; $html .= '<li>'; $html .= '<input type="radio" name="allrows" value="1" id="radio_allrows_1"'; if (! isset($_GET['allrows']) || $_GET['allrows'] == 1) { $html .= ' checked="checked"'; } $html .= '/>'; $html .= ' <label for="radio_allrows_1">' . __('Dump all rows') . '</label>'; $html .= '</li>'; $html .= '</ul>'; $html .= '</div>'; return $html; } /** * Prints Html For Export Options Quick Export * * @return string */ function PMA_getHtmlForExportOptionsQuickExport() { global $cfg; $html = '<div class="exportoptions" id="output_quick_export">'; $html .= '<h3>' . __('Output:') . '</h3>'; $html .= '<ul>'; $html .= '<li>'; $html .= '<input type="checkbox" name="quick_export_onserver" value="saveit" '; $html .= 'id="checkbox_quick_dump_onserver" '; $html .= PMA_exportCheckboxCheck('quick_export_onserver'); $html .= '/>'; $html .= '<label for="checkbox_quick_dump_onserver">'; $html .= sprintf( __('Save on server in the directory <b>%s</b>'), htmlspecialchars(PMA\libraries\Util::userDir($cfg['SaveDir'])) ); $html .= '</label>'; $html .= '</li>'; $html .= '<li>'; $html .= '<input type="checkbox" name="quick_export_onserver_overwrite" '; $html .= 'value="saveitover" id="checkbox_quick_dump_onserver_overwrite" '; $html .= PMA_exportCheckboxCheck('quick_export_onserver_overwrite'); $html .= '/>'; $html .= '<label for="checkbox_quick_dump_onserver_overwrite">'; $html .= __('Overwrite existing file(s)'); $html .= '</label>'; $html .= '</li>'; $html .= '</ul>'; $html .= '</div>'; return $html; } /** * Prints Html For Export Options Save Dir * * @return string */ function PMA_getHtmlForExportOptionsOutputSaveDir() { global $cfg; $html = '<li>'; $html .= '<input type="checkbox" name="onserver" value="saveit" '; $html .= 'id="checkbox_dump_onserver" '; $html .= PMA_exportCheckboxCheck('onserver'); $html .= '/>'; $html .= '<label for="checkbox_dump_onserver">'; $html .= sprintf( __('Save on server in the directory <b>%s</b>'), htmlspecialchars(PMA\libraries\Util::userDir($cfg['SaveDir'])) ); $html .= '</label>'; $html .= '</li>'; $html .= '<li>'; $html .= '<input type="checkbox" name="onserver_overwrite" value="saveitover"'; $html .= ' id="checkbox_dump_onserver_overwrite" '; $html .= PMA_exportCheckboxCheck('onserver_overwrite'); $html .= '/>'; $html .= '<label for="checkbox_dump_onserver_overwrite">'; $html .= __('Overwrite existing file(s)'); $html .= '</label>'; $html .= '</li>'; return $html; } /** * Prints Html For Export Options * * @param String $export_type Selected Export Type * * @return string */ function PMA_getHtmlForExportOptionsOutputFormat($export_type) { $html = '<li>'; $html .= '<label for="filename_template" class="desc">'; $html .= __('File name template:'); $trans = new Message; $trans->addMessage(__('@SERVER@ will become the server name')); if ($export_type == 'database' || $export_type == 'table') { $trans->addMessage(__(', @DATABASE@ will become the database name')); if ($export_type == 'table') { $trans->addMessage(__(', @TABLE@ will become the table name')); } } $msg = new Message( __( 'This value is interpreted using %1$sstrftime%2$s, ' . 'so you can use time formatting strings. ' . 'Additionally the following transformations will happen: %3$s. ' . 'Other text will be kept as is. See the %4$sFAQ%5$s for details.' ) ); $msg->addParam( '<a href="' . PMA_linkURL(PMA_getPHPDocLink('function.strftime.php')) . '" target="documentation" title="' . __('Documentation') . '">', false ); $msg->addParam('</a>', false); $msg->addParam($trans); $doc_url = PMA\libraries\Util::getDocuLink('faq', 'faq6-27'); $msg->addParam( '<a href="' . $doc_url . '" target="documentation">', false ); $msg->addParam('</a>', false); $html .= PMA\libraries\Util::showHint($msg); $html .= '</label>'; $html .= '<input type="text" name="filename_template" id="filename_template" '; $html .= ' value="'; if (isset($_GET['filename_template'])) { $html .= htmlspecialchars($_GET['filename_template']); } else { if ($export_type == 'database') { $html .= htmlspecialchars( $GLOBALS['PMA_Config']->getUserValue( 'pma_db_filename_template', $GLOBALS['cfg']['Export']['file_template_database'] ) ); } elseif ($export_type == 'table') { $html .= htmlspecialchars( $GLOBALS['PMA_Config']->getUserValue( 'pma_table_filename_template', $GLOBALS['cfg']['Export']['file_template_table'] ) ); } else { $html .= htmlspecialchars( $GLOBALS['PMA_Config']->getUserValue( 'pma_server_filename_template', $GLOBALS['cfg']['Export']['file_template_server'] ) ); } } $html .= '"'; $html .= '/>'; $html .= '<input type="checkbox" name="remember_template" '; $html .= 'id="checkbox_remember_template" '; $html .= PMA_exportCheckboxCheck('remember_file_template'); $html .= '/>'; $html .= '<label for="checkbox_remember_template">'; $html .= __('use this for future exports'); $html .= '</label>'; $html .= '</li>'; return $html; } /** * Prints Html For Export Options Charset * * @return string */ function PMA_getHtmlForExportOptionsOutputCharset() { global $cfg; $html = ' <li><label for="select_charset" class="desc">' . __('Character set of the file:') . '</label>' . "\n"; $html .= '<select id="select_charset" name="charset" size="1">'; foreach ($cfg['AvailableCharsets'] as $temp_charset) { $html .= '<option value="' . $temp_charset . '"'; if (isset($_GET['charset']) && ($_GET['charset'] != $temp_charset) ) { $html .= ''; } elseif ((empty($cfg['Export']['charset']) && $temp_charset == 'utf-8') || $temp_charset == $cfg['Export']['charset'] ) { $html .= ' selected="selected"'; } $html .= '>' . $temp_charset . '</option>'; } // end foreach $html .= '</select></li>'; return $html; } /** * Prints Html For Export Options Compression * * @return string */ function PMA_getHtmlForExportOptionsOutputCompression() { global $cfg; if (isset($_GET['compression'])) { $selected_compression = $_GET['compression']; } elseif (isset($cfg['Export']['compression'])) { $selected_compression = $cfg['Export']['compression']; } else { $selected_compression = "none"; } // Since separate files export works with ZIP only if (isset($cfg['Export']['as_separate_files']) && $cfg['Export']['as_separate_files'] ) { $selected_compression = "zip"; } $html = ""; // zip and gzip encode features $is_zip = ($cfg['ZipDump'] && @function_exists('gzcompress')); $is_gzip = ($cfg['GZipDump'] && @function_exists('gzencode')); if ($is_zip || $is_gzip) { $html .= '<li>'; $html .= '<label for="compression" class="desc">' . __('Compression:') . '</label>'; $html .= '<select id="compression" name="compression">'; $html .= '<option value="none">' . __('None') . '</option>'; if ($is_zip) { $html .= '<option value="zip" '; if ($selected_compression == "zip") { $html .= 'selected="selected"'; } $html .= '>' . __('zipped') . '</option>'; } if ($is_gzip) { $html .= '<option value="gzip" '; if ($selected_compression == "gzip") { $html .= 'selected="selected"'; } $html .= '>' . __('gzipped') . '</option>'; } $html .= '</select>'; $html .= '</li>'; } else { $html .= '<input type="hidden" name="compression" value="' . htmlspecialchars($selected_compression) . '" />'; } return $html; } /** * Prints Html For Export Options Radio * * @return string */ function PMA_getHtmlForExportOptionsOutputRadio() { $html = '<li>'; $html .= '<input type="radio" id="radio_view_as_text" ' . ' name="output_format" value="astext" '; if (isset($_GET['repopulate']) || $GLOBALS['cfg']['Export']['asfile'] == false) { $html .= 'checked="checked"'; } $html .= '/>'; $html .= '<label for="radio_view_as_text">' . __('View output as text') . '</label></li>'; return $html; } /** * Prints Html For Export Options Checkbox - Separate files * * @param String $export_type Selected Export Type * * @return string */ function PMA_getHtmlForExportOptionsOutputSeparateFiles($export_type) { $html = '<li>'; $html .= '<input type="checkbox" id="checkbox_as_separate_files" ' . PMA_exportCheckboxCheck('as_separate_files') . ' name="as_separate_files" value="' . $export_type . '" />'; $html .= '<label for="checkbox_as_separate_files">'; if ($export_type == 'server') { $html .= __('Export databases as separate files'); } elseif ($export_type == 'database') { $html .= __('Export tables as separate files'); } $html .= '</label></li>'; return $html; } /** * Prints Html For Export Options * * @param String $export_type Selected Export Type * * @return string */ function PMA_getHtmlForExportOptionsOutput($export_type) { global $cfg; $html = '<div class="exportoptions" id="output">'; $html .= '<h3>' . __('Output:') . '</h3>'; $html .= '<ul id="ul_output">'; $html .= '<li><input type="checkbox" id="btn_alias_config" '; if (isset($_SESSION['tmpval']['aliases']) && !PMA_emptyRecursive($_SESSION['tmpval']['aliases']) ) { $html .= 'checked="checked"'; } unset($_SESSION['tmpval']['aliases']); $html .= '/>'; $html .= '<label for="btn_alias_config">'; $html .= __('Rename exported databases/tables/columns'); $html .= '</label></li>'; if ($export_type != 'server') { $html .= '<li>'; $html .= '<input type="checkbox" name="lock_tables"'; $html .= ' value="something" id="checkbox_lock_tables"'; if (! isset($_GET['repopulate'])) { $html .= PMA_exportCheckboxCheck('lock_tables') . '/>'; } elseif (isset($_GET['lock_tables'])) { $html .= ' checked="checked"'; } $html .= '<label for="checkbox_lock_tables">'; $html .= sprintf(__('Use %s statement'), '<code>LOCK TABLES</code>'); $html .= '</label></li>'; } $html .= '<li>'; $html .= '<input type="radio" name="output_format" value="sendit" '; $html .= 'id="radio_dump_asfile" '; if (!isset($_GET['repopulate'])) { $html .= PMA_exportCheckboxCheck('asfile'); } $html .= '/>'; $html .= '<label for="radio_dump_asfile">' . __('Save output to a file') . '</label>'; $html .= '<ul id="ul_save_asfile">'; if (isset($cfg['SaveDir']) && !empty($cfg['SaveDir'])) { $html .= PMA_getHtmlForExportOptionsOutputSaveDir(); } $html .= PMA_getHtmlForExportOptionsOutputFormat($export_type); // charset of file if ($GLOBALS['PMA_recoding_engine'] != PMA_CHARSET_NONE) { $html .= PMA_getHtmlForExportOptionsOutputCharset(); } // end if $html .= PMA_getHtmlForExportOptionsOutputCompression(); if ($export_type == 'server' || $export_type == 'database' ) { $html .= PMA_getHtmlForExportOptionsOutputSeparateFiles($export_type); } $html .= '</ul>'; $html .= '</li>'; $html .= PMA_getHtmlForExportOptionsOutputRadio(); $html .= '</ul>'; /* * @todo use sprintf() for better translatability, while keeping the * <label></label> principle (for screen readers) */ $html .= '<label for="maxsize">' . __('Skip tables larger than') . '</label>'; $html .= '<input type="text" id="maxsize" name="maxsize" size="4">' . __('MiB'); $html .= '</div>'; return $html; } /** * Prints Html For Export Options * * @param String $export_type Selected Export Type * @param String $db Selected DB * @param String $table Selected Table * @param String $multi_values Export selection * @param String $num_tables number of tables * @param ExportPlugin[] $export_list Export List * @param String $unlim_num_rows Number of Rows * * @return string */ function PMA_getHtmlForExportOptions( $export_type, $db, $table, $multi_values, $num_tables, $export_list, $unlim_num_rows ) { global $cfg; $html = PMA_getHtmlForExportOptionsMethod(); $html .= PMA_getHtmlForExportOptionsFormatDropdown($export_list); $html .= PMA_getHtmlForExportOptionsSelection($export_type, $multi_values); $tableLength = mb_strlen($table); $_table = new Table($table, $db); if ($tableLength && empty($num_tables) && ! $_table->isMerge()) { $html .= PMA_getHtmlForExportOptionsRows($db, $table, $unlim_num_rows); } if (isset($cfg['SaveDir']) && !empty($cfg['SaveDir'])) { $html .= PMA_getHtmlForExportOptionsQuickExport(); } $html .= PMA_getHtmlForAliasModalDialog($db, $table); $html .= PMA_getHtmlForExportOptionsOutput($export_type); $html .= PMA_getHtmlForExportOptionsFormat($export_list); return $html; } /** * Prints Html For Alias Modal Dialog * * @param String $db Selected DB * @param String $table Selected Table * * @return string */ function PMA_getHtmlForAliasModalDialog($db = '', $table = '') { if (isset($_SESSION['tmpval']['aliases'])) { $aliases = $_SESSION['tmpval']['aliases']; } // In case of server export, the following list of // databases are not shown in the list. $dbs_not_allowed = array( 'information_schema', 'performance_schema', 'mysql' ); // Fetch Columns info // Server export does not have db set. $title = __('Rename exported databases/tables/columns'); if (empty($db)) { $databases = $GLOBALS['dbi']->getColumnsFull( null, null, null, $GLOBALS['userlink'] ); foreach ($dbs_not_allowed as $db) { unset($databases[$db]); } // Database export does not have table set. } elseif (empty($table)) { $tables = $GLOBALS['dbi']->getColumnsFull( $db, null, null, $GLOBALS['userlink'] ); $databases = array($db => $tables); // Table export } else { $columns = $GLOBALS['dbi']->getColumnsFull( $db, $table, null, $GLOBALS['userlink'] ); $databases = array( $db => array( $table => $columns ) ); } $html = '<div id="alias_modal" class="hide" title="' . $title . '">'; $db_html = '<label class="col-2">' . __('Select database') . ': ' . '</label><select id="db_alias_select">'; $table_html = '<label class="col-2">' . __('Select table') . ': </label>'; $first_db = true; $table_input_html = $db_input_html = ''; foreach ($databases as $db => $tables) { $val = ''; if (!empty($aliases[$db]['alias'])) { $val = htmlspecialchars($aliases[$db]['alias']); } $db = htmlspecialchars($db); $name_attr = 'aliases[' . $db . '][alias]'; $id_attr = substr(md5($name_attr), 0, 12); $class = 'hide'; if ($first_db) { $first_db = false; $class = ''; $db_input_html = '<label class="col-2" for="' . $id_attr . '">' . __('New database name') . ': </label>'; } $db_input_html .= '<input type="text" name="' . $name_attr . '" ' . 'placeholder="' . $db . ' alias" class="' . $class . '" ' . 'id="' . $id_attr . '" value="' . $val . '" disabled="disabled"/>'; $db_html .= '<option value="' . $id_attr . '">' . $db . '</option>'; $table_html .= '<span id="' . $id_attr . '_tables" class="' . $class . '">'; $table_html .= '<select id="' . $id_attr . '_tables_select" ' . 'class="table_alias_select">'; $first_tbl = true; $col_html = ''; foreach ($tables as $table => $columns) { $val = ''; if (!empty($aliases[$db]['tables'][$table]['alias'])) { $val = htmlspecialchars($aliases[$db]['tables'][$table]['alias']); } $table = htmlspecialchars($table); $name_attr = 'aliases[' . $db . '][tables][' . $table . '][alias]'; $id_attr = substr(md5($name_attr), 0, 12); $class = 'hide'; if ($first_tbl) { $first_tbl = false; $class = ''; $table_input_html = '<label class="col-2" for="' . $id_attr . '">' . __('New table name') . ': </label>'; } $table_input_html .= '<input type="text" value="' . $val . '" ' . 'name="' . $name_attr . '" id="' . $id_attr . '" ' . 'placeholder="' . $table . ' alias" class="' . $class . '" ' . 'disabled="disabled"/>'; $table_html .= '<option value="' . $id_attr . '">' . $table . '</option>'; $col_html .= '<table id="' . $id_attr . '_cols" class="' . $class . '" width="100%">'; $col_html .= '<thead><tr><th>' . __('Old column name') . '</th>' . '<th>' . __('New column name') . '</th></tr></thead><tbody>'; $class = 'odd'; foreach ($columns as $column => $col_def) { $val = ''; if (!empty($aliases[$db]['tables'][$table]['columns'][$column])) { $val = htmlspecialchars( $aliases[$db]['tables'][$table]['columns'][$column] ); } $column = htmlspecialchars($column); $name_attr = 'aliases[' . $db . '][tables][' . $table . '][columns][' . $column . ']'; $id_attr = substr(md5($name_attr), 0, 12); $col_html .= '<tr class="' . $class . '">'; $col_html .= '<th><label for="' . $id_attr . '">' . $column . '</label></th>'; $col_html .= '<td><dummy_inp type="text" name="' . $name_attr . '" ' . 'id="' . $id_attr . '" placeholder="' . $column . ' alias" value="' . $val . '"></dummy_inp></td>'; $col_html .= '</tr>'; $class = $class === 'odd' ? 'even' : 'odd'; } $col_html .= '</tbody></table>'; } $table_html .= '</select>'; $table_html .= $table_input_html . '<hr/>' . $col_html . '</span>'; } $db_html .= '</select>'; $html .= $db_html; $html .= $db_input_html . '<hr/>'; $html .= $table_html; $html .= '</div>'; return $html; } /** * Gets HTML to display export dialogs * * @param String $export_type export type: server|database|table * @param String $db selected DB * @param String $table selected table * @param String $sql_query SQL query * @param Int $num_tables number of tables * @param Int $unlim_num_rows unlimited number of rows * @param String $multi_values selector options * * @return string $html */ function PMA_getExportDisplay( $export_type, $db, $table, $sql_query, $num_tables, $unlim_num_rows, $multi_values ) { $cfgRelation = PMA_getRelationsParam(); if (isset($_REQUEST['single_table'])) { $GLOBALS['single_table'] = $_REQUEST['single_table']; } include_once './libraries/file_listing.lib.php'; include_once './libraries/plugin_interface.lib.php'; include_once './libraries/display_export.lib.php'; /* Scan for plugins */ /* @var $export_list ExportPlugin[] */ $export_list = PMA_getPlugins( "export", 'libraries/plugins/export/', array( 'export_type' => $export_type, 'single_table' => isset($GLOBALS['single_table']) ) ); /* Fail if we didn't find any plugin */ if (empty($export_list)) { Message::error( __('Could not load export plugins, please check your installation!') )->display(); exit; } $html = PMA_getHtmlForExportOptionHeader($export_type, $db, $table); if ($cfgRelation['exporttemplateswork']) { $html .= PMA_getHtmlForExportTemplateLoading($export_type); } $html .= '<form method="post" action="export.php" ' . ' name="dump" class="disableAjax">'; //output Hidden Inputs $single_table_str = isset($GLOBALS['single_table']) ? $GLOBALS['single_table'] : ''; $html .= PMA_getHtmlForHiddenInput( $export_type, $db, $table, $single_table_str, $sql_query ); //output Export Options $html .= PMA_getHtmlForExportOptions( $export_type, $db, $table, $multi_values, $num_tables, $export_list, $unlim_num_rows ); $html .= '</form>'; return $html; } /** * Handles export template actions * * @param array $cfgRelation Relation configuration * * @return void */ function PMA_handleExportTemplateActions($cfgRelation) { if (isset($_REQUEST['templateId'])) { $id = $GLOBALS['dbi']->escapeString($_REQUEST['templateId']); } else { $id = ''; } $templateTable = PMA\libraries\Util::backquote($cfgRelation['db']) . '.' . PMA\libraries\Util::backquote($cfgRelation['export_templates']); $user = $GLOBALS['dbi']->escapeString($GLOBALS['cfg']['Server']['user']); switch ($_REQUEST['templateAction']) { case 'create': $query = "INSERT INTO " . $templateTable . "(" . " `username`, `export_type`," . " `template_name`, `template_data`" . ") VALUES (" . "'" . $user . "', " . "'" . $GLOBALS['dbi']->escapeString($_REQUEST['exportType']) . "', '" . $GLOBALS['dbi']->escapeString($_REQUEST['templateName']) . "', '" . $GLOBALS['dbi']->escapeString($_REQUEST['templateData']) . "');"; break; case 'load': $query = "SELECT `template_data` FROM " . $templateTable . " WHERE `id` = " . $id . " AND `username` = '" . $user . "'"; break; case 'update': $query = "UPDATE " . $templateTable . " SET `template_data` = " . "'" . $GLOBALS['dbi']->escapeString($_REQUEST['templateData']) . "'" . " WHERE `id` = " . $id . " AND `username` = '" . $user . "'"; break; case 'delete': $query = "DELETE FROM " . $templateTable . " WHERE `id` = " . $id . " AND `username` = '" . $user . "'"; break; default: $query = ''; break; } $result = PMA_queryAsControlUser($query, false); $response = PMA\libraries\Response::getInstance(); if (! $result) { $error = $GLOBALS['dbi']->getError($GLOBALS['controllink']); $response->setRequestStatus(false); $response->addJSON('message', $error); exit; } $response->setRequestStatus(true); if ('create' == $_REQUEST['templateAction']) { $response->addJSON( 'data', PMA_getOptionsForExportTemplates($_REQUEST['exportType']) ); } elseif ('load' == $_REQUEST['templateAction']) { $data = null; while ($row = $GLOBALS['dbi']->fetchAssoc( $result, $GLOBALS['controllink'] )) { $data = $row['template_data']; } $response->addJSON('data', $data); } $GLOBALS['dbi']->freeResult($result); }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
bfShapeFiles | Folder | 0755 |
|
|
config | Folder | 0755 |
|
|
controllers | Folder | 0755 |
|
|
dbi | Folder | 0755 |
|
|
di | Folder | 0755 |
|
|
engines | Folder | 0755 |
|
|
gis | Folder | 0755 |
|
|
navigation | Folder | 0755 |
|
|
plugins | Folder | 0755 |
|
|
properties | Folder | 0755 |
|
|
rte | Folder | 0755 |
|
|
sql-parser | Folder | 0755 |
|
|
Advisor.php | File | 15.13 KB | 0644 |
|
Config.php | File | 54.7 KB | 0644 |
|
Console.php | File | 14.82 KB | 0644 |
|
DatabaseInterface.php | File | 95.6 KB | 0644 |
|
DbList.php | File | 1.9 KB | 0644 |
|
DbQbe.php | File | 68.87 KB | 0644 |
|
DbSearch.php | File | 17.21 KB | 0644 |
|
DisplayResults.php | File | 206 KB | 0644 |
|
Error.php | File | 12.7 KB | 0644 |
|
ErrorHandler.php | File | 16.48 KB | 0644 |
|
File.php | File | 18.82 KB | 0644 |
|
Font.php | File | 4.24 KB | 0644 |
|
Footer.php | File | 10.52 KB | 0644 |
|
Header.php | File | 25.34 KB | 0644 |
|
Index.php | File | 23.79 KB | 0644 |
|
IndexColumn.php | File | 4.46 KB | 0644 |
|
Language.php | File | 4.27 KB | 0644 |
|
LanguageManager.php | File | 20.75 KB | 0644 |
|
Linter.php | File | 5.02 KB | 0644 |
|
ListAbstract.php | File | 3.15 KB | 0644 |
|
ListDatabase.php | File | 4.62 KB | 0644 |
|
Menu.php | File | 21.14 KB | 0644 |
|
Message.php | File | 18.67 KB | 0644 |
|
OutputBuffering.php | File | 3.59 KB | 0644 |
|
PDF.php | File | 3.94 KB | 0644 |
|
Partition.php | File | 7.26 KB | 0644 |
|
Psr4Autoloader.php | File | 4.85 KB | 0644 |
|
RecentFavoriteTable.php | File | 11.78 KB | 0644 |
|
Response.php | File | 12.61 KB | 0644 |
|
SavedSearches.php | File | 11.67 KB | 0644 |
|
Scripts.php | File | 7.38 KB | 0644 |
|
ServerStatusData.php | File | 15.72 KB | 0644 |
|
StorageEngine.php | File | 13.61 KB | 0644 |
|
SubPartition.php | File | 3.52 KB | 0644 |
|
SysInfo.php | File | 799 B | 0644 |
|
SysInfoLinux.php | File | 1.92 KB | 0644 |
|
SysInfoSunOS.php | File | 1.86 KB | 0644 |
|
SysInfoWINNT.php | File | 3.08 KB | 0644 |
|
SystemDatabase.php | File | 3.66 KB | 0644 |
|
Table.php | File | 88.12 KB | 0644 |
|
Template.php | File | 4.45 KB | 0644 |
|
Theme.php | File | 11.34 KB | 0644 |
|
ThemeManager.php | File | 12.91 KB | 0644 |
|
Tracker.php | File | 30.35 KB | 0644 |
|
Types.php | File | 6.08 KB | 0644 |
|
TypesMySQL.php | File | 17.26 KB | 0644 |
|
Util.php | File | 172.46 KB | 0644 |
|
VersionInformation.php | File | 7.87 KB | 0644 |
|
ZipFile.php | File | 6.63 KB | 0644 |
|
advisor.lib.php | File | 1.6 KB | 0644 |
|
advisory_rules.txt | File | 25.94 KB | 0644 |
|
autoloader.php | File | 450 B | 0644 |
|
bookmark.lib.php | File | 8.5 KB | 0644 |
|
browse_foreigners.lib.php | File | 9.83 KB | 0644 |
|
central_columns.lib.php | File | 49.38 KB | 0644 |
|
charset_conversion.lib.php | File | 3.54 KB | 0644 |
|
check_user_privileges.lib.php | File | 10.65 KB | 0644 |
|
cleanup.lib.php | File | 1.29 KB | 0644 |
|
common.inc.php | File | 34.38 KB | 0644 |
|
config.default.php | File | 66.5 KB | 0644 |
|
config.values.php | File | 10.17 KB | 0644 |
|
core.lib.php | File | 29.94 KB | 0644 |
|
create_addfield.lib.php | File | 15.68 KB | 0644 |
|
database_interface.inc.php | File | 2.63 KB | 0644 |
|
db_common.inc.php | File | 3.12 KB | 0644 |
|
db_designer.lib.php | File | 10.4 KB | 0644 |
|
db_table_exists.lib.php | File | 3.21 KB | 0644 |
|
display_change_password.lib.php | File | 5.45 KB | 0644 |
|
display_create_table.lib.php | File | 1.53 KB | 0644 |
|
display_export.lib.php | File | 38.11 KB | 0644 |
|
display_git_revision.lib.php | File | 3.04 KB | 0644 |
|
display_import.lib.php | File | 24.34 KB | 0644 |
|
display_import_ajax.lib.php | File | 3.13 KB | 0644 |
|
display_select_lang.lib.php | File | 2.36 KB | 0644 |
|
error.inc.php | File | 1.21 KB | 0644 |
|
error_report.lib.php | File | 10.25 KB | 0644 |
|
export.lib.php | File | 35.16 KB | 0644 |
|
file_listing.lib.php | File | 2.37 KB | 0644 |
|
iconv_wrapper.lib.php | File | 3.88 KB | 0644 |
|
import.lib.php | File | 50.64 KB | 0644 |
|
index.lib.php | File | 1.37 KB | 0644 |
|
information_schema_relations.lib.php | File | 10.95 KB | 0644 |
|
insert_edit.lib.php | File | 112.79 KB | 0644 |
|
ip_allow_deny.lib.php | File | 9.35 KB | 0644 |
|
js_escape.lib.php | File | 4.43 KB | 0644 |
|
kanji-encoding.lib.php | File | 4.46 KB | 0644 |
|
language_stats.inc.php | File | 1.45 KB | 0644 |
|
logging.lib.php | File | 521 B | 0644 |
|
mime.lib.php | File | 704 B | 0644 |
|
mult_submits.inc.php | File | 10.64 KB | 0644 |
|
mult_submits.lib.php | File | 20.44 KB | 0644 |
|
mysql_charsets.inc.php | File | 4.09 KB | 0644 |
|
mysql_charsets.lib.php | File | 10.47 KB | 0644 |
|
mysql_relations.lib.php | File | 5.12 KB | 0644 |
|
normalization.lib.php | File | 33.98 KB | 0644 |
|
opendocument.lib.php | File | 7.94 KB | 0644 |
|
operations.lib.php | File | 73.64 KB | 0644 |
|
parse_analyze.lib.php | File | 2.12 KB | 0644 |
|
plugin_interface.lib.php | File | 19.69 KB | 0644 |
|
plugin_interface.lib.php.bak | File | 19.69 KB | 0644 |
|
pmd_common.php | File | 24.2 KB | 0644 |
|
relation.lib.php | File | 68.41 KB | 0644 |
|
relation_cleanup.lib.php | File | 13.84 KB | 0644 |
|
replication.inc.php | File | 8.82 KB | 0644 |
|
replication_gui.lib.php | File | 37.45 KB | 0644 |
|
sanitizing.lib.php | File | 6.3 KB | 0644 |
|
select_server.lib.php | File | 3.4 KB | 0644 |
|
server_common.inc.php | File | 1.22 KB | 0644 |
|
server_common.lib.php | File | 1.92 KB | 0644 |
|
server_privileges.lib.php | File | 179.22 KB | 0644 |
|
server_status.lib.php | File | 9.92 KB | 0644 |
|
server_status_advisor.lib.php | File | 1.89 KB | 0644 |
|
server_status_monitor.lib.php | File | 26.22 KB | 0644 |
|
server_status_processes.lib.php | File | 9.57 KB | 0644 |
|
server_status_queries.lib.php | File | 4.86 KB | 0644 |
|
server_status_variables.lib.php | File | 28.95 KB | 0644 |
|
server_user_groups.lib.php | File | 12.8 KB | 0644 |
|
server_users.lib.php | File | 1.35 KB | 0644 |
|
session.inc.php | File | 5.22 KB | 0644 |
|
session.lib.php | File | 735 B | 0644 |
|
special_schema_links.lib.php | File | 17.51 KB | 0644 |
|
sql.lib.php | File | 77.51 KB | 0644 |
|
sql.lib.php.bak | File | 77.51 KB | 0644 |
|
sql_query_form.lib.php | File | 15.71 KB | 0644 |
|
string.lib.php | File | 800 B | 0644 |
|
stringMb.lib.php | File | 1.86 KB | 0644 |
|
stringNative.lib.php | File | 6.82 KB | 0644 |
|
sysinfo.lib.php | File | 1.34 KB | 0644 |
|
tbl_columns_definition_form.inc.php | File | 13.55 KB | 0644 |
|
tbl_common.inc.php | File | 1.3 KB | 0644 |
|
tbl_info.inc.php | File | 3.54 KB | 0644 |
|
tbl_partition_definition.inc.php | File | 5.55 KB | 0644 |
|
tracking.lib.php | File | 54.93 KB | 0644 |
|
transformations.lib.php | File | 14.63 KB | 0644 |
|
url_generating.lib.php | File | 6.77 KB | 0644 |
|
user_preferences.inc.php | File | 2.38 KB | 0644 |
|
user_preferences.lib.php | File | 8.17 KB | 0644 |
|
util.lib.php | File | 749 B | 0644 |
|
vendor_config.php | File | 2.49 KB | 0644 |
|
zip_extension.lib.php | File | 5.38 KB | 0644 |
|