diff --git a/administrator/components/com_admin/script.php b/administrator/components/com_admin/script.php index 6891989e1ffbb..b770e02e1bdfe 100644 --- a/administrator/components/com_admin/script.php +++ b/administrator/components/com_admin/script.php @@ -287,7 +287,6 @@ protected function updateManifestCaches() array('module', 'mod_quickicon', '', 1), array('module', 'mod_stats_admin', '', 1), array('module', 'mod_status', '', 1), - array('module', 'mod_submenu', '', 1), array('module', 'mod_title', '', 1), array('module', 'mod_toolbar', '', 1), array('module', 'mod_multilangstatus', '', 1), diff --git a/administrator/components/com_admin/sql/updates/mysql/4.0.0-2016-10-03.sql b/administrator/components/com_admin/sql/updates/mysql/4.0.0-2016-10-03.sql new file mode 100644 index 0000000000000..d7238a044ac83 --- /dev/null +++ b/administrator/components/com_admin/sql/updates/mysql/4.0.0-2016-10-03.sql @@ -0,0 +1,3 @@ +DELETE FROM `#__assets` WHERE `id` = 47; + +DELETE FROM `#__extensions` WHERE `name` = ''mod_submenu''; diff --git a/administrator/components/com_admin/sql/updates/postgresql/4.0.0-2016-10-03.sql b/administrator/components/com_admin/sql/updates/postgresql/4.0.0-2016-10-03.sql new file mode 100644 index 0000000000000..4977e9437e93d --- /dev/null +++ b/administrator/components/com_admin/sql/updates/postgresql/4.0.0-2016-10-03.sql @@ -0,0 +1,3 @@ +DELETE FROM `#__assets` WHERE `id` = 47; + +DELETE FROM "#__extensions" WHERE "name" = "mod_submenu"; diff --git a/administrator/includes/helper.php b/administrator/includes/helper.php deleted file mode 100644 index 717944d386766..0000000000000 --- a/administrator/includes/helper.php +++ /dev/null @@ -1,56 +0,0 @@ -input->get('option')); - - $user = $app->getIdentity(); - - if (!$user) - { - $app->loadIdentity(JFactory::getUser()); - - $user = $app->getIdentity(); - } - - if ($user->get('guest') || !$user->authorise('core.login.admin')) - { - $option = 'com_login'; - } - - if (empty($option)) - { - $option = 'com_cpanel'; - } - - $app->input->set('option', $option); - - return $option; - } -} diff --git a/administrator/includes/subtoolbar.php b/administrator/includes/subtoolbar.php deleted file mode 100644 index eabdb4c62eac8..0000000000000 --- a/administrator/includes/subtoolbar.php +++ /dev/null @@ -1,144 +0,0 @@ - $label, 'name' => $name, 'options' => $options, 'noDefault' => $noDefault)); - } - - /** - * Returns an array of all filters - * - * @return array - * - * @since 3.0 - * @deprecated 4.0 Use JHtmlSidebar::getFilters() instead. - */ - public static function getFilters() - { - JLog::add('JSubMenuHelper::getFilters() is deprecated. Use JHtmlSidebar::getFilters() instead.', JLog::WARNING, 'deprecated'); - - return self::$filters; - } - - /** - * Set value for the action attribute of the filter form - * - * @param string $action Value for the action attribute of the form - * - * @return void - * - * @since 3.0 - * @deprecated 4.0 Use JHtmlSidebar::setAction() instead. - */ - public static function setAction($action) - { - JLog::add('JSubMenuHelper::setAction() is deprecated. Use JHtmlSidebar::setAction() instead.', JLog::WARNING, 'deprecated'); - self::$action = $action; - } - - /** - * Get value for the action attribute of the filter form - * - * @return string Value for the action attribute of the form - * - * @since 3.0 - * @deprecated 4.0 Use JHtmlSidebar::getAction() instead. - */ - public static function getAction() - { - JLog::add('JSubMenuHelper::getAction() is deprecated. Use JHtmlSidebar::getAction() instead.', JLog::WARNING, 'deprecated'); - - return self::$action; - } -} diff --git a/administrator/index.php b/administrator/index.php index 9f6a1180f1f41..a46b16e4fa44c 100644 --- a/administrator/index.php +++ b/administrator/index.php @@ -41,8 +41,6 @@ } require_once JPATH_BASE . '/includes/framework.php'; -require_once JPATH_BASE . '/includes/helper.php'; -require_once JPATH_BASE . '/includes/toolbar.php'; // Set profiler start time and memory usage and mark afterLoad in the profiler. JDEBUG ? JProfiler::getInstance('Application')->setStart($startTime, $startMem)->mark('afterLoad') : null; diff --git a/administrator/modules/mod_submenu/mod_submenu.php b/administrator/modules/mod_submenu/mod_submenu.php deleted file mode 100644 index 81ddb0e38a8ed..0000000000000 --- a/administrator/modules/mod_submenu/mod_submenu.php +++ /dev/null @@ -1,24 +0,0 @@ -input->getBool('hidemainmenu'); - -if ($displayMenu || $displayFilters) -{ - require JModuleHelper::getLayoutPath('mod_submenu', $params->get('layout', 'default')); -} diff --git a/administrator/modules/mod_submenu/mod_submenu.xml b/administrator/modules/mod_submenu/mod_submenu.xml deleted file mode 100644 index 5f4a88eb52d4c..0000000000000 --- a/administrator/modules/mod_submenu/mod_submenu.xml +++ /dev/null @@ -1,39 +0,0 @@ - - - mod_submenu - Joomla! Project - Feb 2006 - Copyright (C) 2005 - 2016 Open Source Matters. All rights reserved. - GNU General Public License version 2 or later; see LICENSE.txt - admin@joomla.org - www.joomla.org - 3.0.0 - MOD_SUBMENU_XML_DESCRIPTION - - mod_submenu.php - tmpl - - - en-GB.mod_submenu.ini - en-GB.mod_submenu.sys.ini - - - - -
- - - - -
-
-
-
diff --git a/administrator/modules/mod_submenu/tmpl/default.php b/administrator/modules/mod_submenu/tmpl/default.php deleted file mode 100644 index d18a17ef2fd32..0000000000000 --- a/administrator/modules/mod_submenu/tmpl/default.php +++ /dev/null @@ -1,57 +0,0 @@ - - diff --git a/installation/sql/mysql/joomla.sql b/installation/sql/mysql/joomla.sql index 6304c3c8d2fbb..60a53750e2bf9 100644 --- a/installation/sql/mysql/joomla.sql +++ b/installation/sql/mysql/joomla.sql @@ -75,7 +75,6 @@ INSERT INTO `#__assets` (`id`, `parent_id`, `lft`, `rgt`, `level`, `name`, `titl (44, 18, 52, 53, 2, 'com_modules.module.9', 'Quick Icons', '{"core.delete":[],"core.edit":[],"core.edit.state":[]}'), (45, 18, 54, 55, 2, 'com_modules.module.10', 'Logged-in Users', '{"core.delete":[],"core.edit":[],"core.edit.state":[]}'), (46, 18, 56, 57, 2, 'com_modules.module.12', 'Admin Menu', '{"core.delete":[],"core.edit":[],"core.edit.state":[]}'), -(47, 18, 58, 59, 2, 'com_modules.module.13', 'Admin Submenu', '{"core.delete":[],"core.edit":[],"core.edit.state":[]}'), (48, 18, 60, 61, 2, 'com_modules.module.14', 'User Status', '{"core.delete":[],"core.edit":[],"core.edit.state":[]}'), (49, 18, 62, 63, 2, 'com_modules.module.15', 'Title', '{"core.delete":[],"core.edit":[],"core.edit.state":[]}'), (50, 18, 64, 65, 2, 'com_modules.module.16', 'Login Form', '{"core.delete":[],"core.edit":[],"core.edit.state":[]}'), @@ -550,7 +549,6 @@ INSERT INTO `#__extensions` (`extension_id`, `name`, `type`, `element`, `folder` (307, 'mod_popular', 'module', 'mod_popular', '', 1, 1, 1, 0, '', '', '', '', 0, '0000-00-00 00:00:00', 0, 0), (308, 'mod_quickicon', 'module', 'mod_quickicon', '', 1, 1, 1, 1, '', '', '', '', 0, '0000-00-00 00:00:00', 0, 0), (309, 'mod_status', 'module', 'mod_status', '', 1, 1, 1, 0, '', '', '', '', 0, '0000-00-00 00:00:00', 0, 0), -(310, 'mod_submenu', 'module', 'mod_submenu', '', 1, 1, 1, 0, '', '', '', '', 0, '0000-00-00 00:00:00', 0, 0), (311, 'mod_title', 'module', 'mod_title', '', 1, 1, 1, 0, '', '', '', '', 0, '0000-00-00 00:00:00', 0, 0), (312, 'mod_toolbar', 'module', 'mod_toolbar', '', 1, 1, 1, 1, '', '', '', '', 0, '0000-00-00 00:00:00', 0, 0), (313, 'mod_multilangstatus', 'module', 'mod_multilangstatus', '', 1, 1, 1, 0, '', '{"cache":"0"}', '', '', 0, '0000-00-00 00:00:00', 0, 0), diff --git a/installation/sql/postgresql/joomla.sql b/installation/sql/postgresql/joomla.sql index 1596406091599..a01618e788aa1 100644 --- a/installation/sql/postgresql/joomla.sql +++ b/installation/sql/postgresql/joomla.sql @@ -73,7 +73,6 @@ INSERT INTO "#__assets" ("id", "parent_id", "lft", "rgt", "level", "name", "titl (44, 18, 52, 53, 2, 'com_modules.module.9', 'Quick Icons', '{"core.delete":[],"core.edit":[],"core.edit.state":[]}'), (45, 18, 54, 55, 2, 'com_modules.module.10', 'Logged-in Users', '{"core.delete":[],"core.edit":[],"core.edit.state":[]}'), (46, 18, 56, 57, 2, 'com_modules.module.12', 'Admin Menu', '{"core.delete":[],"core.edit":[],"core.edit.state":[]}'), -(47, 18, 58, 59, 2, 'com_modules.module.13', 'Admin Submenu', '{"core.delete":[],"core.edit":[],"core.edit.state":[]}'), (48, 18, 60, 61, 2, 'com_modules.module.14', 'User Status', '{"core.delete":[],"core.edit":[],"core.edit.state":[]}'), (49, 18, 62, 63, 2, 'com_modules.module.15', 'Title', '{"core.delete":[],"core.edit":[],"core.edit.state":[]}'), (50, 18, 64, 65, 2, 'com_modules.module.16', 'Login Form', '{"core.delete":[],"core.edit":[],"core.edit.state":[]}'), @@ -547,7 +546,6 @@ INSERT INTO "#__extensions" ("extension_id", "name", "type", "element", "folder" (307, 'mod_popular', 'module', 'mod_popular', '', 1, 1, 1, 0, '', '', '', '', 0, '1970-01-01 00:00:00', 0, 0), (308, 'mod_quickicon', 'module', 'mod_quickicon', '', 1, 1, 1, 1, '', '', '', '', 0, '1970-01-01 00:00:00', 0, 0), (309, 'mod_status', 'module', 'mod_status', '', 1, 1, 1, 0, '', '', '', '', 0, '1970-01-01 00:00:00', 0, 0), -(310, 'mod_submenu', 'module', 'mod_submenu', '', 1, 1, 1, 0, '', '', '', '', 0, '1970-01-01 00:00:00', 0, 0), (311, 'mod_title', 'module', 'mod_title', '', 1, 1, 1, 0, '', '', '', '', 0, '1970-01-01 00:00:00', 0, 0), (312, 'mod_toolbar', 'module', 'mod_toolbar', '', 1, 1, 1, 1, '', '', '', '', 0, '1970-01-01 00:00:00', 0, 0), (313, 'mod_multilangstatus', 'module', 'mod_multilangstatus', '', 1, 1, 1, 0, '', '{"cache":"0"}', '', '', 0, '1970-01-01 00:00:00', 0, 0), diff --git a/libraries/cms/application/administrator.php b/libraries/cms/application/administrator.php index c731da906037c..3acc70a0b4410 100644 --- a/libraries/cms/application/administrator.php +++ b/libraries/cms/application/administrator.php @@ -63,7 +63,7 @@ public function dispatch($component = null) { if ($component === null) { - $component = JAdministratorHelper::findOption(); + $component = $this->findOption(); } // Load the document to the API @@ -459,4 +459,38 @@ protected function route() JPluginHelper::importPlugin('system'); $this->triggerEvent('onAfterRoute'); } + + /** + * Return the application option string [main component]. + * + * @return string The component to access. + * + * @since __DEPLOY_VERSION__ + */ + public function findOption() + { + $app = JFactory::getApplication(); + $option = strtolower($app->input->get('option')); + $user = $app->getIdentity(); + + if (!$user) + { + $app->loadIdentity(JFactory::getUser()); + $user = $app->getIdentity(); + } + + if ($user->get('guest') || !$user->authorise('core.login.admin')) + { + $option = 'com_login'; + } + + if (empty($option)) + { + $option = 'com_cpanel'; + } + + $app->input->set('option', $option); + + return $option; + } } diff --git a/administrator/includes/toolbar.php b/libraries/cms/toolbar/helper.php similarity index 99% rename from administrator/includes/toolbar.php rename to libraries/cms/toolbar/helper.php index 9b27e2a4b35da..321a24d3f1ba6 100644 --- a/administrator/includes/toolbar.php +++ b/libraries/cms/toolbar/helper.php @@ -8,8 +8,6 @@ defined('_JEXEC') or die; -JLoader::register('JSubMenuHelper', JPATH_BASE . '/includes/subtoolbar.php'); - /** * Utility class for the button bar. * diff --git a/tests/unit/suites/administrator/includes/JAdministratorHelperTest.php b/tests/unit/suites/administrator/includes/JAdministratorHelperTest.php deleted file mode 100644 index d360c0c3ed5ab..0000000000000 --- a/tests/unit/suites/administrator/includes/JAdministratorHelperTest.php +++ /dev/null @@ -1,157 +0,0 @@ -object = new JErrorPage; - $this->saveFactoryState(); - - JFactory::$application = $this->getMockCmsApp(); - JFactory::$application->input = $this->getMockInput(); - $this->user = $this->getMock('JUser', array('get', 'authorise')); - - JFactory::$application->expects($this->once()) - ->method('getIdentity') - ->will($this->returnValue($this->user)); - } - - /** - * Tears down the fixture, for example, closes a network connection. - * This method is called after a test is executed. - */ - protected function tearDown() - { - $this->restoreFactoryState(); - unset($this->user); - } - - /** - * Tests the findOption() method simulating a guest. - */ - public function testFindOptionGuest() - { - $this->user->expects($this->once()) - ->method('get') - ->with($this->equalTo('guest')) - ->willReturn(true); - - $this->user->expects($this->never()) - ->method('authorise'); - - $this->assertEquals( - 'com_login', - JAdministratorHelper::findOption() - ); - - $this->assertEquals( - 'com_login', - JFactory::$application->input->get('option') - ); - } - - /** - * Tests the findOption() method simulating a user without login admin permissions. - */ - public function testFindOptionCanNotLoginAdmin() - { - $this->user->expects($this->once()) - ->method('get') - ->with($this->equalTo('guest')) - ->willReturn(false); - - $this->user->expects($this->once()) - ->method('authorise') - ->with($this->equalTo('core.login.admin')) - ->willReturn(false); - - $this->assertEquals( - 'com_login', - JAdministratorHelper::findOption() - ); - - $this->assertEquals( - 'com_login', - JFactory::$application->input->get('option') - ); - } - - /** - * Tests the findOption() method simulating a user who is able to log in to admin. - */ - public function testFindOptionCanLoginAdmin() - { - $this->user->expects($this->once()) - ->method('get') - ->with($this->equalTo('guest')) - ->willReturn(false); - - $this->user->expects($this->once()) - ->method('authorise') - ->with($this->equalTo('core.login.admin')) - ->willReturn(true); - - $this->assertEquals( - 'com_cpanel', - JAdministratorHelper::findOption() - ); - - $this->assertEquals( - 'com_cpanel', - JFactory::$application->input->get('option') - ); - } - - /** - * Tests the findOption() method simulating the option at a special value. - */ - public function testFindOptionCanLoginAdminOptionSet() - { - $this->user->expects($this->once()) - ->method('get') - ->with($this->equalTo('guest')) - ->willReturn(false); - - $this->user->expects($this->once()) - ->method('authorise') - ->with($this->equalTo('core.login.admin')) - ->willReturn(false); - - JFactory::$application->input->set('option', 'foo'); - - $this->assertEquals( - 'com_login', - JAdministratorHelper::findOption() - ); - - $this->assertEquals( - 'com_login', - JFactory::$application->input->get('option') - ); - } -} diff --git a/tests/unit/suites/libraries/cms/application/JApplicationAdministratorTest.php b/tests/unit/suites/libraries/cms/application/JApplicationAdministratorTest.php index a836624f529ae..050da2bb45b0d 100644 --- a/tests/unit/suites/libraries/cms/application/JApplicationAdministratorTest.php +++ b/tests/unit/suites/libraries/cms/application/JApplicationAdministratorTest.php @@ -280,4 +280,103 @@ public function testRender() $this->assertEquals(array('JWeb Body'), TestReflection::getValue($this->class, 'response')->body); } + + /** + * Tests the findOption() method simulating a guest. + */ + public function testFindOptionGuest() + { + $user = $this->getMock('JUser', array('get', 'authorise')); + $user->expects($this->once()) + ->method('get') + ->with($this->equalTo('guest')) + ->willReturn(true); + $user->expects($this->never()) + ->method('authorise'); + $this->class->loadIdentity($user); + $this->assertEquals( + 'com_login', + $this->class->findOption() + ); + $this->assertEquals( + 'com_login', + $this->class->input->get('option') + ); + } + + /** + * Tests the findOption() method simulating an user without login admin permissions. + */ + public function testFindOptionCanNotLoginAdmin() + { + $user = $this->getMock('JUser', array('get', 'authorise')); + $user->expects($this->once()) + ->method('get') + ->with($this->equalTo('guest')) + ->willReturn(false); + $user->expects($this->once()) + ->method('authorise') + ->with($this->equalTo('core.login.admin')) + ->willReturn(false); + $this->class->loadIdentity($user); + $this->assertEquals( + 'com_login', + $this->class->findOption() + ); + $this->assertEquals( + 'com_login', + $this->class->input->get('option') + ); + } + + /** + * Tests the findOption() method simulating an user who is able to log in to admin. + */ + public function testFindOptionCanLoginAdmin() + { + $user = $this->getMock('JUser', array('get', 'authorise')); + $user->expects($this->once()) + ->method('get') + ->with($this->equalTo('guest')) + ->willReturn(false); + $user->expects($this->once()) + ->method('authorise') + ->with($this->equalTo('core.login.admin')) + ->willReturn(true); + $this->class->loadIdentity($user); + $this->assertEquals( + 'com_cpanel', + $this->class->findOption() + ); + $this->assertEquals( + 'com_cpanel', + $this->class->input->get('option') + ); + } + + /** + * Tests the findOption() method simulating the option at a special value. + */ + public function testFindOptionCanLoginAdminOptionSet() + { + $user = $this->getMock('JUser', array('get', 'authorise')); + $user->expects($this->once()) + ->method('get') + ->with($this->equalTo('guest')) + ->willReturn(false); + $user->expects($this->once()) + ->method('authorise') + ->with($this->equalTo('core.login.admin')) + ->willReturn(false); + $this->class->loadIdentity($user); + $this->class->input->set('option', 'foo'); + $this->assertEquals( + 'com_login', + $this->class->findOption() + ); + $this->assertEquals( + 'com_login', + JFactory::$application->input->get('option') + ); + } } diff --git a/travisci-phpunit.xml b/travisci-phpunit.xml index 36e0531c59a71..04aba90e9c446 100644 --- a/travisci-phpunit.xml +++ b/travisci-phpunit.xml @@ -21,9 +21,6 @@ tests/unit/suites/database - - tests/unit/suites/administrator - tests/unit/suites/finderIndexer