Merge pull request #11696 from madhuracj/refactor

Refactor server_collations page
This commit is contained in:
Madhura Jayaratne 2015-11-27 23:01:29 +11:00
commit a98edc8be0
7 changed files with 140 additions and 140 deletions

View 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,
)
);
}
}

View File

@ -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;
}

View File

@ -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();

View 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>

View File

@ -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,

View File

@ -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;

View File

@ -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';