diff options
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/gallery/controllers/admin_maintenance.php | 1 | ||||
| -rw-r--r-- | modules/gallery/helpers/module.php | 24 | 
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)) { | 
