Index: customfilter.admin.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/customfilter/Attic/customfilter.admin.inc,v retrieving revision 1.1.2.8.2.45 diff -u -p -r1.1.2.8.2.45 customfilter.admin.inc --- customfilter.admin.inc 8 Oct 2009 18:06:50 -0000 1.1.2.8.2.45 +++ customfilter.admin.inc 30 Oct 2009 15:52:25 -0000 @@ -138,9 +138,7 @@ function customfilter_filter_delete($for function customfilter_filter_delete_submit($form, &$form_state) { $fid = $form['#fid']; - db_query('DELETE FROM {customfilter_rules} WHERE fid = %d', $fid); - db_query('DELETE FROM {customfilter_filters} WHERE fid = %d', $fid); - customfilter_cache_clear('filters', $form_state['values']['fid']); + _customfilter_delete_filter('filters', $fid); $form_state['redirect'] = 'admin/settings/customfilter'; } Index: customfilter.export.inc =================================================================== RCS file: customfilter.export.inc diff -N customfilter.export.inc --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ customfilter.export.inc 30 Oct 2009 15:52:25 -0000 @@ -0,0 +1,38 @@ + $fid) { + $filter = _customfilter_get_filter($fid); + $export['features']['customfilter'][$fid] = $filter; + } + + return $pipe; +} + +/** + * Implementation of hook_features_export_options(). + */ +function customfilter_features_export_options() { + $options = array(); + // Get all flags. + foreach (_customfilter_get_filters() as $filter) { + $options[$filter['fid']] = check_plain($filter['name']); + } + return $options; +} + +/** + * Implementation of hook_features_export_render(). + */ +function customfilter_features_export_render($module = 'foo', $data, $features_export) { + module_load_include('inc', 'customfilter', '/customfilter.export'); + $code = customfilter_export_filter($data); + return array('customfilter_default_filter' => $code); +} + +/** + * Implementation of hook_features_revert(). + * + * @param $module + * The name of module for which to revert content. + */ +function customfilter_features_revert($module = NULL) { + // Get default filter from features. + if (module_hook($module, 'customfilter_default_filter')) { + module_load_include('inc', 'customfilter', '/customfilter.admin'); + $default_filters = module_invoke($module, 'customfilter_default_filter'); + + // Delete flags that are defined in code. + foreach ($default_filters as $default_filter) { + _customfilter_delete_filter($default_filter['fid']); + } + } + else { + drupal_set_message(t('Could not load default filter.'), 'error'); + return FALSE; + } + return TRUE; +} Index: customfilter.module =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/customfilter/customfilter.module,v retrieving revision 1.3.2.1.2.16.2.58 diff -u -p -r1.3.2.1.2.16.2.58 customfilter.module --- customfilter.module 6 Oct 2009 20:30:31 -0000 1.3.2.1.2.16.2.58 +++ customfilter.module 30 Oct 2009 15:52:25 -0000 @@ -405,6 +405,19 @@ function customfilter_theme() { ); } +/** + * Implementation of hook_features_api(). + */ +function customfilter_features_api() { + return array( + 'customfilter' => array( + 'feature_source' => TRUE, + 'default_hook' => 'customfilter_default_filter', + 'file' => drupal_get_path('module', 'customfilter') . '/customfilter.features.inc', + ), + ); +} + /***************************************************************************** * Public functions. ****************************************************************************/ @@ -452,6 +465,17 @@ function _customfilter_breadcrumb(array } /** + * Delete a filter from the database table. + * @param $fid + * The filter id. + */ +function _customfilter_delete_filter($fid) { + db_query('DELETE FROM {customfilter_rules} WHERE fid = %d', $fid); + db_query('DELETE FROM {customfilter_filters} WHERE fid = %d', $fid); + customfilter_cache_clear($fid); +} + +/** * Delete a rule from the database table. * @param $rid * The rule ID. @@ -491,6 +515,26 @@ function _customfilter_get_filters() { } /** + * Get a single filter. + * + * @param $fid + * Id of filter to get. + * @return + * A single filter. + */ +function _customfilter_get_filter($fid) { + $filters = _customfilter_get_filters(); + foreach ($filters as $filter) { + if ($filter['fid'] == $fid) { + return $filter; + } + } + $result = db_query("SELECT * FROM {customfilter_filters} WHERE fid = %d", $fid); + $filter = db_fetch_array($result); + return $filter; +} + +/** * Retrieve the replacement rules for a specific filter. * * @param $fid