X-Git-Url: https://vcs.fsf.org/?a=blobdiff_plain;f=CRM%2FExtension%2FManager.php;h=444f86ec32b4d44520d0e3fe747a25dbe1745548;hb=28e89cfe338133861a2ab33e5314bc18f46687a4;hp=5b32af8dd0b6c1f6f674f0265ae541b3054d7858;hpb=6410620d48bfbbad7966c91b35a03443947dd58a;p=civicrm-core.git diff --git a/CRM/Extension/Manager.php b/CRM/Extension/Manager.php index 5b32af8dd0..444f86ec32 100644 --- a/CRM/Extension/Manager.php +++ b/CRM/Extension/Manager.php @@ -130,7 +130,7 @@ class CRM_Extension_Manager { * 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 */ @@ -382,36 +382,41 @@ class CRM_Extension_Manager { $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"); } } @@ -561,7 +566,7 @@ class CRM_Extension_Manager { /** * Return current processes for given extension. * - * @param String $key extension key + * @param string $key extension key * * @return array */ @@ -573,7 +578,7 @@ class CRM_Extension_Manager { * 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 */