mirror of
https://github.com/moodle/moodle.git
synced 2025-03-14 20:50:21 +01:00
MDL-80516 core: more robust plugin update component checking.
Occurs when a plugin in incorrectly removed (via file system only, rather than following proper uninstall process), and also contains it's own sub-plugins. In the above scenario, the update would request and receive back a response for a plugin whose name was comprised of an empty string, subsequently causing errors when processing said response.
This commit is contained in:
parent
580c009cac
commit
26bc1fa27f
@ -1550,7 +1550,7 @@ class core_plugin_manager {
|
|||||||
|
|
||||||
$provider = \core\update\checker::instance();
|
$provider = \core\update\checker::instance();
|
||||||
|
|
||||||
if (!$provider->enabled() or during_initial_install()) {
|
if (!$provider->enabled() || $component === '' || during_initial_install()) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -440,8 +440,11 @@ class checker {
|
|||||||
|
|
||||||
$pluginman = \core_plugin_manager::instance();
|
$pluginman = \core_plugin_manager::instance();
|
||||||
foreach ($pluginman->get_plugins() as $type => $plugins) {
|
foreach ($pluginman->get_plugins() as $type => $plugins) {
|
||||||
|
// Iterate over installed plugins and determine which are non-standard and eligible for update checks. Note that we
|
||||||
|
// disregard empty component names here, to ensure we only request valid data from the update site (in the case of an
|
||||||
|
// improperly removed plugin containing sub-plugins, we would get an empty value here for each sub-plugin).
|
||||||
foreach ($plugins as $plugin) {
|
foreach ($plugins as $plugin) {
|
||||||
if (!$plugin->is_standard()) {
|
if ($plugin->component !== '' && !$plugin->is_standard()) {
|
||||||
$this->currentplugins[$plugin->component] = $plugin->versiondisk;
|
$this->currentplugins[$plugin->component] = $plugin->versiondisk;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user