function features_export_render in Features 6
Same name and namespace in other branches
- 7.2 features.export.inc \features_export_render()
 - 7 features.export.inc \features_export_render()
 
Render feature export into an array representing its files.
Parameters
$export: An exported feature definition.
$module_name: The name of the module to be exported.
$reset: Boolean flag for resetting the module cache. Only set to true when doing a final export for delivery.
Return value
array of info file and module file contents.
2 calls to features_export_render()
- features_export_build_form_submit in ./
features.admin.inc  - Submit handler for features_export_form_build().
 - _drush_features_export in ./
features.drush.inc  - Write a module to the site dir.
 
2 string references to 'features_export_render'
- features_export_render_hooks in ./
features.export.inc  - Generate an array of hooks and their raw code.
 - features_get_normal in ./
features.export.inc  - Get normal objects for a given module/component pair.
 
File
- ./
features.export.inc, line 208  
Code
function features_export_render($export, $module_name, $reset = FALSE) {
  $code = array();
  // Generate hook code
  $component_hooks = features_export_render_hooks($export, $module_name, $reset);
  $components = features_get_components();
  // Group component code into their respective files
  foreach ($component_hooks as $component => $hooks) {
    $file = array(
      'name' => 'features',
    );
    if (isset($components[$component]['default_file'])) {
      switch ($components[$component]['default_file']) {
        case FEATURES_DEFAULTS_INCLUDED:
          $file['name'] = "features.{$component}";
          break;
        case FEATURES_DEFAULTS_CUSTOM:
          $file['name'] = $components[$component]['default_filename'];
          break;
      }
    }
    if (!isset($code[$file['name']])) {
      $code[$file['name']] = array();
    }
    foreach ($hooks as $hook_name => $hook_info) {
      $hook_code = is_array($hook_info) ? $hook_info['code'] : $hook_info;
      $hook_args = is_array($hook_info) && !empty($hook_info['args']) ? $hook_info['args'] : '';
      $code[$file['name']][$hook_name] = features_export_render_defaults($module_name, $hook_name, $hook_code, $hook_args);
    }
  }
  // Finalize strings to be written to files
  foreach ($code as $filename => $contents) {
    $code[$filename] = "<?php\n\n" . implode("\n\n", $contents) . "\n";
  }
  // Generate info file output
  $export = features_export_prepare($export, $module_name, $reset);
  $code['info'] = features_export_info($export);
  // Prepare the module
  // If module exists, let it be and include it in the files
  if ($existing = features_get_modules($module_name, TRUE)) {
    $code['module'] = file_get_contents($existing->filename);
    // If the current module file does not reference the features.inc include,
    // set a warning message.
    if (isset($code['features']) && strpos($code['module'], "{$module_name}.features.inc") === FALSE) {
      features_log(t('@module does not appear to include the @include file.', array(
        '@module' => "{$module_name}.module",
        '@include' => "{$module_name}.features.inc",
      )), 'warning');
    }
    // Deprecated files. Display a message for any of these files letting the
    // user know that they may be removed.
    $deprecated = array(
      "{$module_name}.defaults",
      "{$module_name}.features.views",
      "{$module_name}.features.node",
    );
    foreach (file_scan_directory(drupal_get_path('module', $module_name), '.*') as $file) {
      if (in_array($file->name, $deprecated, TRUE)) {
        features_log(t('The file @filename has been deprecated and can be removed.', array(
          '@filename' => $file->basename,
        )), 'status');
      }
      elseif ($file->name === "{$module_name}.features" && empty($code['features'])) {
        $code['features'] = "<?php\n\n// This file is deprecated and can be removed.\n// Please remove include_once('{$module_name}.features.inc') in {$module_name}.module as well.\n";
      }
    }
  }
  else {
    if (!empty($code['features'])) {
      $code['module'] = "<?php\n/**\n * @file\n * Code for the {$export['name']} feature.\n */\n\ninclude_once '{$module_name}.features.inc';\n";
    }
    else {
      $code['module'] = "<?php\n/**\n * @file\n */\n\n// Drupal needs this blank file.\n";
    }
  }
  return $code;
}