From 2692af32d9e875043db7d52f726938ea1426614a Mon Sep 17 00:00:00 2001 From: Madhura Jayaratne Date: Fri, 27 Nov 2015 19:54:29 +1100 Subject: [PATCH 1/4] Use a controller for server_collations page Signed-off-by: Madhura Jayaratne --- .../server/ServerCollationsController.php | 132 ++++++++++++++++++ libraries/server_collations.lib.php | 99 ------------- server_collations.php | 49 +++---- 3 files changed, 154 insertions(+), 126 deletions(-) create mode 100644 libraries/controllers/server/ServerCollationsController.php delete mode 100644 libraries/server_collations.lib.php diff --git a/libraries/controllers/server/ServerCollationsController.php b/libraries/controllers/server/ServerCollationsController.php new file mode 100644 index 0000000000..f08baab088 --- /dev/null +++ b/libraries/controllers/server/ServerCollationsController.php @@ -0,0 +1,132 @@ +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 + ) { + /** + * Outputs the result + */ + $html = '
' . "\n" + . '' . "\n" + . '' . "\n" + . ' ' . "\n" + . '' . "\n"; + + $table_row_count = count($mysqlCharsets) + count($mysqlCollations); + + foreach ($mysqlCharsets as $current_charset) { + + $html .= '' . "\n" + . '' . "\n"; + + $html .= $this->_getHtmlForCollationCurrentCharset( + $current_charset, + $mysqlCollations, + $mysqlDftCollations, + $mysqlCollAvailable + ); + + } + + $html .= '
' . __('Collation') . '' . __('Description') . '
' . "\n" + . ' ' . htmlspecialchars($current_charset) . "\n" + . (empty($mysqlCharsetsDesc[$current_charset]) + ? '' + : ' (' . htmlspecialchars( + $mysqlCharsetsDesc[$current_charset] + ) . ')' . "\n") + . '
' . "\n" + . '
' . "\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 _getHtmlForCollationCurrentCharset( + $currCharset, $mysqlColl, $mysqlDefaultColl, $mysqlCollAvailable + ) { + $odd_row = true; + $html = ''; + foreach ($mysqlColl[$currCharset] as $current_collation) { + + $html .= '' . "\n" + . ' ' . htmlspecialchars($current_collation) . '' . "\n" + . ' ' . PMA_getCollationDescr($current_collation) . '' . "\n" + . '' . "\n"; + $odd_row = !$odd_row; + } + return $html; + } +} diff --git a/libraries/server_collations.lib.php b/libraries/server_collations.lib.php deleted file mode 100644 index a3bfabbb33..0000000000 --- a/libraries/server_collations.lib.php +++ /dev/null @@ -1,99 +0,0 @@ -' . "\n" - . '' . "\n" - . '' . "\n" - . ' ' . "\n" - . '' . "\n"; - - $table_row_count = count($mysqlCharsets) + count($mysqlCollations); - - foreach ($mysqlCharsets as $current_charset) { - - $html .= '' . "\n" - . '' . "\n"; - - $html .= PMA_getHtmlForCollationCurrentCharset( - $current_charset, - $mysqlCollations, - $mysqlDftCollations, - $mysqlCollAvailable - ); - - } - unset($table_row_count); - $html .= '
' . __('Collation') . '' . __('Description') . '
' . "\n" - . ' ' . htmlspecialchars($current_charset) . "\n" - . (empty($mysqlCharsetsDesc[$current_charset]) - ? '' - : ' (' . htmlspecialchars( - $mysqlCharsetsDesc[$current_charset] - ) . ')' . "\n") - . '
' . "\n" - . '' . "\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 .= '' . "\n" - . ' ' . htmlspecialchars($current_collation) . '' . "\n" - . ' ' . PMA_getCollationDescr($current_collation) . '' . "\n" - . '' . "\n"; - $odd_row = !$odd_row; - } - return $html; -} diff --git a/server_collations.php b/server_collations.php index a44d5fbe42..adbd9536a4 100644 --- a/server_collations.php +++ b/server_collations.php @@ -1,37 +1,32 @@ 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(); From 090a7e432318deb891e3a5b4c27a58a8b53d8e58 Mon Sep 17 00:00:00 2001 From: Madhura Jayaratne Date: Fri, 27 Nov 2015 20:14:28 +1100 Subject: [PATCH 2/4] Use templating Signed-off-by: Madhura Jayaratne --- .../server/ServerCollationsController.php | 78 +++---------------- templates/server/collations/charsets.phtml | 30 +++++++ 2 files changed, 40 insertions(+), 68 deletions(-) create mode 100644 templates/server/collations/charsets.phtml diff --git a/libraries/controllers/server/ServerCollationsController.php b/libraries/controllers/server/ServerCollationsController.php index f08baab088..09b23f0a71 100644 --- a/libraries/controllers/server/ServerCollationsController.php +++ b/libraries/controllers/server/ServerCollationsController.php @@ -10,6 +10,7 @@ namespace PMA\libraries\controllers\server; use PMA\libraries\controllers\Controller; +use PMA\libraries\Template; /** * Handles viewing character sets and collations @@ -60,73 +61,14 @@ class ServerCollationsController extends Controller function _getHtmlForCharsets($mysqlCharsets, $mysqlCollations, $mysqlCharsetsDesc, $mysqlDftCollations, $mysqlCollAvailable ) { - /** - * Outputs the result - */ - $html = '
' . "\n" - . '' . "\n" - . '' . "\n" - . ' ' . "\n" - . '' . "\n"; - - $table_row_count = count($mysqlCharsets) + count($mysqlCollations); - - foreach ($mysqlCharsets as $current_charset) { - - $html .= '' . "\n" - . '' . "\n"; - - $html .= $this->_getHtmlForCollationCurrentCharset( - $current_charset, - $mysqlCollations, - $mysqlDftCollations, - $mysqlCollAvailable - ); - - } - - $html .= '
' . __('Collation') . '' . __('Description') . '
' . "\n" - . ' ' . htmlspecialchars($current_charset) . "\n" - . (empty($mysqlCharsetsDesc[$current_charset]) - ? '' - : ' (' . htmlspecialchars( - $mysqlCharsetsDesc[$current_charset] - ) . ')' . "\n") - . '
' . "\n" - . '
' . "\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 _getHtmlForCollationCurrentCharset( - $currCharset, $mysqlColl, $mysqlDefaultColl, $mysqlCollAvailable - ) { - $odd_row = true; - $html = ''; - foreach ($mysqlColl[$currCharset] as $current_collation) { - - $html .= '' . "\n" - . ' ' . htmlspecialchars($current_collation) . '' . "\n" - . ' ' . PMA_getCollationDescr($current_collation) . '' . "\n" - . '' . "\n"; - $odd_row = !$odd_row; - } - return $html; + return Template::get('server/collations/charsets')->render( + array( + 'mysqlCharsets' => $mysqlCharsets, + 'mysqlCollations' => $mysqlCollations, + 'mysqlCharsetsDesc' => $mysqlCharsetsDesc, + 'mysqlDftCollations' => $mysqlDftCollations, + 'mysqlCollAvailable' => $mysqlCollAvailable, + ) + ); } } diff --git a/templates/server/collations/charsets.phtml b/templates/server/collations/charsets.phtml new file mode 100644 index 0000000000..9248fb931f --- /dev/null +++ b/templates/server/collations/charsets.phtml @@ -0,0 +1,30 @@ +
+ + + + + + + + + + + + + + + + + + +
+ + + () + +
+
\ No newline at end of file From c7297bf53345f978882dce2d038e624debd3cb1d Mon Sep 17 00:00:00 2001 From: Madhura Jayaratne Date: Fri, 27 Nov 2015 20:25:32 +1100 Subject: [PATCH 3/4] Update tests Signed-off-by: Madhura Jayaratne --- .../ServerCollationsControllerTest.php} | 24 ++++++++----------- 1 file changed, 10 insertions(+), 14 deletions(-) rename test/{libraries/PMA_server_collations_test.php => classes/controllers/ServerCollationsControllerTest.php} (88%) diff --git a/test/libraries/PMA_server_collations_test.php b/test/classes/controllers/ServerCollationsControllerTest.php similarity index 88% rename from test/libraries/PMA_server_collations_test.php rename to test/classes/controllers/ServerCollationsControllerTest.php index 1510258f44..a3442d3dd4 100644 --- a/test/libraries/PMA_server_collations_test.php +++ b/test/classes/controllers/ServerCollationsControllerTest.php @@ -1,7 +1,7 @@ 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, From a9bccec802a34ec1d307e4c1ba61a97224b31764 Mon Sep 17 00:00:00 2001 From: Madhura Jayaratne Date: Fri, 27 Nov 2015 22:34:54 +1100 Subject: [PATCH 4/4] Fix tests broken due to change in test execution order Signed-off-by: Madhura Jayaratne --- test/libraries/PMA_relation_test.php | 1 + test/libraries/PMA_tbl_tracking_test.php | 3 +++ 2 files changed, 4 insertions(+) diff --git a/test/libraries/PMA_relation_test.php b/test/libraries/PMA_relation_test.php index 2d25a4de83..2d43fae6e7 100644 --- a/test/libraries/PMA_relation_test.php +++ b/test/libraries/PMA_relation_test.php @@ -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; diff --git a/test/libraries/PMA_tbl_tracking_test.php b/test/libraries/PMA_tbl_tracking_test.php index 2ed3b57aff..adb07e80d9 100644 --- a/test/libraries/PMA_tbl_tracking_test.php +++ b/test/libraries/PMA_tbl_tracking_test.php @@ -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';