function i18n_menu_node_tokens in Menu translation - Node 7
Implementation of hook_tokens().
File
- ./
i18n_menu_node.module, line 583 - Menu translation (Node).
Code
function i18n_menu_node_tokens($type, $tokens, $data = array(), $options = array()) {
$replacements = array();
if ($type == 'node' && !empty($data['node'])) {
$node = $data['node'];
$trail_raw = array();
$item = FALSE;
// If there are menu-link-i18n tokens
if ($parents_tokens = token_find_with_prefix($tokens, 'menu-link-i18n')) {
// If the current node has no menu item we use the source node one.
if (empty($node->menu['mlid'])) {
$tnid = _i18n_menu_node_get_node_tnid($node);
if (!empty($tnid) && $tnid != $node->nid) {
$tnode = (object) array(
'nid' => $tnid,
);
menu_node_prepare($tnode);
// We use the source node menu item only if node translation is enabled.
$item = !empty($tnode->menu['mlid']) && i18n_menu_node_enabled($tnode->menu) ? $tnode->menu : FALSE;
}
}
else {
$item = $node->menu;
}
while ($item) {
array_unshift($trail_raw, _i18n_menu_node_get_item_title($item, FALSE, $node->language));
$item = empty($item['plid']) ? FALSE : menu_link_load($item['plid']);
}
$replacements += token_generate('array', $parents_tokens, array(
'array' => $trail_raw,
), $options);
}
}
return $replacements;
}