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

AtoZView::display()   B

Complexity

Conditions 7
Paths 12

Size

Total Lines 38
Code Lines 24

Duplication

Lines 0
Ratio 0 %

Importance

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