diff --git a/src/Storage/ResponseDataStorage.php b/src/Storage/ResponseDataStorage.php index be05b11..ae234bb 100644 --- a/src/Storage/ResponseDataStorage.php +++ b/src/Storage/ResponseDataStorage.php @@ -79,6 +79,19 @@ class ResponseDataStorage { $fields = array_intersect_key($save_data + $defaults, $defaults); + // remove non-nullable fields that are set null, thus allowing the storage + // to write its default value. + $schema = drupal_get_module_schema('mollom', 'mollom'); + $not_null_fields = array_filter($schema['fields'], function($col) { + return !empty($col['not null']); + }); + + foreach($not_null_fields as $not_null_field => $properties) { + if(array_key_exists($not_null_field, $fields) && $fields[$not_null_field] === null) { + unset ($fields[$not_null_field]); + } + } + $result = \Drupal::database()->merge('mollom') ->key(array('id' => $data->id)) ->fields($fields) @@ -222,4 +235,4 @@ class ResponseDataStorage { } return (object) $clone; } -} +}