const FILENAME = 'info.xml';
/**
- * @var string
+ * @var string|null
*/
public $key = NULL;
+
+ /**
+ * @var string|null
+ */
public $type = NULL;
+
+ /**
+ * @var string|null
+ */
public $name = NULL;
+
+ /**
+ * @var string|null
+ */
public $label = NULL;
+
+ /**
+ * @var string|null
+ */
public $file = NULL;
/**
*/
public $requires = [];
+ /**
+ * @var array
+ * List of expected mixins.
+ * Ex: ['civix@2.0.0']
+ */
+ public $mixins = [];
+
/**
* @var array
* List of strings (tag-names).
*/
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.
*
}
/**
- * @param null $key
- * @param null $type
- * @param null $name
- * @param null $label
- * @param null $file
+ * @param string|null $key
+ * @param string|null $type
+ * @param string|null $name
+ * @param string|null $label
+ * @param string|null $file
*/
public function __construct($key = NULL, $type = NULL, $name = NULL, $label = NULL, $file = NULL) {
$this->key = $key;
$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
$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);
}