$this->addProcess($keys, 'disable');
foreach ($keys as $key) {
- switch ($origStatuses[$key]) {
- case self::STATUS_INSTALLED:
- $this->addProcess([$key], 'disabling');
- // throws Exception
- list ($info, $typeManager) = $this->_getInfoTypeHandler($key);
- $typeManager->onPreDisable($info);
- $this->_setExtensionActive($info, 0);
- $typeManager->onPostDisable($info);
- $this->popProcess([$key]);
- break;
-
- case self::STATUS_INSTALLED_MISSING:
- // throws Exception
- list ($info, $typeManager) = $this->_getMissingInfoTypeHandler($key);
- $typeManager->onPreDisable($info);
- $this->_setExtensionActive($info, 0);
- $typeManager->onPostDisable($info);
- break;
-
- case self::STATUS_DISABLED:
- case self::STATUS_DISABLED_MISSING:
- case self::STATUS_UNINSTALLED:
- // ok, nothing to do
- // Remove the 'disable' process as we're not doing that.
- $this->popProcess([$key]);
- break;
-
- case self::STATUS_UNKNOWN:
- default:
- throw new CRM_Extension_Exception("Cannot disable unknown extension: $key");
+ if (isset($origStatuses[$key])) {
+ switch ($origStatuses[$key]) {
+ case self::STATUS_INSTALLED:
+ $this->addProcess([$key], 'disabling');
+ // throws Exception
+ list ($info, $typeManager) = $this->_getInfoTypeHandler($key);
+ $typeManager->onPreDisable($info);
+ $this->_setExtensionActive($info, 0);
+ $typeManager->onPostDisable($info);
+ $this->popProcess([$key]);
+ break;
+
+ case self::STATUS_INSTALLED_MISSING:
+ // throws Exception
+ list ($info, $typeManager) = $this->_getMissingInfoTypeHandler($key);
+ $typeManager->onPreDisable($info);
+ $this->_setExtensionActive($info, 0);
+ $typeManager->onPostDisable($info);
+ break;
+
+ case self::STATUS_DISABLED:
+ case self::STATUS_DISABLED_MISSING:
+ case self::STATUS_UNINSTALLED:
+ // ok, nothing to do
+ // Remove the 'disable' process as we're not doing that.
+ $this->popProcess([$key]);
+ break;
+
+ case self::STATUS_UNKNOWN:
+ default:
+ throw new CRM_Extension_Exception("Cannot disable unknown extension: $key");
+ }
+ }
+ else {
+ throw new CRM_Extension_Exception("Cannot disable unknown extension: $key");
}
}