Take a look at how the Media module handles it:
http://drupalcode.org/project/media.git/blob_plain/refs/heads/7.x-1.x:/media.installfunction
media_uninstall() {
function media_uninstall() {
foreach (media_variable_default() as $name => $value) {
media_variable_del($name);
}
}
http://drupalcode.org/project/media.git/blob_plain/refs/heads/7.x-1.x:/includes/media.variables.inc
define('MEDIA_VARIABLE_NAMESPACE', 'media__');
/**
* The default variables within the Media namespace.
*
* @param string $name
* Optional variable name to retrieve the default. Note that it has not yet
* been pre-pended with the MEDIA_VARIABLE_NAMESPACE namespace at this time.
* @return unknown
* The default value of this variable, if it's been set, or NULL, unless
* $name is NULL, in which case we return an array of all default values.
*
* @see media_variable_get()
* @see media_variable_set()
* @see media_variable_del()
*/
function media_variable_default($name = NULL) {
static $defaults;
if (!isset($defaults)) {
$defaults = array(
'wysiwyg_title' => 'Media browser',
'wysiwyg_icon_title' => 'Add media',
//@todo: We should do this per type actually. For "other" it should be a link.
'wysiwyg_default_view_mode' => 'media_large',
// Types which can be selected when embedding media vs wysiwyg.
'wysiwyg_allowed_types' => array('image', 'video'),
// Attributes which can be modified via the wysiwyg and persist.
'wysiwyg_allowed_attributes' => array('height', 'width', 'hspace', 'vspace', 'border', 'align', 'style', 'alt', 'title', 'class', 'id'),
'field_select_media_text' => 'Select media',
'field_remove_media_text' => 'Remove media',
// Name of the theme to use in media popup dialogs, defaults to admin_theme
'dialog_theme' => '',
// @TODO: Make a configuration form with this.
'file_extensions' => 'jpg jpeg gif png txt doc xls pdf ppt pps odt ods odp mp3 mov m4v mp4 mpeg avi ogg wmv ico',
'max_filesize' => '',
'debug' => FALSE,
'file_list_size' => 10,
// Used in media.xml.inc: how long to cache retrieved remote data.
'xml_cache_expire' => 3600,
// Browser defaults in media.browser.inc.
'browser_viewtype_default' => 'thumbnails',
'browser_pager_limit' => 40,
'browser_library_empty_message' => 'There are currently no media in this library to select.',
'import_batch_size' => 20,
'fromurl_supported_schemes' => array('http', 'https', 'ftp', 'smb', 'ftps'),
'type_icon_directory' => drupal_get_path('module', 'media') . '/images/types',
'icon_base_directory' => drupal_get_path('module', 'media') . '/images/icons',
'icon_set' => 'default',
// This is set in media_enable(). It will show a persistant dsm on every page
// until the user runs the batch operation provided by media_admin_rebuild_types_form().
'show_file_type_rebuild_nag' => FALSE,
);
}
if (!isset($name)) {
return $defaults;
}
if (isset($defaults[$name])) {
return $defaults[$name];
}
}
On 05/26/2011 06:58 PM, Peter Anderson wrote:
Hi all,
I have a module that uses quite a few variables and would
like to remove them in my hook_uninstall() function, but I don't
want to have to list them all manually...
I see three ways to do this:
1 - Run variable_del() for each variable manually
2 - List all variables then remove the ones that start with my
module's name
3 - Delete variables directly from the database that start with my
module's name
I'm obviously trying to avoid #1.
I've used #2 before (http://drupalbin.com/18718)
but am worried about the possible performance implications of
running a foreach() on every variable in Drupal... Is this good or
not?
I'd prefer not to resort to using SQL to delete variables from the
database directly as in #3, but this may be the only recommended
option...
What is the recommended way to call variable_del() on a bunch of
variables? I'm using D7 if that helps.
Thanks.
--
Kind regards,
Peter Anderson.
http://panda.id.au
--
Aaron Winborn
Advomatic, LLC
http://advomatic.com/
Drupal Multimedia available now!
http://www.packtpub.com/create-multimedia-website-with-drupal/book
My blog:
http://aaronwinborn.com/