Passed
Pull Request — master (#1932)
by Struan
05:16
created

AtoZView::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 AtoZView extends BaseView {
6
    public function display(): array {
7
        $data = [];
8
9
10
        $az = 'A';
11
        if ((get_http_var('az') != '') && is_string(get_http_var('az'))) {
12
            $az = strtoupper(substr(get_http_var('az'), 0, 1));
13
        }
14
15
        $gl = '';
16
        if (get_http_var('gl') and is_numeric(get_http_var('gl'))) {
17
            $gl = filter_user_input(get_http_var('gl'), 'strict');
18
        }
19
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
        } else {
31
            $data['letter'] = $az;
32
33
        }
34
35
        if ($this->has_edit_access()) {
36
            $url = new \MySociety\TheyWorkForYou\Url('glossary_addterm');
37
            $data['add_url'] = $url->generate('url');
38
        }
39
40
        $glossary->current_letter = $az;
41
42
        $data['glossary'] = $glossary;
43
        $data['term'] = $glossary->current_term;
44
        return $data;
45
    }
46
47
    private function get_next_prev($glossary): array {
48
        $url = new \MySociety\TheyWorkForYou\Url('glossary');
49
        $url->insert(['gl' => $glossary->previous_term['glossary_id']]);
50
        $previous_link = $url->generate('url');
51
        $url->insert(['gl' => $glossary->next_term['glossary_id']]);
52
        $next_link = $url->generate('url');
53
54
        $nextprev =  [
55
            'next'	=>  [
56
                'url'	=> $next_link,
57
                'title'	=> 'Next term',
58
                'body'	=> $glossary->next_term['title'],
59
            ],
60
            'prev'	=>  [
61
                'url'	=> $previous_link,
62
                'title'	=> 'Previous term',
63
                'body'	=> $glossary->previous_term['title'],
64
            ],
65
        ];
66
67
        return $nextprev;
68
    }
69
}
70