/** * @param mixed $value * @param null $relatedObject * @param mixed $params * @param null $idMapper * @return mixed|Object\Data\KeyValue * @throws \Exception */ public function getFromWebserviceImport($value, $relatedObject = null, $params = [], $idMapper = null) { if ($value) { $pairs = []; foreach ($value as $property) { if (array_key_exists("id", $property)) { $property = (array) $property; $id = $property["id"]; $property["key"] = $id; unset($property["id"]); $key = $property["key"]; if ($idMapper != null) { $newKey = $idMapper->getMappedId("kvkey", $key); if (!$newKey) { if ($idMapper->ignoreMappingFailures()) { $idMapper->recordMappingFailure("object", $relatedObject->getId(), "kvkey", $key); continue; } else { throw new \Exception("Key " . $key . " could not be mapped"); } } $property["key"] = $newKey; } $pairs[] = $property; } } $keyValueData = new Object\Data\KeyValue(); $keyValueData->setProperties($pairs); $keyValueData->setClass($relatedObject->getClass()); $keyValueData->setObjectId($relatedObject->getId()); return $keyValueData; } }