Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/PluginsManager.php85
-rw-r--r--plugins/CorePluginsAdmin/Controller.php31
-rw-r--r--plugins/CorePluginsAdmin/PluginInstaller.php2
3 files changed, 80 insertions, 38 deletions
diff --git a/core/PluginsManager.php b/core/PluginsManager.php
index b56f4a4e43..48e13ead16 100644
--- a/core/PluginsManager.php
+++ b/core/PluginsManager.php
@@ -34,7 +34,7 @@ class PluginsManager
/**
* Default theme used in Piwik.
*/
- const DEFAULT_THEME="Zeitgeist";
+ const DEFAULT_THEME = "Zeitgeist";
protected $doLoadAlwaysActivatedPlugins = true;
protected $pluginToAlwaysActivate = array(
@@ -54,6 +54,13 @@ class PluginsManager
self::DEFAULT_THEME,
);
+ protected $corePluginsDisabledByDefault = array(
+ 'AnonymizeIP',
+ 'DBStats',
+ 'DevicesDetection',
+ 'TreemapVisualization', // should be moved to marketplace
+ );
+
// If a plugin hooks onto at least an event starting with "Tracker.", we load the plugin during tracker
const TRACKER_EVENT_PREFIX = 'Tracker.';
@@ -114,7 +121,7 @@ class PluginsManager
* @param string $name Name of plugin
* @return bool
*/
- public function isPluginAlwaysActivated($name)
+ private function isPluginAlwaysActivated($name)
{
return in_array($name, $this->pluginToAlwaysActivate);
}
@@ -125,13 +132,9 @@ class PluginsManager
* @param $name
* @return bool
*/
- public function isPluginUninstallable($name)
+ private function isPluginUninstallable($name)
{
- // Reading the plugins from the global.ini.php config file
- $pluginsBundledWithPiwik = Config::getInstance()->getFromDefaultConfig('Plugins');
- $pluginsBundledWithPiwik = $pluginsBundledWithPiwik['Plugins'];
-
- return !in_array($name, $pluginsBundledWithPiwik);
+ return !$this->isPluginBundledWithCore($name);
}
/**
@@ -341,6 +344,70 @@ class PluginsManager
}
/**
+ * Loads in memory the Plugins specified in the config.ini.php file
+ *
+ * @return array
+ */
+ public function returnLoadedPluginsInfo()
+ {
+ $plugins = array();
+
+ $listPlugins = array_merge(
+ $this->readPluginsDirectory(),
+ Config::getInstance()->Plugins['Plugins']
+ );
+ $listPlugins = array_unique($listPlugins);
+ foreach ($listPlugins as $pluginName) {
+ // If the plugin is not core and looks bogus, do not load
+ if($this->isPluginThirdPartyAndBogus($pluginName))
+ {
+// echo $pluginName;
+ continue;
+ }
+
+ $this->loadPlugin($pluginName);
+
+ $plugins[$pluginName] = array(
+ 'activated' => $this->isPluginActivated($pluginName),
+ 'alwaysActivated' => $this->isPluginAlwaysActivated($pluginName),
+ 'uninstallable' => $this->isPluginUninstallable($pluginName),
+ );
+ }
+ $this->loadPluginTranslations();
+
+ $loadedPlugins = $this->getLoadedPlugins();
+ foreach ($loadedPlugins as $oPlugin) {
+ $pluginName = $oPlugin->getPluginName();
+ $plugins[$pluginName]['info'] = $oPlugin->getInformation();
+ }
+ return $plugins;
+ }
+
+
+ protected static function isManifestFileFound($path)
+ {
+ return file_exists($path . "/" . MetadataLoader::PLUGIN_JSON_FILENAME);
+ }
+
+ protected function isPluginBundledWithCore($name)
+ {
+ // Reading the plugins from the global.ini.php config file
+ $pluginsBundledWithPiwik = Config::getInstance()->getFromDefaultConfig('Plugins');
+ $pluginsBundledWithPiwik = $pluginsBundledWithPiwik['Plugins'];
+
+ return in_array($name, $pluginsBundledWithPiwik)
+ || in_array($name, $this->corePluginsDisabledByDefault);
+ }
+
+ protected function isPluginThirdPartyAndBogus($pluginName)
+ {
+ $path = $this->getPluginsDirectory() . $pluginName;
+ return !$this->isPluginBundledWithCore($pluginName)
+ && !$this->isManifestFileFound($path);
+ }
+
+
+ /**
* Load the specified plugins
*
* @param array $pluginsToLoad Array of plugins to load
@@ -721,7 +788,7 @@ class PluginsManager
{
$name = basename($path);
return file_exists($path . "/" . $name . ".php")
- || file_exists($path . "/" . MetadataLoader::PLUGIN_JSON_FILENAME);
+ || self::isManifestFileFound($path);
}
}
diff --git a/plugins/CorePluginsAdmin/Controller.php b/plugins/CorePluginsAdmin/Controller.php
index 946eb15c4c..566ab4f76c 100644
--- a/plugins/CorePluginsAdmin/Controller.php
+++ b/plugins/CorePluginsAdmin/Controller.php
@@ -202,38 +202,13 @@ class Controller extends \Piwik\Controller\Admin
protected function getPluginsInfo($themesOnly = false)
{
- $plugins = array();
-
- $pluginsManager = \Piwik\PluginsManager::getInstance();
- $listPlugins = array_merge(
- $pluginsManager->readPluginsDirectory(),
- Config::getInstance()->Plugins['Plugins']
- );
- $listPlugins = array_unique($listPlugins);
- foreach ($listPlugins as $pluginName) {
- \Piwik\PluginsManager::getInstance()->loadPlugin($pluginName);
- $plugins[$pluginName] = array(
- 'activated' => $pluginsManager->isPluginActivated($pluginName),
- 'alwaysActivated' => $pluginsManager->isPluginAlwaysActivated($pluginName),
- 'uninstallable' => $pluginsManager->isPluginUninstallable($pluginName),
- );
- }
- $pluginsManager->loadPluginTranslations();
-
- $loadedPlugins = $pluginsManager->getLoadedPlugins();
-
- foreach ($loadedPlugins as $oPlugin) {
- $pluginName = $oPlugin->getPluginName();
-
- $plugins[$pluginName]['info'] = $oPlugin->getInformation();
- }
-
+ $plugins = PluginsManager::getInstance()->returnLoadedPluginsInfo();
foreach ($plugins as $pluginName => &$plugin) {
if (!isset($plugin['info'])) {
$plugin['info'] = array(
'description' => '<strong><em>' . Piwik_Translate('CorePluginsAdmin_PluginCannotBeFound')
- . '</strong></em>',
+ . '</strong></em>',
'version' => Piwik_Translate('General_Unknown'),
'theme' => false,
);
@@ -243,7 +218,7 @@ class Controller extends \Piwik\Controller\Admin
$pluginsFiltered = $this->keepPluginsOrThemes($themesOnly, $plugins);
return $pluginsFiltered;
}
-
+
protected function keepPluginsOrThemes($themesOnly, $plugins)
{
$pluginsFiltered = array();
diff --git a/plugins/CorePluginsAdmin/PluginInstaller.php b/plugins/CorePluginsAdmin/PluginInstaller.php
index 5978f2cc83..f9c04d8a7f 100644
--- a/plugins/CorePluginsAdmin/PluginInstaller.php
+++ b/plugins/CorePluginsAdmin/PluginInstaller.php
@@ -19,7 +19,7 @@ use Piwik\Unzip;
*/
class PluginInstaller
{
- const PATH_TO_DOWNLOAD = '/tmp/plugins/';
+ const PATH_TO_DOWNLOAD = '/tmp/latest/plugins/';
const PATH_TO_EXTRACT = '/plugins/';
private $pluginName;