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

AtoZView::display()   B

Complexity

Conditions 7
Paths 12

Size

Total Lines 33
Code Lines 21

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 7
eloc 21
c 1
b 0
f 0
nc 12
nop 0
dl 0
loc 33
rs 8.6506
1
<?php
2
3
namespace MySociety\TheyWorkForYou\GlossaryView;
4
5
class AtoZView {
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'] = $glossary->current_term['body'];
25
            $data['contributing_user'] = $glossary->current_term['user_id'] ? $glossary->current_term['firstname'] . " " . $glossary->current_term['lastname'] : '';
26
            $az = strtoupper($glossary->current_term['title'][0]);
27
28
            $data['nextprev'] = $this->get_next_prev($glossary);
29
        } else {
30
            $data['letter'] = $az;
31
32
        }
33
34
        $glossary->current_letter = $az;
35
36
        $data['glossary'] = $glossary;
37
        $data['term'] = $glossary->current_term;
38
        return $data;
39
    }
40
41
    private function get_next_prev($glossary): array {
42
        $url = new \MySociety\TheyWorkForYou\Url('glossary');
43
        $url->insert(['gl' => $glossary->previous_term['glossary_id']]);
44
        $previous_link = $url->generate('url');
45
        $url->insert(['gl' => $glossary->next_term['glossary_id']]);
46
        $next_link = $url->generate('url');
47
48
        $nextprev =  [
49
            'next'	=>  [
50
                'url'	=> $next_link,
51
                'title'	=> 'Next term',
52
                'body'	=> $glossary->next_term['title'],
53
            ],
54
            'prev'	=>  [
55
                'url'	=> $previous_link,
56
                'title'	=> 'Previous term',
57
                'body'	=> $glossary->previous_term['title'],
58
            ],
59
        ];
60
61
        return $nextprev;
62
    }
63
}
64