Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
ActionGroupObjectHandler.php
Go to the documentation of this file.
1 <?php
7 
15 
20 {
21  const BEFORE_AFTER_ERROR_MSG = "Merge Error - Steps cannot have both before and after attributes.\tTestStep='%s'";
22  const ACTION_GROUP_ROOT = 'actionGroups';
23  const ACTION_GROUP = 'actionGroup';
24 
30  private static $ACTION_GROUP_OBJECT_HANDLER;
31 
37  private $actionGroups = [];
38 
44  private $extendUtil;
45 
51  public static function getInstance()
52  {
53  if (!self::$ACTION_GROUP_OBJECT_HANDLER) {
54  self::$ACTION_GROUP_OBJECT_HANDLER = new ActionGroupObjectHandler();
55  self::$ACTION_GROUP_OBJECT_HANDLER->initActionGroups();
56  }
57 
58  return self::$ACTION_GROUP_OBJECT_HANDLER;
59  }
60 
64  private function __construct()
65  {
66  $this->extendUtil = new ObjectExtensionUtil();
67  }
68 
75  public function getObject($actionGroupName)
76  {
77  if (array_key_exists($actionGroupName, $this->actionGroups)) {
78  $actionGroupObject = $this->actionGroups[$actionGroupName];
79  return $this->extendActionGroup($actionGroupObject);
80  }
81 
82  return null;
83  }
84 
90  public function getAllObjects()
91  {
92  foreach ($this->actionGroups as $actionGroupName => $actionGroup) {
93  $this->actionGroups[$actionGroupName] = $this->extendActionGroup($actionGroup);
94  }
95  return $this->actionGroups;
96  }
97 
104  private function initActionGroups()
105  {
106  $actionGroupParser = ObjectManagerFactory::getObjectManager()->create(ActionGroupDataParser::class);
107  $parsedActionGroups = $actionGroupParser->readActionGroupData();
108 
109  $actionGroupObjectExtractor = new ActionGroupObjectExtractor();
110 
111  foreach ($parsedActionGroups[ActionGroupObjectHandler::ACTION_GROUP_ROOT] as
112  $actionGroupName => $actionGroupData) {
113  if (!is_array($actionGroupData)) {
114  continue;
115  }
116 
117  $this->actionGroups[$actionGroupName] =
118  $actionGroupObjectExtractor->extractActionGroup($actionGroupData);
119  }
120  }
121 
128  private function extendActionGroup($actionGroupObject)
129  {
130  if ($actionGroupObject->getParentName() !== null) {
131  return $this->extendUtil->extendActionGroup($actionGroupObject);
132  }
133  return $actionGroupObject;
134  }
135 }