annotate sites/all/modules/features/includes/features.node.inc @ 4:ce11bbd8f642

added modules
author danieleb <danielebarchiesi@me.com>
date Thu, 19 Sep 2013 10:38:44 +0100
parents
children
rev   line source
danielebarchiesi@4 1 <?php
danielebarchiesi@4 2
danielebarchiesi@4 3 /**
danielebarchiesi@4 4 * Implements hook_features_api().
danielebarchiesi@4 5 */
danielebarchiesi@4 6 function node_features_api() {
danielebarchiesi@4 7 return array(
danielebarchiesi@4 8 'node' => array(
danielebarchiesi@4 9 'name' => t('Content types'),
danielebarchiesi@4 10 'feature_source' => TRUE,
danielebarchiesi@4 11 'default_hook' => 'node_info',
danielebarchiesi@4 12 ),
danielebarchiesi@4 13 );
danielebarchiesi@4 14 }
danielebarchiesi@4 15
danielebarchiesi@4 16 /**
danielebarchiesi@4 17 * Implements hook_features_export_options().
danielebarchiesi@4 18 */
danielebarchiesi@4 19 function node_features_export_options() {
danielebarchiesi@4 20 return node_type_get_names();
danielebarchiesi@4 21 }
danielebarchiesi@4 22
danielebarchiesi@4 23 /**
danielebarchiesi@4 24 * Implements hook_features_export.
danielebarchiesi@4 25 */
danielebarchiesi@4 26 function node_features_export($data, &$export, $module_name = '') {
danielebarchiesi@4 27 $pipe = array();
danielebarchiesi@4 28 $map = features_get_default_map('node');
danielebarchiesi@4 29
danielebarchiesi@4 30 foreach ($data as $type) {
danielebarchiesi@4 31 // Poll node module to determine who provides the node type.
danielebarchiesi@4 32 if ($info = node_type_get_type($type)) {
danielebarchiesi@4 33 // If this node type is provided by a different module, add it as a dependency
danielebarchiesi@4 34 if (isset($map[$type]) && $map[$type] != $module_name) {
danielebarchiesi@4 35 $export['dependencies'][$map[$type]] = $map[$type];
danielebarchiesi@4 36 }
danielebarchiesi@4 37 // Otherwise export the node type.
danielebarchiesi@4 38 elseif (in_array($info->base, array('node_content', 'features'))) {
danielebarchiesi@4 39 $export['features']['node'][$type] = $type;
danielebarchiesi@4 40 $export['dependencies']['node'] = 'node';
danielebarchiesi@4 41 $export['dependencies']['features'] = 'features';
danielebarchiesi@4 42 }
danielebarchiesi@4 43
danielebarchiesi@4 44 $fields = field_info_instances('node', $type);
danielebarchiesi@4 45 foreach ($fields as $name => $field) {
danielebarchiesi@4 46 $pipe['field_instance'][] = "node-{$field['bundle']}-{$field['field_name']}";
danielebarchiesi@4 47 }
danielebarchiesi@4 48 }
danielebarchiesi@4 49 }
danielebarchiesi@4 50
danielebarchiesi@4 51 return $pipe;
danielebarchiesi@4 52 }
danielebarchiesi@4 53
danielebarchiesi@4 54 /**
danielebarchiesi@4 55 * Implements hook_features_export_render().
danielebarchiesi@4 56 */
danielebarchiesi@4 57 function node_features_export_render($module, $data, $export = NULL) {
danielebarchiesi@4 58 $elements = array(
danielebarchiesi@4 59 'name' => TRUE,
danielebarchiesi@4 60 'base' => FALSE,
danielebarchiesi@4 61 'description' => TRUE,
danielebarchiesi@4 62 'has_title' => FALSE,
danielebarchiesi@4 63 'title_label' => TRUE,
danielebarchiesi@4 64 'help' => TRUE,
danielebarchiesi@4 65 );
danielebarchiesi@4 66 $output = array();
danielebarchiesi@4 67 $output[] = ' $items = array(';
danielebarchiesi@4 68 foreach ($data as $type) {
danielebarchiesi@4 69 if ($info = node_type_get_type($type)) {
danielebarchiesi@4 70 // Force module name to be 'features' if set to 'node. If we leave as
danielebarchiesi@4 71 // 'node' the content type will be assumed to be database-stored by
danielebarchiesi@4 72 // the node module.
danielebarchiesi@4 73 $info->base = ($info->base === 'node') ? 'features' : $info->base;
danielebarchiesi@4 74 $output[] = " '{$type}' => array(";
danielebarchiesi@4 75 foreach ($elements as $key => $t) {
danielebarchiesi@4 76 if ($t) {
danielebarchiesi@4 77 $text = str_replace("'", "\'", $info->$key);
danielebarchiesi@4 78 $text = !empty($text) ? "t('{$text}')" : "''";
danielebarchiesi@4 79 $output[] = " '{$key}' => {$text},";
danielebarchiesi@4 80 }
danielebarchiesi@4 81 else {
danielebarchiesi@4 82 $output[] = " '{$key}' => '{$info->$key}',";
danielebarchiesi@4 83 }
danielebarchiesi@4 84 }
danielebarchiesi@4 85 $output[] = " ),";
danielebarchiesi@4 86 }
danielebarchiesi@4 87 }
danielebarchiesi@4 88 $output[] = ' );';
danielebarchiesi@4 89 $output[] = ' return $items;';
danielebarchiesi@4 90 $output = implode("\n", $output);
danielebarchiesi@4 91 return array('node_info' => $output);
danielebarchiesi@4 92 }
danielebarchiesi@4 93
danielebarchiesi@4 94 /**
danielebarchiesi@4 95 * Implements hook_features_revert().
danielebarchiesi@4 96 *
danielebarchiesi@4 97 * @param $module
danielebarchiesi@4 98 * name of module to revert content for
danielebarchiesi@4 99 */
danielebarchiesi@4 100 function node_features_revert($module = NULL) {
danielebarchiesi@4 101 if ($default_types = features_get_default('node', $module)) {
danielebarchiesi@4 102 foreach ($default_types as $type_name => $type_info) {
danielebarchiesi@4 103 // Delete node types
danielebarchiesi@4 104 // We don't use node_type_delete() because we do not actually
danielebarchiesi@4 105 // want to delete the node type (and invoke hook_node_type()).
danielebarchiesi@4 106 // This can lead to bad consequences like CCK deleting field
danielebarchiesi@4 107 // storage in the DB.
danielebarchiesi@4 108 db_delete('node_type')
danielebarchiesi@4 109 ->condition('type', $type_name)
danielebarchiesi@4 110 ->execute();
danielebarchiesi@4 111 }
danielebarchiesi@4 112 node_types_rebuild();
danielebarchiesi@4 113 menu_rebuild();
danielebarchiesi@4 114 }
danielebarchiesi@4 115 }
danielebarchiesi@4 116
danielebarchiesi@4 117 /**
danielebarchiesi@4 118 * Implements hook_features_disable().
danielebarchiesi@4 119 *
danielebarchiesi@4 120 * When a features module is disabled, modify any node types it provides so
danielebarchiesi@4 121 * they can be deleted manually through the content types UI.
danielebarchiesi@4 122 *
danielebarchiesi@4 123 * @param $module
danielebarchiesi@4 124 * Name of module that has been disabled.
danielebarchiesi@4 125 */
danielebarchiesi@4 126 function node_features_disable($module) {
danielebarchiesi@4 127 if ($default_types = features_get_default('node', $module)) {
danielebarchiesi@4 128 foreach ($default_types as $type_name => $type_info) {
danielebarchiesi@4 129 $type_info = node_type_load($type_name);
danielebarchiesi@4 130 $type_info->module = 'node';
danielebarchiesi@4 131 $type_info->custom = 1;
danielebarchiesi@4 132 $type_info->modified = 1;
danielebarchiesi@4 133 $type_info->locked = 0;
danielebarchiesi@4 134 node_type_save($type_info);
danielebarchiesi@4 135 }
danielebarchiesi@4 136 }
danielebarchiesi@4 137 }
danielebarchiesi@4 138
danielebarchiesi@4 139 /**
danielebarchiesi@4 140 * Implements hook_features_enable().
danielebarchiesi@4 141 *
danielebarchiesi@4 142 * When a features module is enabled, modify any node types it provides so
danielebarchiesi@4 143 * they can no longer be deleted manually through the content types UI.
danielebarchiesi@4 144 *
danielebarchiesi@4 145 * @param $module
danielebarchiesi@4 146 * Name of module that has been enabled.
danielebarchiesi@4 147 */
danielebarchiesi@4 148 function node_features_enable($module) {
danielebarchiesi@4 149 if ($default_types = features_get_default('node', $module)) {
danielebarchiesi@4 150 foreach ($default_types as $type_name => $type_info) {
danielebarchiesi@4 151 // Ensure the type exists.
danielebarchiesi@4 152 if ($type_info = node_type_load($type_name)) {
danielebarchiesi@4 153 $type_info->module = $module;
danielebarchiesi@4 154 $type_info->custom = 0;
danielebarchiesi@4 155 $type_info->modified = 0;
danielebarchiesi@4 156 $type_info->locked = 1;
danielebarchiesi@4 157 node_type_save($type_info);
danielebarchiesi@4 158 }
danielebarchiesi@4 159 }
danielebarchiesi@4 160 }
danielebarchiesi@4 161 }