Pimcore\Model\Object\ClassDefinition\Data\Fieldcollections::getFromWebserviceImport PHP Method

getFromWebserviceImport() public method

public getFromWebserviceImport ( mixed $data, null | AbstractObject $object = null, mixed $params = [], $idMapper = null ) : mixed | Fieldcollection
$data mixed
$object null | Pimcore\Model\Object\AbstractObject
$params mixed
return mixed | Pimcore\Model\Object\Fieldcollection
    public function getFromWebserviceImport($data, $object = null, $params = [], $idMapper = null)
    {
        $values = [];
        $count = 0;
        if (is_array($data)) {
            foreach ($data as $collectionRaw) {
                if ($collectionRaw instanceof \stdClass) {
                    $collectionRaw = Cast::castToClass("\\Pimcore\\Model\\Webservice\\Data\\Object\\Element", $collectionRaw);
                }
                if (!$collectionRaw instanceof Webservice\Data\Object\Element) {
                    throw new \Exception("invalid data in fieldcollections [" . $this->getName() . "]");
                }
                $fieldcollection = $collectionRaw->type;
                $collectionData = [];
                $collectionDef = Object\Fieldcollection\Definition::getByKey($fieldcollection);
                if (!$collectionDef) {
                    throw new \Exception("Unknown fieldcollection in webservice import [" . $fieldcollection . "]");
                }
                foreach ($collectionDef->getFieldDefinitions() as $fd) {
                    foreach ($collectionRaw->value as $field) {
                        if ($field instanceof \stdClass) {
                            $field = Cast::castToClass("\\Pimcore\\Model\\Webservice\\Data\\Object\\Element", $field);
                        }
                        if (!$field instanceof Webservice\Data\Object\Element) {
                            throw new \Exception("invalid data in fieldcollections [" . $this->getName() . "]");
                        } elseif ($field->name == $fd->getName()) {
                            if ($field->type != $fd->getFieldType()) {
                                throw new \Exception("Type mismatch for fieldcollection field [" . $field->name . "]. Should be [" . $fd->getFieldType() . "] but is [" . $field->type . "]");
                            }
                            $collectionData[$fd->getName()] = $fd->getFromWebserviceImport($field->value, $object, [], $idMapper);
                            break;
                        }
                    }
                }
                $collectionClass = "\\Pimcore\\Model\\Object\\Fieldcollection\\Data\\" . ucfirst($fieldcollection);
                $collection = new $collectionClass();
                $collection->setValues($collectionData);
                $collection->setIndex($count);
                $collection->setFieldname($this->getName());
                $values[] = $collection;
                $count++;
            }
        }
        $container = new Object\Fieldcollection($values, $this->getName());
        return $container;
    }