/** * Restores a single property marked as versionable * * @param interface_versionable|class_model $objObject * @param class_date $objTimestamp * @param $strProperty */ public function restoreProperty(interface_versionable $objObject, class_date $objTimestamp, $strProperty) { //there are a few properties not to change if ($strProperty == "intRecordStatus") { return; } //load the value from the changelog $strValue = $this->getValueForDate($objObject->getSystemid(), $strProperty, $objTimestamp); if ($strValue === false) { $strValue = null; } //remove the system-id temporary to avoid callbacks and so on $strSystemid = $objObject->getSystemid(); $objObject->unsetSystemid(); //all prerequisites match, start creating query $objReflection = new class_reflection($objObject); $strSetter = $objReflection->getSetter($strProperty); if ($strSetter !== null) { call_user_func(array($objObject, $strSetter), $strValue); } $objObject->setSystemid($strSystemid); }