/** * Displays SQL query before executing. * * @param array|string $query_data Array containing queries or query itself * * @return void */ function PMA_previewSQL($query_data) { $retval = '<div class="preview_sql">'; if (empty($query_data)) { $retval .= __('No change'); } elseif (is_array($query_data)) { foreach ($query_data as $query) { $retval .= PMA\libraries\Util::formatSql($query); } } else { $retval .= PMA\libraries\Util::formatSql($query_data); } $retval .= '</div>'; $response = Response::getInstance(); $response->addJSON('sql_data', $retval); exit; }
/** * Function to get html for one data manipulation statement * * @param array $entry entry * @param array $filter_users filter users * @param int $filter_ts_from filter time stamp from * @param int $filter_ts_to filter time stamp to * @param string $style style * @param int $line_number line number * @param array $url_params url parameters * @param int $offset line number offset * @param string $drop_image_or_text drop image or text * @param string $delete_param parameter for delete * * @return string */ function PMA_getHtmlForOneStatement($entry, $filter_users, $filter_ts_from, $filter_ts_to, $style, $line_number, $url_params, $offset, $drop_image_or_text, $delete_param) { $statement = PMA\libraries\Util::formatSql($entry['statement'], true); $timestamp = strtotime($entry['date']); $filtered_user = in_array($entry['username'], $filter_users); $html = null; if ($timestamp >= $filter_ts_from && $timestamp <= $filter_ts_to && (in_array('*', $filter_users) || $filtered_user)) { $html = '<tr class="noclick ' . $style . '">'; $html .= '<td class="right"><small>' . $line_number . '</small></td>'; $html .= '<td><small>' . htmlspecialchars($entry['date']) . '</small></td>'; $html .= '<td><small>' . htmlspecialchars($entry['username']) . '</small></td>'; $html .= '<td>' . $statement . '</td>'; $html .= '<td class="nowrap"><a class="delete_entry_anchor ajax"' . ' href="tbl_tracking.php' . URL::getCommon($url_params + array('report' => 'true', 'version' => $_REQUEST['version'], $delete_param => $line_number - $offset)) . '">' . $drop_image_or_text . '</a></td>'; $html .= '</tr>'; } return $html; }
/** * Test for formatSql * * @return void */ function testFormatSQLTruncate() { $GLOBALS['cfg']['MaxCharactersInDisplayedSQL'] = 6; $this->assertEquals('<code class="sql"><pre>' . "\n" . 'SELECT[...]' . "\n" . '</pre></code>', PMA\libraries\Util::formatSql('SELECT 1 < 2', true)); }
/** * Tests simulated UPDATE/DELETE query. * * @param string $sql_query SQL query * @param string $simulated_query Simulated query * * @return void */ function simulatedQueryTest($sql_query, $simulated_query) { $parser = new SqlParser\Parser($sql_query); $analyzed_sql_results = array('query' => $sql_query, 'parser' => $parser, 'statement' => $parser->statements[0]); $simulated_data = PMA_getMatchedRows($analyzed_sql_results); // URL to matched rows. $_url_params = array('db' => 'PMA', 'sql_query' => $simulated_query); $matched_rows_url = 'sql.php' . URL::getCommon($_url_params); $this->assertEquals(array('sql_query' => PMA\libraries\Util::formatSql($analyzed_sql_results['query']), 'matched_rows' => 2, 'matched_rows_url' => $matched_rows_url), $simulated_data); }