/**
  * 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;
 }
Beispiel #2
0
 /**
  * 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);
     }
 }