* Class constructor.
*
* @param CRM_Extension_Container_Interface $fullContainer
- * @param CRM_Extension_Container_Basic|FALSE $defaultContainer
+ * @param CRM_Extension_Container_Basic|false $defaultContainer
* @param CRM_Extension_Mapper $mapper
* @param array $typeManagers
*/
$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");
}
}
/**
* Return current processes for given extension.
*
- * @param String $key extension key
+ * @param string $key extension key
*
* @return array
*/
* Determine if the extension specified is currently involved in an install
* or enable process. Just sugar code to make things more readable.
*
- * @param String $key extension key
+ * @param string $key extension key
*
* @return bool
*/