| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174 | 
							- <?php
 
- /**
 
-  * Implements hook_features_api().
 
-  */
 
- function node_features_api() {
 
-   return array(
 
-     'node' => array(
 
-       'name' => t('Content types'),
 
-       'feature_source' => TRUE,
 
-       'default_hook' => 'node_info',
 
-       'alter_type' => FEATURES_ALTER_TYPE_INLINE,
 
-     ),
 
-   );
 
- }
 
- /**
 
-  * Implements hook_features_export_options().
 
-  */
 
- function node_features_export_options() {
 
-   return node_type_get_names();
 
- }
 
- /**
 
-  * Implements hook_features_export.
 
-  */
 
- function node_features_export($data, &$export, $module_name = '') {
 
-   $pipe = array();
 
-   $map = features_get_default_map('node');
 
-   foreach ($data as $type) {
 
-     // Poll node module to determine who provides the node type.
 
-     if ($info = node_type_get_type($type)) {
 
-       // If this node type is provided by a different module, add it as a dependency
 
-       if (isset($map[$type]) && $map[$type] != $module_name) {
 
-         $export['dependencies'][$map[$type]] = $map[$type];
 
-       }
 
-       // Otherwise export the node type.
 
-       elseif (in_array($info->base, array('node_content', 'features'))) {
 
-         $export['features']['node'][$type] = $type;
 
-         $export['dependencies']['node'] = 'node';
 
-         $export['dependencies']['features'] = 'features';
 
-       }
 
-       $fields = field_info_instances('node', $type);
 
-       foreach ($fields as $name => $field) {
 
-         $pipe['field_instance'][] = "node-{$field['bundle']}-{$field['field_name']}";
 
-       }
 
-     }
 
-   }
 
-   return $pipe;
 
- }
 
- /**
 
-  * Implements hook_features_export_render().
 
-  */
 
- function node_features_export_render($module, $data, $export = NULL) {
 
-   $elements = array(
 
-     'name' => TRUE,
 
-     'base' => FALSE,
 
-     'description' => TRUE,
 
-     'has_title' => FALSE,
 
-     'title_label' => TRUE,
 
-     'help' => TRUE,
 
-   );
 
-   $output = array();
 
-   $output[] = '  $items = array(';
 
-   foreach ($data as $type) {
 
-     if ($info = node_type_get_type($type)) {
 
-       // Force module name to be 'features' if set to 'node. If we leave as
 
-       // 'node' the content type will be assumed to be database-stored by
 
-       // the node module.
 
-       $info->base = ($info->base === 'node') ? 'features' : $info->base;
 
-       $output[] = "    '{$type}' => array(";
 
-       foreach ($elements as $key => $t) {
 
-         if ($t) {
 
-           $text = str_replace("'", "\'", $info->$key);
 
-           $text = !empty($text) ? "t('{$text}')" : "''";
 
-           $output[] = "      '{$key}' => {$text},";
 
-         }
 
-         else {
 
-           $output[] = "      '{$key}' => '{$info->$key}',";
 
-         }
 
-       }
 
-       $output[] = "    ),";
 
-     }
 
-   }
 
-   $output[] = '  );';
 
-   $output[] = '  drupal_alter(\'node_info\', $items);';
 
-   $output[] = '  return $items;';
 
-   $output = implode("\n", $output);
 
-   return array('node_info' => $output);
 
- }
 
- /**
 
-  * Implements hook_features_revert().
 
-  *
 
-  * @param $module
 
-  * name of module to revert content for
 
-  */
 
- function node_features_revert($module = NULL) {
 
-   if ($default_types = features_get_default('node', $module)) {
 
-     foreach ($default_types as $type_name => $type_info) {
 
-       // Delete node types
 
-       // We don't use node_type_delete() because we do not actually
 
-       // want to delete the node type (and invoke hook_node_type()).
 
-       // This can lead to bad consequences like CCK deleting field
 
-       // storage in the DB.
 
-       db_delete('node_type')
 
-         ->condition('type', $type_name)
 
-         ->execute();
 
-     }
 
-     node_types_rebuild();
 
-     menu_rebuild();
 
-   }
 
- }
 
- /**
 
-  * Implements hook_features_disable_feature().
 
-  *
 
-  * When a features module is disabled, modify any node types it provides so
 
-  * they can be deleted manually through the content types UI.
 
-  *
 
-  * @param $module
 
-  *   Name of module that has been disabled.
 
-  */
 
- function node_features_disable_feature($module) {
 
-   if ($default_types = features_get_default('node', $module)) {
 
-     foreach ($default_types as $type_name => $type_info) {
 
-       $type_info = node_type_load($type_name);
 
-       $type_info->module = 'node';
 
-       $type_info->custom = 1;
 
-       $type_info->modified = 1;
 
-       $type_info->locked = 0;
 
-       $type_info->disabled = 0;
 
-       node_type_save($type_info);
 
-     }
 
-   }
 
- }
 
- /**
 
-  * Implements hook_features_enable_feature().
 
-  *
 
-  * When a features module is enabled, modify any node types it provides so
 
-  * they can no longer be deleted manually through the content types UI.
 
-  *
 
-  * Update the database cache of node types if needed.
 
-  *
 
-  * @param $module
 
-  *   Name of module that has been enabled.
 
-  */
 
- function node_features_enable_feature($module) {
 
-   if ($default_types = features_get_default('node', $module)) {
 
-     $rebuild = FALSE;
 
-     foreach ($default_types as $type_name => $type_info) {
 
-       // Ensure the type exists.
 
-       if ($type_info = node_type_load($type_name)) {
 
-         $type_info->module = $module;
 
-         $type_info->custom = 0;
 
-         $type_info->modified = 0;
 
-         $type_info->locked = 1;
 
-         $type_info->disabled = 0;
 
-         node_type_save($type_info);
 
-       }
 
-       else {
 
-         $rebuild = TRUE;
 
-       }
 
-     }
 
-     if ($rebuild) {
 
-       node_types_rebuild();
 
-     }
 
-   }
 
- }
 
 
  |