Passed
Pull Request — master (#1932)
by Struan
04:39
created

TermView::get_next_prev()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 21
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 15
c 1
b 0
f 0
nc 1
nop 1
dl 0
loc 21
rs 9.7666
1
<?php
2
3
namespace MySociety\TheyWorkForYou\GlossaryView;
4
5
class TermView extends BaseView {
6
    public function display(): array {
7
        $data = [
8
            'title' => 'Glossary',
9
            'page_title' => 'Glossary Index',
10
            'this_page' => 'glossary',
11
            'template_name' => 'term',
12
        ];
13
14
        $gl = '';
15
        if (get_http_var('gl') and is_numeric(get_http_var('gl'))) {
16
            $gl = filter_user_input(get_http_var('gl'), 'strict');
17
        }
18
19
        $az = 'A';
20
        $glossary = new \GLOSSARY(['sort' => 'regexp_replace', 'glossary_id' => $gl]);
21
        if ($glossary->current_term) {
22
            $data['notitle'] = 1;
23
            $data['title'] = $glossary->current_term['title'];
24
            $data['definition'] = $this->format_body($glossary->current_term['body']);
25
26
            $data['contributing_user'] = $glossary->current_term['user_id'] ? $glossary->current_term['firstname'] . " " . $glossary->current_term['lastname'] : '';
27
            $az = strtoupper($glossary->current_term['title'][0]);
28
29
            $data['nextprev'] = $this->get_next_prev($glossary);
30
            $data['this_page'] = 'glossary_item';
31
            $data['page_title'] = $data['title'] . ': Glossary Item';
32
        }
33
34
        if ($this->has_edit_access()) {
35
            $url = new \MySociety\TheyWorkForYou\Url('glossary_addterm');
36
            $data['add_url'] = $url->generate('url');
37
        }
38
39
        $glossary->current_letter = $az;
40
41
        $data['glossary'] = $glossary;
42
        return $data;
43
    }
44
45
    private function get_next_prev($glossary): array {
46
        $url = new \MySociety\TheyWorkForYou\Url('glossary');
47
        $url->insert(['gl' => $glossary->previous_term['glossary_id']]);
48
        $previous_link = $url->generate('url');
49
        $url->insert(['gl' => $glossary->next_term['glossary_id']]);
50
        $next_link = $url->generate('url');
51
52
        $nextprev =  [
53
            'next'	=>  [
54
                'url'	=> $next_link,
55
                'title'	=> 'Next term',
56
                'body'	=> $glossary->next_term['title'],
57
            ],
58
            'prev'	=>  [
59
                'url'	=> $previous_link,
60
                'title'	=> 'Previous term',
61
                'body'	=> $glossary->previous_term['title'],
62
            ],
63
        ];
64
65
        return $nextprev;
66
    }
67
}
68