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