danielebarchiesi@4: array( danielebarchiesi@4: 'name' => t('Taxonomy'), danielebarchiesi@4: 'feature_source' => TRUE, danielebarchiesi@4: 'default_hook' => 'taxonomy_default_vocabularies', danielebarchiesi@4: 'default_file' => FEATURES_DEFAULTS_INCLUDED, danielebarchiesi@4: ), danielebarchiesi@4: ); danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /** danielebarchiesi@4: * Implements hook_features_export_options(). danielebarchiesi@4: */ danielebarchiesi@4: function taxonomy_features_export_options() { danielebarchiesi@4: $vocabularies = array(); danielebarchiesi@4: foreach (taxonomy_get_vocabularies() as $vocabulary) { danielebarchiesi@4: $vocabularies[$vocabulary->machine_name] = $vocabulary->name; danielebarchiesi@4: } danielebarchiesi@4: return $vocabularies; danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /** danielebarchiesi@4: * Implements hook_features_export(). danielebarchiesi@4: * danielebarchiesi@4: * @todo Test adding existing dependencies. danielebarchiesi@4: */ danielebarchiesi@4: function taxonomy_features_export($data, &$export, $module_name = '') { danielebarchiesi@4: $pipe = array(); danielebarchiesi@4: danielebarchiesi@4: // taxonomy_default_vocabularies integration is provided by Features. danielebarchiesi@4: $export['dependencies']['features'] = 'features'; danielebarchiesi@4: $export['dependencies']['taxonomy'] = 'taxonomy'; danielebarchiesi@4: danielebarchiesi@4: // Add dependencies for each vocabulary. danielebarchiesi@4: $map = features_get_default_map('taxonomy'); danielebarchiesi@4: foreach ($data as $machine_name) { danielebarchiesi@4: if (isset($map[$machine_name]) && $map[$machine_name] != $module_name) { danielebarchiesi@4: $export['dependencies'][$map[$machine_name]] = $map[$machine_name]; danielebarchiesi@4: } danielebarchiesi@4: else { danielebarchiesi@4: $export['features']['taxonomy'][$machine_name] = $machine_name; danielebarchiesi@4: danielebarchiesi@4: $fields = field_info_instances('taxonomy_term', $machine_name); danielebarchiesi@4: foreach ($fields as $name => $field) { danielebarchiesi@4: $pipe['field'][] = "taxonomy_term-{$field['bundle']}-{$field['field_name']}"; danielebarchiesi@4: $pipe['field_instance'][] = "taxonomy_term-{$field['bundle']}-{$field['field_name']}"; danielebarchiesi@4: } danielebarchiesi@4: } danielebarchiesi@4: } danielebarchiesi@4: return $pipe; danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /** danielebarchiesi@4: * Implements hook_features_export_render(). danielebarchiesi@4: */ danielebarchiesi@4: function taxonomy_features_export_render($module, $data) { danielebarchiesi@4: $vocabularies = taxonomy_get_vocabularies(); danielebarchiesi@4: $code = array(); danielebarchiesi@4: foreach ($data as $machine_name) { danielebarchiesi@4: foreach ($vocabularies as $vocabulary) { danielebarchiesi@4: if ($vocabulary->machine_name == $machine_name) { danielebarchiesi@4: // We don't want to break the entity cache, so we need to clone the danielebarchiesi@4: // vocabulary before unsetting the id. danielebarchiesi@4: $vocabulary = clone $vocabulary; danielebarchiesi@4: unset($vocabulary->vid); danielebarchiesi@4: $code[$machine_name] = $vocabulary; danielebarchiesi@4: } danielebarchiesi@4: } danielebarchiesi@4: } danielebarchiesi@4: $code = " return ". features_var_export($code, ' ') .";"; danielebarchiesi@4: return array('taxonomy_default_vocabularies' => $code); danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /** danielebarchiesi@4: * Implements hook_features_revert(). danielebarchiesi@4: */ danielebarchiesi@4: function taxonomy_features_revert($module) { danielebarchiesi@4: taxonomy_features_rebuild($module); danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /** danielebarchiesi@4: * Implements hook_features_rebuild(). danielebarchiesi@4: * danielebarchiesi@4: * Rebuilds Taxonomy vocabularies from code defaults. danielebarchiesi@4: */ danielebarchiesi@4: function taxonomy_features_rebuild($module) { danielebarchiesi@4: if ($vocabularies = features_get_default('taxonomy', $module)) { danielebarchiesi@4: $existing = taxonomy_get_vocabularies(); danielebarchiesi@4: foreach ($vocabularies as $vocabulary) { danielebarchiesi@4: $vocabulary = (object) $vocabulary; danielebarchiesi@4: foreach ($existing as $existing_vocab) { danielebarchiesi@4: if ($existing_vocab->machine_name === $vocabulary->machine_name) { danielebarchiesi@4: $vocabulary->vid = $existing_vocab->vid; danielebarchiesi@4: } danielebarchiesi@4: } danielebarchiesi@4: taxonomy_vocabulary_save($vocabulary); danielebarchiesi@4: } danielebarchiesi@4: } danielebarchiesi@4: }