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).
/**
* Load extension info an XML file.
*
- * @param $file
+ * @param string $file
*
* @throws CRM_Extension_Exception_ParseException
* @return CRM_Extension_Info
}
/**
- * @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->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);
}