Completed
Pull Request — master (#289)
by
unknown
02:13
created

config::get()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 3
nc 3
nop 1
dl 0
loc 10
rs 9.9332
c 0
b 0
f 0
1
<?php
2
// This file is part of Moodle - http://moodle.org/
3
//
4
// Moodle is free software: you can redistribute it and/or modify
5
// it under the terms of the GNU General Public License as published by
6
// the Free Software Foundation, either version 3 of the License, or
7
// (at your option) any later version.
8
//
9
// Moodle is distributed in the hope that it will be useful,
10
// but WITHOUT ANY WARRANTY; without even the implied warranty of
11
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
// GNU General Public License for more details.
13
//
14
// You should have received a copy of the GNU General Public License
15
// along with Moodle.  If not, see <http://www.gnu.org/licenses/>.
16
17
/**
18
 * The mod_bigbluebuttonbn locallib/config.
19
 *
20
 * @package   mod_bigbluebuttonbn
21
 * @copyright 2010 onwards, Blindside Networks Inc
22
 * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23
 * @author    Jesus Federico  (jesus [at] blindsidenetworks [dt] com)
24
 */
25
26
namespace mod_bigbluebuttonbn\locallib;
27
28
defined('MOODLE_INTERNAL') || die();
29
30
require_once($CFG->dirroot . '/mod/bigbluebuttonbn/locallib.php');
31
32
/**
33
 * Handles the global configuration based on config.php.
34
 *
35
 * @copyright 2010 onwards, Blindside Networks Inc
36
 * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
37
 */
38
class config {
39
40
    /**
41
     * Returns moodle version.
42
     *
43
     * @return string
44
     */
45
    public static function get_moodle_version_major() {
46
        global $CFG;
47
        $versionarray = explode('.', $CFG->version);
48
        return $versionarray[0];
49
    }
50
51
    /**
52
     * Returns configuration default values.
53
     *
54
     * @return array
55
     */
56
    public static function defaultvalues() {
57
        return array(
58
            'server_url' => (string) BIGBLUEBUTTONBN_DEFAULT_SERVER_URL,
59
            'shared_secret' => (string) BIGBLUEBUTTONBN_DEFAULT_SHARED_SECRET,
60
            'voicebridge_editable' => false,
61
            'importrecordings_enabled' => false,
62
            'importrecordings_from_deleted_enabled' => false,
63
            'waitformoderator_default' => false,
64
            'waitformoderator_editable' => true,
65
            'waitformoderator_ping_interval' => '10',
66
            'waitformoderator_cache_ttl' => '60',
67
            'userlimit_default' => '0',
68
            'userlimit_editable' => false,
69
            'preuploadpresentation_enabled' => false,
70
            'sendnotifications_enabled' => false,
71
            'recordingready_enabled' => false,
72
            'recordingstatus_enabled' => false,
73
            'meetingevents_enabled' => false,
74
            'participant_moderator_default' => '0',
75
            'participant_guestlink_enabled' => '1',
76
            'participant_guestlink_default' => '0',
77
            'custom_logo' => '',
78
            'scheduled_duration_enabled' => false,
79
            'scheduled_duration_compensation' => '10',
80
            'scheduled_pre_opening' => '10',
81
            'recordings_enabled' => true,
82
            'recordings_html_default' => false,
83
            'recordings_html_editable' => false,
84
            'recordings_deleted_default' => false,
85
            'recordings_deleted_editable' => false,
86
            'recordings_imported_default' => false,
87
            'recordings_imported_editable' => false,
88
            'recordings_preview_default' => true,
89
            'recordings_preview_editable' => false,
90
            'recordings_validate_url' => true,
91
            'recording_default' => true,
92
            'recording_editable' => true,
93
            'recording_icons_enabled' => true,
94
            'recording_all_from_start_default' => false,
95
            'recording_all_from_start_editable' => false,
96
            'recording_hide_button_default' => false,
97
            'recording_hide_button_editable' => false,
98
            'general_warning_message' => '',
99
            'general_warning_roles' => 'editingteacher,teacher',
100
            'general_warning_box_type' => 'info',
101
            'general_warning_button_text' => '',
102
            'general_warning_button_href' => '',
103
            'general_warning_button_class' => '',
104
            'clienttype_enabled' => false,
105
            'clienttype_default' => '0',
106
            'clienttype_editable' => true,
107
            'muteonstart_default' => false,
108
            'muteonstart_editable' => false,
109
        );
110
    }
111
112
    /**
113
     * Returns default value for an specific setting.
114
     *
115
     * @param string $setting
116
     * @return string
117
     */
118
    public static function defaultvalue($setting) {
119
        $defaultvalues = self::defaultvalues();
120
        if (!array_key_exists($setting, $defaultvalues)) {
121
            return;
122
        }
123
        return $defaultvalues[$setting];
124
    }
125
126
    /**
127
     * Validates if recording settings are enabled.
128
     *
129
     * @return boolean
130
     */
131
    public static function guestlinks_enabled() {
132
        return (boolean)self::get('participant_guestlink');
133
    }
134
135
    /**
136
     * Returns value for an specific setting.
137
     *
138
     * @param string $setting
139
     * @return string
140
     */
141
    public static function get($setting) {
142
        global $CFG;
143
        if (isset($CFG->bigbluebuttonbn[$setting])) {
144
            return (string)$CFG->bigbluebuttonbn[$setting];
145
        }
146
        if (isset($CFG->{'bigbluebuttonbn_'.$setting})) {
147
            return (string)$CFG->{'bigbluebuttonbn_'.$setting};
148
        }
149
        return self::defaultvalue($setting);
150
    }
151
152
    /**
153
     * Validates if recording settings are enabled.
154
     *
155
     * @return boolean
156
     */
157
    public static function recordings_enabled() {
158
        return (boolean)self::get('recordings_enabled');
159
    }
160
161
    /**
162
     * Validates if imported recording settings are enabled.
163
     *
164
     * @return boolean
165
     */
166
    public static function importrecordings_enabled() {
167
        return (boolean)self::get('importrecordings_enabled');
168
    }
169
170
    /**
171
     * Validates if clienttype settings are enabled.
172
     *
173
     * @return boolean
174
     */
175
    public static function clienttype_enabled() {
176
        return (boolean)self::get('clienttype_enabled');
177
    }
178
179
    /**
180
     * Wraps current settings in an array.
181
     *
182
     * @return array
183
     */
184
    public static function get_options() {
185
        return array(
186
               'version_major' => self::get_moodle_version_major(),
187
               'voicebridge_editable' => self::get('voicebridge_editable'),
188
               'importrecordings_enabled' => self::get('importrecordings_enabled'),
189
               'importrecordings_from_deleted_enabled' => self::get('importrecordings_from_deleted_enabled'),
190
               'waitformoderator_default' => self::get('waitformoderator_default'),
191
               'waitformoderator_editable' => self::get('waitformoderator_editable'),
192
               'userlimit_default' => self::get('userlimit_default'),
193
               'userlimit_editable' => self::get('userlimit_editable'),
194
               'preuploadpresentation_enabled' => self::get('preuploadpresentation_enabled'),
195
               'sendnotifications_enabled' => self::get('sendnotifications_enabled'),
196
               'recordings_enabled' => self::get('recordings_enabled'),
197
               'meetingevents_enabled' => self::get('meetingevents_enabled'),
198
               'recordings_html_default' => self::get('recordings_html_default'),
199
               'recordings_html_editable' => self::get('recordings_html_editable'),
200
               'recordings_deleted_default' => self::get('recordings_deleted_default'),
201
               'recordings_deleted_editable' => self::get('recordings_deleted_editable'),
202
               'recordings_imported_default' => self::get('recordings_imported_default'),
203
               'recordings_imported_editable' => self::get('recordings_imported_editable'),
204
               'recordings_preview_default' => self::get('recordings_preview_default'),
205
               'recordings_preview_editable' => self::get('recordings_preview_editable'),
206
               'recordings_validate_url' => self::get('recordings_validate_url'),
207
               'recording_default' => self::get('recording_default'),
208
               'recording_editable' => self::get('recording_editable'),
209
               'recording_icons_enabled' => self::get('recording_icons_enabled'),
210
               'recording_all_from_start_default' => self::get('recording_all_from_start_default'),
211
               'recording_all_from_start_editable' => self::get('recording_all_from_start_editable'),
212
               'recording_hide_button_default' => self::get('recording_hide_button_default'),
213
               'recording_hide_button_editable' => self::get('recording_hide_button_editable'),
214
               'general_warning_message' => self::get('general_warning_message'),
215
               'general_warning_box_type' => self::get('general_warning_box_type'),
216
               'general_warning_button_text' => self::get('general_warning_button_text'),
217
               'general_warning_button_href' => self::get('general_warning_button_href'),
218
               'general_warning_button_class' => self::get('general_warning_button_class'),
219
               'clienttype_enabled' => self::get('clienttype_enabled'),
220
               'clienttype_editable' => self::get('clienttype_editable'),
221
               'clienttype_default' => self::get('clienttype_default'),
222
               'muteonstart_editable' => self::get('muteonstart_editable'),
223
               'muteonstart_default' => self::get('muteonstart_default'),
224
               'custom_logo' => self::get('custom_logo'),
225
          );
226
    }
227
}
228