Merge pull request #10853 from MrPetovan/bug/addon-reload

Fix addon reloading
This commit is contained in:
Philipp 2021-10-09 07:49:59 +02:00 committed by GitHub
commit 8f518af011
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -153,14 +153,16 @@ class Addon
{ {
$addon = Strings::sanitizeFilePathItem($addon); $addon = Strings::sanitizeFilePathItem($addon);
$addon_file_path = 'addon/' . $addon . '/' . $addon . '.php';
// silently fail if addon was removed of if $addon is funky // silently fail if addon was removed of if $addon is funky
if (!file_exists('addon/' . $addon . '/' . $addon . '.php')) { if (!file_exists($addon_file_path)) {
return false; return false;
} }
Logger::notice("Addon {addon}: {action}", ['action' => 'install', 'addon' => $addon]); Logger::notice("Addon {addon}: {action}", ['action' => 'install', 'addon' => $addon]);
$t = @filemtime('addon/' . $addon . '/' . $addon . '.php'); $t = @filemtime($addon_file_path);
@include_once('addon/' . $addon . '/' . $addon . '.php'); @include_once($addon_file_path);
if (function_exists($addon . '_install')) { if (function_exists($addon . '_install')) {
$func = $addon . '_install'; $func = $addon . '_install';
$func(DI::app()); $func(DI::app());
@ -190,16 +192,16 @@ class Addon
foreach ($addons as $addon) { foreach ($addons as $addon) {
$addonname = Strings::sanitizeFilePathItem(trim($addon['name'])); $addonname = Strings::sanitizeFilePathItem(trim($addon['name']));
$fname = 'addon/' . $addonname . '/' . $addonname . '.php'; $addon_file_path = 'addon/' . $addonname . '/' . $addonname . '.php';
$t = @filemtime($fname); if (file_exists($addon_file_path) && $addon['timestamp'] == filemtime($addon_file_path)) {
if (!file_exists($fname) || ($addon['timestamp'] == $t)) { // Addon unmodified, skipping
continue; continue;
} }
Logger::notice("Addon {addon}: {action}", ['action' => 'reload', 'addon' => $addon['name']]); Logger::notice("Addon {addon}: {action}", ['action' => 'reload', 'addon' => $addon['name']]);
self::uninstall($fname); self::uninstall($addon['name']);
self::install($fname); self::install($addon['name']);
} }
} }