'dispatch', 'FrontController.checkForUpdates' => 'updateCheck', ); return $hooks; } public static function getComponentUpdates(Piwik_Updater $updater) { $updater->addComponentToCheck('core', Piwik_Version::VERSION); $plugins = \Piwik\PluginsManager::getInstance()->getLoadedPlugins(); foreach ($plugins as $pluginName => $plugin) { $updater->addComponentToCheck($pluginName, $plugin->getVersion()); } $componentsWithUpdateFile = $updater->getComponentsWithUpdateFile(); if (count($componentsWithUpdateFile) == 0 && !$updater->hasNewVersion('core')) { return null; } return $componentsWithUpdateFile; } public function dispatch() { $module = Common::getRequestVar('module', '', 'string'); $action = Common::getRequestVar('action', '', 'string'); $updater = new Piwik_Updater(); $updater->addComponentToCheck('core', Piwik_Version::VERSION); $updates = $updater->getComponentsWithNewVersion(); if (!empty($updates)) { Piwik::deleteAllCacheOnUpdate(); } if (self::getComponentUpdates($updater) !== null && $module != 'CoreUpdater' // Proxy module is used to redirect users to piwik.org, should still work when Piwik must be updated && $module != 'Proxy' && !($module == 'LanguagesManager' && $action == 'saveLanguage') ) { if (Piwik_FrontController::shouldRethrowException()) { throw new Exception("Piwik and/or some plugins have been upgraded to a new version. \n". "--> Please run the update process first. See documentation: http://piwik.org/docs/update/ \n"); } else { Piwik::redirectToModule('CoreUpdater'); } } } public function updateCheck() { Piwik_UpdateCheck::check(); } }