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:
Diffstat (limited to 'plugins/CoreUpdater/Updater.php')
-rw-r--r--plugins/CoreUpdater/Updater.php54
1 files changed, 48 insertions, 6 deletions
diff --git a/plugins/CoreUpdater/Updater.php b/plugins/CoreUpdater/Updater.php
index 6912dba335..316f325690 100644
--- a/plugins/CoreUpdater/Updater.php
+++ b/plugins/CoreUpdater/Updater.php
@@ -10,17 +10,20 @@ namespace Piwik\Plugins\CoreUpdater;
use Exception;
use Piwik\ArchiveProcessor\Rules;
-use Piwik\Config;
+use Piwik\Container\StaticContainer;
use Piwik\Filechecks;
use Piwik\Filesystem;
use Piwik\Http;
use Piwik\Option;
use Piwik\Plugin\Manager as PluginManager;
use Piwik\Plugin\ReleaseChannels;
+use Piwik\Plugins\CorePluginsAdmin\CorePluginsAdmin;
+use Piwik\Plugins\CorePluginsAdmin\MarketplaceApiClient;
+use Piwik\Plugins\CorePluginsAdmin\MarketplaceApiException;
+use Piwik\Plugins\CorePluginsAdmin\PluginInstaller;
use Piwik\SettingsServer;
use Piwik\Translation\Translator;
use Piwik\Unzip;
-use Piwik\UpdateCheck;
use Piwik\Version;
class Updater
@@ -112,19 +115,58 @@ class Updater
$this->verifyDecompressedArchive($extractedArchiveDirectory);
$messages[] = $this->translator->translate('CoreUpdater_VerifyingUnpackedFiles');
- $disabledPluginNames = $this->disableIncompatiblePlugins($newVersion);
- if (!empty($disabledPluginNames)) {
- $messages[] = $this->translator->translate('CoreUpdater_DisablingIncompatiblePlugins', implode(', ', $disabledPluginNames));
- }
+ // we need to load the marketplace already here, otherwise it will use the new, updated file in Piwik 3
+ $marketplace = new MarketplaceApiClient();
+ require_once PIWIK_DOCUMENT_ROOT . '/plugins/CorePluginsAdmin/PluginInstaller.php';
+ require_once PIWIK_DOCUMENT_ROOT . '/plugins/CorePluginsAdmin/MarketplaceApiException.php';
$this->installNewFiles($extractedArchiveDirectory);
$messages[] = $this->translator->translate('CoreUpdater_InstallingTheLatestVersion');
+
} catch (ArchiveDownloadException $e) {
throw $e;
} catch (Exception $e) {
throw new UpdaterException($e, $messages);
}
+ try {
+ if (CorePluginsAdmin::isMarketplaceEnabled()) {
+ $messages[] = $this->translator->translate('CoreUpdater_CheckingForPluginUpdates');
+
+ $pluginManager = PluginManager::getInstance();
+ $pluginManager->loadAllPluginsAndGetTheirInfo();
+ $loadedPlugins = $pluginManager->getLoadedPlugins();
+
+ MarketplaceApiClient::clearAllCacheEntries();
+ StaticContainer::getContainer()->set('marketplacePiwikVersion', $newVersion);
+
+ $pluginsWithUpdate = $marketplace->checkUpdates($loadedPlugins);
+
+ foreach ($pluginsWithUpdate as $pluginWithUpdate) {
+ $pluginName = $pluginWithUpdate['name'];
+
+ $messages[] = $this->translator->translate('CoreUpdater_UpdatingPluginXToVersionY',
+ array($pluginName, $pluginWithUpdate['version']));
+
+ $pluginInstaller = new PluginInstaller($pluginName);
+ $pluginInstaller->installOrUpdatePluginFromMarketplace();
+ }
+ }
+ } catch (MarketplaceApiException $e) {
+ // there is a problem with the connection to the server, ignore for now
+ } catch (Exception $e) {
+ throw new UpdaterException($e, $messages);
+ }
+
+ try {
+ $disabledPluginNames = $this->disableIncompatiblePlugins($newVersion);
+ if (!empty($disabledPluginNames)) {
+ $messages[] = $this->translator->translate('CoreUpdater_DisablingIncompatiblePlugins', implode(', ', $disabledPluginNames));
+ }
+ } catch (Exception $e) {
+ throw new UpdaterException($e, $messages);
+ }
+
return $messages;
}