translation_remove_from_set
- Versions
- 6 – 7
translation_remove_from_set($node)
Remove a node from its translation set (if any) and update the set accordingly.
Code
modules/translation/translation.module, line 306
<?php
function translation_remove_from_set($node) {
if (isset($node->tnid)) {
$query = db_update('node')
->fields(array(
'tnid' => 0,
'translate' => 0,
));
if (db_query('SELECT COUNT(*) FROM {node} WHERE tnid = :tnid', array(':tnid' => $node->tnid))->fetchField() == 1) {
// There is only one node left in the set: remove the set altogether.
$query
->condition('tnid', $node->tnid)
->execute();
}
else {
$query
->condition('nid', $node->nid)
->execute();
// If the node being removed was the source of the translation set,
// we pick a new source - preferably one that is up to date.
if ($node->tnid == $node->nid) {
$new_tnid = db_query('SELECT nid FROM {node} WHERE tnid = :tnid ORDER BY translate ASC, nid ASC', array(':tnid' => $node->tnid))->fetchField();
db_update('node')
->fields(array('tnid' => $new_tnid))
->condition('tnid', $node->tnid)
->execute();
}
}
}
}
?>Login or register to post comments 