function translation_nodeapi in Internationalization 5
Same name and namespace in other branches
- 5.3 translation/translation.module \translation_nodeapi()
- 5.2 translation/translation.module \translation_nodeapi()
Implementation of hook_nodeapi().
Delete case is now handled in i18n_nodeapi
File
- translation/
translation.module, line 260
Code
function translation_nodeapi(&$node, $op, $arg = 0) {
if (variable_get("i18n_node_{$node->type}", 0)) {
switch ($op) {
case 'load':
return array(
'translation' => translation_node_get_translations(array(
'nid' => $node->nid,
), FALSE),
);
break;
case 'insert':
if ($node->translation_nid) {
// If not existing translation set, update both nodes. Otherwise trid is saved by i18n module
if (!$node->trid) {
$node->trid = db_next_id('{i18n_node}_trid');
db_query("UPDATE {i18n_node} SET trid = %d WHERE nid=%d OR nid=%d", $node->trid, $node->nid, $node->translation_nid);
}
// Clone files for node attachments
if (isset($node->translation_files)) {
foreach ($node->translation_files as $fid => $file) {
if (!$file['remove']) {
// We are using revisions to have a file linked to different nodes, different descriptions
db_query("INSERT INTO {file_revisions} (fid, vid, list, description) VALUES (%d, %d, %d, '%s')", $file['fid'], $node->vid, $file['list'], $file['description']);
}
}
}
}
break;
case 'prepare':
// When creating a translation
if (!$node->nid && isset($_GET['translation']) && ($nid = $_GET['translation']) && ($language = $_GET['language']) && user_access('translate nodes')) {
// We are translating a node from a source node
// Load the node to be translated and populate fields
translation_node_prepare($node, $nid, $language);
}
break;
}
// Add nat integration
if (module_exists('nat')) {
translation_nodeapi_nat($node, $op);
}
}
}