/**
  * Tests replace() method
  *
  * @return void
  */
 public function testReplace()
 {
     //mock DBI
     $dbi = $this->getMockBuilder('PMA_DatabaseInterface')->disableOriginalConstructor()->getMock();
     $find = 'findValue';
     $replaceWith = 'replaceWithValue';
     $charSet = 'charSetValue';
     $expectedQuery = "UPDATE `dbName`.`tableName`" . " SET `column1` = REPLACE(`column1`, '" . $find . "', '" . $replaceWith . "') WHERE `column1` LIKE '%" . $find . "%' COLLATE " . $charSet . "_bin";
     // set expectations
     $dbi->expects($this->once())->method('query')->with($expectedQuery);
     $GLOBALS['dbi'] = $dbi;
     $this->_object->replace(0, $find, $replaceWith, $charSet);
 }
require_once './libraries/tbl_info.inc.php';
$response = PMA_Response::getInstance();
$header = $response->getHeader();
$scripts = $header->getScripts();
$scripts->addFile('makegrid.js');
$scripts->addFile('sql.js');
$scripts->addFile('jqplot/jquery.jqplot.js');
$scripts->addFile('jqplot/plugins/jqplot.canvasTextRenderer.js');
$scripts->addFile('jqplot/plugins/jqplot.canvasAxisLabelRenderer.js');
$scripts->addFile('jqplot/plugins/jqplot.dateAxisRenderer.js');
$scripts->addFile('jqplot/plugins/jqplot.highlighter.js');
$scripts->addFile('jqplot/plugins/jqplot.cursor.js');
$scripts->addFile('canvg/canvg.js');
$scripts->addFile('jquery/jquery-ui-timepicker-addon.js');
$scripts->addFile('tbl_zoom_plot_jqplot.js');
$table_search = new PMA_TableSearch($db, $table, "zoom");
/**
 * Handle AJAX request for data row on point select
 * @var post_params Object containing parameters for the POST request
 */
if (isset($_REQUEST['get_data_row']) && $_REQUEST['get_data_row'] == true) {
    $extra_data = array();
    $row_info_query = 'SELECT * FROM `' . $_REQUEST['db'] . '`.`' . $_REQUEST['table'] . '` WHERE ' . $_REQUEST['where_clause'];
    $result = $GLOBALS['dbi']->query($row_info_query . ";", null, PMA_DatabaseInterface::QUERY_STORE);
    $fields_meta = $GLOBALS['dbi']->getFieldsMeta($result);
    while ($row = $GLOBALS['dbi']->fetchAssoc($result)) {
        // for bit fields we need to convert them to printable form
        $i = 0;
        foreach ($row as $col => $val) {
            if ($fields_meta[$i]->type == 'bit') {
                $row[$col] = PMA_Util::printableBitValue($val, $fields_meta[$i]->length);
Пример #3
0
require_once 'libraries/common.inc.php';
require_once 'libraries/mysql_charsets.inc.php';
require_once 'libraries/TableSearch.class.php';
require_once 'libraries/sql.lib.php';
require_once 'libraries/bookmark.lib.php';
$response = PMA_Response::getInstance();
$header = $response->getHeader();
$scripts = $header->getScripts();
$scripts->addFile('makegrid.js');
$scripts->addFile('sql.js');
$scripts->addFile('tbl_select.js');
$scripts->addFile('tbl_change.js');
$scripts->addFile('jquery/jquery-ui-timepicker-addon.js');
$scripts->addFile('jquery/jquery.uitablefilter.js');
$scripts->addFile('gis_data_editor.js');
$table_search = new PMA_TableSearch($db, $table, "normal");
// Request to column min-max value.
if (isset($_REQUEST['range_search'])) {
    $response = PMA_Response::getInstance();
    $min_max = $table_search->getColumnMinMax($_REQUEST['column']);
    $response->addJSON('column_data', $min_max);
    exit;
}
/**
 * No selection criteria received -> display the selection form
 */
if (!isset($_POST['columnsToDisplay']) && !isset($_POST['displayAllColumns'])) {
    // Gets some core libraries
    include_once 'libraries/tbl_common.inc.php';
    //$err_url   = 'tbl_select.php' . $err_url;
    $url_query .= '&goto=tbl_select.php&back=tbl_select.php';
Пример #4
0
<?php 
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
 * Handles find and replace tab
 *
 * Displays find and replace form, allows previewing and do the replacing
 *
 * @package PhpMyAdmin
 */
/**
 * Gets some core libraries
 */
require_once 'libraries/common.inc.php';
require_once 'libraries/TableSearch.class.php';
$response = PMA_Response::getInstance();
$table_search = new PMA_TableSearch($db, $table, "replace");
$connectionCharSet = $GLOBALS['dbi']->fetchValue("SHOW VARIABLES LIKE 'character_set_connection'", 0, 1);
if (isset($_POST['find'])) {
    $preview = $table_search->getReplacePreview($_POST['columnIndex'], $_POST['find'], $_POST['replaceWith'], $connectionCharSet);
    $response->addJSON('preview', $preview);
    exit;
}
$header = $response->getHeader();
$scripts = $header->getScripts();
$scripts->addFile('tbl_find_replace.js');
// Show secondary level of tabs
$htmlOutput = $table_search->getSecondaryTabs();
if (isset($_POST['replace'])) {
    $htmlOutput .= $table_search->replace($_POST['columnIndex'], $_POST['findString'], $_POST['replaceWith'], $connectionCharSet);
    $htmlOutput .= PMA_Util::getMessage(__('Your SQL query has been executed successfully.'), null, 'success');
}
Пример #5
0
 */
require_once 'libraries/common.inc.php';
require_once 'libraries/mysql_charsets.inc.php';
require_once 'libraries/TableSearch.class.php';
require_once 'libraries/sql.lib.php';
$response = PMA_Response::getInstance();
$header = $response->getHeader();
$scripts = $header->getScripts();
$scripts->addFile('makegrid.js');
$scripts->addFile('sql.js');
$scripts->addFile('tbl_select.js');
$scripts->addFile('tbl_change.js');
$scripts->addFile('jquery/jquery-ui-timepicker-addon.js');
$scripts->addFile('jquery/jquery.uitablefilter.js');
$scripts->addFile('gis_data_editor.js');
$table_search = new PMA_TableSearch($db, $table, "normal");
/**
 * No selection criteria received -> display the selection form
 */
if (!isset($_POST['columnsToDisplay']) && !isset($_POST['displayAllColumns'])) {
    // Gets some core libraries
    include_once 'libraries/tbl_common.inc.php';
    //$err_url   = 'tbl_select.php' . $err_url;
    $url_query .= '&amp;goto=tbl_select.php&amp;back=tbl_select.php';
    /**
     * Gets table's information
     */
    include_once 'libraries/tbl_info.inc.php';
    if (!isset($goto)) {
        $goto = $GLOBALS['cfg']['DefaultTabTable'];
    }
Пример #6
0
 /**
  * Test for buildSqlQuery
  *
  * @return void
  */
 public function testBuildSqlQueryw()
 {
     $_POST['distinct'] = true;
     $_POST['zoom_submit'] = true;
     $_POST['table'] = "PMA";
     $_POST['orderByColumn'] = "name";
     $_POST['order'] = "asc";
     $_POST['customWhereClause'] = "name='pma'";
     $tableSearch = new PMA_TableSearch("PMA", "PMA_BookMark", "zoom");
     $sql = $tableSearch->buildSqlQuery();
     $result = "SELECT DISTINCT *  FROM `PMA` WHERE name='pma' " . "ORDER BY `name` asc";
     $this->assertEquals($result, $sql);
     unset($_POST['customWhereClause']);
     $sql = $tableSearch->buildSqlQuery();
     $result = "SELECT DISTINCT *  FROM `PMA` ORDER BY `name` asc";
     $this->assertEquals($result, $sql);
     $_POST['criteriaValues'] = array('value1', 'value2', 'value3', 'value4', 'value5', 'value6', 'value7,value8');
     $_POST['criteriaColumnNames'] = array('name', 'id', 'index', 'index2', 'index3', 'index4', 'index5');
     $_POST['criteriaColumnTypes'] = array('varchar', 'int', 'enum', 'type1', 'type2', 'type3', 'type4');
     $_POST['criteriaColumnCollations'] = array("char1", "char2", "char3", "char4", "char5", "char6", "char7");
     $_POST['criteriaColumnOperators'] = array("!=", ">", "IS NULL", "LIKE %...%", "REGEXP ^...\$", "IN (...)", "BETWEEN");
     $sql = $tableSearch->buildSqlQuery();
     $result = "SELECT DISTINCT *  FROM `PMA` WHERE `name` != 'value1'" . " AND `id` > value2 AND `index` IS NULL AND `index2` LIKE '%value4%'" . " AND `index3` REGEXP ^value5\$ AND `index4` IN (value6) AND `index5`" . " BETWEEN value7 AND value8 ORDER BY `name` asc";
     $this->assertEquals($result, $sql);
 }