CRM-14871: Rebuild caches after extensions are upgraded in a CiviCRM-managed way...
[civicrm-core.git] / CRM / Extension / Manager.php
index 41e273fefd9df98ffca059e9fab3639a0bd521c2..3db45b0e82c0146beb8f961aca235a8f371fbc48 100644 (file)
@@ -101,7 +101,10 @@ class CRM_Extension_Manager {
   public $statuses;
 
   /**
+   * @param CRM_Extension_Container_Interface $fullContainer
    * @param CRM_Extension_Container_Basic|FALSE $defaultContainer
+   * @param CRM_Extension_Mapper $mapper
+   * @param $typeManagers
    */
   function __construct(CRM_Extension_Container_Interface $fullContainer, $defaultContainer, CRM_Extension_Mapper $mapper, $typeManagers) {
     $this->fullContainer = $fullContainer;
@@ -187,6 +190,7 @@ class CRM_Extension_Manager {
     }
 
     $this->refresh();
+    CRM_Core_Invoke::rebuildMenuAndCache(TRUE);
   }
 
   /**
@@ -358,6 +362,8 @@ class CRM_Extension_Manager {
   /**
    * Determine the status of an extension
    *
+   * @param $key
+   *
    * @return string constant (STATUS_INSTALLED, STATUS_DISABLED, STATUS_UNINSTALLED, STATUS_UNKNOWN)
    */
   public function getStatus($key) {
@@ -415,8 +421,10 @@ class CRM_Extension_Manager {
   /**
    * Find the $info and $typeManager for a $key
    *
-   * @return array (0 => CRM_Extension_Info, 1 => CRM_Extension_Manager_Interface)
+   * @param $key
+   *
    * @throws CRM_Extension_Exception
+   * @return array (0 => CRM_Extension_Info, 1 => CRM_Extension_Manager_Interface)
    */
   private function _getInfoTypeHandler($key) {
     $info = $this->mapper->keyToInfo($key); // throws Exception
@@ -430,8 +438,10 @@ class CRM_Extension_Manager {
   /**
    * Find the $info and $typeManager for a $key
    *
-   * @return array (0 => CRM_Extension_Info, 1 => CRM_Extension_Manager_Interface)
+   * @param $key
+   *
    * @throws CRM_Extension_Exception
+   * @return array (0 => CRM_Extension_Info, 1 => CRM_Extension_Manager_Interface)
    */
   private function _getMissingInfoTypeHandler($key) {
     $info = $this->createInfoFromDB($key);
@@ -446,6 +456,11 @@ class CRM_Extension_Manager {
     }
   }
 
+  /**
+   * @param CRM_Extension_Info $info
+   *
+   * @return bool
+   */
   private function _createExtensionEntry(CRM_Extension_Info $info) {
     $dao = new CRM_Core_DAO_Extension();
     $dao->label = $info->label;
@@ -457,6 +472,11 @@ class CRM_Extension_Manager {
     return (bool) ($dao->insert());
   }
 
+  /**
+   * @param CRM_Extension_Info $info
+   *
+   * @return bool
+   */
   private function _updateExtensionEntry(CRM_Extension_Info $info) {
     $dao = new CRM_Core_DAO_Extension();
     $dao->full_name = $info->key;
@@ -473,6 +493,11 @@ class CRM_Extension_Manager {
     }
   }
 
+  /**
+   * @param CRM_Extension_Info $info
+   *
+   * @throws CRM_Extension_Exception
+   */
   private function _removeExtensionEntry(CRM_Extension_Info $info) {
     $dao = new CRM_Core_DAO_Extension();
     $dao->full_name = $info->key;
@@ -485,6 +510,10 @@ class CRM_Extension_Manager {
     } // else: post-condition already satisified
   }
 
+  /**
+   * @param CRM_Extension_Info $info
+   * @param $isActive
+   */
   private function _setExtensionActive(CRM_Extension_Info $info, $isActive) {
     CRM_Core_DAO::executeQuery('UPDATE civicrm_extension SET is_active = %1 where full_name = %2', array(
       1 => array($isActive, 'Integer'),
@@ -496,6 +525,7 @@ class CRM_Extension_Manager {
    * Auto-generate a place-holder for a missing extension using info from
    * database.
    *
+   * @param $key
    * @return CRM_Extension_Info|NULL
    */
   public function createInfoFromDB($key) {