Sadik B
Well-known member
Prior to XenForo 2, in XenForo 1 DataWriter there was a method
This was extremely useful for an Addon Developer if you wanted to extend any DataWriter to do something just before something was saved. For example in the User DataWriter you could extend this method and you would then have to simply do the following,
This ensured that ALL error checking had passed before the DataWriter was saved and I could be certain to take my action knowing that the save() function will succeed.
In XenForo 2, there is no such _haveErrorsPreventSave() function. This means that we are forced to rely on preSave() or _preSave. Some error checking still happens AFTER preSave (for example in _fillDeferredValues) which means that I cannot be 100% certain that the Entity will pass _validateRequirements. So Either I have to do my action after entity save, which I cannot, OR I have do some of the XenForo validation myself.
If you simply added a function _haveErrorsPreventSave() in the Entity save() function right before you get the $db object ($db = $this->db()) for transaction, it will prove to be a 100% certain condition that $this->errors is empty and an addon can take some action knowing that the Entity WILL save.
Thanks
PHP:
protected function _haveErrorsPreventSave()
This was extremely useful for an Addon Developer if you wanted to extend any DataWriter to do something just before something was saved. For example in the User DataWriter you could extend this method and you would then have to simply do the following,
PHP:
protected function _haveErrorsPreventSave()
{
if (parent::_haveErrorsPreventSave())
{
return false;
}
$this->mycustomfunction();
}
This ensured that ALL error checking had passed before the DataWriter was saved and I could be certain to take my action knowing that the save() function will succeed.
In XenForo 2, there is no such _haveErrorsPreventSave() function. This means that we are forced to rely on preSave() or _preSave. Some error checking still happens AFTER preSave (for example in _fillDeferredValues) which means that I cannot be 100% certain that the Entity will pass _validateRequirements. So Either I have to do my action after entity save, which I cannot, OR I have do some of the XenForo validation myself.
If you simply added a function _haveErrorsPreventSave() in the Entity save() function right before you get the $db object ($db = $this->db()) for transaction, it will prove to be a 100% certain condition that $this->errors is empty and an addon can take some action knowing that the Entity WILL save.
Thanks
Upvote
0