From 189e29b5c6c6ba6dbff4d0fefbb6f930da006337 Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Tue, 15 Jan 2019 16:29:47 -0700 Subject: [PATCH] Add `FlexObject::getChanges()` method --- system/src/Grav/Framework/Flex/FlexObject.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/system/src/Grav/Framework/Flex/FlexObject.php b/system/src/Grav/Framework/Flex/FlexObject.php index 42f731e8a..31eec22cf 100644 --- a/system/src/Grav/Framework/Flex/FlexObject.php +++ b/system/src/Grav/Framework/Flex/FlexObject.php @@ -14,6 +14,7 @@ use Grav\Common\Data\ValidationException; use Grav\Common\Debugger; use Grav\Common\Grav; use Grav\Common\Twig\Twig; +use Grav\Common\Utils; use Grav\Framework\ContentBlock\HtmlBlock; use Grav\Framework\Flex\Interfaces\FlexAuthorizeInterface; use Grav\Framework\Flex\Interfaces\FlexFormInterface; @@ -48,6 +49,8 @@ class FlexObject implements FlexObjectInterface, FlexAuthorizeInterface private $_forms = []; /** @var array */ private $_storage; + /** @var array */ + private $_changes; /** * @return array @@ -127,6 +130,9 @@ class FlexObject implements FlexObjectInterface, FlexAuthorizeInterface $blueprint->validate($data + ['storage_key' => $this->getStorageKey(), 'timestamp' => $this->getTimestamp()]); $data = $blueprint->filter($data); + // Store the changes + $this->_changes = Utils::arrayDiffMultidimensional($data, $this->getElements()); + // Finally update the object. $this->setElements($data); } @@ -138,6 +144,16 @@ class FlexObject implements FlexObjectInterface, FlexAuthorizeInterface return $this; } + /** + * Get any changes based on data sent to update + * + * @return array + */ + public function getChanges() + { + return (array) $this->_changes; + } + /** * @return string */