Merge branch 'master' of github.com:phpmyadmin/phpmyadmin

This commit is contained in:
Madhura Jayaratne 2015-06-10 21:31:06 +05:30
commit 9081189a9a
8 changed files with 387 additions and 533 deletions

View File

@ -3111,5 +3111,18 @@ class PMA_DatabaseInterface
{
return new PMA\SystemDatabase($this);
}
/**
* Get a table with database name and table name
*
* @param $db_name
* @param $table_name
*
* @return PMA_Table
*/
public function getTable($db_name, $table_name)
{
return new PMA_Table($table_name, $db_name, $this);
}
}
?>

View File

@ -26,16 +26,6 @@ class PMA_Table
static public $cache = array();
/**
* @var string table name
*/
var $name = '';
/**
* @var string database name
*/
var $db_name = '';
/**
* @var string engine (innodb, myisam, bdb, ...)
*/
@ -66,14 +56,34 @@ class PMA_Table
*/
var $messages = array();
/**
* @var string table name
*/
protected $_name = '';
/**
* @var string database name
*/
protected $_db_name = '';
/**
* @var PMA_DatabaseInterface
*/
protected $_dbi;
/**
* Constructor
*
* @param string $table_name table name
* @param string $db_name database name
* @param string $db_name database name
* @param PMA_DatabaseInterface $dbi database interface for the table
*/
function __construct($table_name, $db_name)
function __construct($table_name, $db_name, PMA_DatabaseInterface $dbi = null)
{
if (empty($dbi)) {
$dbi = $GLOBALS['dbi'];
}
$this->_dbi = $dbi;
$this->setName($table_name);
$this->setDbName($db_name);
}
@ -118,7 +128,7 @@ class PMA_Table
*/
function setName($table_name)
{
$this->name = $table_name;
$this->_name = $table_name;
}
/**
@ -131,9 +141,9 @@ class PMA_Table
function getName($backquoted = false)
{
if ($backquoted) {
return PMA_Util::backquote($this->name);
return PMA_Util::backquote($this->_name);
}
return $this->name;
return $this->_name;
}
/**
@ -145,7 +155,7 @@ class PMA_Table
*/
function setDbName($db_name)
{
$this->db_name = $db_name;
$this->_db_name = $db_name;
}
/**
@ -158,9 +168,9 @@ class PMA_Table
function getDbName($backquoted = false)
{
if ($backquoted) {
return PMA_Util::backquote($this->db_name);
return PMA_Util::backquote($this->_db_name);
}
return $this->db_name;
return $this->_db_name;
}
/**
@ -1520,8 +1530,8 @@ class PMA_Table
// Read from phpMyAdmin database
$sql_query = " SELECT `prefs` FROM " . $pma_table
. " WHERE `username` = '" . $GLOBALS['cfg']['Server']['user'] . "'"
. " AND `db_name` = '" . PMA_Util::sqlAddSlashes($this->db_name) . "'"
. " AND `table_name` = '" . PMA_Util::sqlAddSlashes($this->name) . "'";
. " AND `db_name` = '" . PMA_Util::sqlAddSlashes($this->_db_name) . "'"
. " AND `table_name` = '" . PMA_Util::sqlAddSlashes($this->_name) . "'";
$row = $GLOBALS['dbi']->fetchArray(PMA_queryAsControlUser($sql_query));
if (isset($row[0])) {
@ -1542,13 +1552,13 @@ class PMA_Table
$pma_table = PMA_Util::backquote($cfgRelation['db']) . "."
. PMA_Util::backquote($cfgRelation['table_uiprefs']);
$secureDbName = PMA_Util::sqlAddSlashes($this->db_name);
$secureDbName = PMA_Util::sqlAddSlashes($this->_db_name);
$username = $GLOBALS['cfg']['Server']['user'];
$sql_query = " REPLACE INTO " . $pma_table
. " (username, db_name, table_name, prefs) VALUES ('"
. $username . "', '" . $secureDbName
. "', '" . PMA_Util::sqlAddSlashes($this->name) . "', '"
. "', '" . PMA_Util::sqlAddSlashes($this->_name) . "', '"
. PMA_Util::sqlAddSlashes(json_encode($this->uiprefs)) . "')";
$success = $GLOBALS['dbi']->tryQuery($sql_query, $GLOBALS['controllink']);
@ -1615,15 +1625,15 @@ class PMA_Table
$server_id = $GLOBALS['server'];
// set session variable if it's still undefined
if (! isset($_SESSION['tmpval']['table_uiprefs'][$server_id][$this->db_name][$this->name])) {
if (! isset($_SESSION['tmpval']['table_uiprefs'][$server_id][$this->_db_name][$this->_name])) {
// check whether we can get from pmadb
$_SESSION['tmpval']['table_uiprefs'][$server_id][$this->db_name]
[$this->name] = $cfgRelation['uiprefswork']
$_SESSION['tmpval']['table_uiprefs'][$server_id][$this->_db_name]
[$this->_name] = $cfgRelation['uiprefswork']
? $this->getUiPrefsFromDb()
: array();
}
$this->uiprefs =& $_SESSION['tmpval']['table_uiprefs'][$server_id]
[$this->db_name][$this->name];
[$this->_db_name][$this->_name];
}
/**
@ -1677,13 +1687,13 @@ class PMA_Table
} elseif ($property == self::PROP_COLUMN_ORDER
|| $property == self::PROP_COLUMN_VISIB
) {
if (! PMA_Table::isView($this->db_name, $this->name)
if (! PMA_Table::isView($this->_db_name, $this->_name)
&& isset($this->uiprefs[$property])
) {
// check if the table has not been modified
if (self::sGetStatusInfo(
$this->db_name,
$this->name, 'Create_time'
$this->_db_name,
$this->_name, 'Create_time'
) == $this->uiprefs['CREATE_TIME']) {
return $this->uiprefs[$property];
} else {
@ -1721,13 +1731,13 @@ class PMA_Table
$this->loadUiPrefs();
}
// we want to save the create time if the property is PROP_COLUMN_ORDER
if (! PMA_Table::isView($this->db_name, $this->name)
if (! PMA_Table::isView($this->_db_name, $this->_name)
&& ($property == self::PROP_COLUMN_ORDER
|| $property == self::PROP_COLUMN_VISIB)
) {
$curr_create_time = self::sGetStatusInfo(
$this->db_name,
$this->name,
$this->_db_name,
$this->_name,
'CREATE_TIME'
);
if (isset($table_create_time)
@ -1800,5 +1810,145 @@ class PMA_Table
}
return $return;
}
/**
* Function to get the name and type of the columns of a table
*
* @return array
*/
public function getNameAndTypeOfTheColumns()
{
$columns = array();
foreach ($this->_dbi->getColumnsFull($this->_db_name, $this->_name) as $row) {
if (preg_match('@^(set|enum)\((.+)\)$@i', $row['Type'], $tmp)) {
$tmp[2] = /*overload*/mb_substr(
preg_replace('@([^,])\'\'@', '\\1\\\'', ',' . $tmp[2]), 1
);
$columns[$row['Field']] = $tmp[1] . '('
. str_replace(',', ', ', $tmp[2]) . ')';
} else {
$columns[$row['Field']] = $row['Type'];
}
}
return $columns;
}
/**
* Get index with index name
*
* @param $index
* @return PMA_Index
*/
public function getIndex($index)
{
return PMA_Index::singleton($this->_db_name, $this->_name, $index);
}
/**
* Function to get the sql query for index creation or edit
*
* @param PMA_Index $index current index
* @param bool &$error whether error occurred or not
*
* @return string
*/
public function getSqlQueryForIndexCreateOrEdit($index, &$error)
{
// $sql_query is the one displayed in the query box
$sql_query = sprintf(
'ALTER TABLE %s.%s',
PMA_Util::backquote($this->_db_name),
PMA_Util::backquote($this->_name)
);
// Drops the old index
if (! empty($_REQUEST['old_index'])) {
if ($_REQUEST['old_index'] == 'PRIMARY') {
$sql_query .= ' DROP PRIMARY KEY,';
} else {
$sql_query .= sprintf(
' DROP INDEX %s,',
PMA_Util::backquote($_REQUEST['old_index'])
);
}
} // end if
// Builds the new one
switch ($index->getChoice()) {
case 'PRIMARY':
if ($index->getName() == '') {
$index->setName('PRIMARY');
} elseif ($index->getName() != 'PRIMARY') {
$error = PMA_Message::error(
__('The name of the primary key must be "PRIMARY"!')
);
}
$sql_query .= ' ADD PRIMARY KEY';
break;
case 'FULLTEXT':
case 'UNIQUE':
case 'INDEX':
case 'SPATIAL':
if ($index->getName() == 'PRIMARY') {
$error = PMA_Message::error(__('Can\'t rename index to PRIMARY!'));
}
$sql_query .= sprintf(
' ADD %s ',
$index->getChoice()
);
if ($index->getName()) {
$sql_query .= PMA_Util::backquote($index->getName());
}
break;
} // end switch
$index_fields = array();
foreach ($index->getColumns() as $key => $column) {
$index_fields[$key] = PMA_Util::backquote($column->getName());
if ($column->getSubPart()) {
$index_fields[$key] .= '(' . $column->getSubPart() . ')';
}
} // end while
if (empty($index_fields)) {
$error = PMA_Message::error(__('No index parts defined!'));
} else {
$sql_query .= ' (' . implode(', ', $index_fields) . ')';
}
$keyBlockSizes = $index->getKeyBlockSize();
if (! empty($keyBlockSizes)) {
$sql_query .= sprintf(
' KEY_BLOCK_SIZE = ',
PMA_Util::sqlAddSlashes($keyBlockSizes)
);
}
// specifying index type is allowed only for primary, unique and index only
$type = $index->getType();
if ($index->getChoice() != 'SPATIAL'
&& $index->getChoice() != 'FULLTEXT'
&& in_array($type, PMA_Index::getIndexTypes())
) {
$sql_query .= ' USING ' . $type;
}
$parser = $index->getParser();
if ($index->getChoice() == 'FULLTEXT' && ! empty($parser)) {
$sql_query .= ' WITH PARSER ' . PMA_Util::sqlAddSlashes($parser);
}
$comment = $index->getComment();
if (! empty($comment)) {
$sql_query .= sprintf(
" COMMENT '%s'",
PMA_Util::sqlAddSlashes($comment)
);
}
$sql_query .= ';';
return $sql_query;
}
}
?>

View File

@ -1,46 +0,0 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* functions for displaying chart
*
* @usedby tbl_chart.php
*
* @package PhpMyAdmin
*/
if (! defined('PHPMYADMIN')) {
exit;
}
require_once 'libraries/Template.class.php';
use PMA\Template;
/**
* Function to get html for displaying table chart
*
* @param string $url_query url query
* @param array $url_params url parameters
* @param array $keys keys
* @param array $fields_meta fields meta
* @param array $numeric_types numeric types
* @param int $numeric_column_count numeric column count
* @param string $sql_query sql query
*
* @return string
*/
function PMA_getHtmlForTableChartDisplay($url_query, $url_params, $keys,
$fields_meta, $numeric_types, $numeric_column_count, $sql_query
) {
return Template::get('tbl_chart')
->render(
array(
'url_query' => $url_query,
'url_params' => $url_params,
'keys' => $keys,
'fields_meta' => $fields_meta,
'numeric_types' => $numeric_types,
'numeric_column_count' => $numeric_column_count,
'sql_query' => $sql_query
)
);
}

View File

@ -1,277 +0,0 @@
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
* Set of functions related to table indexes
*
* @package PhpMyAdmin
*/
if (! defined('PHPMYADMIN')) {
exit;
}
require_once 'libraries/Template.class.php';
/**
* Function to get the name and type of the columns of a table
*
* @param string $db current database
* @param string $table current table
*
* @return array
*/
function PMA_getNameAndTypeOfTheColumns($db, $table)
{
$columns = array();
foreach ($GLOBALS['dbi']->getColumnsFull($db, $table) as $row) {
if (preg_match('@^(set|enum)\((.+)\)$@i', $row['Type'], $tmp)) {
$tmp[2] = /*overload*/mb_substr(
preg_replace('@([^,])\'\'@', '\\1\\\'', ',' . $tmp[2]), 1
);
$columns[$row['Field']] = $tmp[1] . '('
. str_replace(',', ', ', $tmp[2]) . ')';
} else {
$columns[$row['Field']] = $row['Type'];
}
} // end while
return $columns;
}
/**
* Function to handle the creation or edit of an index
*
* @param string $db current db
* @param string $table current table
* @param PMA_Index $index current index
*
* @return void
*/
function PMA_handleCreateOrEditIndex($db, $table, $index)
{
$error = false;
$sql_query = PMA_getSqlQueryForIndexCreateOrEdit($db, $table, $index, $error);
// If there is a request for SQL previewing.
if (isset($_REQUEST['preview_sql'])) {
PMA_previewSQL($sql_query);
}
if (! $error) {
$GLOBALS['dbi']->query($sql_query);
$message = PMA_Message::success(
__('Table %1$s has been altered successfully.')
);
$message->addParam($table);
if ($GLOBALS['is_ajax_request'] == true) {
$response = PMA_Response::getInstance();
$response->addJSON(
'message', PMA_Util::getMessage($message, $sql_query, 'success')
);
$response->addJSON('index_table', PMA_Index::getHtmlForIndexes($table, $db));
} else {
include 'tbl_structure.php';
}
exit;
} else {
$response = PMA_Response::getInstance();
$response->isSuccess(false);
$response->addJSON('message', $error);
exit;
}
}
/**
* Function to get the sql query for index creation or edit
*
* @param string $db current db
* @param string $table current table
* @param PMA_Index $index current index
* @param bool &$error whether error occurred or not
*
* @return string
*/
function PMA_getSqlQueryForIndexCreateOrEdit($db, $table, $index, &$error)
{
// $sql_query is the one displayed in the query box
$sql_query = 'ALTER TABLE ' . PMA_Util::backquote($db)
. '.' . PMA_Util::backquote($table);
// Drops the old index
if (! empty($_REQUEST['old_index'])) {
if ($_REQUEST['old_index'] == 'PRIMARY') {
$sql_query .= ' DROP PRIMARY KEY,';
} else {
$sql_query .= ' DROP INDEX '
. PMA_Util::backquote($_REQUEST['old_index']) . ',';
}
} // end if
// Builds the new one
switch ($index->getChoice()) {
case 'PRIMARY':
if ($index->getName() == '') {
$index->setName('PRIMARY');
} elseif ($index->getName() != 'PRIMARY') {
$error = PMA_Message::error(
__('The name of the primary key must be "PRIMARY"!')
);
}
$sql_query .= ' ADD PRIMARY KEY';
break;
case 'FULLTEXT':
case 'UNIQUE':
case 'INDEX':
case 'SPATIAL':
if ($index->getName() == 'PRIMARY') {
$error = PMA_Message::error(__('Can\'t rename index to PRIMARY!'));
}
$sql_query .= ' ADD ' . $index->getChoice() . ' '
. ($index->getName() ? PMA_Util::backquote($index->getName()) : '');
break;
} // end switch
$index_fields = array();
foreach ($index->getColumns() as $key => $column) {
$index_fields[$key] = PMA_Util::backquote($column->getName());
if ($column->getSubPart()) {
$index_fields[$key] .= '(' . $column->getSubPart() . ')';
}
} // end while
if (empty($index_fields)) {
$error = PMA_Message::error(__('No index parts defined!'));
} else {
$sql_query .= ' (' . implode(', ', $index_fields) . ')';
}
$keyBlockSizes = $index->getKeyBlockSize();
if (! empty($keyBlockSizes)) {
$sql_query .= " KEY_BLOCK_SIZE = "
. PMA_Util::sqlAddSlashes($keyBlockSizes);
}
// specifying index type is allowed only for primary, unique and index only
$type = $index->getType();
if ($index->getChoice() != 'SPATIAL'
&& $index->getChoice() != 'FULLTEXT'
&& in_array($type, PMA_Index::getIndexTypes())
) {
$sql_query .= ' USING ' . $type;
}
$parser = $index->getParser();
if ($index->getChoice() == 'FULLTEXT' && ! empty($parser)) {
$sql_query .= " WITH PARSER " . PMA_Util::sqlAddSlashes($parser);
}
$comment = $index->getComment();
if (! empty($comment)) {
$sql_query .= " COMMENT '" . PMA_Util::sqlAddSlashes($comment) . "'";
}
$sql_query .= ';';
return $sql_query;
}
/**
* Function to prepare the form values for index
*
* @param string $db current database
* @param string $table current table
*
* @return PMA_Index
*/
function PMA_prepareFormValues($db, $table)
{
if (isset($_REQUEST['index'])) {
if (is_array($_REQUEST['index'])) {
// coming already from form
$index = new PMA_Index($_REQUEST['index']);
} else {
$index = PMA_Index::singleton($db, $table, $_REQUEST['index']);
}
} else {
$index = new PMA_Index;
}
return $index;
}
/**
* Function to get the number of fields for the form
*
* @param PMA_Index $index index
*
* @return int
*/
function PMA_getNumberOfFieldsForForm($index)
{
if (isset($_REQUEST['index']) && is_array($_REQUEST['index'])) {
// coming already from form
$add_fields
= isset($_REQUEST['index']['columns']['names'])?
count($_REQUEST['index']['columns']['names'])
- $index->getColumnCount():0;
if (isset($_REQUEST['add_fields'])) {
$add_fields += $_REQUEST['added_fields'];
}
} elseif (isset($_REQUEST['create_index'])) {
$add_fields = $_REQUEST['added_fields'];
} else {
$add_fields = 0;
}// end preparing form values
return $add_fields;
}
/**
* Function to get form parameters
*
* @param string $db current db
* @param string $table current table
*
* @return array
*/
function PMA_getFormParameters($db, $table)
{
$form_params = array(
'db' => $db,
'table' => $table,
);
if (isset($_REQUEST['create_index'])) {
$form_params['create_index'] = 1;
} elseif (isset($_REQUEST['old_index'])) {
$form_params['old_index'] = $_REQUEST['old_index'];
} elseif (isset($_REQUEST['index'])) {
$form_params['old_index'] = $_REQUEST['index'];
}
return $form_params;
}
/**
* Function to get html for displaying the index form
*
* @param array $fields fields
* @param PMA_Index $index index
* @param array $form_params form parameters
* @param int $add_fields number of fields in the form
*
* @return string
*/
function PMA_getHtmlForIndexForm($fields, $index, $form_params, $add_fields)
{
return PMA\Template::get('index_form')->render(
array(
'fields' => $fields,
'index' => $index,
'form_params' => $form_params,
'add_fields' => $add_fields
)
);
}
?>

View File

@ -7,7 +7,8 @@
*/
require_once 'libraries/common.inc.php';
require_once 'libraries/tbl_chart.lib.php';
require_once 'libraries/Template.class.php';
use PMA\Template;
/*
* Execute the query and return the result
@ -133,9 +134,14 @@ $url_params['reload'] = 1;
/**
* Displays the page
*/
$htmlString = PMA_getHtmlForTableChartDisplay(
$url_query, $url_params, $keys, $fields_meta, $numeric_types,
$numeric_column_count, $sql_query
);
$response->addHTML($htmlString);
$response->addHTML(Template::get('tbl_chart')->render(
array(
'url_query' => $url_query,
'url_params' => $url_params,
'keys' => $keys,
'fields_meta' => $fields_meta,
'numeric_types' => $numeric_types,
'numeric_column_count' => $numeric_column_count,
'sql_query' => $sql_query
)
));

View File

@ -11,21 +11,68 @@
*/
require_once 'libraries/common.inc.php';
require_once 'libraries/Index.class.php';
require_once 'libraries/tbl_indexes.lib.php';
require_once 'libraries/Template.class.php';
if (! isset($_REQUEST['create_edit_table'])) {
include_once 'libraries/tbl_common.inc.php';
}
if (isset($_REQUEST['index'])) {
if (is_array($_REQUEST['index'])) {
// coming already from form
$index = new PMA_Index($_REQUEST['index']);
} else {
$index = $GLOBALS['dbi']->getTable($db, $table)
->getIndex($_REQUEST['index']);
}
} else {
$index = new PMA_Index;
}
$index = PMA_prepareFormValues($db, $table);
/**
* Process the data from the edit/create index form,
* run the query to build the new index
* and moves back to "tbl_sql.php"
*/
if (isset($_REQUEST['do_save_data'])) {
PMA_handleCreateOrEditIndex($db, $table, $index);
$error = false;
$sql_query = $GLOBALS['dbi']->getTable($db, $table)
->getSqlQueryForIndexCreateOrEdit($index, $error);
// If there is a request for SQL previewing.
if (isset($_REQUEST['preview_sql'])) {
PMA_Response::getInstance()->addJSON(
'sql_data',
PMA\Template::get('preview_sql')
->render(array(
'query_data' => $sql_query
))
);
} elseif (!$error) {
$GLOBALS['dbi']->query($sql_query);
if ($GLOBALS['is_ajax_request'] == true) {
$message = PMA_Message::success(
__('Table %1$s has been altered successfully.')
);
$message->addParam($table);
$response = PMA_Response::getInstance();
$response->addJSON(
'message', PMA_Util::getMessage($message, $sql_query, 'success')
);
$response->addJSON('index_table', PMA_Index::getHtmlForIndexes($table, $db));
} else {
include 'tbl_structure.php';
}
} else {
$response = PMA_Response::getInstance();
$response->isSuccess(false);
$response->addJSON('message', $error);
}
exit;
} // end builds the new index
@ -34,9 +81,19 @@ if (isset($_REQUEST['do_save_data'])) {
*/
require_once 'libraries/tbl_info.inc.php';
$add_fields = PMA_getNumberOfFieldsForForm($index);
$form_params = PMA_getFormParameters($db, $table);
$add_fields = 0;
if (isset($_REQUEST['index']) && is_array($_REQUEST['index'])) {
// coming already from form
if (isset($_REQUEST['index']['columns']['names'])) {
$add_fields = count($_REQUEST['index']['columns']['names'])
- $index->getColumnCount();
}
if (isset($_REQUEST['add_fields'])) {
$add_fields += $_REQUEST['added_fields'];
}
} elseif (isset($_REQUEST['create_index'])) {
$add_fields = $_REQUEST['added_fields'];
} // end preparing form values
// Get fields and stores their name/type
if (isset($_REQUEST['create_edit_table'])) {
@ -47,13 +104,33 @@ if (isset($_REQUEST['create_edit_table'])) {
$index->set($index_params);
$add_fields = count($fields);
} else {
$fields = PMA_getNameAndTypeOfTheColumns($db, $table);
$fields = $GLOBALS['dbi']->getTable($db, $table)->getNameAndTypeOfTheColumns();
}
$html = PMA_getHtmlForIndexForm($fields, $index, $form_params, $add_fields);
$form_params = array(
'db' => $db,
'table' => $table,
);
if (isset($_REQUEST['create_index'])) {
$form_params['create_index'] = 1;
} elseif (isset($_REQUEST['old_index'])) {
$form_params['old_index'] = $_REQUEST['old_index'];
} elseif (isset($_REQUEST['index'])) {
$form_params['old_index'] = $_REQUEST['index'];
}
$response = PMA_Response::getInstance();
$response->addHTML($html);
$response->addHTML(PMA\Template::get('index_form')
->render(
array(
'fields' => $fields,
'index' => $index,
'form_params' => $form_params,
'add_fields' => $add_fields
)
)
);
$header = $response->getHeader();
$scripts = $header->getScripts();
$scripts->addFile('indexes.js');

View File

@ -0,0 +1,11 @@
<div class="preview_sql">
<?php if (empty($query_data)): ?>
<?php echo __('No change'); ?>
<?php elseif (is_array($query_data)): ?>
<?php foreach ($query_data as $query): ?>
<?php echo PMA_Util::formatSql($query); ?>
<?php endforeach; ?>
<?php else: ?>
<?php echo PMA_Util::formatSql($query_data); ?>
<?php endif; ?>
</div>

View File

@ -10,8 +10,8 @@
* Include to test.
*/
require_once 'libraries/Template.class.php';
require_once 'libraries/tbl_indexes.lib.php';
require_once 'libraries/Util.class.php';
require_once 'libraries/Table.class.php';
require_once 'libraries/Index.class.php';
require_once 'libraries/Message.class.php';
require_once 'libraries/database_interface.inc.php';
@ -93,9 +93,8 @@ class PMA_TblIndexTest extends PHPUnit_Framework_TestCase
$_REQUEST['old_index'] = "PRIMARY";
$sql = PMA_getSqlQueryForIndexCreateOrEdit(
$db, $table, $index, $error
);
$table = new PMA_Table($table, $db);
$sql = $table->getSqlQueryForIndexCreateOrEdit($index, $error);
$this->assertEquals(
"ALTER TABLE `pma_db`.`pma_table` DROP PRIMARY KEY, ADD UNIQUE ;",
@ -103,90 +102,6 @@ class PMA_TblIndexTest extends PHPUnit_Framework_TestCase
);
}
/**
* Tests for PMA_getNumberOfFieldsForForm() method.
*
* @return void
* @test
*/
public function testPMAGetNumberOfFieldsForForm()
{
$index = new PMA_Index();
$add_fields = PMA_getNumberOfFieldsForForm($index);
$this->assertEquals(
0,
$add_fields
);
$_REQUEST['create_index'] = true;
$_REQUEST['added_fields'] = 2;
$add_fields = PMA_getNumberOfFieldsForForm($index);
$this->assertEquals(
$_REQUEST['added_fields'],
$add_fields
);
}
/**
* Tests for PMA_getFormParameters() method.
*
* @return void
* @test
*/
public function testPMAGetFormParameters()
{
$db = "pma_db";
$table = "pma_table";
$form_params = PMA_getFormParameters($db, $table);
$expect = array(
'db' => $db,
'table' => $table,
);
$this->assertEquals(
$expect,
$form_params
);
$_REQUEST['index'] = "index";
$form_params = PMA_getFormParameters($db, $table);
$expect = array(
'db' => $db,
'table' => $table,
'old_index' => $_REQUEST['index'],
);
$this->assertEquals(
$expect,
$form_params
);
$_REQUEST['old_index'] = "old_index";
$form_params = PMA_getFormParameters($db, $table);
$expect = array(
'db' => $db,
'table' => $table,
'old_index' => $_REQUEST['old_index'],
);
$this->assertEquals(
$expect,
$form_params
);
$_REQUEST['create_index'] = "create_index";
$form_params = PMA_getFormParameters($db, $table);
$expect = array(
'db' => $db,
'table' => $table,
'create_index' => 1,
);
$this->assertEquals(
$expect,
$form_params
);
}
/**
* Tests for PMA_getHtmlForIndexForm() method.
*
@ -195,80 +110,85 @@ class PMA_TblIndexTest extends PHPUnit_Framework_TestCase
*/
public function testPMAGetHtmlForIndexForm()
{
$fields = array("field_name" => "field_type");
$index = new PMA_Index();
$form_params = array(
'db' => 'db',
'table' => 'table',
'create_index' => 1,
);
$add_fields = 3;
$html = PMA_getHtmlForIndexForm($fields, $index, $form_params, $add_fields);
//PMA_URL_getHiddenInputs
$this->assertContains(
PMA_URL_getHiddenInputs($form_params),
$html
);
//Index name
$this->assertContains(
__('Index name:'),
$html
);
$doc_html = PMA_Util::showHint(
PMA_Message::notice(
__(
'"PRIMARY" <b>must</b> be the name of'
. ' and <b>only of</b> a primary key!'
)
)
);
$this->assertContains(
$doc_html,
$html
);
//Index name
$this->assertContains(
__('Index name:'),
$html
);
$this->assertContains(
PMA_Util::showMySQLDocu('ALTER_TABLE'),
$html
);
//generateIndexSelector
$this->assertContains(
PMA\Template::trim($index->generateIndexChoiceSelector(false)),
$html
);
//items
$this->assertContains(
__('Column'),
$html
);
$this->assertContains(
__('Size'),
$html
);
$this->assertContains(
sprintf(__('Add %s column(s) to index'), 1),
$html
);
//$field_name & $field_type
$this->assertContains(
"field_name",
$html
);
$this->assertContains(
"field_type",
$html
);
/**
* @todo Find out a better method to test for HTML
*
* $fields = array("field_name" => "field_type");
* $index = new PMA_Index();
* $form_params = array(
* 'db' => 'db',
* 'table' => 'table',
* 'create_index' => 1,
* );
* $add_fields = 3;
*
* $html = PMA_getHtmlForIndexForm($fields, $index, $form_params, $add_fields);
*
* //PMA_URL_getHiddenInputs
* $this->assertContains(
* PMA_URL_getHiddenInputs($form_params),
* $html
* );
*
* //Index name
* $this->assertContains(
* __('Index name:'),
* $html
* );
* $doc_html = PMA_Util::showHint(
* PMA_Message::notice(
* __(
* '"PRIMARY" <b>must</b> be the name of'
* . ' and <b>only of</b> a primary key!'
* )
* )
* );
* $this->assertContains(
* $doc_html,
* $html
* );
*
* //Index name
* $this->assertContains(
* __('Index name:'),
* $html
* );
* $this->assertContains(
* PMA_Util::showMySQLDocu('ALTER_TABLE'),
* $html
* );
*
* //generateIndexSelector
* $this->assertContains(
* PMA\Template::trim($index->generateIndexChoiceSelector(false)),
* $html
* );
*
* //items
* $this->assertContains(
* __('Column'),
* $html
* );
* $this->assertContains(
* __('Size'),
* $html
* );
* $this->assertContains(
* sprintf(__('Add %s column(s) to index'), 1),
* $html
* );
*
* //$field_name & $field_type
* $this->assertContains(
* "field_name",
* $html
* );
* $this->assertContains(
* "field_type",
* $html
* );
*/
$this->markTestIncomplete('Not yet implemented!');
}
}
?>