summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/gallery/controllers/admin_maintenance.php1
-rw-r--r--modules/gallery/helpers/module.php24
2 files changed, 23 insertions, 2 deletions
diff --git a/modules/gallery/controllers/admin_maintenance.php b/modules/gallery/controllers/admin_maintenance.php
index 23df33ee..32f20784 100644
--- a/modules/gallery/controllers/admin_maintenance.php
+++ b/modules/gallery/controllers/admin_maintenance.php
@@ -55,6 +55,7 @@ class Admin_Maintenance_Controller extends Admin_Controller {
->where("expiration", "<>", 0)
->where("expiration", "<=", time())
->execute();
+ module::deactivate_missing_modules();
}
/**
diff --git a/modules/gallery/helpers/module.php b/modules/gallery/helpers/module.php
index da201d20..1b6c8d1a 100644
--- a/modules/gallery/helpers/module.php
+++ b/modules/gallery/helpers/module.php
@@ -303,8 +303,25 @@ class module_Core {
block_manager::deactivate_blocks($module_name);
- log::success(
- "module", t("Deactivated module %module_name", array("module_name" => $module_name)));
+ if (module::info($module_name)) {
+ log::success(
+ "module", t("Deactivated module %module_name", array("module_name" => $module_name)));
+ } else {
+ log::success(
+ "module", t("Deactivated missing module %module_name", array("module_name" => $module_name)));
+ }
+ }
+
+ /**
+ * Deactivate modules that are unavailable or missing, yet still active.
+ * This happens when a user deletes a module without deactivating it.
+ */
+ static function deactivate_missing_modules() {
+ foreach (self::$modules as $module_name => $module) {
+ if (module::is_active($module_name) && !module::info($module_name)) {
+ module::deactivate($module_name);
+ }
+ }
}
/**
@@ -553,6 +570,9 @@ class module_Core {
$obsolete_modules = array("videos" => 4, "noffmpeg" => 1, "videodimensions" => 1,
"digibug" => 2);
+ // Before we check the active modules, deactivate any that are missing.
+ module::deactivate_missing_modules();
+
$modules_found = array();
foreach ($obsolete_modules as $module => $version) {
if (module::is_active($module) && (module::get_version($module) <= $version)) {