diff --git a/mod/bigbluebuttonbn/classes/setting_validator.php b/mod/bigbluebuttonbn/classes/setting_validator.php index 04042827383..014f036cba7 100644 --- a/mod/bigbluebuttonbn/classes/setting_validator.php +++ b/mod/bigbluebuttonbn/classes/setting_validator.php @@ -37,7 +37,19 @@ class setting_validator { public static function section_general_shown() { global $CFG; return (!isset($CFG->bigbluebuttonbn['server_url']) || - !isset($CFG->bigbluebuttonbn['shared_secret'])); + !isset($CFG->bigbluebuttonbn['shared_secret']) + ); + } + + /** + * Validate if default messages section will be shown. + * + * @return bool + */ + public static function section_default_messages_shown() { + global $CFG; + return (!isset($CFG->bigbluebuttonbn['welcome_default']) || + !isset($CFG->bigbluebuttonbn['welcome_editable'])); } /** diff --git a/mod/bigbluebuttonbn/classes/settings.php b/mod/bigbluebuttonbn/classes/settings.php index 2d05b4f9ee7..325ea23123b 100644 --- a/mod/bigbluebuttonbn/classes/settings.php +++ b/mod/bigbluebuttonbn/classes/settings.php @@ -85,8 +85,9 @@ class settings { * Add all settings. */ public function add_all_settings(): void { + // Renders settings for welcome messages. + $this->add_defaultmessages_settings(); // Evaluates if recordings are enabled for the Moodle site. - // Renders settings for record feature. $this->add_record_settings(); // Renders settings for import recordings. @@ -188,37 +189,6 @@ class settings { $item, $settingsgeneral ); - $settingsgeneral->add($item); - $item = new admin_setting_heading( - 'bigbluebuttonbn_config_default_messages', - get_string('config_default_messages', 'bigbluebuttonbn'), - get_string('config_default_messages_description', 'bigbluebuttonbn') - ); - $settingsgeneral->add($item); - $item = new admin_setting_configtextarea( - 'bigbluebuttonbn_welcome_default', - get_string('config_welcome_default', 'bigbluebuttonbn'), - get_string('config_welcome_default_description', 'bigbluebuttonbn'), - '', - PARAM_TEXT - ); - $this->add_conditional_element( - 'welcome_default', - $item, - $settingsgeneral - ); - $settingsgeneral->add($item); - $item = new admin_setting_configcheckbox( - 'bigbluebuttonbn_welcome_editable', - get_string('config_welcome_editable', 'bigbluebuttonbn'), - get_string('config_welcome_editable_description', 'bigbluebuttonbn'), - 1, - ); - $this->add_conditional_element( - 'welcome_editable', - $item, - $settingsgeneral - ); $item = new admin_setting_configtext( 'bigbluebuttonbn_poll_interval', get_string('config_poll_interval', 'bigbluebuttonbn'), @@ -235,6 +205,53 @@ class settings { return $settingsgeneral; } + /** + * Helper function renders default messages settings if the feature is enabled. + */ + protected function add_defaultmessages_settings(): void { + // Configuration for 'default messages' feature. + $defaultmessagessetting = new admin_settingpage( + "{$this->sectionnameprefix}_default_messages", + get_string('config_default_messages', 'bigbluebuttonbn'), + 'moodle/site:config', + !((boolean) setting_validator::section_default_messages_shown()) && ($this->moduleenabled) + ); + + if ($this->admin->fulltree) { + $item = new admin_setting_heading( + 'bigbluebuttonbn_config_default_messages', + '', + get_string('config_default_messages_description', 'bigbluebuttonbn') + ); + $defaultmessagessetting->add($item); + $item = new admin_setting_configtextarea( + 'bigbluebuttonbn_welcome_default', + get_string('config_welcome_default', 'bigbluebuttonbn'), + get_string('config_welcome_default_description', 'bigbluebuttonbn'), + '', + PARAM_TEXT + ); + $this->add_conditional_element( + 'welcome_default', + $item, + $defaultmessagessetting + ); + $item = new admin_setting_configcheckbox( + 'bigbluebuttonbn_welcome_editable', + get_string('config_welcome_editable', 'bigbluebuttonbn'), + get_string('config_welcome_editable_description', 'bigbluebuttonbn'), + 1, + ); + $this->add_conditional_element( + 'welcome_editable', + $item, + $defaultmessagessetting + ); + } + $this->admin->add($this->parent, $defaultmessagessetting); + + } + /** * Helper function renders record settings if the feature is enabled. */