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:
authorThomas Steur <thomas.steur@googlemail.com>2014-04-09 07:23:18 +0400
committerThomas Steur <thomas.steur@googlemail.com>2014-04-09 07:23:18 +0400
commit918355e3705e258d2bdabf6a42b9ddc8fdfbfda4 (patch)
tree739a5e6b4344eabdc144feafaf3a11cd2529d324 /plugins
parent50da9c7852080d6d6cc056dbf7030469f7e11b3a (diff)
refs #4967 started to work on verifying plugin version during run time and before update. Not 100% tested yet, especially not the updater yet
Diffstat (limited to 'plugins')
-rw-r--r--plugins/CorePluginsAdmin/CorePluginsAdmin.php2
-rw-r--r--plugins/CorePluginsAdmin/Marketplace.php10
-rw-r--r--plugins/CorePluginsAdmin/PluginDependency.php73
-rw-r--r--plugins/CorePluginsAdmin/PluginInstaller.php1
-rw-r--r--plugins/CorePluginsAdmin/templates/macros.twig32
-rw-r--r--plugins/CorePluginsAdmin/templates/pluginDetails.twig4
-rw-r--r--plugins/CorePluginsAdmin/templates/pluginOverview.twig2
-rw-r--r--plugins/CorePluginsAdmin/templates/themeOverview.twig2
-rw-r--r--plugins/CoreUpdater/Controller.php54
-rw-r--r--plugins/CoreUpdater/templates/newVersionAvailable.twig12
m---------plugins/TreemapVisualization0
11 files changed, 105 insertions, 87 deletions
diff --git a/plugins/CorePluginsAdmin/CorePluginsAdmin.php b/plugins/CorePluginsAdmin/CorePluginsAdmin.php
index 3d43c8fbd6..498729f349 100644
--- a/plugins/CorePluginsAdmin/CorePluginsAdmin.php
+++ b/plugins/CorePluginsAdmin/CorePluginsAdmin.php
@@ -11,8 +11,10 @@ namespace Piwik\Plugins\CorePluginsAdmin;
use Piwik\Config;
use Piwik\Menu\MenuAdmin;
use Piwik\Piwik;
+use Piwik\Plugin;
use Piwik\ScheduledTask;
use Piwik\ScheduledTime;
+use Piwik\Plugin\Manager as PluginManager;
/**
*
diff --git a/plugins/CorePluginsAdmin/Marketplace.php b/plugins/CorePluginsAdmin/Marketplace.php
index 191cc0cd09..e50cdbbb39 100644
--- a/plugins/CorePluginsAdmin/Marketplace.php
+++ b/plugins/CorePluginsAdmin/Marketplace.php
@@ -10,7 +10,7 @@ namespace Piwik\Plugins\CorePluginsAdmin;
use Piwik\Date;
use Piwik\Piwik;
-use Piwik\Version;
+use Piwik\Plugin\Dependency as PluginDependency;
/**
*
@@ -53,6 +53,14 @@ class Marketplace
return $names;
}
+ public function getAllAvailablePluginNames()
+ {
+ return array_merge(
+ $this->getAvailablePluginNames(true),
+ $this->getAvailablePluginNames(false)
+ );
+ }
+
public function searchPlugins($query, $sort, $themesOnly)
{
if ($themesOnly) {
diff --git a/plugins/CorePluginsAdmin/PluginDependency.php b/plugins/CorePluginsAdmin/PluginDependency.php
deleted file mode 100644
index 015d7ff70a..0000000000
--- a/plugins/CorePluginsAdmin/PluginDependency.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-/**
- * Piwik - Open source web analytics
- *
- * @link http://piwik.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- *
- */
-namespace Piwik\Plugins\CorePluginsAdmin;
-
-use Piwik\Version;
-use Piwik\Plugin\Manager as PluginManager;
-/**
- *
- */
-class PluginDependency
-{
-
- public function getMissingDependencies($requires)
- {
- $missingRequirements = array();
-
- if (empty($requires)) {
- return $missingRequirements;
- }
-
- foreach ($requires as $name => $requiredVersion) {
- $currentVersion = $this->getCurrentVersion($name);
- $comparison = '>=';
-
- if (preg_match('{^(<>|!=|>=?|<=?|==?)\s*(.*)}', $requiredVersion, $matches)) {
- $requiredVersion = $matches[2];
- $comparison = $matches[1];
- }
-
- if (false === version_compare($currentVersion, $requiredVersion, $comparison)) {
- $missingRequirements[] = array(
- 'requirement' => $name,
- 'actualVersion' => $currentVersion,
- 'requiredVersion' => $comparison . $requiredVersion
- );
- }
- }
-
- return $missingRequirements;
- }
-
- private function getCurrentVersion($name)
- {
- switch (strtolower($name)) {
- case 'piwik':
- return Version::VERSION;
- case 'php':
- return PHP_VERSION;
- default:
- try {
- $pluginNames = PluginManager::getAllPluginsNames();
-
- if (!in_array($name, $pluginNames) || !PluginManager::getInstance()->isPluginLoaded($name)) {
- return '';
- }
-
- $plugin = PluginManager::getInstance()->loadPlugin(ucfirst($name));
-
- if (!empty($plugin)) {
- return $plugin->getVersion();
- }
- } catch (\Exception $e) {}
- }
-
- return '';
- }
-}
diff --git a/plugins/CorePluginsAdmin/PluginInstaller.php b/plugins/CorePluginsAdmin/PluginInstaller.php
index 7aef1af227..f3a1d2f770 100644
--- a/plugins/CorePluginsAdmin/PluginInstaller.php
+++ b/plugins/CorePluginsAdmin/PluginInstaller.php
@@ -13,6 +13,7 @@ use Piwik\Filesystem;
use Piwik\Piwik;
use Piwik\SettingsPiwik;
use Piwik\Unzip;
+use Piwik\Plugin\Dependency as PluginDependency;
/**
*
diff --git a/plugins/CorePluginsAdmin/templates/macros.twig b/plugins/CorePluginsAdmin/templates/macros.twig
index b30faec276..6c69d32f69 100644
--- a/plugins/CorePluginsAdmin/templates/macros.twig
+++ b/plugins/CorePluginsAdmin/templates/macros.twig
@@ -28,7 +28,7 @@
</td>
<td class="desc">
{{ plugin.description }}
- {{ _self.missingRequirementsNotice(plugin) }}
+ {{ _self.missingRequirementsPleaseUpdateNotice(plugin) }}
</td>
<td class="status">
{% if plugin.isActivated %}
@@ -93,7 +93,7 @@
{% endmacro %}
-{% macro missingRequirementsNotice(plugin) %}
+{% macro missingRequirementsPleaseUpdateNotice(plugin) %}
{% if plugin.missingRequirements and 0 < plugin.missingRequirements|length %}
{% for req in plugin.missingRequirements -%}
<p class="missingRequirementsNotice">
@@ -107,6 +107,26 @@
{% endif %}
{% endmacro %}
+{% macro missingRequirementsInfo(pluginName, metadata, missingRequirements, marketplacePluginNames) %}
+ {% set causedBy = '' %}
+ {% for dependency in missingRequirements %}
+ {% set causedBy = causedBy ~ dependency.requirement|capitalize ~ ' ' ~ dependency.causedBy %}
+ {% if not loop.last %}
+ {% set causedBy = causedBy ~ ', ' %}
+ {% endif %}
+ {% endfor %}
+
+ {{ 'CorePluginsAdmin_PluginRequirement'|translate(pluginName, causedBy) }}
+
+ {% if metadata is defined
+ and metadata.support is defined
+ and metadata.support.email
+ and pluginName not in marketplacePluginNames %}
+ {{ 'CorePluginsAdmin_EmailToEnquireUpdatedVersion'|translate('<a href="mailto:' ~ metadata.support.email|e('html_attr') ~'">' ~ metadata.support.email ~ '</a>', pluginName)|raw }}
+ {% endif %}
+{% endmacro %}
+
+
{% macro tablePlugins(pluginsInfo, pluginNamesHavingSettings, activateNonce, deactivateNonce, uninstallNonce, isTheme, marketplacePluginNames, displayAdminLinks) %}
<div id="confirmUninstallPlugin" class="ui-confirm">
@@ -208,6 +228,14 @@
{% else %}
{% if plugin.activated %}
<a href='index.php?module=CorePluginsAdmin&action=deactivate&pluginName={{ name }}&nonce={{ deactivateNonce }}'>{{ 'CorePluginsAdmin_Deactivate'|translate }}</a>
+ {% elseif plugin.missingRequirements %}
+ <a ng-click="{{ name }}.outdated=true" >{{ 'CorePluginsAdmin_Activate'|translate }}</a>
+ <span ng-init="{{ name }}.outdated" piwik-dialog="{{ name }}.outdated" class="ui-confirm">
+ <h2>{{ 'CorePluginsAdmin_ActivationNotPossible'|translate(name) }}</h2>
+ <p style="text-align: center">
+ {{ _self.missingRequirementsInfo(name, plugin.info, plugin.missingRequirements, marketplacePluginNames) }}
+ </p>
+ </span>
{% else %}
<a href='index.php?module=CorePluginsAdmin&action=activate&pluginName={{ name }}&nonce={{ activateNonce }}'>{{ 'CorePluginsAdmin_Activate'|translate }}</a>
{% endif %}
diff --git a/plugins/CorePluginsAdmin/templates/pluginDetails.twig b/plugins/CorePluginsAdmin/templates/pluginDetails.twig
index c28445f4fd..2487ef41d6 100644
--- a/plugins/CorePluginsAdmin/templates/pluginDetails.twig
+++ b/plugins/CorePluginsAdmin/templates/pluginDetails.twig
@@ -55,7 +55,7 @@
</ul>
<div id="tabs-description">
- {{ pluginsMacro.missingRequirementsNotice(plugin) }}
+ {{ pluginsMacro.missingRequirementsPleaseUpdateNotice(plugin) }}
{{ latestVersion.readmeHtml.description|raw }}
</div>
@@ -66,7 +66,7 @@
{% endif %}
<div id="tabs-changelog">
- {{ pluginsMacro.missingRequirementsNotice(plugin) }}
+ {{ pluginsMacro.missingRequirementsPleaseUpdateNotice(plugin) }}
{% if plugin.canBeUpdated %}
<p class="updateAvailableNotice">{{ 'CorePluginsAdmin_PluginUpdateAvailable'|translate(plugin.currentVersion, plugin.latestVersion) }}
{% if plugin.repositoryChangelogUrl %}<a target="_blank" href="{{ plugin.repositoryChangelogUrl }}">{{ 'CorePluginsAdmin_ViewRepositoryChangelog'|translate }}</a>{% endif %}
diff --git a/plugins/CorePluginsAdmin/templates/pluginOverview.twig b/plugins/CorePluginsAdmin/templates/pluginOverview.twig
index 4606118e10..cbe4ca5a89 100644
--- a/plugins/CorePluginsAdmin/templates/pluginOverview.twig
+++ b/plugins/CorePluginsAdmin/templates/pluginOverview.twig
@@ -27,4 +27,4 @@
<p class="updateAvailableNotice" data-activePluginTab="changelog">{{ 'CorePluginsAdmin_PluginUpdateAvailable'|translate(plugin.currentVersion, plugin.latestVersion) }}</p>
{% endif %}
-{{ plugins.missingRequirementsNotice(plugin) }} \ No newline at end of file
+{{ plugins.missingRequirementsPleaseUpdateNotice(plugin) }} \ No newline at end of file
diff --git a/plugins/CorePluginsAdmin/templates/themeOverview.twig b/plugins/CorePluginsAdmin/templates/themeOverview.twig
index 6f0e82f807..3458b309c1 100644
--- a/plugins/CorePluginsAdmin/templates/themeOverview.twig
+++ b/plugins/CorePluginsAdmin/templates/themeOverview.twig
@@ -24,7 +24,7 @@
<p class="updateAvailableNotice">{{ 'CorePluginsAdmin_PluginUpdateAvailable'|translate(plugin.currentVersion, plugin.latestVersion) }}</p>
{% endif %}
-{{ plugins.missingRequirementsNotice(plugin) }}
+{{ plugins.missingRequirementsPleaseUpdateNotice(plugin) }}
<a href="javascript:void(0);" class="more"><img title="{{ 'General_MoreDetails'|translate }}"
class="preview" src="{{ plugin.screenshots|first }}?w=250&h=250"/></a>
diff --git a/plugins/CoreUpdater/Controller.php b/plugins/CoreUpdater/Controller.php
index 3e8981d07a..46a1c6cc5c 100644
--- a/plugins/CoreUpdater/Controller.php
+++ b/plugins/CoreUpdater/Controller.php
@@ -9,27 +9,27 @@
namespace Piwik\Plugins\CoreUpdater;
use Exception;
-use Piwik\API\Request;
use Piwik\ArchiveProcessor\Rules;
use Piwik\Common;
use Piwik\Config;
-use Piwik\DataTable\Renderer\Console;
use Piwik\DbHelper;
use Piwik\Filechecks;
use Piwik\Filesystem;
use Piwik\Http;
use Piwik\Option;
use Piwik\Piwik;
+use Piwik\Plugin;
+use Piwik\Plugins\CorePluginsAdmin\Marketplace;
use Piwik\Plugins\LanguagesManager\LanguagesManager;
use Piwik\SettingsPiwik;
use Piwik\SettingsServer;
use Piwik\Unzip;
use Piwik\UpdateCheck;
use Piwik\Updater;
-use Piwik\UpdaterErrorException;
use Piwik\Version;
use Piwik\View;
use Piwik\View\OneClickDone;
+use Piwik\Plugin\Manager as PluginManager;
/**
*
@@ -44,6 +44,7 @@ class Controller extends \Piwik\Plugin\Controller
private $errorMessages = array();
private $deactivatedPlugins = array();
private $pathPiwikZip = false;
+ private $newVersion;
static protected function getLatestZipUrl($newVersion)
{
@@ -60,11 +61,26 @@ class Controller extends \Piwik\Plugin\Controller
$newVersion = $this->checkNewVersionIsAvailableOrDie();
$view = new View('@CoreUpdater/newVersionAvailable');
+
$view->piwik_version = Version::VERSION;
$view->piwik_new_version = $newVersion;
+
+ $incompatiblePlugins = $this->getIncompatiblePlugins($newVersion);
+
+ $marketplacePlugins = array();
+ try {
+ if (!empty($incompatiblePlugins)) {
+ $marketplace = new Marketplace();
+ $marketplacePlugins = $marketplace->getAllAvailablePluginNames();
+ }
+ } catch (\Exception $e) {}
+
+ $view->marketplacePlugins = $marketplacePlugins;
+ $view->incompatiblePlugins = $incompatiblePlugins;
$view->piwik_latest_version_url = self::getLatestZipUrl($newVersion);
- $view->can_auto_update = Filechecks::canAutoUpdate();
+ $view->can_auto_update = Filechecks::canAutoUpdate();
$view->makeWritableCommands = Filechecks::getAutoUpdateMakeWritableMessage();
+
return $view->render();
}
@@ -80,11 +96,21 @@ class Controller extends \Piwik\Plugin\Controller
array('oneClick_Download', Piwik::translate('CoreUpdater_DownloadingUpdateFromX', $url)),
array('oneClick_Unpack', Piwik::translate('CoreUpdater_UnpackingTheUpdate')),
array('oneClick_Verify', Piwik::translate('CoreUpdater_VerifyingUnpackedFiles')),
- array('oneClick_CreateConfigFileBackup', Piwik::translate('CoreUpdater_CreatingBackupOfConfigurationFile', self::CONFIG_FILE_BACKUP)),
- array('oneClick_Copy', Piwik::translate('CoreUpdater_InstallingTheLatestVersion')),
- array('oneClick_Finished', Piwik::translate('CoreUpdater_PiwikUpdatedSuccessfully')),
+ array('oneClick_CreateConfigFileBackup', Piwik::translate('CoreUpdater_CreatingBackupOfConfigurationFile', self::CONFIG_FILE_BACKUP))
);
+ $incompatiblePlugins = $this->getIncompatiblePlugins($this->newVersion);
+ if (!empty($incompatiblePlugins)) {
+ $namesToDisable = array();
+ foreach ($incompatiblePlugins as $incompatiblePlugin) {
+ $namesToDisable[] = $incompatiblePlugin->getPluginName();
+ }
+ $steps[] = array('oneClick_DisableIncompatiblePlugins', Piwik::translate('DisablingIncompatiblePlugins', implode(', ', $namesToDisable)));
+ }
+
+ $steps[] = array('oneClick_Copy', Piwik::translate('CoreUpdater_InstallingTheLatestVersion'));
+ $steps[] = array('oneClick_Finished', Piwik::translate('CoreUpdater_PiwikUpdatedSuccessfully'));
+
$errorMessage = false;
$messages = array();
foreach ($steps as $step) {
@@ -204,6 +230,15 @@ class Controller extends \Piwik\Plugin\Controller
Filesystem::copy($configFileBefore, $configFileAfter);
}
+ private function oneClick_DisableIncompatiblePlugins()
+ {
+ $plugins = $this->getIncompatiblePlugins($this->newVersion);
+
+ foreach ($plugins as $plugin) {
+ $plugin->deactivate();
+ }
+ }
+
private function oneClick_Copy()
{
/*
@@ -390,4 +425,9 @@ class Controller extends \Piwik\Plugin\Controller
$view->deactivatedPlugins = $this->deactivatedPlugins;
}
+ private function getIncompatiblePlugins($piwikVersion)
+ {
+ return PluginManager::getInstance()->getIncompatiblePlugins($piwikVersion);
+ }
+
}
diff --git a/plugins/CoreUpdater/templates/newVersionAvailable.twig b/plugins/CoreUpdater/templates/newVersionAvailable.twig
index ed2c7bc862..cf87a949e6 100644
--- a/plugins/CoreUpdater/templates/newVersionAvailable.twig
+++ b/plugins/CoreUpdater/templates/newVersionAvailable.twig
@@ -1,4 +1,5 @@
{% extends '@CoreUpdater/layout.twig' %}
+{% import '@CorePluginsAdmin/macros.twig' as pluginsMacro %}
{% block content %}
<br/>
@@ -13,6 +14,17 @@
</p>
{% endif %}
+{% if incompatiblePlugins %}
+ <p>{{ 'CoreUpdater_IncompatbilePluginsWillBeDisabledInfo'|translate(piwik_new_version) }}</p>
+
+ <ul style="list-style: disc;">
+ {% for plugin in incompatiblePlugins %}
+ <li>{{ pluginsMacro.missingRequirementsInfo(plugin.getPluginName, plugin.getInformation, plugin.getMissingDependencies(piwik_new_version), marketplacePlugins) }}</li>
+ {% endfor %}
+ </ul>
+ <p> </p>
+{% endif %}
+
{% if can_auto_update %}
<form id="oneclickupdate" action="index.php">
<input type="hidden" name="module" value="CoreUpdater"/>
diff --git a/plugins/TreemapVisualization b/plugins/TreemapVisualization
-Subproject 19978cb7cd926ec0fba111ce257b8f0450f34ce
+Subproject 2cb15300a88f7ff2a1fc27ef633a1a1f4d5fef0