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

getFromWebserviceImport() public method

public getFromWebserviceImport ( mixed $value, null $relatedObject = null, mixed $params = [], null $idMapper = null ) : mixed | void
$value mixed
$relatedObject null
$params mixed
$idMapper null
return mixed | void
    public function getFromWebserviceImport($value, $relatedObject = null, $params = [], $idMapper = null)
    {
        if (empty($value)) {
            return null;
        } elseif (is_array($value)) {
            $hrefs = [];
            foreach ($value as $href) {
                // cast is needed to make it work for both SOAP and REST
                $href = (array) $href;
                if (is_array($href) and array_key_exists("id", $href) and array_key_exists("type", $href)) {
                    $type = $href["type"];
                    $id = $href["id"];
                    if ($idMapper) {
                        $id = $idMapper->getMappedId($type, $id);
                    }
                    $e = null;
                    if ($id) {
                        $e = Element\Service::getElementById($type, $id);
                    }
                    if ($e instanceof Element\ElementInterface) {
                        $elMeta = new Object\Data\ElementMetadata($this->getName(), $this->getColumnKeys(), $e);
                        foreach ($this->getColumns() as $c) {
                            $setter = "set" . ucfirst($c['key']);
                            $elMeta->{$setter}($href[$c['key']]);
                        }
                        $hrefs[] = $elMeta;
                    } else {
                        if (!$idMapper || !$idMapper->ignoreMappingFailures()) {
                            throw new \Exception("cannot get values from web service import - unknown element of type [ " . $href["type"] . " ] with id [" . $href["id"] . "] is referenced");
                        } else {
                            $idMapper->recordMappingFailure("object", $relatedObject->getId(), $type, $href["id"]);
                        }
                    }
                }
            }
            return $hrefs;
        } else {
            throw new \Exception("cannot get values from web service import - invalid data");
        }
    }