View source
<?php
function node_features_api() {
return array(
'node' => array(
'name' => t('Content types'),
'feature_source' => TRUE,
'default_hook' => 'node_info',
),
);
}
function node_features_export_options() {
return node_type_get_names();
}
function node_features_export($data, &$export, $module_name = '') {
$pipe = array();
$map = features_get_default_map('node');
foreach ($data as $type) {
if ($info = node_type_get_type($type)) {
if (isset($map[$type]) && $map[$type] != $module_name) {
$export['dependencies'][$map[$type]] = $map[$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'][] = "node-{$field['bundle']}-{$field['field_name']}";
}
}
}
return $pipe;
}
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)) {
$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[] = ' return $items;';
$output = implode("\n", $output);
return array(
'node_info' => $output,
);
}
function node_features_revert($module = NULL) {
if ($default_types = features_get_default('node', $module)) {
foreach ($default_types as $type_name => $type_info) {
db_delete('node_type')
->condition('type', $type_name)
->execute();
}
node_types_rebuild();
menu_rebuild();
}
}
function node_features_disable($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;
node_type_save($type_info);
}
}
}
function node_features_enable($module) {
if ($default_types = features_get_default('node', $module)) {
foreach ($default_types as $type_name => $type_info) {
if ($type_info = node_type_load($type_name)) {
$type_info->module = $module;
$type_info->custom = 0;
$type_info->modified = 0;
$type_info->locked = 1;
node_type_save($type_info);
}
}
}
}