Für ein Kundenprojekt mussten Daten aus einem alten Auftritt übernommen werden. Problemstellung waren dabei Dokumente mit Multihref, die per Import-Script mit Objekten (Immobilien) gefüllt werden mussten. Folgender Code erfüllt diese Aufgabe:
$objekt = Object_Objekt::getByPath("/objekte/".$objekt_key); $document = Document::getById($document_id); $multihref = $document->getElement("objekte"); $data = $multihref->getDataForResource(); $data[] = array("id" => $objekt->getId(), "path" => $objekt->getFullPath(), "type" => "object", "subtype" => "objekt"); $multihref->setDataFromEditmode($data); $multihref->getResource()->save(); $objekt_document->update();
Die ganze Sache hat nur einen Schönheitsfehler: die Dependencies werden nicht mit aktualisiert, erst bei händischem Speichern des Dokuments werden diese aktualisiert. Ich hab zwar versucht, diese ebenfalls per Script zu ergänzen, dies hatte aber keine Wirkung:
// Das funktioniert nicht... $objekt_document->clearDependedCache(); $document_dependencies = $objekt_document->getDependencies(); $document_dependencies->addRequirement($objekt->getId(), "object"); $document_dependencies->save();
Für Hinweise, was hier falsch läuft, wäre ich daher dankbar :-)
EDIT:
Zita Kemeny hat in den Kommentaren eine Lösung zur Verfügung gestellt. Die sieht, angepasst auf vorhergehendes Problem, folgendermaßen aus:
$dependency = new Dependency(); $dependency->setSourceId($document_id); $dependency->setSourceType(“document”); $dependency->addRequirement($objekt->getId(), “object”); $dependency->save();
Danke, Zita!
EDIT 2:
Schubie hat in den Kommentaren darauf hingewiesen, dass die Notwendigkeit zur manuellen Dependency-Erzeugung beim programmatischen Anlegen von Objekten nicht mehr gegeben ist, da es mittlerweile wie erwartet automatisch funktioniert. Danke für den Hinweis!