Commit | Line | Data |
---|---|---|
7f254ad8 AE |
1 | <?php |
2 | ||
3 | /** | |
4 | * @file | |
5 | * Definition of views_handler_field_node_translation_link. | |
6 | */ | |
7 | ||
8 | /** | |
9 | * Field handler to present a link to the node. | |
10 | * | |
11 | * @ingroup views_field_handlers | |
12 | */ | |
13 | class views_handler_field_node_translation_link extends views_handler_field { | |
14 | function construct() { | |
15 | parent::construct(); | |
16 | $this->additional_fields['nid'] = 'nid'; | |
17 | $this->additional_fields['tnid'] = 'tnid'; | |
18 | $this->additional_fields['title'] = 'title'; | |
19 | $this->additional_fields['language'] = 'language'; | |
20 | } | |
21 | ||
22 | function query() { | |
23 | $this->ensure_my_table(); | |
24 | $this->add_additional_fields(); | |
25 | } | |
26 | ||
27 | function render($values) { | |
28 | $value = $this->get_value($values, 'tnid'); | |
29 | return $this->render_link($this->sanitize_value($value), $values); | |
30 | } | |
31 | ||
32 | function render_link($data, $values) { | |
33 | global $language; | |
34 | ||
35 | $tnid = $this->get_value($values, 'tnid'); | |
36 | // Only load translations if the node isn't in the current language. | |
37 | if ($this->get_value($values, 'language') != $language->language) { | |
38 | $translations = translation_node_get_translations($tnid); | |
39 | if (isset($translations[$language->language])) { | |
40 | $values->{$this->aliases['nid']} = $translations[$language->language]->nid; | |
41 | $values->{$this->aliases['title']} = $translations[$language->language]->title; | |
42 | } | |
43 | } | |
44 | ||
45 | $this->options['alter']['make_link'] = TRUE; | |
46 | $this->options['alter']['path'] = "node/" . $this->get_value($values, 'nid'); | |
47 | return $this->get_value($values, 'title'); | |
48 | } | |
49 | } |