25 if (!
$source instanceof \DOMDocument) {
30 $sections =
$source->getElementsByTagName(
'section');
33 foreach ($sections as $section) {
35 $sectionName = $section->getAttribute(
'name');
38 throw new \InvalidArgumentException(
'Attribute "name" of "section" does not exist');
42 $groups = $section->getElementsByTagName(
'group');
45 foreach ($groups as
$group) {
47 $groupName =
$group->getAttribute(
'name');
49 throw new \InvalidArgumentException(
'Attribute "name" of "group" does not exist');
58 $itemName =
$item->getAttribute(
'name');
60 throw new \InvalidArgumentException(
'Attribute "name" of "item" does not exist');
64 $renderers =
$item->getElementsByTagName(
'renderer');
66 foreach ($renderers as $renderer) {
67 $rendererName = $renderer->getAttribute(
'name');
69 throw new \InvalidArgumentException(
'Attribute "name" of "renderer" does not exist');
71 $rendererArray[$rendererName] = $renderer->getAttribute(
'instance');
75 'instance' =>
$item->getAttribute(
'instance'),
76 'sort_order' =>
$item->getAttribute(
'sort_order'),
77 'renderers' => $rendererArray,
79 $groupArray[$itemName] = $itemArray;
81 $sectionArray[$groupName] = $groupArray;
83 $output[$sectionName] = $sectionArray;
87 $availableProductTypes = [];
91 $types =
$order->getElementsByTagName(
'available_product_type');
94 foreach ($types as
$type) {
95 $availableProductTypes[] =
$type->getAttribute(
'name');
97 $output[
'order'][
'available_product_types'] = $availableProductTypes;