private function reloadActivatedPlugins()
{
$pluginsToPostPendingEventsTo = array();
foreach ($this->pluginsToLoad as $pluginName) {
if (!$this->isPluginLoaded($pluginName) && !$this->isPluginThirdPartyAndBogus($pluginName)) {
$newPlugin = $this->loadPlugin($pluginName);
if ($newPlugin === null) {
continue;
}
if ($newPlugin->hasMissingDependencies()) {
$this->deactivatePlugin($pluginName);
// at this state we do not know yet whether current user has super user access. We do not even know
// if someone is actually logged in.
$message = Piwik::translate('CorePluginsAdmin_WeDeactivatedThePluginAsItHasMissingDependencies', array($pluginName, $newPlugin->getMissingDependenciesAsString()));
$message .= ' ';
$message .= Piwik::translate('General_PleaseContactYourPiwikAdministrator');
$notification = new Notification($message);
$notification->context = Notification::CONTEXT_ERROR;
Notification\Manager::notify('PluginManager_PluginDeactivated', $notification);
continue;
}
$pluginsToPostPendingEventsTo[] = $newPlugin;
}
}
// post pending events after all plugins are successfully loaded
foreach ($pluginsToPostPendingEventsTo as $plugin) {
EventDispatcher::getInstance()->postPendingEventsTo($plugin);
}
}