aboutsummaryrefslogtreecommitdiff
path: root/lib/classes/ConfigurationModel.php
blob: 9ce5a38e1f8d074df9561d53587c725cf7b9710d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<?php
/**
 * configuration.php - model class for the configuration
 *
 * @author      Nico Müller <nico.mueller@uni-oldenburg.de>
 * @author      Michael Riehemann <michael.riehemann@uni-oldenburg.de>
 * @license     GPL2 or any later version
 * @category    Stud.IP
 * @package     admin
 * @since       2.0
 */
class ConfigurationModel
{
    /*
     * Get all config-files
     */
    public static function getConfig($section = null, $name = null)
    {
        $config = Config::get();
        $allconfigs = [];
        foreach ($config->getFields('global', $section, $name) as $field) {
            $metadata = $config->getMetadata($field);
            $metadata['value'] = $config->$field;
            $allconfigs[$metadata['section']][] = $metadata;
        }
        return $allconfigs;
    }

    /**
     * Search the configuration from the config or give all parameters
     *
     * @param Range  $range
     * @param string $limit_to Limit entries to certain range type
     * @return array()
     */
    public static function searchConfiguration(Range $range = null)
    {
        $config = Config::get();
        $allconfigs = [];
        if ($range && !$range->isNew()) {
            foreach ($range->getConfiguration() as $field => $value) {
                $data = $config->getMetadata($field) ?: [
                    'field'       => $field,
                    'type'        => 'string',
                    'description' => 'missing in table `config`',
                ];
                $data['value'] = $value;
                $data['fullname'] = $range->getFullname();

                $allconfigs[] = $data;
            }
        } else {
            foreach ($config->getFields($range ? $range->getRangeType() : 'range') as $field) {
                $metadata = $config->getMetadata($field);
                $metadata['value'] = $config->$field;

                $allconfigs[] = $metadata;
            }
        }

        usort($allconfigs, function ($a, $b) {
            return strcmp($a['field'], $b['field']);
        });

        return $allconfigs;
    }

    /**
     * Show the range configuration for one parameter
     *
     * @param  Range $range
     * @return array
     */
    public static function showConfiguration(Range $range, $field)
    {
        $data = Config::get()->getMetadata($field) ?: [
            'field'       => $field,
            'type'        => 'string',
            'description' => 'missing in table `config`',
        ];

        $data['value']    = $range->getConfiguration()->$field;
        $data['fullname'] = $range->getFullname();

        return $data;
    }

    /**
     * Show all information for one configuration parameter
     *
     * @param string $field
     */
    public static function getConfigInfo($field)
    {
        $config = Config::get();
        $metadata = $config->getMetadata($field);
        $metadata['value'] = $config->$field;
        return $metadata;
    }
}