Passed
Pull Request — master (#1412)
by Jakob
04:10
created
Labels
Severity
1
<?php
2
3
/**
4
 * Includes the side wide settings.
5
 */
6
require_once 'vendor/autoload.php';
7
8
header("Access-Control-Allow-Origin: *"); // enable CORS for the whole REST API
9
10
try {
11
    $config = new GlobalConfig();
12
    $model = new Model($config);
13
    $controller = new RestController($model);
14
    $request = new Request($model);
15
    $path = $request->getServerConstant('PATH_INFO') ? $request->getServerConstant('PATH_INFO') : ''; // eg. "/search"
16
    $parts = explode('/', $path);
0 ignored issues
show
It seems like $path can also be of type null; however, parameter $string of explode() does only seem to accept string, maybe add an additional type check? ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

16
    $parts = explode('/', /** @scrutinizer ignore-type */ $path);
Loading history...
17
    $request->setUri($request->getQueryParam('uri'));
18
    $request->setLang($request->getQueryParam('lang'));
19
    if ($request->getQueryParam('vocab')) {
20
        $request->setVocab($request->getQueryParam('vocab'));
21
    }
22
    if ($request->getQueryParam('clang')) {
23
        $request->setContentLang($request->getQueryParam('clang'));
24
    } elseif ($request->getQueryParam('lang')) {
25
        $request->setContentLang($request->getQueryParam('lang'));
26
    }
27
28
    if (sizeof($parts) < 2 || $parts[1] == "") {
29
        header("HTTP/1.0 404 Not Found");
30
        echo ("404 Not Found");
31
    } elseif ($parts[1] == 'vocabularies') {
32
        $controller->vocabularies($request);
33
    } elseif ($parts[1] == 'search') {
34
        $controller->search($request);
35
    } elseif ($parts[1] == 'label') {
36
        $controller->label($request);
37
    } elseif ($parts[1] == 'types') {
38
        $controller->types($request);
39
    } elseif ($parts[1] == 'data') {
40
        $controller->data($request);
41
    } elseif (sizeof($parts) == 2) {
42
        header("Location: " . $parts[1] . "/");
43
    } else {
44
        $vocab = $parts[1];
45
        try {
46
            $request->setVocab($parts[1]);
47
        } catch (Exception | ValueError $e) {
48
            header("HTTP/1.0 404 Not Found");
49
            header("Content-type: text/plain; charset=utf-8");
50
            echo ("404 Not Found : Vocabulary id '$parts[1]' not found.");
51
            return;
52
        }
53
        $lang = $request->getQueryParam('lang') ? $request->getQueryParam('lang') : $request->getVocab()->getConfig()->getDefaultLanguage();
54
        $request->setLang($lang);
55
        if ($parts[2] == '') {
56
            $controller->vocabularyInformation($request);
57
        } elseif ($parts[2] == 'types') {
58
            $controller->types($request);
59
        } elseif ($parts[2] == 'topConcepts') {
60
            $controller->topConcepts($request);
61
        } elseif ($parts[2] == 'data') {
62
            $controller->data($request);
63
        } elseif ($parts[2] == 'mappings') {
64
            $controller->mappings($request);
65
        } elseif ($parts[2] == 'search') {
66
            $controller->search($request);
67
        } elseif ($parts[2] == 'label') {
68
            $controller->label($request);
69
        } elseif ($parts[2] == 'lookup') {
70
            $controller->lookup($request);
71
        } elseif ($parts[2] == 'index' && sizeof($parts) == 4) {
72
            $letter = $parts[3];
73
            if ($letter == "") {
74
                $controller->indexLetters($request);
75
            } else {
76
                $controller->indexConcepts($letter, $request);
77
            }
78
        } elseif ($parts[2] == 'broader') {
79
            $controller->broader($request);
80
        } elseif ($parts[2] == 'broaderTransitive') {
81
            $controller->broaderTransitive($request);
82
        } elseif ($parts[2] == 'narrower') {
83
            $controller->narrower($request);
84
        } elseif ($parts[2] == 'narrowerTransitive') {
85
            $controller->narrowerTransitive($request);
86
        } elseif ($parts[2] == 'hierarchy') {
87
            $controller->hierarchy($request);
88
        } elseif ($parts[2] == 'children') {
89
            $controller->children($request);
90
        } elseif ($parts[2] == 'related') {
91
            $controller->related($request);
92
        } elseif ($parts[2] == 'vocabularyStatistics') {
93
            $controller->vocabularyStatistics($request);
94
        } elseif ($parts[2] == 'labelStatistics') {
95
            $controller->labelStatistics($request);
96
        } elseif ($parts[2] == 'groups') {
97
            $controller->groups($request);
98
        } elseif ($parts[2] == 'groupMembers') {
99
            $controller->groupMembers($request);
100
        } elseif ($parts[2] == 'new') {
101
            $controller->newConcepts($request);
102
        } elseif ($parts[2] == 'modified') {
103
            $controller->modifiedConcepts($request);
104
        } else {
105
            header("HTTP/1.0 404 Not Found");
106
            echo ("404 Not Found");
107
        }
108
    }
109
} catch (Exception $e) {
110
    header("HTTP/1.0 500 Internal Server Error");
111
    echo('ERROR: ' . $e->getMessage());
112
}
113