Najlepszy sposób na usunięcie wszystkich zmiennych podczas odinstalowywania modułu

9

Piszę moduł, który zapisuje kilka zmiennych (trzy, cztery zmienne dla każdego typu zawartości i inne).

Jakiej metody należy użyć, aby je usunąć przy hook_uninstall?

Czy bezpiecznie jest wykonać zapytanie, wyszukując zmienne „mymodule_ *”?

A może powinienem zapętlać typy zawartości i wyszukiwać zmienne, więc wywoływać wiele razy zmienna_del?

arrubiu
źródło
Zamiast tworzyć zmienne o nazwach według typu zawartości, możesz użyć zmiennych strukturalnych o znanej nazwie i kluczach dla każdego typu zawartości?
Chris Burgess,

Odpowiedzi:

10

Zmienne są buforowane, więc usuwanie ręczne jest w porządku, o ile unieważnisz tę pamięć podręczną, np

db_delete('variable')
  ->condition('name', 'mymodule_%', 'LIKE')
  ->execute();

cache_clear_all('variables', 'cache_bootstrap');
Clive
źródło
To zapytanie jest OK, pod warunkiem, że nikt nie utworzył modułu, który znajduje się w przestrzeni nazw modułu - np. Gdyby Widoki to zrobiły, wyparłoby zmienne należące do modułów takich jak Views Block lub Views MysiteCustom. W tym przykładzie prawdopodobnie nie byłby to poważny problem, ale masz pomysł :)
Chris Burgess
1

Możesz także zajrzeć do modułu Zmienna , który pozwala modułowi używać rejestru, konfigurować wartości domyślne i tak dalej.

Chris Burgess
źródło