Server IP : 85.214.239.14 / Your IP : 3.145.65.133 Web Server : Apache/2.4.62 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Tue Jan 9 19:45:01 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.18 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : OFF | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /var/www/wordpress/phpMyAdmin/ |
Upload File : |
<?php /* vim: set expandtab sw=4 ts=4 sts=4: */ /** * Displays form for editing and inserting new table rows * * @package PhpMyAdmin */ declare(strict_types=1); use PhpMyAdmin\Config\PageSettings; use PhpMyAdmin\DatabaseInterface; use PhpMyAdmin\InsertEdit; use PhpMyAdmin\Relation; use PhpMyAdmin\Response; use PhpMyAdmin\Url; use PhpMyAdmin\Util; if (! defined('ROOT_PATH')) { define('ROOT_PATH', __DIR__ . DIRECTORY_SEPARATOR); } global $cfg, $containerBuilder, $db, $table, $text_dir; require_once ROOT_PATH . 'libraries/common.inc.php'; /** @var Response $response */ $response = $containerBuilder->get(Response::class); /** @var DatabaseInterface $dbi */ $dbi = $containerBuilder->get(DatabaseInterface::class); PageSettings::showGroup('Edit'); /** * Ensures db and table are valid, else moves to the "parent" script */ require_once ROOT_PATH . 'libraries/db_table_exists.inc.php'; /** @var InsertEdit $insertEdit */ $insertEdit = $containerBuilder->get('insert_edit'); /** * Determine whether Insert or Edit and set global variables */ list( $insert_mode, $where_clause, $where_clause_array, $where_clauses, $result, $rows, $found_unique_key, $after_insert ) = $insertEdit->determineInsertOrEdit( isset($where_clause) ? $where_clause : null, $db, $table ); // Increase number of rows if unsaved rows are more if (! empty($unsaved_values) && count($rows) < count($unsaved_values)) { $rows = array_fill(0, count($unsaved_values), false); } /** * Defines the url to return to in case of error in a sql statement * (at this point, $GLOBALS['goto'] will be set but could be empty) */ if (empty($GLOBALS['goto'])) { if (strlen($table) > 0) { // avoid a problem (see bug #2202709) $GLOBALS['goto'] = 'tbl_sql.php'; } else { $GLOBALS['goto'] = 'db_sql.php'; } } $_url_params = $insertEdit->getUrlParameters($db, $table); $err_url = $GLOBALS['goto'] . Url::getCommon($_url_params); unset($_url_params); $comments_map = $insertEdit->getCommentsMap($db, $table); /** * START REGULAR OUTPUT */ $header = $response->getHeader(); $scripts = $header->getScripts(); $scripts->addFile('makegrid.js'); $scripts->addFile('sql.js'); $scripts->addFile('table/change.js'); $scripts->addFile('vendor/jquery/additional-methods.js'); $scripts->addFile('gis_data_editor.js'); /** * Displays the query submitted and its result * * $disp_message come from tbl_replace.php */ if (! empty($disp_message)) { $response->addHTML(Util::getMessage($disp_message, null)); } $table_columns = $insertEdit->getTableColumns($db, $table); // retrieve keys into foreign fields, if any /** @var Relation $relation */ $relation = $containerBuilder->get('relation'); $foreigners = $relation->getForeigners($db, $table); // Retrieve form parameters for insert/edit form $_form_params = $insertEdit->getFormParametersForInsertForm( $db, $table, $where_clauses, $where_clause_array, $err_url ); /** * Displays the form */ // autocomplete feature of IE kills the "onchange" event handler and it // must be replaced by the "onpropertychange" one in this case $chg_evt_handler = 'onchange'; // Had to put the URI because when hosted on an https server, // some browsers send wrongly this form to the http server. $html_output = ''; // Set if we passed the first timestamp field $timestamp_seen = false; $columns_cnt = count($table_columns); $tabindex = 0; $tabindex_for_function = +3000; $tabindex_for_null = +6000; $tabindex_for_value = 0; $o_rows = 0; $biggest_max_file_size = 0; $url_params['db'] = $db; $url_params['table'] = $table; $url_params = $insertEdit->urlParamsInEditMode( $url_params, $where_clause_array ); $has_blob_field = false; foreach ($table_columns as $column) { if ($insertEdit->isColumn( $column, [ 'blob', 'tinyblob', 'mediumblob', 'longblob', ] )) { $has_blob_field = true; break; } } //Insert/Edit form //If table has blob fields we have to disable ajax. $html_output .= $insertEdit->getHtmlForInsertEditFormHeader($has_blob_field, $is_upload); $html_output .= Url::getHiddenInputs($_form_params); $titles['Browse'] = Util::getIcon('b_browse', __('Browse foreign values')); // user can toggle the display of Function column and column types // (currently does not work for multi-edits) if (! $cfg['ShowFunctionFields'] || ! $cfg['ShowFieldTypesInDataEditView']) { $html_output .= __('Show'); } if (! $cfg['ShowFunctionFields']) { $html_output .= $insertEdit->showTypeOrFunction('function', $url_params, false); } if (! $cfg['ShowFieldTypesInDataEditView']) { $html_output .= $insertEdit->showTypeOrFunction('type', $url_params, false); } $GLOBALS['plugin_scripts'] = []; foreach ($rows as $row_id => $current_row) { if (empty($current_row)) { $current_row = []; } $jsvkey = $row_id; $vkey = '[multi_edit][' . $jsvkey . ']'; $current_result = (isset($result) && is_array($result) && isset($result[$row_id]) ? $result[$row_id] : $result); $repopulate = []; $checked = true; if (isset($unsaved_values[$row_id])) { $repopulate = $unsaved_values[$row_id]; $checked = false; } if ($insert_mode && $row_id > 0) { $html_output .= $insertEdit->getHtmlForIgnoreOption($row_id, $checked); } $html_output .= $insertEdit->getHtmlForInsertEditRow( $url_params, $table_columns, $comments_map, $timestamp_seen, $current_result, $chg_evt_handler, $jsvkey, $vkey, $insert_mode, $current_row, $o_rows, $tabindex, $columns_cnt, $is_upload, $tabindex_for_function, $foreigners, $tabindex_for_null, $tabindex_for_value, $table, $db, $row_id, $titles, $biggest_max_file_size, $text_dir, $repopulate, $where_clause_array ); } // end foreach on multi-edit $scripts->addFiles($GLOBALS['plugin_scripts']); unset($unsaved_values, $checked, $repopulate, $GLOBALS['plugin_scripts']); if (! isset($after_insert)) { $after_insert = 'back'; } //action panel $html_output .= $insertEdit->getActionsPanel( $where_clause, $after_insert, $tabindex, $tabindex_for_value, $found_unique_key ); if ($biggest_max_file_size > 0) { $html_output .= ' ' . Util::generateHiddenMaxFileSize( $biggest_max_file_size ) . "\n"; } $html_output .= '</form>'; $html_output .= $insertEdit->getHtmlForGisEditor(); // end Insert/Edit form if ($insert_mode) { //Continue insertion form $html_output .= $insertEdit->getContinueInsertionForm( $table, $db, $where_clause_array, $err_url ); } $response->addHTML($html_output);