function oa_clone_node_presave in Open Atrium Clone 7.2
Implements hook_node_presave().
File
- ./
oa_clone.module, line 511
Code
function oa_clone_node_presave($node) {
if (empty($node->nid) && ($items = field_get_items('node', $node, 'field_oa_space_type')) && ($space_type = taxonomy_term_load($items[0]['tid'])) && !empty($node->oa_wizard_name) && ($steps = oa_wizard_get_steps($node->oa_wizard_name)) && ($wrapper = entity_metadata_wrapper('taxonomy_term', $space_type)) && $wrapper->field_oa_clone_enabled
->value() && ($clone_node = $wrapper->field_oa_clone_space
->value())) {
module_load_include('inc', 'clone', 'clone.pages');
$clone_node_prepared = _clone_node_prepare($clone_node, TRUE);
$context = array(
'method' => 'prepopulate',
'original_node' => $clone_node,
);
drupal_alter('clone_node', $clone_node_prepared, $context);
// Find what fields to copy to new node.
// No additional hooks as people can implement hook_node_presave for
// additional logic.
$fields_transfer = array_merge(array(
'title',
'panelizer',
'clone_from_original_nid',
), array_keys(field_info_instances('node', $node->type)));
// Remove any fields exposed in wizard.
foreach ($steps as $step) {
foreach ($step['fields'] as $field_name) {
$pos = array_search($field_name, $fields_transfer);
if ($pos !== FALSE) {
unset($fields_transfer[$pos]);
}
}
}
$fields_transfer = array_diff($fields_transfer, array(
'oa_parent_space',
));
foreach ($fields_transfer as $field_name) {
if (isset($clone_node_prepared->{$field_name})) {
$node->{$field_name} = $clone_node_prepared->{$field_name};
}
}
$node->oa_clone_bypass_access_check = TRUE;
$node->oa_clone_alter_batch = TRUE;
}
}