xandeadx.ru Блог музицирующего веб-девелопера

Drupal → Удаление переменных при деинсталяции модуля

Опубликовано в

Код, при деинсталяции модуля, удаляет все переменные с префиксом modulename_, которые были созданы с помощью variable_set() или system_settings_form():

/**
 * Реализация hook_uninstall()
 */
function modulename_uninstall() {
  db_query("DELETE FROM {variable} WHERE name LIKE 'modulename\_%'");
}

Код необходимо поместить в файл modulename.install.

Добавлено 16/06/2011

Более правильный вариант:

/**
 * Реализация hook_uninstall()
 */
function modulename_uninstall() {
  foreach (array('modulename_var1', 'modulename_var2', ...) as $name) {
    variable_del($name);
  }
}
Написанное актуально для Drupal 6, Drupal 7
Похожие записи

Комментарии RSS

Только таблица в запросе должна называться varibales. И по-моему нужно удалять через variable_del(), а то есть много модулей, у которых название начинается одинаково и отличается только тем что идет после "_". Таким образом можно удалить и переменные установленные другими модулями.

Только таблица в запросе должна называться varibales

всё же variable

И по-моему нужно удалять через variable_del()

нужно, но не всегда удобно

а то есть много модулей, у которых название начинается одинаково и отличается только тем что идет после "_"

если ваш модуль соблюдает соглашение по именованию переменных — modulename_varname, то проблем быть не должно

Да вы правы, таблица называется variable.
Допустим вас стоит 3 реально существующих модуля ajax, ajax_tabs, ajax_load. Вы удаляете модуль ajax и ваш запрос удалит все переменные вида ajax_%, то есть соответственно переменные модулей ajax_tabs и ajax_load тоже, так как переменные созданные этими модулями(вида ajax_tabs_% и ajax_load_%) попадают под паттерн ajax_%.

хм, ситуация возможная =)

в этом сучае нужно писать
LIKE ajax_tabs\_% и LIKE ajax_load\_% :)

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании