Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
AbstractModifier.php
Go to the documentation of this file.
1 <?php
7 
10 
19 abstract class AbstractModifier implements ModifierInterface
20 {
21  const FORM_NAME = 'product_form';
22  const DATA_SOURCE_DEFAULT = 'product';
23  const DATA_SCOPE_PRODUCT = 'data.product';
24 
28  const DEFAULT_GENERAL_PANEL = 'product-details';
29 
33  const GENERAL_PANEL_ORDER = 10;
34 
38  const CONTAINER_PREFIX = 'container_';
39 
43  const META_CONFIG_PATH = '/arguments/data/config';
44 
55  protected function getNextGroupSortOrder(array $meta, $groupCodes, $defaultSortOrder, $iteration = 1)
56  {
57  $groupCodes = (array)$groupCodes;
58 
59  foreach ($groupCodes as $groupCode) {
60  if (isset($meta[$groupCode]['arguments']['data']['config']['sortOrder'])) {
61  return $meta[$groupCode]['arguments']['data']['config']['sortOrder'] + $iteration;
62  }
63  }
64 
65  return $defaultSortOrder;
66  }
67 
78  protected function getNextAttributeSortOrder(array $meta, $attributeCodes, $defaultSortOrder, $iteration = 1)
79  {
81 
82  foreach ($meta as $groupMeta) {
83  $defaultSortOrder = $this->_getNextAttributeSortOrder(
84  $groupMeta,
86  $defaultSortOrder,
87  $iteration
88  );
89  }
90 
91  return $defaultSortOrder;
92  }
93 
103  private function _getNextAttributeSortOrder(array $meta, $attributeCodes, $defaultSortOrder, $iteration = 1)
104  {
105  if (isset($meta['children'])) {
106  foreach ($meta['children'] as $attributeCode => $attributeMeta) {
107  if ($this->startsWith($attributeCode, self::CONTAINER_PREFIX)) {
108  $defaultSortOrder = $this->_getNextAttributeSortOrder(
109  $attributeMeta,
111  $defaultSortOrder,
112  $iteration
113  );
115  && isset($attributeMeta['arguments']['data']['config']['sortOrder'])
116  ) {
117  $defaultSortOrder = $attributeMeta['arguments']['data']['config']['sortOrder'] + $iteration;
118  }
119  }
120  }
121 
122  return $defaultSortOrder;
123  }
124 
133  protected function startsWith($haystack, $needle)
134  {
135  return $needle === '' || strrpos($haystack, $needle, -strlen($haystack)) !== false;
136  }
137 
145  protected function getGeneralPanelName(array $meta)
146  {
147  if (!$meta) {
148  return null;
149  }
150 
151  if (isset($meta[self::DEFAULT_GENERAL_PANEL])) {
153  }
154 
155  return $this->getFirstPanelCode($meta);
156  }
157 
165  protected function getFirstPanelCode(array $meta)
166  {
167  $min = null;
168  $name = null;
169 
170  foreach ($meta as $fieldSetName => $fieldSetMeta) {
171  if (isset($fieldSetMeta['arguments']['data']['config']['sortOrder'])
172  && (null === $min || $fieldSetMeta['arguments']['data']['config']['sortOrder'] <= $min)
173  ) {
174  $min = $fieldSetMeta['arguments']['data']['config']['sortOrder'];
175  $name = $fieldSetName;
176  }
177  }
178 
179  return $name;
180  }
181 
190  protected function getGroupCodeByField(array $meta, $field)
191  {
192  foreach ($meta as $groupCode => $groupData) {
193  if (isset($groupData['children'][$field])
194  || isset($groupData['children'][static::CONTAINER_PREFIX . $field])
195  ) {
196  return $groupCode;
197  }
198  }
199 
200  return false;
201  }
202 
210  protected function formatPrice($value)
211  {
212  return $value !== null ? number_format((float)$value, PriceCurrencyInterface::DEFAULT_PRECISION, '.', '') : '';
213  }
214 
222  protected function formatWeight($value)
223  {
224  return (float)$value;
225  }
226 }
elseif(isset( $params[ 'redirect_parent']))
Definition: iframe.phtml:17
getNextGroupSortOrder(array $meta, $groupCodes, $defaultSortOrder, $iteration=1)
getNextAttributeSortOrder(array $meta, $attributeCodes, $defaultSortOrder, $iteration=1)
$value
Definition: gender.phtml:16
$attributeCode
Definition: extend.phtml:12
if(!isset($_GET['name'])) $name
Definition: log.php:14