scopeConfig = $scopeConfig; $this->serializer = $serializer; } public function getLogMetadata(MetadataInterface $metadata): array { /** @var Value $object */ $object = $metadata->getObject(); return [ LogEntry::TYPE => LogEntryTypes::TYPE_EDIT, LogEntry::CATEGORY_NAME => __('System Config'), LogEntry::ELEMENT_ID => (int)$object->getId(), LogEntry::STORE_ID => (int)$object->getScopeId(), // save 'scope' in additional data to understand, what we save in 'store_id': website id or store view id. LogEntry::ADDITIONAL_DATA => [ 'scope' => $object->getScope() ] ]; } /** * @param Value $object * @return array */ public function processBeforeSave($object): array { $oldValue = $this->scopeConfig->getValue( $object->getPath(), $object->getScope(), (int)$object->getScopeId() ); if (is_array($oldValue)) { $oldValue = $this->serializer->serialize($oldValue); } return [ $object->getPath() => $oldValue ]; } /** * @param Value $object * @return array */ public function processAfterSave($object): array { return [ $object->getPath() => $object->getValue() ]; } }