Parece que é impossível usar apenas o Drupal, o que significa:
variable_set()
em si não chama nenhum gancho, mas usa db_merge()
. Essa função está usando a MergeQuery
classe Agora, seria bom ligar hook_query_alter()
, mas ele só funciona para classes de consulta que implementam a QueryAlterableInterface
interface. Infelizmente, esta interface é agora implementado apenas pelos SelectQuery
e as SelectQueryExtender
aulas, e não pela MergeQuery
classe.
Observe que, mesmo que você encontre uma maneira de criar uma classe filho MergeQuery
, isso será implementado QueryAlterableInterface
e fará com que o Drupal a use. hook_query_alter()
funciona apenas em consultas que possuem tags e variable_set()
não codifica sua consulta; portanto, o gancho não seria usado de qualquer maneira, a menos que você esteja disposto a invadir o núcleo. Mas se você é, não precisa de tudo isso, você pode simplesmente fazer uma chamada de gancho.
Se você se sente incondicional, pode usar uma abordagem PHP mais indireta: $conf
é uma matriz global de variáveis de configuração; você pode escrever um módulo que o substitua por um objeto que age como uma matriz, conforme descrito em Estouro de pilha . Para torná-lo um bom substituto, você precisa implementar ArrayAccess
. Puxe todos os valores do original $conf
para o seu objeto. Em seguida, ArrayAccess::offsetSet()
implemente sua lógica de log.
$conf
na época: D Espero que minha resposta atualizada ajude alguém.