Wenn man einen Artikel hat und darin eine CVar als ungültig/nicht
zutreffend markiert, so blieben bisher die Daten, die zu dieser CVar
gehörten, in der Datenbank. Das sorgt zum Einen dafür, dass die Tabellen
unnötig voller werden, zum Anderen geistern die Daten dann noch in $form
herum (und damit auch in Druckvorlagen). Also entfernen.
variables => $form,
save_validity => 1);
+ # Delete saved custom variable values for configs that have been
+ # marked invalid for this part.
+ $query = <<SQL;
+ DELETE FROM custom_variables
+ WHERE (config_id IN (
+ SELECT val.config_id
+ FROM custom_variables_validity val
+ LEFT JOIN custom_variable_configs val_cfg ON (val.config_id = val_cfg.id)
+ WHERE (val_cfg.module = 'IC')
+ AND (val.trans_id = ?)))
+ AND (trans_id = ?)
+SQL
+ do_query($form, $dbh, $query, ($form->{id}) x 2);
+
# commit
my $rc = $dbh->commit;
--- /dev/null
+-- @tag: delete_invalidated_custom_variables_for_parts
+-- @description: Bei Artikeln ungültig gesetzte, benutzerdefinierte Variablen löschen
+-- @depends: release_3_2_0
+DELETE FROM custom_variables
+WHERE (config_id IN (
+ SELECT id
+ FROM custom_variable_configs
+ WHERE module = 'IC'))
+ AND EXISTS (
+ SELECT val.id
+ FROM custom_variables_validity val
+ WHERE (val.config_id = custom_variables.config_id)
+ AND (val.trans_id = custom_variables.trans_id));