metadata = $metadata; } /** * Register snapshot of entity data, for tracking changes * * @param \Magento\Framework\DataObject $entity * @return void * @SuppressWarnings(PHPMD.UnusedLocalVariable) */ public function registerSnapshot(\Magento\Framework\DataObject $entity) { $metaData = $this->metadata->getFields($entity); $filteredData = array_intersect_key($entity->getData(), $metaData); $data = array_merge($metaData, $filteredData); $this->snapshotData[get_class($entity)][$entity->getId()] = $data; } /** * Check is current entity has changes, by comparing current object state with stored snapshot * * @param \Magento\Framework\DataObject $entity * @return bool */ public function isModified(\Magento\Framework\DataObject $entity) { if (!$entity->getId()) { return true; } $entityClass = get_class($entity); if (!isset($this->snapshotData[$entityClass][$entity->getId()])) { return true; } foreach ($this->snapshotData[$entityClass][$entity->getId()] as $field => $value) { if ($entity->getDataByKey($field) != $value) { return true; } } return false; } }