Useful .install file functions

Cleaning up system variables

Currently, many of our modules have no .install file, yet they set Drupal system variables that would get left behind in the database if the module were disabled/removed. Adding this function to an existing .install file, or creating a blank .install file with just this function will remedy this. If the .install file already has a hook_uninstall() function, check the code to make sure it does something similar to this funciton to clean up its variables.

This works for version 5.x and 6.x modules.

modulename.install
<?php

function modulename_uninstall() {
  // remove module system variables
  $module_name = 'modulename';

  $vars = db_query("select * from {variable} where name like '" . $module_name . "%'");
  while ($var = db_fetch_object($vars)) {
    variable_del($var->name);
  }
}

Renaming system variables when changing module name

modulename.install
<?php

function newmodulename_install() {
  // rename module system variables
  $oldname = 'modulename';
  $newname = 'newmodulename';
  
  $vars = db_query("select * from {variable} where name like '" . $oldname . "%'");
  while ($var = db_fetch_object($vars)) {
    $newvar = str_replace($oldname,$newname,$var->name);

    variable_set($newvar, variable_get($var->name, NULL));
    variable_del($var->name);
  }
}