Module duplicates references on every save (fix provided)
vpiotr - June 1, 2008 - 23:01
| Project: | Multireference CCK field |
| Version: | 5.x-1.1 |
| Component: | Code |
| Category: | bug report |
| Priority: | normal |
| Assigned: | steve.m |
| Status: | needs review |
Jump to:
Description
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);
#1
Fixed in the -dev version. Please test!