public function reverseMap($object, $disableMappingExceptions = false) { $keys = get_object_vars($this); foreach ($keys as $key => $value) { $method = "setO_" . $key; if (method_exists($object, $method)) { $object->{$method}($value); } } //must be after generic setters above!! parent::reverseMap($object, $disableMappingExceptions); if (is_array($this->elements)) { foreach ($this->elements as $element) { $class = "Object_Class_Data_" . ucfirst($element->type); if (Pimcore_Tool::classExists($class)) { $setter = "set" . ucfirst($element->name); if (method_exists($object, $setter)) { $tag = $object->getO_class()->getFieldDefinition($element->name); if ($class instanceof Object_Class_Data_Fieldcollections) { $object->{$setter}($tag->getFromWebserviceImport($element->fieldcollection)); } else { $object->{$setter}($tag->getFromWebserviceImport($element->value, $object)); } } else { if (!$disableMappingExceptions) { throw new Exception("Unable to reverse map element [ " . $element->name . " ] of type [ " . $element->type . " ]. Setter not found"); } } } else { if (!$disableMappingExceptions) { throw new Exception("Unable to reverse map element [ " . $element->name . " ] of type [ " . $element->type . " ]. Object_Class_Data type not found. "); } } } } }
/** * @param Webservice_Data_Object $wsDocument * @return bool */ protected function updateObject($wsDocument) { $object = Object_Abstract::getById($wsDocument->id); $this->setModificationParams($object, false); if ($object instanceof Object_Concrete and $object->getO_className() == $wsDocument->className) { $wsDocument->reverseMap($object); $object->save(); return true; } else { if ($object instanceof Object_Folder and $object->getType() == strtolower($wsDocument->type)) { $wsDocument->reverseMap($object); $object->save(); return true; } else { if ($object instanceof Object_Abstract) { throw new Exception("Type/Class mismatch for given object with ID [" . $wsDocument->id . "] and existing object with id [" . $object->getId() . "]"); } else { throw new Exception("Object with given ID (" . $wsDocument->id . ") does not exist."); } } } }