Moved the updatebutton, menu now checking all plugins at once, instead of one call per plugin.

This commit is contained in:
Max Klaversma
2014-04-16 14:16:37 +02:00
committed by Steffen Schröder
parent 9a6d07e73b
commit e0b5149b9c
2 changed files with 47 additions and 25 deletions

View File

@ -415,22 +415,6 @@ class UpdateManager implements CallbackListener, CommandListener, TimerListener
}
}
/**
* Returns the number of outdated plugins active.
* @return int
*/
public function getNumberOfOutdatedPlugins() {
$number = 0;
foreach ($this->maniaControl->pluginManager->getPluginClasses() as $pluginClass) {
$pluginData = $this->checkPluginUpdate($pluginClass);
if ($pluginData != false) {
$number++;
}
}
return $number;
}
/**
* Check given Plugin Class for Update
*
@ -457,6 +441,42 @@ class UpdateManager implements CallbackListener, CommandListener, TimerListener
return $pluginData;
}
/**
* Check for updates
*
* @return mixed
*/
public function getPluginsUpdates() {
$pluginUpdates = array();
$pluginsWS = array();
$url = ManiaControl::URL_WEBSERVICE . 'plugins';
$dataJson = FileUtil::loadFile($url);
$pluginVersions = json_decode($dataJson);
if (!$pluginVersions || !isset($pluginVersions[0])) {
return false;
}
foreach($pluginVersions as $plugin) {
$pluginsWS[$plugin->id] = $plugin;
}
/** @var Plugin $pluginClass */
foreach($this->maniaControl->pluginManager->getPluginClasses() as $pluginClass) {
$pluginId = $pluginClass::getId();
if(array_key_exists($pluginId, $pluginsWS)) {
if($pluginsWS[$pluginId]->currentVersion->version > $pluginClass::getVersion()) {
$pluginUpdates[$pluginId] = $pluginsWS[$pluginId];
}
}
}
if(empty($pluginUpdates)) {
return false;
}
return $pluginUpdates;
}
/**
* Update pluginfile
*