// parse sql query include_once 'libraries/parse_analyze.lib.php'; list($analyzed_sql_results, $db, $table) = PMA_parseAnalyze($sql_query, $db); // @todo: possibly refactor extract($analyzed_sql_results); $html_output .= PMA_executeQueryAndGetQueryResponse($analyzed_sql_results, false, $db, $table, null, $_REQUEST['sql_query'], null, null, null, null, $goto, $pmaThemeImage, null, null, null, $sql_query, null, null); } $response = PMA\libraries\Response::getInstance(); $response->addJSON('ajax_reload', $ajax_reload); $response->addHTML($html_output); exit; } else { if ($result) { // Save a Bookmark with more than one queries (if Bookmark label given). if (!empty($_POST['bkm_label']) && !empty($import_text)) { $cfgBookmark = Bookmark::getParams(); PMA_storeTheQueryAsBookmark($db, $cfgBookmark['user'], $_REQUEST['sql_query'], $_POST['bkm_label'], isset($_POST['bkm_replace']) ? $_POST['bkm_replace'] : null); } $response = PMA\libraries\Response::getInstance(); $response->setRequestStatus(true); $response->addJSON('message', PMA\libraries\Message::success($msg)); $response->addJSON('sql_query', PMA\libraries\Util::getMessage($msg, $sql_query, 'success')); } else { if ($result == false) { $response = PMA\libraries\Response::getInstance(); $response->setRequestStatus(false); $response->addJSON('message', PMA\libraries\Message::error($msg)); } else { $active_page = $goto; include '' . $goto; }
/** * Tests for Bookmark::save() * * @return void */ public function testSave() { $bookmarkData = array('bkm_database' => 'phpmyadmin', 'bkm_user' => 'root', 'bkm_sql_query' => 'SELECT "phpmyadmin"', 'bkm_label' => 'bookmark1'); $bookmark = Bookmark::createBookmark($bookmarkData); $this->assertfalse($bookmark->save()); }
/** * Function to display results when the executed query returns non empty results * * @param object $result executed query results * @param array $analyzed_sql_results analysed sql results * @param string $db current database * @param string $table current table * @param string $message message to show * @param array $sql_data sql data * @param DisplayResults $displayResultsObject Instance of DisplayResults * @param string $pmaThemeImage uri of the theme image * @param int $unlim_num_rows unlimited number of rows * @param int $num_rows number of rows * @param string $disp_query display query * @param string $disp_message display message * @param array $profiling_results profiling results * @param string $query_type query type * @param array|null $selectedTables array of table names selected * from the database structure page, for * an action like check table, * optimize table, analyze table or * repair table * @param string $sql_query sql query * @param string $complete_query complete sql query * * @return string html */ function PMA_getQueryResponseForResultsReturned($result, $analyzed_sql_results, $db, $table, $message, $sql_data, $displayResultsObject, $pmaThemeImage, $unlim_num_rows, $num_rows, $disp_query, $disp_message, $profiling_results, $query_type, $selectedTables, $sql_query, $complete_query) { // If we are retrieving the full value of a truncated field or the original // value of a transformed field, show it here if (isset($_REQUEST['grid_edit']) && $_REQUEST['grid_edit'] == true) { PMA_sendResponseForGridEdit($result); // script has exited at this point } // Gets the list of fields properties if (isset($result) && $result) { $fields_meta = $GLOBALS['dbi']->getFieldsMeta($result); } // Should be initialized these parameters before parsing $showtable = isset($showtable) ? $showtable : null; $url_query = isset($url_query) ? $url_query : null; $response = PMA\libraries\Response::getInstance(); $header = $response->getHeader(); $scripts = $header->getScripts(); // hide edit and delete links: // - for information_schema // - if the result set does not contain all the columns of a unique key // (unless this is an updatable view) $updatableView = false; $statement = $analyzed_sql_results['statement']; if ($statement instanceof SqlParser\Statements\SelectStatement) { if (!empty($statement->expr)) { if ($statement->expr[0]->expr === '*') { $_table = new Table($table, $db); $updatableView = $_table->isUpdatableView(); } } } $has_unique = PMA_resultSetContainsUniqueKey($db, $table, $fields_meta); $just_one_table = PMA_resultSetHasJustOneTable($fields_meta); $editable = ($has_unique || $GLOBALS['cfg']['RowActionLinksWithoutUnique'] || $updatableView) && $just_one_table; $displayParts = array('edit_lnk' => $displayResultsObject::UPDATE_ROW, 'del_lnk' => $displayResultsObject::DELETE_ROW, 'sort_lnk' => '1', 'nav_bar' => '1', 'bkm_form' => '1', 'text_btn' => '0', 'pview_lnk' => '1'); if (!empty($table) && ($GLOBALS['dbi']->isSystemSchema($db) || !$editable)) { $displayParts = array('edit_lnk' => $displayResultsObject::NO_EDIT_OR_DELETE, 'del_lnk' => $displayResultsObject::NO_EDIT_OR_DELETE, 'sort_lnk' => '1', 'nav_bar' => '1', 'bkm_form' => '1', 'text_btn' => '1', 'pview_lnk' => '1'); } if (isset($_REQUEST['printview']) && $_REQUEST['printview'] == '1') { $displayParts = array('edit_lnk' => $displayResultsObject::NO_EDIT_OR_DELETE, 'del_lnk' => $displayResultsObject::NO_EDIT_OR_DELETE, 'sort_lnk' => '0', 'nav_bar' => '0', 'bkm_form' => '0', 'text_btn' => '0', 'pview_lnk' => '0'); } if (isset($_REQUEST['table_maintenance'])) { $scripts->addFile('makegrid.js'); $scripts->addFile('sql.js'); $table_maintenance_html = ''; if (isset($message)) { $message = Message::success($message); $table_maintenance_html = PMA\libraries\Util::getMessage($message, $GLOBALS['sql_query'], 'success'); } $table_maintenance_html .= PMA_getHtmlForSqlQueryResultsTable($displayResultsObject, $pmaThemeImage, $url_query, $displayParts, false, $unlim_num_rows, $num_rows, $showtable, $result, $analyzed_sql_results); if (empty($sql_data) || ($sql_data['valid_queries'] = 1)) { $response->addHTML($table_maintenance_html); exit; } } if (!isset($_REQUEST['printview']) || $_REQUEST['printview'] != '1') { $scripts->addFile('makegrid.js'); $scripts->addFile('sql.js'); unset($GLOBALS['message']); //we don't need to buffer the output in getMessage here. //set a global variable and check against it in the function $GLOBALS['buffer_message'] = false; } $previous_update_query_html = PMA_getHtmlForPreviousUpdateQuery(isset($disp_query) ? $disp_query : null, $GLOBALS['cfg']['ShowSQL'], isset($sql_data) ? $sql_data : null, isset($disp_message) ? $disp_message : null); $profiling_chart_html = PMA_getHtmlForProfilingChart($url_query, $db, isset($profiling_results) ? $profiling_results : array()); $missing_unique_column_msg = PMA_getMessageIfMissingColumnIndex($table, $db, $editable, $has_unique); $bookmark_created_msg = PMA_getBookmarkCreatedMessage(); $table_html = PMA_getHtmlForSqlQueryResultsTable($displayResultsObject, $pmaThemeImage, $url_query, $displayParts, $editable, $unlim_num_rows, $num_rows, $showtable, $result, $analyzed_sql_results); $indexes_problems_html = PMA_getHtmlForIndexesProblems(isset($query_type) ? $query_type : null, isset($selectedTables) ? $selectedTables : null, $db); $cfgBookmark = Bookmark::getParams(); if ($cfgBookmark) { $bookmark_support_html = PMA_getHtmlForBookmark($displayParts, $cfgBookmark, $sql_query, $db, $table, isset($complete_query) ? $complete_query : $sql_query, $cfgBookmark['user']); } else { $bookmark_support_html = ''; } $html_output = isset($table_maintenance_html) ? $table_maintenance_html : ''; $html_output .= PMA_getHtmlForSqlQueryResults($previous_update_query_html, $profiling_chart_html, $missing_unique_column_msg, $bookmark_created_msg, $table_html, $indexes_problems_html, $bookmark_support_html); return $html_output; }
/** * Renders the console * * @access public * @return string */ public function getDisplay() { if (!$this->_isAjax && $this->_isEnabled) { $cfgBookmark = Bookmark::getParams(); $image = Util::getImage('console.png', __('SQL Query Console')); $_sql_history = PMA_getHistory($GLOBALS['cfg']['Server']['user']); $bookmarkContent = static::getBookmarkContent(); return Template::get('console/display')->render(array('cfgBookmark' => $cfgBookmark, 'image' => $image, '_sql_history' => $_sql_history, 'bookmarkContent' => $bookmarkContent)); } return ''; }
/** * return HTML for sql Query Form Bookmark * * @return string|null * * @usedby PMA_getHtmlForSqlQueryForm() */ function PMA_getHtmlForSqlQueryFormBookmark() { $bookmark_list = Bookmark::getList($GLOBALS['db']); if (empty($bookmark_list) || count($bookmark_list) < 1) { return null; } $html = '<fieldset id="fieldsetBookmarkOptions">'; $html .= '<legend>'; $html .= __('Bookmarked SQL query') . '</legend>' . "\n"; $html .= '<div class="formelement">'; $html .= '<select name="id_bookmark" id="id_bookmark">' . "\n"; $html .= '<option value=""> </option>' . "\n"; foreach ($bookmark_list as $bookmark) { $html .= '<option value="' . htmlspecialchars($bookmark->getId()) . '"' . ' data-varcount="' . $bookmark->getVariableCount() . '">' . htmlspecialchars($bookmark->getLabel()) . (empty($bookmark->getUser()) ? ' (' . __('shared') . ')' : '') . '</option>' . "\n"; } // is required for correct display with styles/line height $html .= '</select> ' . "\n"; $html .= '</div>' . "\n"; $html .= '<div class="formelement">' . "\n"; $html .= '<input type="radio" name="action_bookmark" value="0"' . ' id="radio_bookmark_exe" checked="checked" />' . '<label for="radio_bookmark_exe">' . __('Submit') . '</label>' . "\n"; $html .= '<input type="radio" name="action_bookmark" value="1"' . ' id="radio_bookmark_view" />' . '<label for="radio_bookmark_view">' . __('View only') . '</label>' . "\n"; $html .= '<input type="radio" name="action_bookmark" value="2"' . ' id="radio_bookmark_del" />' . '<label for="radio_bookmark_del">' . __('Delete') . '</label>' . "\n"; $html .= '</div>' . "\n"; $html .= '<div class="clearfloat"></div>' . "\n"; $html .= '<div class="formelement hide">' . "\n"; $html .= __('Variables'); $html .= PMA\libraries\Util::showDocu('faq', 'faqbookmark'); $html .= '<div id="bookmark_variables"></div>'; $html .= '</div>' . "\n"; $html .= '</fieldset>' . "\n"; $html .= '<fieldset id="fieldsetBookmarkOptionsFooter" class="tblFooters">'; $html .= '<input type="submit" name="SQL" id="button_submit_bookmark" value="' . __('Go') . '" />'; $html .= '<div class="clearfloat"></div>' . "\n"; $html .= '</fieldset>' . "\n"; return $html; }