Je voudrais suivre l'événement des modifications du système, pour les rendre réversibles. Lors de la vérification de variable_set (), je vois qu'il n'y a pas de hook fourni pour cet événement. Y a-t-il un moyen pour moi de faire ça?
Je peux modifier pour accrocher aux formulaires de paramètres, mais il y a beaucoup de formulaires de paramètres à suivre, si je peux accrocher directement à variable_set (), le code devient beaucoup plus simple.
Je peux également suivre les changements de variables avec les fonctionnalités + modules Strongarm, mais il est préférable que l'administrateur Drupal puisse parcourir l'historique des variables sans toucher au code.
$conf
: D J'espère que ma réponse mise à jour aidera quelqu'un.Vous pouvez utiliser un déclencheur de base de données, qui serait plus rapide que le code.
Voici le doc MySQL .
créer une table pour stocker les anciennes valeurs
créez vos déclencheurs, un pour l'insertion et un pour la mise à jour:
Désormais, toutes vos mises à jour et insertions enregistreront les anciennes valeurs dans variable_backup.
la source
Comme vous pouvez le voir dans le code source,
variable_set()
ne fait aucune demande de hooks ou de modifications, par exemple nonmodule_invoke_all()
oudrupal_alter()
y appelle.Cependant, vous pourrez peut-être écouter la
db_merge()
requête avec un emplacement spécialement placéhook_query_alter()
et y effectuer des traitements supplémentaires, mais, comme l'a souligné Molot, ilhook_query_alter()
semble peu probable de pouvoir cibler ladb_merge()
requête.Alternativement, vous pouvez peut-être créer un instantané cron de la table de variables pour le comparer aux révisions précédentes de cette table, ou bien implémenter une autre forme de stockage de révision de variables pour comparer.
la source
QueryAlterableInterface
est en effet mis en œuvre parQuery
lui-même. Mais dans 8 la gestion de la configuration est reconstruite de toute façon. Et dans 7, seules les requêtes sélectionnées marquées sont modifiables pour autant que je vois. Mais peut-être que je manque quelque chose?J'ai ouvert un ticket de demande de fonctionnalité sur Drupal.org pour créer des crochets pour intercepter le réglage et la suppression des variables système, et j'ai soumis pour examen un correctif principal pour cela! S'il te plait regarde:
https://www.drupal.org/project/drupal/issues/2934718
la source