On every save references are duplicated if you use node revisions.
Code below is a better one for this case:
function _multireference_load_values($nid = 0, $fieldname = '', $vid = NULL) {
$values = array();
if ($nid && $fieldname) {
if (is_null($vid)) {
$node = node_load($nid);
$vid = $node->vid;
}
$sql = "SELECT r_id, r_text, description, description2, weight FROM {node_field_multireference_data} WHERE nid=%d AND field_name='%s' AND vid=%d ORDER BY weight";
$result = db_query($sql, $nid, $fieldname, $vid);
$values = array();
while ($data = db_fetch_object($result)) {
$values[] = array(
'r_id' => $data->r_id,
'r_text' => $data->r_text,
'desc' => $data->description,
'desc2' => $data->description2,
);
}
}
return $values;
}
Also in function multireference_field() find:
$values = _multireference_load_values($node->nid, $field['field_name']);
and change to:
$values = _multireference_load_values($node->nid, $field['field_name'], $node->vid);
Comments
Comment #1
steve.m commentedFixed in the -dev version. Please test!