/** * @group Core */ public function testAllMethods() { $this->assertEquals(Url::getCurrentQueryStringWithParametersModified(array()), Url::getCurrentQueryString()); $this->assertEquals(Url::getCurrentUrl(), Url::getCurrentUrlWithoutQueryString()); $this->assertEquals(Url::getCurrentUrl(), Url::getCurrentScheme() . '://' . Url::getCurrentHost() . Url::getCurrentScriptName()); $_SERVER['QUERY_STRING'] = 'q=test'; $parameters = array_keys(Url::getArrayFromCurrentQueryString()); $parametersNameToValue = array(); foreach ($parameters as $name) { $parametersNameToValue[$name] = null; } $this->assertEquals('', Url::getCurrentQueryStringWithParametersModified($parametersNameToValue)); }
/** * We link the graph dots to the same report as currently being displayed (only the date would change). * * In some cases the widget is loaded within a report that doesn't exist as such. * For example, the dashboards loads the 'Last visits graph' widget which can't be directly linked to. * Instead, the graph must link back to the dashboard. * * In other cases, like Visitors>Overview or the Goals graphs, we can link the graph clicks to the same report. * * To detect whether or not we can link to a report, we simply check if the current URL from which it was loaded * belongs to the menu or not. If it doesn't belong to the menu, we do not append the hash to the URL, * which results in loading the dashboard. * * @return array Query string array to append to the URL hash or false if the dashboard should be displayed */ private function getQueryStringAsHash() { $queryString = Url::getArrayFromCurrentQueryString(); $piwikParameters = array('idSite', 'date', 'period', 'XDEBUG_SESSION_START', 'KEY'); foreach ($piwikParameters as $parameter) { unset($queryString[$parameter]); } if (MenuMain::getInstance()->isUrlFound($queryString)) { return $queryString; } return false; }