/** * Collect data for save * * @param array $data * @return $this * @throws LocalizedException * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @SuppressWarnings(PHPMD.NPathComplexity) */ public function organizeData($data) { $modelGroupArray = []; $modelAttributeArray = []; $attributeIds = []; if ($data['attributes']) { $ids = []; foreach ($data['attributes'] as $attribute) { $ids[] = $attribute[0]; } $attributeIds = $this->_resourceAttribute->getValidAttributeIds($ids); } if ($data['groups']) { foreach ($data['groups'] as $group) { $modelGroup = $this->initGroupModel($group); if ($data['attributes']) { foreach ($data['attributes'] as $attribute) { if ($attribute[1] == $group[0] && in_array($attribute[0], $attributeIds)) { $modelAttribute = $this->_attributeFactory->create(); $modelAttribute->setId($attribute[0])->setAttributeGroupId($attribute[1])->setAttributeSetId($this->getId())->setEntityTypeId($this->getEntityTypeId())->setSortOrder($attribute[2]); $modelAttributeArray[] = $modelAttribute; } } $modelGroup->setAttributes($modelAttributeArray); $modelAttributeArray = []; } $modelGroupArray[] = $modelGroup; } $this->setGroups($modelGroupArray); } if ($data['not_attributes']) { $modelAttributeArray = []; $data['not_attributes'] = array_filter($data['not_attributes']); foreach ($data['not_attributes'] as $entityAttributeId) { $entityAttribute = $this->_resourceAttribute->getEntityAttribute($entityAttributeId); if (!$entityAttribute) { throw new LocalizedException(__('Entity attribute with id "%1" not found', $entityAttributeId)); } $modelAttribute = $this->_eavConfig->getAttribute($this->getEntityTypeId(), $entityAttribute['attribute_id']); $modelAttribute->setEntityAttributeId($entityAttributeId); $modelAttributeArray[] = $modelAttribute; } $this->setRemoveAttributes($modelAttributeArray); } if ($data['removeGroups']) { $modelGroupArray = []; foreach ($data['removeGroups'] as $groupId) { $modelGroup = $this->_attrGroupFactory->create(); $modelGroup->setId($groupId); $modelGroupArray[] = $modelGroup; } $this->setRemoveGroups($modelGroupArray); } $this->setAttributeSetName($data['attribute_set_name'])->setEntityTypeId($this->getEntityTypeId()); return $this; }
/** * Collect data for save * * @param array $data * @return $this * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @SuppressWarnings(PHPMD.NPathComplexity) */ public function organizeData($data) { $modelGroupArray = []; $modelAttributeArray = []; $attributeIds = []; if ($data['attributes']) { $ids = []; foreach ($data['attributes'] as $attribute) { $ids[] = $attribute[0]; } $attributeIds = $this->_resourceAttribute->getValidAttributeIds($ids); } if ($data['groups']) { foreach ($data['groups'] as $group) { $modelGroup = $this->_attrGroupFactory->create(); $modelGroup->setId(is_numeric($group[0]) && $group[0] > 0 ? $group[0] : null)->setAttributeGroupName($group[1])->setAttributeSetId($this->getId())->setSortOrder($group[2]); if ($data['attributes']) { foreach ($data['attributes'] as $attribute) { if ($attribute[1] == $group[0] && in_array($attribute[0], $attributeIds)) { $modelAttribute = $this->_attributeFactory->create(); $modelAttribute->setId($attribute[0])->setAttributeGroupId($attribute[1])->setAttributeSetId($this->getId())->setEntityTypeId($this->getEntityTypeId())->setSortOrder($attribute[2]); $modelAttributeArray[] = $modelAttribute; } } $modelGroup->setAttributes($modelAttributeArray); $modelAttributeArray = []; } $modelGroupArray[] = $modelGroup; } $this->setGroups($modelGroupArray); } if ($data['not_attributes']) { $modelAttributeArray = []; foreach ($data['not_attributes'] as $attributeId) { $modelAttribute = $this->_attributeFactory->create(); $modelAttribute->setEntityAttributeId($attributeId); $modelAttributeArray[] = $modelAttribute; } $this->setRemoveAttributes($modelAttributeArray); } if ($data['removeGroups']) { $modelGroupArray = []; foreach ($data['removeGroups'] as $groupId) { $modelGroup = $this->_attrGroupFactory->create(); $modelGroup->setId($groupId); $modelGroupArray[] = $modelGroup; } $this->setRemoveGroups($modelGroupArray); } $this->setAttributeSetName($data['attribute_set_name'])->setEntityTypeId($this->getEntityTypeId()); return $this; }
/** * {@inheritdoc} */ public function getValidAttributeIds($attributeIds) { $pluginInfo = $this->pluginList->getNext($this->subjectType, 'getValidAttributeIds'); if (!$pluginInfo) { return parent::getValidAttributeIds($attributeIds); } else { return $this->___callPlugins('getValidAttributeIds', func_get_args(), $pluginInfo); } }