diff --git a/uc_product_power_tools.module b/uc_product_power_tools.module index 16e19e8..0b38951 100644 --- a/uc_product_power_tools.module +++ b/uc_product_power_tools.module @@ -337,3 +337,84 @@ function _uc_product_power_tools_does_form_show_fields($form) { } return $show; } + +/** + * Implementation of hook_features_api(). + */ +function uc_product_power_tools_features_api() { + return array( + 'uc_product_power_tools' => array( + 'name' => t('UC Product Power Tools'), + 'default_hook' => 'uc_product_power_tools_default_types', + 'default_file' => FEATURES_DEFAULTS_INCLUDED, + 'features_source' => TRUE, + ), + ); +} + +/** + * Implementation of hook_features_export(). + * + * Add dependencies. + */ +function uc_product_power_tools_features_export($data, &$export, $module_name) { + $pipe = array(); + $export['dependencies']['uc_product_power_tools'] = 'uc_product_power_tools'; + + foreach ($data as $component) { + $export['features']['uc_product_power_tools'][$component] = $component; + } + + return $pipe; +} + +/** + * Implementation of hook_features_export_render(). + */ +function uc_product_power_tools_features_export_render($module_name, $data, $export = NULL) { + $code = array(); + $code[] = '$uc_product_power_tools = array();'; + foreach ($data as $pcid) { + $settings = uc_product_power_tools_load($pcid); + $code[] = " \$uc_product_power_tools['{$pcid}'] = " . features_var_export($settings) .";"; + } + $code[] = "return \$uc_product_power_tools;"; + $code = implode("\n", $code); + return array('uc_product_power_tools_default_types' => $code); +} + +/** + * Loader function for power tool settings. + */ +function uc_product_power_tools_load($pcid) { + return db_fetch_object(db_query("select * from {uc_power_tools} where pcid = '%s'", $pcid)); +} + +/** + * Implementation of hook_features_export_options(). + */ +function uc_product_power_tools_features_export_options() { + $options = array(); + + $sql = "select pcid from {uc_power_tools}"; + $result = db_query($sql); + while ($row = db_fetch_object($result)) { + $options[$row->pcid] = $row->pcid; + } + + return $options; +} + +/** + * Implementation of hook_features_revert(). + * + * Revert power tool settings. Search for an existing machine name, and update it if it + * exists. Otherwise create a new one. + */ +function uc_product_power_tools_features_revert($module_name) { + $settings = module_invoke($module_name, 'uc_product_power_tools_default_types'); + foreach ($settings as $key => $setting) { + $keys = uc_product_power_tools_load($setting['pcid']) ? array('pcid') : array(); + drupal_write_record('uc_power_tools', $setting, $keys); + } +}