diff --git a/main/course_info/infocours.php b/main/course_info/infocours.php index 419009e70d..388e6d1fb6 100644 --- a/main/course_info/infocours.php +++ b/main/course_info/infocours.php @@ -49,7 +49,7 @@ function is_settings_editable() { /* MAIN CODE */ if (!$is_allowedToEdit) { - api_not_allowed(true); + api_not_allowed(true); } $show_delete_watermark_text_message = false; @@ -66,7 +66,9 @@ $tbl_course_user = Database :: get_main_table(TABLE_MAIN_COURSE_USER); $tbl_course = Database :: get_main_table(TABLE_MAIN_COURSE); // Get all course categories -$sql = "SELECT code,name FROM ".$table_course_category." WHERE auth_course_child ='TRUE' OR code = '".Database::escape_string($_course['categoryCode'])."' ORDER BY tree_pos"; +$sql = "SELECT code,name FROM ".$table_course_category." + WHERE auth_course_child ='TRUE' OR code = '".Database::escape_string($_course['categoryCode'])."' + ORDER BY tree_pos"; $res = Database::query($sql); $s_select_course_tutor_name = "SELECT tutor_name FROM $tbl_course WHERE code='$course_code'"; @@ -74,11 +76,15 @@ $q_tutor = Database::query($s_select_course_tutor_name); $s_tutor = Database::result($q_tutor, 0, 'tutor_name'); $target_name = api_sort_by_first_name() ? 'firstname' : 'lastname'; -$s_sql_course_titular = "SELECT DISTINCT username, lastname, firstname FROM $tbl_user as user, $tbl_course_user as course_rel_user WHERE (course_rel_user.status='1') AND user.user_id=course_rel_user.user_id AND course_code='".$course_code."' ORDER BY ".$target_name." ASC"; +$s_sql_course_titular = "SELECT DISTINCT username, lastname, firstname + FROM $tbl_user as user, $tbl_course_user as course_rel_user + WHERE (course_rel_user.status='1') AND user.user_id=course_rel_user.user_id AND course_code='".$course_code."' + ORDER BY ".$target_name." ASC"; $q_result_titulars = Database::query($s_sql_course_titular); if (Database::num_rows($q_result_titulars) == 0) { - $sql = "SELECT username, lastname, firstname FROM $tbl_user as user, $tbl_admin as admin WHERE admin.user_id=user.user_id ORDER BY ".$target_name." ASC"; + $sql = "SELECT username, lastname, firstname FROM $tbl_user as user, $tbl_admin as admin + WHERE admin.user_id=user.user_id ORDER BY ".$target_name." ASC"; $q_result_titulars = Database::query($sql); } @@ -127,7 +133,7 @@ if ($form->validate() && is_settings_editable()) { $course_path = api_get_path(SYS_COURSE_PATH).$currentCourseRepository; // course path if (file_exists($course_path.'/course-pic85x85.png')) { $course_web_path = api_get_path(WEB_COURSE_PATH).$currentCourseRepository; // course web path - $course_medium_image = $course_web_path.'/course-pic85x85.png?'.rand(1,1000); // redimensioned image 85x85 + $course_medium_image = $course_web_path.'/course-pic85x85.png?'.rand(1, 1000); // redimensioned image 85x85 $image_html = '
'; } $form->addElement('html', $image_html); @@ -137,19 +143,6 @@ $form->add_textfield('title', get_lang('Title'), true, array('class' => 'span6') $form->applyFilter('title', 'html_filter'); $form->applyFilter('title', 'trim'); -//$form->add_textfield('tutor_name', get_lang('Professors'), true, array ('size' => '60')); - -//the teacher doesn't need to change the trainer only the admin can do that -/* -$prof = &$form->addElement('select', 'tutor_name', get_lang('Teacher'), $a_profs, array('style'=>'width:350px', 'class'=>'chzn-select', 'id'=>'tutor_name')); -$form->applyFilter('tutor_name', 'html_filter'); -$prof -> setSelected($s_selected_tutor); - * / - -/*$visual_code=$form->addElement('text', 'visual_code', get_lang('Code')); -$visual_code->freeze(); -$form->applyFilter('visual_code', 'strtoupper');*/ - $form->addElement('select', 'category_code', get_lang('Fac'), $categories, array('style'=>'width:350px', 'class'=>'chzn-select', 'id'=>'category_code')); $form->addElement('select_language', 'course_language', array(get_lang('Ln'), get_lang('TipLang'))); @@ -159,8 +152,6 @@ $form->applyFilter('department_name', 'trim'); $form->add_textfield('department_url', get_lang('DepartmentUrl'), false, array('class' => 'span5')); $form->applyFilter('department_url', 'html_filter'); -//$form->addRule('tutor_name', get_lang('ThisFieldIsRequired'), 'required'); - // Picture $form->addElement('file', 'picture', get_lang('AddPicture')); @@ -182,7 +173,7 @@ $group = array(); $group[]=$form->createElement('select_theme', 'course_theme', null, array('class'=>' ', 'id'=>'course_theme_id')); $form->addGroup($group, '', array(get_lang("Stylesheets")), ''); -$form->addElement('label', get_lang('DocumentQuota'), format_file_size(DocumentManager::get_course_quota())); +$form->addElement('label', get_lang('DocumentQuota'), format_file_size(DocumentManager::get_course_quota())); $form->addElement('style_submit_button', null, get_lang('SaveSettings'), 'class="save"'); $form->addElement('html', ''); @@ -224,6 +215,20 @@ $form->addElement('textarea', 'legal', get_lang('CourseLegalAgreement'), array(' $form->addElement('style_submit_button', null, get_lang('SaveSettings'), 'class="save"'); $form->addElement('html', ''); +// Documents +$form->addElement('html', '

'.Display::return_icon('folder.png', Security::remove_XSS(get_lang('Documents')),'',ICON_SIZE_SMALL).' '.Security::remove_XSS(get_lang('Documents')).'

'); + +$group = array( + $form->createElement('radio', 'documents_default_visibility', get_lang('DocumentsDefaultVisibility'), get_lang('DocumentsDefaultVisibility'), 1), + $form->createElement('radio', 'documents_default_visibility', null, get_lang('Visible'), 'visible'), + $form->createElement('radio', 'documents_default_visibility', null, get_lang('Invisible'), 'invisible') +); +$form->addGroup($group, '', array(get_lang("DocumentsDefaultVisibility")), ''); + +$form->addElement('style_submit_button', null, get_lang('SaveSettings'), 'class="save"'); + +$form->addElement('html', '
'); + // EMAIL NOTIFICATIONS $form->addElement('html', '

'.Display::return_icon('mail.png', Security::remove_XSS(get_lang('EmailNotifications')),'',ICON_SIZE_SMALL).' '.Security::remove_XSS(get_lang('EmailNotifications')).'

'); @@ -243,7 +248,6 @@ $group[]=$form->createElement('radio', 'email_alert_manager_on_new_doc', get_lan $group[]=$form->createElement('radio', 'email_alert_manager_on_new_doc', null, get_lang('WorkEmailAlertDeactivate'), 0); $form->addGroup($group, '', array(get_lang("WorkEmailAlert")), ''); - $group = array(); $group[]=$form->createElement('radio', 'email_alert_on_new_doc_dropbox', get_lang('DropboxEmailAlert'), get_lang('DropboxEmailAlertActivate'), 1); $group[]=$form->createElement('radio', 'email_alert_on_new_doc_dropbox', null, get_lang('DropboxEmailAlertDeactivate'), 0); @@ -253,8 +257,6 @@ $group = array(); $group[]=$form->createElement('radio', 'email_alert_manager_on_new_quiz', get_lang('QuizEmailAlert'), get_lang('QuizEmailAlertActivate'), 1); $group[]=$form->createElement('radio', 'email_alert_manager_on_new_quiz', null, get_lang('QuizEmailAlertDeactivate'), 0); $form->addGroup($group, '', array(get_lang("QuizEmailAlert")), ''); - - $form->addElement('style_submit_button', null, get_lang('SaveSettings'), 'class="save"'); $form->addElement('html', '
'); @@ -285,7 +287,6 @@ $form->addGroup($group, '', array(get_lang("AllowUserViewUserList")), ''); $form->addElement('style_submit_button', null, get_lang('SaveSettings'), 'class="save"'); $form->addElement('html', ''); - // CHAT SETTINGS $form->addElement('html', '

'.Display::return_icon('chat.png', Security::remove_XSS(get_lang('ConfigChat')),'',ICON_SIZE_SMALL).' '.Security::remove_XSS(get_lang('ConfigChat')).'

'); @@ -297,7 +298,6 @@ $form->addGroup($group, '', array(get_lang("AllowOpenchatWindow")), ''); $form->addElement('style_submit_button', null, get_lang('SaveSettings'), 'class="save"'); $form->addElement('html', '
'); - // LEARNING PATH $form->addElement('html', '

'.Display::return_icon('scorms.png', get_lang('ConfigLearnpath'),'',ICON_SIZE_SMALL).' '.Security::remove_XSS(get_lang('ConfigLearnpath')).'

'); @@ -314,7 +314,6 @@ if (api_get_setting('allow_course_theme') == 'true') { $group[]=$form->createElement('radio', 'allow_learning_path_theme', get_lang('AllowLearningPathTheme'), get_lang('AllowLearningPathThemeAllow'), 1); $group[]=$form->createElement('radio', 'allow_learning_path_theme', null, get_lang('AllowLearningPathThemeDisallow'), 0); $form->addGroup($group, '', array(get_lang("AllowLearningPathTheme")), ''); - } if (is_settings_editable()) { @@ -339,12 +338,9 @@ $group[]=$form->createElement('radio', 'display_info_advance_inside_homecourse', $form->addGroup($group, '', array(get_lang("InfoAboutAdvanceInsideHomeCourse")), ''); $form->addElement('style_submit_button', null, get_lang('SaveSettings'), 'class="save"'); - $form->addElement('html', '
'); - // Certificate settings - if (api_get_setting('allow_public_certificates')=='true') { $form->addElement('html', '

'.Display::return_icon('certificate.png', Security::remove_XSS(get_lang('Certificates')),'',ICON_SIZE_SMALL).' '.Security::remove_XSS(get_lang('Certificates')).'

'); $group = array(); @@ -356,7 +352,6 @@ if (api_get_setting('allow_public_certificates')=='true') { $form->addElement('html', '
'); } - // Plugin course settings $app_plugin = new AppPlugin(); @@ -379,39 +374,13 @@ $values['visibility'] = $_course['visibility']; $values['subscribe'] = $course_access_settings['subscribe']; $values['unsubscribe'] = $course_access_settings['unsubscribe']; $values['course_registration_password'] = $all_course_information['registration_code']; - $values['legal'] = $all_course_information['legal']; $values['activate_legal'] = $all_course_information['activate_legal']; -// Get send_mail_setting (auth)from table -$values['email_alert_to_teacher_on_new_user_in_course']= api_get_course_setting('email_alert_to_teacher_on_new_user_in_course'); -// Get send_mail_setting (work)from table -$values['email_alert_manager_on_new_doc'] = api_get_course_setting('email_alert_manager_on_new_doc'); -// Get send_mail_setting (dropbox) from table -$values['email_alert_on_new_doc_dropbox'] = api_get_course_setting('email_alert_on_new_doc_dropbox'); -// Get send_mail_setting (work)from table -$values['email_alert_manager_on_new_quiz'] = api_get_course_setting('email_alert_manager_on_new_quiz'); -// Get allow_user_edit_agenda from table -$values['allow_user_edit_agenda'] = api_get_course_setting('allow_user_edit_agenda'); -// Get allow_user_edit_announcement from table -$values['allow_user_edit_announcement'] = api_get_course_setting('allow_user_edit_announcement'); -// Get allow_user_image_forum from table -$values['allow_user_image_forum'] = api_get_course_setting('allow_user_image_forum'); -// Get allow_open_chat_window from table -$values['allow_open_chat_window'] = api_get_course_setting('allow_open_chat_window'); -// Get course_theme from table -$values['course_theme'] = api_get_course_setting('course_theme'); -// Get allow_learning_path_theme from table -$values['allow_learning_path_theme'] = api_get_course_setting('allow_learning_path_theme'); -//Get allow show user list -$values['allow_user_view_user_list'] = api_get_course_setting('allow_user_view_user_list'); -//Get allow show user list -$values['display_info_advance_inside_homecourse'] = api_get_course_setting('display_info_advance_inside_homecourse'); -$values['email_alert_students_on_new_homework'] = api_get_course_setting('email_alert_students_on_new_homework'); - -$values['enable_lp_auto_launch'] = api_get_course_setting('enable_lp_auto_launch'); -$values['pdf_export_watermark_text'] = api_get_course_setting('pdf_export_watermark_text'); -$values['allow_public_certificates'] = api_get_course_setting('allow_public_certificates'); +$courseSettings = CourseManager::getCourseSettingVariables(); +foreach ($courseSettings as $setting) { + $values[$setting] = api_get_course_setting($setting); +} $app_plugin->set_course_settings_defaults($values); @@ -452,14 +421,13 @@ if ($form->validate() && is_settings_editable()) { WHERE code = '".$course_code."'"; Database::query($sql); - // Update course_settings table - this assumes those records exist, otherwise triggers an error - $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()))); + // Insert/Updates course_settings table + foreach ($courseSettings as $setting) { + if (isset($update_values[$setting])) { + CourseManager::saveCourseConfigurationSetting($setting, $update_values[$setting], api_get_course_int_id()); } } + $app_plugin->save_course_settings($update_values); $cidReset = true; $cidReq = $course_code; diff --git a/main/inc/lib/course.lib.php b/main/inc/lib/course.lib.php index 62dee3be88..ce306e8f4e 100644 --- a/main/inc/lib/course.lib.php +++ b/main/inc/lib/course.lib.php @@ -4085,4 +4085,91 @@ class CourseManager { } } } + + /** + * Course available settings variables see c_course_setting table + * @return array + */ + public static function getCourseSettingVariables() + { + return array( + // Get allow_learning_path_theme from table + 'allow_learning_path_theme', + // Get allow_open_chat_window from table + 'allow_open_chat_window', + 'allow_public_certificates', + // Get allow_user_edit_agenda from table + 'allow_user_edit_agenda', + // Get allow_user_edit_announcement from table + 'allow_user_edit_announcement', + // Get allow_user_image_forum from table + 'allow_user_image_forum', + //Get allow show user list + 'allow_user_view_user_list', + // Get course_theme from table + 'course_theme', + //Get allow show user list + 'display_info_advance_inside_homecourse', + 'documents_default_visibility', + // Get send_mail_setting (work)from table + 'email_alert_manager_on_new_doc', + // Get send_mail_setting (work)from table + 'email_alert_manager_on_new_quiz', + // Get send_mail_setting (dropbox) from table + 'email_alert_on_new_doc_dropbox', + 'email_alert_students_on_new_homework', + // Get send_mail_setting (auth)from table + 'email_alert_to_teacher_on_new_user_in_course', + 'enable_lp_auto_launch', + 'pdf_export_watermark_text' + ); + } + + /** + * @param string $variable + * @param string $value + * @param int $courseId + * @return bool + */ + public static function saveCourseConfigurationSetting($variable, $value, $courseId) + { + $settingList = self::getCourseSettingVariables(); + if (!in_array($variable, $settingList)) { + return false; + } + + $courseSettingTable = Database::get_course_table(TABLE_COURSE_SETTING); + + if (self::hasCourseSetting($variable, $courseId)) { + // Update + Database::update( + $courseSettingTable, + array('value' => $value), + array('variable = ? AND c_id = ?' => array($variable, $courseId)) + ); + } else { + // Create + Database::insert( + $courseSettingTable, + array('value' => $value, 'c_id' => $courseId, 'variable' => $variable) + ); + } + return true; + } + + /** + * Check if course setting exists + * @param string $variable + * @param int $courseId + * @return bool + */ + public static function hasCourseSetting($variable, $courseId) + { + $courseSetting = Database::get_course_table(TABLE_COURSE_SETTING); + $courseId = intval($courseId); + $variable = Database::escape_string($variable); + $sql = "SELECT variable FROM $courseSetting WHERE c_id = $courseId AND variable = '$variable'"; + $result = Database::query($sql); + return Database::num_rows($result) > 0; + } }