Merge pull request #21762 from jitendrapurohit/job-alert
[civicrm-core.git] / CRM / Extension / Info.php
index 55e379caf7fd7c4fec2b9b4b334e13f1c75014d8..2f14314c078bb685890b78b02e05476cb7ec5fd9 100644 (file)
@@ -44,6 +44,13 @@ class CRM_Extension_Info {
    */
   public $requires = [];
 
+  /**
+   * @var array
+   *   List of expected mixins.
+   *   Ex: ['civix@2.0.0']
+   */
+  public $mixins = [];
+
   /**
    * @var array
    *   List of strings (tag-names).
@@ -65,6 +72,13 @@ class CRM_Extension_Info {
    */
   public $maintainer = NULL;
 
+  /**
+   * @var string|null
+   *  The name of a class which handles the install/upgrade lifecycle.
+   * @see \CRM_Extension_Upgrader_Interface
+   */
+  public $upgrader = NULL;
+
   /**
    * Load extension info an XML file.
    *
@@ -150,6 +164,7 @@ class CRM_Extension_Info {
     $this->type = (string) $info->attributes()->type;
     $this->file = (string) $info->file;
     $this->label = (string) $info->name;
+    $this->upgrader = (string) $info->upgrader;
 
     // Convert first level variables to CRM_Core_Extension properties
     // and deeper into arrays. An exception for URLS section, since
@@ -189,6 +204,12 @@ class CRM_Extension_Info {
           $this->tags[] = (string) $tag;
         }
       }
+      elseif ($attr === 'mixins') {
+        $this->mixins = [];
+        foreach ($val->mixin as $mixin) {
+          $this->mixins[] = (string) $mixin;
+        }
+      }
       elseif ($attr === 'requires') {
         $this->requires = $this->filterRequirements($val);
       }