/** * @param AbstractEntity $resource * @param DataObject|null $object * @return array */ private function checkAndInitAttributes(AbstractEntity $resource, DataObject $object = null) { $attributeCodes = $this->config->getEntityAttributeCodes($resource->getEntityType(), $object); $attributes = []; /** * Check and init default attributes */ $defaultAttributes = $resource->getDefaultAttributes(); foreach ($defaultAttributes as $attributeCode) { $attributeIndex = array_search($attributeCode, $attributeCodes); if ($attributeIndex !== false) { $attribute = $resource->getAttribute($attributeCodes[$attributeIndex]); $attributes[] = $attribute; unset($attributeCodes[$attributeIndex]); } else { $attribute = $this->_getDefaultAttribute($resource, $attributeCode); $attributes[] = $attribute; $resource->addAttribute($attribute); } } foreach ($attributeCodes as $code) { $attribute = $resource->getAttribute($code); $attributes[] = $attribute; } return $attributes; }