Merge pull request #11696 from madhuracj/refactor
Refactor server_collations page
This commit is contained in:
commit
a98edc8be0
74
libraries/controllers/server/ServerCollationsController.php
Normal file
74
libraries/controllers/server/ServerCollationsController.php
Normal file
@ -0,0 +1,74 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
|
||||
/**
|
||||
* Holds the PMA\libraries\controllers\server\ServerCollationsController
|
||||
*
|
||||
* @package PMA\libraries\controllers\server
|
||||
*/
|
||||
|
||||
namespace PMA\libraries\controllers\server;
|
||||
|
||||
use PMA\libraries\controllers\Controller;
|
||||
use PMA\libraries\Template;
|
||||
|
||||
/**
|
||||
* Handles viewing character sets and collations
|
||||
*
|
||||
* @package PMA\libraries\controllers\server
|
||||
*/
|
||||
class ServerCollationsController extends Controller
|
||||
{
|
||||
/**
|
||||
* Index action
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function indexAction()
|
||||
{
|
||||
/**
|
||||
* Does the common work
|
||||
*/
|
||||
include_once 'libraries/server_common.inc.php';
|
||||
/**
|
||||
* Includes the required charset library
|
||||
*/
|
||||
include_once 'libraries/mysql_charsets.inc.php';
|
||||
|
||||
$this->response->addHTML(PMA_getHtmlForSubPageHeader('collations'));
|
||||
$this->response->addHTML(
|
||||
$this->_getHtmlForCharsets(
|
||||
$GLOBALS['mysql_charsets'],
|
||||
$GLOBALS['mysql_collations'],
|
||||
$GLOBALS['mysql_charsets_descriptions'],
|
||||
$GLOBALS['mysql_default_collations'],
|
||||
$GLOBALS['mysql_collations_available']
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the html for server Character Sets and Collations.
|
||||
*
|
||||
* @param array $mysqlCharsets Mysql Charsets list
|
||||
* @param array $mysqlCollations Mysql Collations list
|
||||
* @param array $mysqlCharsetsDesc Charsets descriptions
|
||||
* @param array $mysqlDftCollations Default Collations list
|
||||
* @param array $mysqlCollAvailable Available Collations list
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function _getHtmlForCharsets($mysqlCharsets, $mysqlCollations,
|
||||
$mysqlCharsetsDesc, $mysqlDftCollations, $mysqlCollAvailable
|
||||
) {
|
||||
return Template::get('server/collations/charsets')->render(
|
||||
array(
|
||||
'mysqlCharsets' => $mysqlCharsets,
|
||||
'mysqlCollations' => $mysqlCollations,
|
||||
'mysqlCharsetsDesc' => $mysqlCharsetsDesc,
|
||||
'mysqlDftCollations' => $mysqlDftCollations,
|
||||
'mysqlCollAvailable' => $mysqlCollAvailable,
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -1,99 +0,0 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
|
||||
/**
|
||||
* functions for displaying server Character Sets and Collations
|
||||
*
|
||||
* @usedby server_collations.php
|
||||
*
|
||||
* @package PhpMyAdmin
|
||||
*/
|
||||
if (! defined('PHPMYADMIN')) {
|
||||
exit;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the html for server Character Sets and Collations.
|
||||
*
|
||||
* @param Array $mysqlCharsets Mysql Charsets list
|
||||
* @param Array $mysqlCollations Mysql Collations list
|
||||
* @param Array $mysqlCharsetsDesc Charsets descriptions
|
||||
* @param Array $mysqlDftCollations Default Collations list
|
||||
* @param Array $mysqlCollAvailable Available Collations list
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function PMA_getHtmlForCharsets($mysqlCharsets, $mysqlCollations,
|
||||
$mysqlCharsetsDesc, $mysqlDftCollations,
|
||||
$mysqlCollAvailable
|
||||
) {
|
||||
/**
|
||||
* Outputs the result
|
||||
*/
|
||||
$html = '<div id="div_mysql_charset_collations">' . "\n"
|
||||
. '<table class="data noclick">' . "\n"
|
||||
. '<tr><th id="collationHeader">' . __('Collation') . '</th>' . "\n"
|
||||
. ' <th>' . __('Description') . '</th>' . "\n"
|
||||
. '</tr>' . "\n";
|
||||
|
||||
$table_row_count = count($mysqlCharsets) + count($mysqlCollations);
|
||||
|
||||
foreach ($mysqlCharsets as $current_charset) {
|
||||
|
||||
$html .= '<tr><th colspan="2" class="right">' . "\n"
|
||||
. ' ' . htmlspecialchars($current_charset) . "\n"
|
||||
. (empty($mysqlCharsetsDesc[$current_charset])
|
||||
? ''
|
||||
: ' (<i>' . htmlspecialchars(
|
||||
$mysqlCharsetsDesc[$current_charset]
|
||||
) . '</i>)' . "\n")
|
||||
. ' </th>' . "\n"
|
||||
. '</tr>' . "\n";
|
||||
|
||||
$html .= PMA_getHtmlForCollationCurrentCharset(
|
||||
$current_charset,
|
||||
$mysqlCollations,
|
||||
$mysqlDftCollations,
|
||||
$mysqlCollAvailable
|
||||
);
|
||||
|
||||
}
|
||||
unset($table_row_count);
|
||||
$html .= '</table>' . "\n"
|
||||
. '</div>' . "\n";
|
||||
|
||||
return $html;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the html for Collations of Current Charset.
|
||||
*
|
||||
* @param String $currCharset Current Charset
|
||||
* @param Array $mysqlColl Collations list
|
||||
* @param Array $mysqlDefaultColl Default Collations list
|
||||
* @param Array $mysqlCollAvailable Available Collations list
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
function PMA_getHtmlForCollationCurrentCharset(
|
||||
$currCharset, $mysqlColl,
|
||||
$mysqlDefaultColl, $mysqlCollAvailable
|
||||
) {
|
||||
$odd_row = true;
|
||||
$html = '';
|
||||
foreach ($mysqlColl[$currCharset] as $current_collation) {
|
||||
|
||||
$html .= '<tr class="'
|
||||
. ($odd_row ? 'odd' : 'even')
|
||||
. ($mysqlDefaultColl[$currCharset] == $current_collation
|
||||
? ' marked'
|
||||
: '')
|
||||
. ($mysqlCollAvailable[$current_collation] ? '' : ' disabled')
|
||||
. '">' . "\n"
|
||||
. ' <td>' . htmlspecialchars($current_collation) . '</td>' . "\n"
|
||||
. ' <td>' . PMA_getCollationDescr($current_collation) . '</td>' . "\n"
|
||||
. '</tr>' . "\n";
|
||||
$odd_row = !$odd_row;
|
||||
}
|
||||
return $html;
|
||||
}
|
||||
@ -1,37 +1,32 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
|
||||
/**
|
||||
* Server collations page
|
||||
* Handles server charsets and collations page.
|
||||
*
|
||||
* @package PhpMyAdmin
|
||||
*/
|
||||
|
||||
/**
|
||||
* requirements
|
||||
*/
|
||||
namespace PMA;
|
||||
|
||||
use PMA\libraries\controllers\server\ServerCollationsController;
|
||||
use PMA\libraries\Response;
|
||||
|
||||
require_once 'libraries/common.inc.php';
|
||||
|
||||
/**
|
||||
* Does the common work
|
||||
*/
|
||||
require_once 'libraries/server_common.inc.php';
|
||||
|
||||
require_once 'libraries/server_collations.lib.php';
|
||||
|
||||
/**
|
||||
* Includes the required charset library
|
||||
*/
|
||||
require_once 'libraries/mysql_charsets.inc.php';
|
||||
|
||||
$response = PMA\libraries\Response::getInstance();
|
||||
|
||||
$response->addHTML(PMA_getHtmlForSubPageHeader('collations'));
|
||||
$response->addHTML(
|
||||
PMA_getHtmlForCharsets(
|
||||
$mysql_charsets,
|
||||
$mysql_collations,
|
||||
$mysql_charsets_descriptions,
|
||||
$mysql_default_collations,
|
||||
$mysql_collations_available
|
||||
)
|
||||
$container = libraries\di\Container::getDefaultContainer();
|
||||
$container->factory(
|
||||
'PMA\libraries\controllers\server\ServerCollationsController'
|
||||
);
|
||||
$container->alias(
|
||||
'ServerCollationsController',
|
||||
'PMA\libraries\controllers\server\ServerCollationsController'
|
||||
);
|
||||
$container->set('PMA\libraries\Response', Response::getInstance());
|
||||
$container->alias('response', 'PMA\libraries\Response');
|
||||
|
||||
/** @var ServerCollationsController $controller */
|
||||
$controller = $container->get(
|
||||
'ServerCollationsController', array()
|
||||
);
|
||||
$controller->indexAction();
|
||||
|
||||
30
templates/server/collations/charsets.phtml
Normal file
30
templates/server/collations/charsets.phtml
Normal file
@ -0,0 +1,30 @@
|
||||
<div id="div_mysql_charset_collations">
|
||||
<table class="data noclick">
|
||||
<tr>
|
||||
<th id="collationHeader"><?php echo __('Collation'); ?></th>
|
||||
<th><?php echo __('Description'); ?></th>
|
||||
</tr>
|
||||
<?php foreach ($mysqlCharsets as $current_charset): ?>
|
||||
<tr>
|
||||
<th colspan="2" class="right">
|
||||
<?php echo htmlspecialchars($current_charset); ?>
|
||||
<?php if (! empty($mysqlCharsetsDesc[$current_charset])): ?>
|
||||
(<i><?php echo htmlspecialchars($mysqlCharsetsDesc[$current_charset]); ?></i>)
|
||||
<?php endif; ?>
|
||||
</th>
|
||||
</tr>
|
||||
<?php $odd_row = true; ?>
|
||||
<?php foreach ($mysqlCollations[$current_charset] as $current_collation): ?>
|
||||
<tr class="
|
||||
<?php echo ($odd_row ? 'odd' : 'even'); ?>
|
||||
<?php echo ($mysqlDftCollations[$current_charset] == $current_collation ? ' marked' : ''); ?>
|
||||
<?php echo ($mysqlCollAvailable[$current_collation] ? '' : ' disabled'); ?>
|
||||
">
|
||||
<td><?php echo htmlspecialchars($current_collation); ?></td>
|
||||
<td><?php echo PMA_getCollationDescr($current_collation); ?></td>
|
||||
</tr>
|
||||
<?php $odd_row = ! $odd_row; ?>
|
||||
<?php endforeach; ?>
|
||||
<?php endforeach; ?>
|
||||
</table>
|
||||
</div>
|
||||
@ -1,7 +1,7 @@
|
||||
<?php
|
||||
/* vim: set expandtab sw=4 ts=4 sts=4: */
|
||||
/**
|
||||
* tests for server_collations.lib.php
|
||||
* Holds ServerCollationsControllerTest class
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
@ -11,6 +11,7 @@
|
||||
*/
|
||||
//$GLOBALS
|
||||
use PMA\libraries\Theme;
|
||||
use PMA\libraries\controllers\server\ServerCollationsController;
|
||||
|
||||
$GLOBALS['server'] = 1;
|
||||
$GLOBALS['is_superuser'] = false;
|
||||
@ -41,16 +42,13 @@ require_once 'libraries/js_escape.lib.php';
|
||||
require_once 'libraries/database_interface.inc.php';
|
||||
require_once 'libraries/server_common.inc.php';
|
||||
require_once 'libraries/mysql_charsets.inc.php';
|
||||
require_once 'libraries/server_collations.lib.php';
|
||||
|
||||
/**
|
||||
* PMA_ServerBinlog_Test class
|
||||
*
|
||||
* this class is for testing server_collations.lib.php functions
|
||||
* Tests for ServerCollationsController class
|
||||
*
|
||||
* @package PhpMyAdmin-test
|
||||
*/
|
||||
class PMA_ServerCollations_Test extends PHPUnit_Framework_TestCase
|
||||
class ServerCollationsControllerTest extends PHPUnit_Framework_TestCase
|
||||
{
|
||||
/**
|
||||
* Prepares environment for the test.
|
||||
@ -111,15 +109,13 @@ class PMA_ServerCollations_Test extends PHPUnit_Framework_TestCase
|
||||
"binary" => true,
|
||||
);
|
||||
|
||||
//Mock DBI
|
||||
$dbi = $this->getMockBuilder('PMA\libraries\DatabaseInterface')
|
||||
->disableOriginalConstructor()
|
||||
->getMock();
|
||||
$class = new ReflectionClass('\PMA\libraries\controllers\server\ServerCollationsController');
|
||||
$method = $class->getMethod('_getHtmlForCharsets');
|
||||
$method->setAccessible(true);
|
||||
|
||||
$GLOBALS['dbi'] = $dbi;
|
||||
|
||||
//Call the test function
|
||||
$html = PMA_getHtmlForCharsets(
|
||||
$ctrl = new ServerCollationsController();
|
||||
$html = $html = $method->invoke(
|
||||
$ctrl,
|
||||
$mysql_charsets,
|
||||
$mysql_collations,
|
||||
$mysql_charsets_descriptions,
|
||||
@ -36,6 +36,7 @@ class PMA_Relation_Test extends PHPUnit_Framework_TestCase
|
||||
public function setUp()
|
||||
{
|
||||
$GLOBALS['server'] = 1;
|
||||
$GLOBALS['db'] = 'db';
|
||||
$GLOBALS['cfg']['Server']['user'] = 'root';
|
||||
$GLOBALS['cfg']['Server']['pmadb'] = 'phpmyadmin';
|
||||
$GLOBALS['cfg']['ZeroConf'] = true;
|
||||
|
||||
@ -9,6 +9,8 @@
|
||||
/*
|
||||
* Include to test.
|
||||
*/
|
||||
use PMA\libraries\Theme;
|
||||
|
||||
require_once 'libraries/tracking.lib.php';
|
||||
|
||||
require_once 'libraries/database_interface.inc.php';
|
||||
@ -55,6 +57,7 @@ class PMA_TblTrackingTest extends PHPUnit_Framework_TestCase
|
||||
'tracking' => 'tracking',
|
||||
'trackingwork' => true
|
||||
);
|
||||
$_SESSION['PMA_Theme'] = new Theme();
|
||||
|
||||
$GLOBALS['cfg']['Server']['tracking_default_statements'] = 'DELETE';
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user