Skip to content

Commit

Permalink
MeetingAdd reformation + corrections refs elan-ev#283
Browse files Browse the repository at this point in the history
  • Loading branch information
ferishili committed Aug 31, 2021
1 parent bba2859 commit 1ee9160
Show file tree
Hide file tree
Showing 7 changed files with 432 additions and 252 deletions.
44 changes: 41 additions & 3 deletions Driver/BigBlueButton.php
Original file line number Diff line number Diff line change
Expand Up @@ -432,7 +432,9 @@ public static function getCreateFeatures()
$res['lockSettingsDisableCam'] = new ConfigOption('lockSettingsDisableCam', dgettext(MeetingPlugin::GETTEXT_DOMAIN, 'Nur Moderatoren können Webcams teilen'), false, self::getFeatureInfo('lockSettingsDisableCam'));

$res['webcamsOnlyForModerator'] = new ConfigOption('webcamsOnlyForModerator', dgettext(MeetingPlugin::GETTEXT_DOMAIN, 'Nur Moderatoren können Webcams sehen'), false, self::getFeatureInfo('webcamsOnlyForModerator'));

$res['room_anyone_can_start'] = new ConfigOption('room_anyone_can_start', dgettext(MeetingPlugin::GETTEXT_DOMAIN, 'Jeder Teilnehmer kann die Konferenz starten'), true, self::getFeatureInfo('room_anyone_can_start'));

$res['muteOnStart'] = new ConfigOption('muteOnStart', dgettext(MeetingPlugin::GETTEXT_DOMAIN, 'Alle Teilnehmenden initial stumm schalten'), false, self::getFeatureInfo('muteOnStart'));

return array_reverse($res);
Expand All @@ -453,16 +455,52 @@ public static function getRecordFeature()
$info = _('Erlaubt es Moderatoren, die Medien und Ereignisse in der Sitzung für die spätere Wiedergabe aufzuzeichnen. Die Aufzeichnung muss innerhalb der Sitzung von einem Moderator gestartet werden.');
}
if ($info) {
$res[] = new ConfigOption('record', dgettext(MeetingPlugin::GETTEXT_DOMAIN, 'Sitzungen können aufgezeichnet werden.'),
$res['record'] = new ConfigOption('record', dgettext(MeetingPlugin::GETTEXT_DOMAIN, 'Sitzungen können aufgezeichnet werden.'),
false, $info);
}

//independent from config record
$res[] = new ConfigOption('giveAccessToRecordings', dgettext(MeetingPlugin::GETTEXT_DOMAIN, 'Aufzeichnungen für Teilnehmende sichtbar schalten'),
$res['giveAccessToRecordings'] = new ConfigOption('giveAccessToRecordings', dgettext(MeetingPlugin::GETTEXT_DOMAIN, 'Aufzeichnungen für Teilnehmende sichtbar schalten'),
true, _('Legen Sie fest, ob neben Lehrenden auch Teilnehmende Zugriff auf die Aufzeichnungen haben sollen.'));
return $res;
}

/**
* {@inheritDoc}
*/
public static function getFeatureDisplayArrangement()
{

return [
'create' => [
'roomsize' => [
'maxParticipants',
'muteOnStart',
'webcamsOnlyForModerator',
'lockSettingsDisableCam',
'lockSettingsDisableMic',
'lockSettingsDisableNote',
],
'privacy' => [
'room_anyone_can_start',
'invite_moderator',
'guestPolicy-ALWAYS_ACCEPT',
'guestPolicy-ASK_MODERATOR',
'privateChat'
],
'extended_setting' => [
'welcome',
],
],
'record' => [
'record_setting' => [
'duration',
'record',
'giveAccessToRecordings'
]
]
];
}

/**
* {@inheritDoc}
*/
Expand Down
8 changes: 8 additions & 0 deletions Driver/DfnVc.php
Original file line number Diff line number Diff line change
Expand Up @@ -406,6 +406,14 @@ public static function getCreateFeatures()
return false;
}

/**
* {@inheritDoc}
*/
public static function getFeatureDisplayArrangement()
{
return [];
}

/**
* {@inheritDoc}
*/
Expand Down
7 changes: 7 additions & 0 deletions Driver/DriverInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -79,4 +79,11 @@ public static function getCreateFeatures();
* @return boolean true if connection is made and server is accessible
*/
public function checkServer();

/**
* Arrange the features based on defined structure to show in MeetingAdd.vue
*
* @return array an array of features in several sections
*/
public static function getFeatureDisplayArrangement();
}
54 changes: 50 additions & 4 deletions app/models/Driver.php
Original file line number Diff line number Diff line change
Expand Up @@ -107,13 +107,46 @@ static function loadConfig()
self::$config[$driver_name]['display_name'] = $driver_name;
}

$feature_arrangement = [];
$create_features = [];
$record_features = [];

if (in_array('ElanEv\Driver\DriverInterface', class_implements($class)) !== false) {
if ($create_features = $class::getCreateFeatures()) {
self::$config[$driver_name]['features']['create'] = self::convertDriverConfigToArray($create_features);
}
$feature_arrangement = $class::getFeatureDisplayArrangement();
$create_features = $class::getCreateFeatures();
}

if (in_array('ElanEv\Driver\RecordingInterface', class_implements($class)) !== false) {
self::$config[$driver_name]['features']['record'] = self::convertDriverConfigToArray($class::getRecordFeature());
$record_features = $class::getRecordFeature();
}

if (!empty($feature_arrangement)) { // With feature arrangement.
// Merge all features together helps to pick features from different cat in a section.
$all_features = array_merge($create_features, $record_features);

// Check if there is any create feature.
if (!empty($create_features)) {
self::$config[$driver_name]['features']['create'] = (isset($feature_arrangement['create'])) ?
self::extractFeatures($feature_arrangement['create'], $all_features) :
self::convertDriverConfigToArray($create_features);
}

// Check if there is record feature.
if (!empty($record_features)) {
self::$config[$driver_name]['features']['record'] = (isset($feature_arrangement['record'])) ?
self::extractFeatures($feature_arrangement['record'], $all_features) :
self::convertDriverConfigToArray($record_features);
}

} else { // Without feature arrangement.

if (!empty($create_features)) {
self::$config[$driver_name]['features']['create']['extended_setting'] = self::convertDriverConfigToArray($create_features);
}

if (!empty($record_features)) {
self::$config[$driver_name]['features']['record']['record_setting'] = self::convertDriverConfigToArray($record_features);
}
}

// Make sure Opencast Plugin is activated
Expand All @@ -127,6 +160,19 @@ static function loadConfig()
if ($is_config_corrected) {
\Config::get()->store('VC_CONFIG', json_encode(self::$config));
}

}

static function extractFeatures($feature_arrangement, $features) {
$extracted = [];
foreach ($feature_arrangement as $section_name => $value_array) {
foreach ($value_array as $name) {
if (array_key_exists($name, $features) && is_object($features[$name])) {
$extracted[$section_name][] = $features[$name]->toArray();
}
}
}
return $extracted;
}

static function convertDriverConfigToArray($config_options)
Expand Down
Loading

0 comments on commit 1ee9160

Please sign in to comment.