Fix addon reloading

- The wrong variable was used to uninstall/install addons, which led to absolutely nothing done
pull/10853/head
Hypolite Petovan 2021-10-09 00:11:08 -04:00
rodzic 80a8cd86c4
commit 201d728b9e
1 zmienionych plików z 10 dodań i 8 usunięć

Wyświetl plik

@ -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']);
} }
} }