Piwik\Plugin\Controller::redirectToIndex PHP Method

redirectToIndex() public method

This function will exit immediately after executing.
public redirectToIndex ( string $moduleToRedirect, string $actionToRedirect, integer | null $websiteId = null, string | null $defaultPeriod = null, string | null $defaultDate = null, array $parameters = [] )
$moduleToRedirect string The plugin to redirect to, eg. `"MultiSites"`.
$actionToRedirect string Action, eg. `"index"`.
$websiteId integer | null The new idSite query parameter, eg, `1`.
$defaultPeriod string | null The new period query parameter, eg, `'day'`.
$defaultDate string | null The new date query parameter, eg, `'today'`.
$parameters array Other query parameters to append to the URL.
    public function redirectToIndex($moduleToRedirect, $actionToRedirect, $websiteId = null, $defaultPeriod = null, $defaultDate = null, $parameters = array())
    {
        try {
            $this->doRedirectToUrl($moduleToRedirect, $actionToRedirect, $websiteId, $defaultPeriod, $defaultDate, $parameters);
        } catch (Exception $e) {
            // no website ID to default to, so could not redirect
        }
        if (Piwik::hasUserSuperUserAccess()) {
            $siteTableName = Common::prefixTable('site');
            $message = "Error: no website was found in this Piwik installation.\n\t\t\t<br />Check the table '{$siteTableName}' in your database, it should contain your Piwik websites.";
            $ex = new NoWebsiteFoundException($message);
            $ex->setIsHtmlMessage();
            throw $ex;
        }
        if (!Piwik::isUserIsAnonymous()) {
            $currentLogin = Piwik::getCurrentUserLogin();
            $emails = implode(',', Piwik::getAllSuperUserAccessEmailAddresses());
            $errorMessage = sprintf(Piwik::translate('CoreHome_NoPrivilegesAskPiwikAdmin'), $currentLogin, "<br/><a href='mailto:" . $emails . "?subject=Access to Piwik for user {$currentLogin}'>", "</a>");
            $errorMessage .= "<br /><br />&nbsp;&nbsp;&nbsp;<b><a href='index.php?module=" . Piwik::getLoginPluginName() . "&amp;action=logout'>&rsaquo; " . Piwik::translate('General_Logout') . "</a></b><br />";
            $ex = new NoPrivilegesException($errorMessage);
            $ex->setIsHtmlMessage();
            throw $ex;
        }
        echo FrontController::getInstance()->dispatch(Piwik::getLoginPluginName(), false);
        exit;
    }

Usage Example

Example #1
0
 function redirectToCoreHomeIndex()
 {
     $defaultReport = API::getInstance()->getUserPreference(Piwik::getCurrentUserLogin(), API::PREFERENCE_DEFAULT_REPORT);
     $module = 'CoreHome';
     $action = 'index';
     // User preference: default report to load is the All Websites dashboard
     if ($defaultReport == 'MultiSites' && \Piwik\Plugin\Manager::getInstance()->isPluginActivated('MultiSites')) {
         $module = 'MultiSites';
     }
     if ($defaultReport == Piwik::getLoginPluginName()) {
         $module = Piwik::getLoginPluginName();
     }
     $idSite = Common::getRequestVar('idSite', false, 'int');
     parent::redirectToIndex($module, $action, $idSite);
 }