diff --git a/main/course_info/infocours.php b/main/course_info/infocours.php
index eaaa6a4f19..9d6f927501 100644
--- a/main/course_info/infocours.php
+++ b/main/course_info/infocours.php
@@ -17,7 +17,7 @@
 /*	   INIT SECTION */
 
 // Language files that need to be included
-$language_file = array('create_course', 'course_info', 'admin');
+$language_file = array('create_course', 'course_info', 'admin', 'gradebook');
 require_once '../inc/global.inc.php';
 $current_course_tool  = TOOL_COURSE_SETTING;
 $this_section = SECTION_COURSES;
@@ -41,12 +41,6 @@ $is_allowedToEdit 			= $is_courseAdmin || $is_platformAdmin;
 $course_code 				= $_course['sysCode'];
 $course_access_settings 	= CourseManager :: get_access_settings($course_code);
 
-$video_conference_enabled = false;
-if (api_get_setting('bbb_tool_enable') == 'true') {
-    $video_conference_enabled = true;
-}
-
-
 //LOGIC FUNCTIONS
 function is_settings_editable() {
 	return $GLOBALS['course_info_is_editable'];
@@ -61,7 +55,7 @@ $show_delete_watermark_text_message = false;
 if (api_get_setting('pdf_export_watermark_by_course') == 'true') {
     if (isset($_GET['delete_watermark'])) {
         PDF::delete_watermark($course_code);
-        $show_delete_watermark_text_message = true;        
+        $show_delete_watermark_text_message = true;
     }
 }
 $table_course_category = Database :: get_main_table(TABLE_MAIN_CATEGORY);
@@ -120,14 +114,14 @@ $form->addElement('html', '
'.Display::return_icon('visio.png', Security::remove_XSS(get_lang('VideoConferenceSettings')),'', ICON_SIZE_SMALL).' '.Security::remove_XSS(get_lang('VideoConferenceSettings')).'
');
-    
-//    $form->add_textfield('big_blue_button_welcome_message', get_lang('big_blue_button_welcome_message'), false, array('class' => 'span5'));
-    
-/*    $form->add_textfield('big_blue_button_meeting_name', get_lang('big_blue_button_meeting_name'), false, array('class' => 'span5'));
-    
-    
-    $form->add_textfield('big_blue_button_attendee_password', get_lang('big_blue_button_attendee_password'), false, array('class' => 'span5'));
-    $form->add_textfield('big_blue_button_moderator_password', get_lang('big_blue_button_moderator_password'), false, array('class' => 'span5'));
-    
-    
-    
-    $form->addElement('checkbox', 'big_blue_button_open_new_window', array(null, null, get_lang('big_blue_button_open_new_window')), null);
-    
-    $form->addElement('checkbox', 'big_blue_button_student_must_wait_until_moderator', array(null, null, get_lang('big_blue_button_student_must_wait_until_moderator')), null);    
-    
-    $form->addElement('datepicker', 'big_blue_button_join_start_date', array(get_lang('big_blue_button_join_start_date')), null);
-    $form->addElement('datepicker', 'big_blue_button_join_end_date', array(get_lang('big_blue_button_join_end_date')), null);*/
-    
-    $form->add_textfield('big_blue_button_max_students_allowed', get_lang('big_blue_button_max_students_allowed'), false, array('class' => 'span5'));    
-    $form->addElement('checkbox', 'big_blue_button_record_and_store', array(null, null, get_lang('big_blue_button_record_and_store')), null);
-
-    $form->addElement('style_submit_button', null, get_lang('SaveSettings'), 'class="save"');
-    $form->addElement('html', '
 ');
-}
+// Plugin course settings
+
+$app_plugin = new AppPlugin();
+$app_plugin->add_course_settings_form($form);
 
 // Get all the course information
 $all_course_information =  CourseManager::get_course_information($_course['sysCode']);
@@ -428,62 +398,32 @@ $values['enable_lp_auto_launch']                    = api_get_course_setting('en
 $values['pdf_export_watermark_text']                = api_get_course_setting('pdf_export_watermark_text');
 $values['allow_public_certificates']                = api_get_course_setting('allow_public_certificates');
 
-
-if ($video_conference_enabled) {
-    
-    $values['big_blue_button_welcome_message']      = api_get_course_setting('big_blue_button_welcome_message');
-    $values['big_blue_button_max_students_allowed'] = api_get_course_setting('big_blue_button_max_students_allowed');  
-    
-    
-    /*$values['big_blue_button_meeting_name']         = api_get_course_setting('big_blue_button_meeting_name');
-    
-    $values['big_blue_button_attendee_password']    = api_get_course_setting('big_blue_button_attendee_password');
-    $values['big_blue_button_moderator_password']   = api_get_course_setting('big_blue_button_moderator_password');    
-      
-    $values['big_blue_button_open_new_window']                     = api_get_course_setting('big_blue_button_open_new_window');
-    $values['big_blue_button_student_must_wait_until_moderator']   = api_get_course_setting('big_blue_button_student_must_wait_until_moderator');
-    
-    $start_date = api_get_course_setting('big_blue_button_join_start_date');
-    if (empty($start_date)) {
-        $start_date = date('Y-m-d 12:00:00');        
-    }
-    
-    $values['big_blue_button_join_start_date']      = $start_date;
-    
-    $end_date = api_get_course_setting('big_blue_button_join_end_date');
-    if (empty($end_date)) {
-        $end_date = date('Y-m-d 18:00:00');        
-    }
-    
-    $values['big_blue_button_join_end_date']        = $end_date;       
-    */
-     $values['big_blue_button_record_and_store']     = api_get_course_setting('big_blue_button_record_and_store');
-}
+$app_plugin->set_course_settings_defaults($values);
 
 $form->setDefaults($values);
 
 // Validate form
-if ($form->validate() && is_settings_editable()) {	    
+if ($form->validate() && is_settings_editable()) {
     $update_values = $form->exportValues();
-       
+
     $pdf_export_watermark_path = $_FILES['pdf_export_watermark_path'];
-    
-    if (!empty($pdf_export_watermark_path['name'])) {        
-        $pdf_export_watermark_path_result = PDF::upload_watermark($pdf_export_watermark_path['name'], $pdf_export_watermark_path['tmp_name'], $course_code);        
+
+    if (!empty($pdf_export_watermark_path['name'])) {
+        $pdf_export_watermark_path_result = PDF::upload_watermark($pdf_export_watermark_path['name'], $pdf_export_watermark_path['tmp_name'], $course_code);
         unset($update_values['pdf_export_watermark_path']);
     }
-    
+
     //Variables that will be saved in the TABLE_MAIN_COURSE table
-    $update_in_course_table = array('title', 'course_language','category_code','department_name', 'department_url','visibility',  
+    $update_in_course_table = array('title', 'course_language','category_code','department_name', 'department_url','visibility',
     								'subscribe', 'unsubscribe','tutor_name','course_registration_password', 'legal', 'activate_legal');
-    
+
 	foreach ($update_values as $index =>$value) {
 		$update_values[$index] = Database::escape_string($value);
-	}    
-	unset($value);	
+	}
+	unset($value);
 	$table_course = Database :: get_main_table(TABLE_MAIN_COURSE);
 	$sql = "UPDATE $table_course SET
-				title 				    = '".$update_values['title']."',				
+				title 				    = '".$update_values['title']."',
 				course_language 	    = '".$update_values['course_language']."',
 				category_code 		    = '".$update_values['category_code']."',
 				department_name  	    = '".$update_values['department_name']."',
@@ -496,36 +436,16 @@ if ($form->validate() && is_settings_editable()) {
 				registration_code 	    = '".$update_values['course_registration_password']."'
 			WHERE code = '".$course_code."'";
 	Database::query($sql);
-        
-    if ($video_conference_enabled) {       
-        /*
-        if (isset($update_values['big_blue_button_open_new_window']) && $update_values['big_blue_button_open_new_window']) {
-            $update_values['big_blue_button_open_new_window'] = 1;
-        } else {
-            $update_values['big_blue_button_open_new_window'] = 0;
-        }        
-        if (isset($update_values['big_blue_button_student_must_wait_until_moderator']) && $update_values['big_blue_button_student_must_wait_until_moderator']) {
-            $update_values['big_blue_button_student_must_wait_until_moderator'] = 1;
-        } else {
-            $update_values['big_blue_button_student_must_wait_until_moderator'] = 0;
-        }
-        */
-        if (isset($update_values['big_blue_button_record_and_store']) && $update_values['big_blue_button_record_and_store']) {
-            $update_values['big_blue_button_record_and_store'] = 1;
-        } else {
-            $update_values['big_blue_button_record_and_store'] = 0;
-        }        
-    }
-    
+
 	// Update course_settings table - this assumes those records exist, otherwise triggers an error
-	$table_course_setting = Database::get_course_table(TABLE_COURSE_SETTING);   
-    
+	$table_course_setting = Database::get_course_table(TABLE_COURSE_SETTING);
+
     foreach ($update_values as $key =>$value) {
         //We do not update variables that were already saved in the TABLE_MAIN_COURSE table
         if (!in_array($key, $update_in_course_table)) {
-            Database::update($table_course_setting, array('value' => $update_values[$key]), array('variable = ? AND c_id = ?' => array($key, api_get_course_int_id()), true));
-        }    	
-    }    
+            Database::update($table_course_setting, array('value' => $update_values[$key]), array('variable = ? AND c_id = ?' => array($key, api_get_course_int_id())));
+        }
+    }
 	$cidReset = true;
 	$cidReq = $course_code;
 	require '../inc/local.inc.php';
@@ -547,7 +467,7 @@ if (isset($_GET['action']) && $_GET['action'] == 'show_message') {
 echo '