Project:Field Thief
Version:5.x-1.x-dev
Component:Code
Category:feature request
Priority:normal
Assigned:Unassigned
Status:needs review

Issue Summary

/**
* Implementation of hook_form_alter().
*/
function fieldthief_form_alter($form_id, & $form) {
if (isset ($form['type']) && $form['type']['#value'] . '_node_form' == $form_id && !isset ($form['nid']['#value'])) {
$copy_rule = db_fetch_object(db_query("SELECT * FROM {copy_rule} WHERE to_type = '%s'", $form['type']['#value']));
if ($copy_rule) {
$nid = arg($copy_rule->src_arg);
if (is_numeric($nid)) {
$node = node_load($nid);
if (isset ($node)) {
$list = explode("\n", $copy_rule->fields_thief);
$list = array_map('trim', $list);
$list = array_filter($list, 'strlen');
foreach ($list as $rule) {
list ($from_name, $to) = explode(',', $rule);
if (isset ($node-> $from_name)) {
$from = $node-> $from_name;
if (isset($form[$to]['0']['value'])) {
//assuming this is a cck field
if (is_array($from) && isset ($from['0']['value'])) {
$form[$to]['0']['value']['#default_value'] = $from['0']['value'];
} else {
$form[$to]['0']['value']['#default_value'] = $from;
                                    }
} else if (isset($form[$to]['key'])) {
//assuming this is a cck integer options field
if (is_array($from) && isset ($from['0']['value'])) {
$form[$to]['key']['#default_value'] = array($from['0']['value']);
} else {
$form[$to]['key']['#default_value'] = array($from);
}
} else if (array_key_exists('nids',$form[$to])) {
//assuming this is a cck node_reference field
if (is_array($from) && isset ($from['0']['nid'])) {
$form[$to]['nids']['#default_value'] = array($from['0']['nid']);
} else {
$form[$to]['nids']['#default_value'] = array($from);
}
} else if (array_key_exists('#default_value',$form[$to])) {
// assuming this is a form api field
if (is_array($from) && isset ($from['0']['value'])) {
$form[$to]['#default_value'] = $from['0']['value'];
} else {
$form[$to]['#default_value'] = $from;
}
} else if (array_key_exists('upload',$form[$to])) {
// assuming this is image field
$testFrom = _imagefield_widget_form($node,array('field_name'=>$from_name),$from);
$form[$to][] = $testFrom[$from_name]['0'];
}
}
}
}
}
}
}
}

Comments

#1

The new part is:

} else if (isset($form[$to]['key'])) {
//assuming this is a cck integer options field
if (is_array($from) && isset ($from['0']['value'])) {
$form[$to]['key']['#default_value'] = array($from['0']['value']);
} else {
$form[$to]['key']['#default_value'] = array($from);
}
}

#2

suscribing