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.
<?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); } } |
<?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); } } |