2 namespace Civi\Test\CiviEnvBuilder
;
4 class ExtensionsStep
implements StepInterface
{
9 * ExtensionStep constructor.
10 * @param string $action
11 * Ex: 'install', 'uninstall'.
12 * @param string|array $names
14 public function __construct($action, $names) {
15 $this->action
= $action;
16 $this->names
= (array) $names;
19 public function getSig() {
20 return 'ext:' . implode(',', $this->names
);
23 public function isValid() {
24 if (!in_array($this->action
, ['install', 'uninstall'])) {
27 foreach ($this->names
as $name) {
28 if (!is_string($name)) {
35 public function run($ctx) {
36 $allKeys = \CRM_Extension_System
::singleton()->getFullContainer()->getKeys();
37 $names = \CRM_Utils_String
::filterByWildcards($this->names
, $allKeys, TRUE);
39 $manager = \CRM_Extension_System
::singleton()->getManager();
40 switch ($this->action
) {
42 $manager->install($names);
46 $manager->disable($names);
47 $manager->uninstall($names);