function webform_features_export_render in Webform Features 7.3
Same name and namespace in other branches
- 7.4 webform_features.features.inc \webform_features_export_render()
Implements hook_features_export_render().
File
- ./
webform_features.features.inc, line 68 - Webform Features features integration.
Code
function webform_features_export_render($module, $data, $export = NULL) {
$code = array();
$code[] = '$webforms = array();';
foreach ($data as $machine_name) {
$node = webform_features_machine_name_load($machine_name, TRUE);
if (empty($node)) {
continue;
}
$export = clone $node;
// Use date instead of created, in the same format used by node_object_prepare.
$export->date = format_date($export->created, 'custom', 'Y-m-d H:i:s O');
// Don't cause conflicts with nid/vid/revision_timestamp/changed fields.
unset($export->nid);
unset($export->vid);
unset($export->changed);
unset($export->created);
unset($export->date);
unset($export->revision_timestamp);
unset($export->last_comment_timestamp);
unset($export->webform['nid']);
// Replace author by its username.
$author = user_load($export->uid);
$export->webform_features_author = $author->name;
$author = user_load($export->revision_uid);
$export->webform_features_revision_author = $author->name;
unset($export->uid, $export->revision_uid);
// Manage components.
$components_machine_names = array();
foreach ($export->webform['components'] as $key => $component) {
$components_machine_names[$component['cid']] = $component['machine_name'];
}
$components_array = array();
foreach ($export->webform['components'] as $key => $component) {
if (!empty($component['pid'])) {
$component['parent_machine_name'] = $components_machine_names[$component['pid']];
}
unset($component['nid']);
unset($component['cid']);
unset($component['pid']);
$components_array[$component['machine_name']] = $component;
}
$export->webform['components'] = $components_array;
// Manage emails.
$emails_array = array();
foreach ($export->webform['emails'] as $key => $email) {
// Remove IDs.
unset($email['nid']);
unset($email['eid']);
// Handle parameters linked to a component.
$email['components_machine_names'] = array();
foreach (array(
'email',
'subject',
'from_name',
'from_address',
) as $field_name) {
$email['components_machine_names'][$field_name] = FALSE;
if (is_numeric($email[$field_name])) {
$email[$field_name] = $components_machine_names[$email[$field_name]];
$email['components_machine_names'][$field_name] = TRUE;
}
}
$emails_array[] = $email;
}
$export->webform['emails'] = $emails_array;
// Clean file fields to avoid exporting issues
// Copied from UUID Features uuid_features_file_field_export().
$fields = field_info_instances('node', $export->type);
foreach ($fields as $field_instance) {
$field =& $export->{$field_instance['field_name']};
$info = field_info_field($field_instance['field_name']);
if (in_array($info['type'], array(
'file',
'image',
))) {
$field = array();
}
}
// The hook_alter signature is:
// hook_webform_features_export_render_alter(&$export, $node, $module);
drupal_alter('webform_features_export_render', $export, $node, $module);
$code[] = " \$webforms['{$machine_name}'] = " . features_var_export($export) . ";";
}
$code[] = "return \$webforms;";
$code = implode("\n", $code);
return array(
'webform_defaults' => $code,
);
}