public loadTrackerPlugins ( ) : array | ||
return | array | names of plugins that have been loaded |
public function loadTrackerPlugins()
{
$cacheId = 'PluginsTracker';
$cache = Cache::getEagerCache();
if ($cache->contains($cacheId)) {
$pluginsTracker = $cache->fetch($cacheId);
} else {
$this->unloadPlugins();
$this->loadActivatedPlugins();
$pluginsTracker = array();
foreach ($this->loadedPlugins as $pluginName => $plugin) {
if ($this->isTrackerPlugin($plugin)) {
$pluginsTracker[] = $pluginName;
}
}
if (!empty($pluginsTracker)) {
$cache->save($cacheId, $pluginsTracker);
}
}
if (empty($pluginsTracker)) {
$this->unloadPlugins();
return array();
}
$pluginsTracker = array_diff($pluginsTracker, $this->getTrackerPluginsNotToLoad());
$this->doNotLoadAlwaysActivatedPlugins();
$this->loadPlugins($pluginsTracker);
// we could simply unload all plugins first before loading plugins but this way it is much faster
// since we won't have to create each plugin again and we won't have to parse each plugin metadata file
// again etc
$this->makeSureOnlyActivatedPluginsAreLoaded();
return $pluginsTracker;
}
public function test_loadTrackerPlugins_shouldUnloadAllPlugins_IfThereAreNoneToLoad() { $pluginsToLoad = array(); $this->getCacheForTrackerPlugins()->save($this->trackerCacheId, $pluginsToLoad); $pluginsToLoad = $this->manager->loadTrackerPlugins(); $this->assertEquals(array(), $pluginsToLoad); $this->assertEquals(array(), $this->manager->getLoadedPlugins()); }