Source of file DataObjectExtension.php
Size: 1,103 Bytes - Last Modified: 2021-12-23T10:38:16+00:00
/var/www/docs.ssmods.com/process/src/src/DataObjectExtension.php
12345678910111213141516171819202122232425262728293031323334353637 | <?php namespace SGN\HasOneEdit; use SilverStripe\ORM\DataExtension; use SilverStripe\ORM\DataObject; class DataObjectExtension extends DataExtension { /** * @see \SilverStripe\ORM\DataObject::onBeforeWrite() */ public function onBeforeWrite() { $changed = $this->owner->getChangedFields(); $toWrite = []; foreach ($changed as $name => $value) { if (!HasOneEdit::isHasOneEditField($name)) continue; list($relationName, $fieldOnRelation) = HasOneEdit::getRelationNameAndField($name); $relatedObject = HasOneEdit::getRelationRecord($this->owner, $relationName); if ($relatedObject === null) continue; $relatedObject->setCastedField($fieldOnRelation, $value['after']); if ($relatedObject->isChanged(null, DataObject::CHANGE_VALUE)) { $toWrite[$relationName] = $relatedObject; } } foreach ($toWrite as $relationName => $obj) { $obj->write(); $this->owner->setField("{$relationName}ID", $obj->ID); } } } |