diff --git a/core/Access.php b/core/Access.php index 722595aecbc90af6acde009779dd9a96be4153e7..30cb7a656c2b0c7f4319c2d478d76f5d8dfb84e2 100644 --- a/core/Access.php +++ b/core/Access.php @@ -231,6 +231,17 @@ class Piwik_Access { return $this->token_auth; } + + /** + * Returns the super user's login. + * + * @return string + */ + public function getSuperUserLogin() + { + $superuser = Piwik_Config::getInstance()->superuser; + return $superuser['login']; + } /** * Returns an array of ID sites for which the user has at least a VIEW access. diff --git a/core/Piwik.php b/core/Piwik.php index 171a8fa7e2f911b93b2ce2abf06aac53fb547631..961f561a4e54b512056064acc3814542406bdb5b 100644 --- a/core/Piwik.php +++ b/core/Piwik.php @@ -1569,8 +1569,7 @@ class Piwik */ static public function getSuperUserLogin() { - $superuser = Piwik_Config::getInstance()->superuser; - return $superuser['login']; + return Zend_Registry::get('access')->getSuperUserLogin(); } /** diff --git a/plugins/PDFReports/API.php b/plugins/PDFReports/API.php index 373b19fe0ff2aa706d6087a415e45cb678e4d9fd..b57c05d5dce8af988fe58dd63a13a7bdbaa596a8 100644 --- a/plugins/PDFReports/API.php +++ b/plugins/PDFReports/API.php @@ -351,7 +351,7 @@ class Piwik_PDFReports_API // is enforced in Scheduled tasks, and ensure Multisites.getAll only return the websites that this user can access $userLogin = $report['login']; if (!empty($userLogin) - && $userLogin != Piwik_Config::getInstance()->superuser['login'] + && $userLogin != Piwik::getSuperUserLogin() ) { $_GET['_restrictSitesToLogin'] = $userLogin; } diff --git a/plugins/PDFReports/PDFReports.php b/plugins/PDFReports/PDFReports.php index 5f295b8366b8f3784c2244bf3897e0488a827967..6a0ead94698353de3a5d72ae7cabeea0077f8604 100644 --- a/plugins/PDFReports/PDFReports.php +++ b/plugins/PDFReports/PDFReports.php @@ -371,7 +371,7 @@ class Piwik_PDFReports extends Piwik_Plugin if ($reportParameters[self::EMAIL_ME_PARAMETER] == 1) { if (Piwik::getCurrentUserLogin() == $report['login']) { $emails[] = Piwik::getCurrentUserEmail(); - } elseif ($report['login'] == Piwik_Config::getInstance()->superuser['login']) { + } elseif ($report['login'] == Piwik::getSuperUserLogin()) { $emails[] = Piwik::getSuperUserEmail(); } else { try { diff --git a/plugins/UsersManager/API.php b/plugins/UsersManager/API.php index 7a0b992b6454247284fb41d57eedf79a38badf7e..3edc46bec46004f02a023209253e8d5e99406f51 100644 --- a/plugins/UsersManager/API.php +++ b/plugins/UsersManager/API.php @@ -601,7 +601,7 @@ class Piwik_UsersManager_API private function checkUserIsNotSuperUser($userLogin) { - if ($userLogin == Piwik_Config::getInstance()->superuser['login']) { + if ($userLogin == Piwik::getSuperUserLogin()) { throw new Exception(Piwik_TranslateException("UsersManager_ExceptionSuperUser")); } } diff --git a/tests/PHPUnit/FakeAccess.php b/tests/PHPUnit/FakeAccess.php index 2f2dba40435c0df56caec8fac9f2e72bd4456dee..5b14a25c416c25e7dee94488aa4bf8162a431c99 100644 --- a/tests/PHPUnit/FakeAccess.php +++ b/tests/PHPUnit/FakeAccess.php @@ -14,6 +14,7 @@ class FakeAccess public static $idSitesAdmin = array(); public static $idSitesView = array(); public static $identity = 'superUserLogin'; + public static $superUserLogin = 'superUserLogin'; public function __construct() { @@ -155,4 +156,9 @@ class FakeAccess } return $result; } + + public function getSuperUserLogin() + { + return self::$superUserLogin; + } } diff --git a/tests/PHPUnit/Integration/ManyVisitorsOneWebsiteTest.php b/tests/PHPUnit/Integration/ManyVisitorsOneWebsiteTest.php index 677c5c3ff758a7b1bc29a942e6825051f2a78552..0c01c81f8faac420cce1e09dbc9a4e41e3b27483 100755 --- a/tests/PHPUnit/Integration/ManyVisitorsOneWebsiteTest.php +++ b/tests/PHPUnit/Integration/ManyVisitorsOneWebsiteTest.php @@ -73,6 +73,17 @@ class Test_Piwik_Integration_ManyVisitorsOneWebsiteTest extends IntegrationTestC 'periods' => array('month'), 'otherRequestParameters' => array('ip' => '194.57.91.215') )), + + // test filter_sort_column w/ processed metric + array('API.getProcessedReport', array('idSite' => $idSite, + 'date' => $dateTime, + 'periods' => 'day', + 'apiModule' => 'UserCountry', + 'apiAction' => 'getCity', + 'testSuffix' => '_filterSortProcessed', + 'otherRequestParameters' => array( + //'filter_sort_column' => 'bounce_rate' + ))), ); } } diff --git a/tests/PHPUnit/IntegrationTestCase.php b/tests/PHPUnit/IntegrationTestCase.php index 8647ea4c56e09453c42c802f4e7a6f72e436ded6..b3f25de242ec84a77cde93ac28d0b3e62d889306 100755 --- a/tests/PHPUnit/IntegrationTestCase.php +++ b/tests/PHPUnit/IntegrationTestCase.php @@ -146,9 +146,6 @@ abstract class IntegrationTestCase extends PHPUnit_Framework_TestCase // Usually these modules either return random changing data, or are already tested in specific unit tests. self::setApiNotToCall(self::$defaultApiNotToCall); self::setApiToCall(array()); - - // set config superuser login to test login - Piwik_Config::getInstance()->superuser['login'] = 'superUserLogin'; } public static function tearDownAfterClass() diff --git a/tests/PHPUnit/Plugins/UsersManagerTest.php b/tests/PHPUnit/Plugins/UsersManagerTest.php index 48d3f173905fb7f9454eebca204613acebc5f83e..ee36e6875175c68524d9748d6df44e2914f0ddc8 100644 --- a/tests/PHPUnit/Plugins/UsersManagerTest.php +++ b/tests/PHPUnit/Plugins/UsersManagerTest.php @@ -21,6 +21,7 @@ class UsersManagerTest extends DatabaseTestCase //finally we set the user as a super user by default FakeAccess::$superUser = true; + FakeAccess::$superUserLogin = 'superusertest'; Zend_Registry::set('access', $pseudoMockAccess); // we make sure the tests don't depend on the config file content