Course - Add extra field to manage multiple languages for a course - BT#19559

pull/4129/head
Christian 4 years ago
parent 59e9a9c60a
commit c17d953cec
  1. 10
      main/admin/course_add.php
  2. 11
      main/admin/course_edit.php
  3. 20
      main/inc/global.inc.php
  4. 33
      main/inc/lib/course.lib.php

@ -195,6 +195,16 @@ $obj->fill_grade_model_select_in_form($form);
$extra_field = new ExtraField('course');
$extra = $extra_field->addElements($form);
if (api_get_configuration_value('allow_course_multiple_languages')) {
// Course Multiple language.
$cbMultiLanguage = $form->getElementByName('extra_multiple_language');
if (isset($cbMultiLanguage)) {
foreach ($languages['folder'] as $langFolder) {
$cbMultiLanguage->addOption($langFolder, $langFolder);
}
}
}
$htmlHeadXtra[] = '
<script>

@ -320,6 +320,17 @@ $extra = $extra_field->addElements(
true
);
if (api_get_configuration_value('allow_course_multiple_languages')) {
// Course Multiple language.
$languages = api_get_languages();
$cbMultiLanguage = $form->getElementByName('extra_multiple_language');
if (isset($cbMultiLanguage)) {
foreach ($languages['folder'] as $langFolder) {
$cbMultiLanguage->addOption($langFolder, $langFolder);
}
}
}
if (api_get_configuration_value('multiple_access_url_show_shared_course_marker')) {
$urls = UrlManager::get_access_url_from_course($courseId);
$urlToString = '';

@ -488,6 +488,11 @@ if (!empty($valid_languages)) {
}
}
$courseLanguages = [];
if (isset($_course['real_id'])) {
$courseLanguages = CourseManager::getCourseMultiLanguageList($_course['real_id']);
}
// If language is set via browser ignore the priority
if (isset($_GET['language'])) {
$language_interface = $user_language;
@ -551,6 +556,21 @@ $language_interface_initial_value = $language_interface;
*/
$languageFilesToLoad = api_get_language_files_to_load($language_interface);
// It adds the langs with course selected multilanguages
$courseLanguagesFilesToLoad = [];
if (!empty($courseLanguages)) {
foreach ($courseLanguages as $courseLanguage) {
$fileToLoad = api_get_language_files_to_load($courseLanguage);
if (!empty($fileToLoad)) {
$courseLanguagesFilesToLoad = array_merge($courseLanguagesFilesToLoad, $fileToLoad);
}
}
}
if (!empty($courseLanguagesFilesToLoad)) {
$languageFilesToLoad = array_merge($languageFilesToLoad, $courseLanguagesFilesToLoad);
$languageFilesToLoad = array_unique($languageFilesToLoad);
}
foreach ($languageFilesToLoad as $languageFile) {
include $languageFile;
}

@ -2912,6 +2912,39 @@ class CourseManager
}
}
public static function getCourseMultiLanguageList($cid)
{
if (!api_get_configuration_value('allow_course_multiple_languages')) {
return false;
}
$tblCourseField = Database::get_main_table(TABLE_EXTRA_FIELD);
$tblCourseFieldValue = Database::get_main_table(TABLE_EXTRA_FIELD_VALUES);
$extraFieldType = EntityExtraField::COURSE_FIELD_TYPE;
// Set the return list
$courseLanguageList = [];
// Get special course field
$sql = "SELECT id FROM $tblCourseField
WHERE extra_field_type = $extraFieldType AND variable = 'multiple_language'";
$rs = Database::query($sql);
if (Database::num_rows($rs) > 0) {
$fieldId = Database::result($rs, 0, 0);
$sql = "SELECT value
FROM $tblCourseFieldValue
WHERE field_id = ".$fieldId." AND item_id = '".$cid."'";
$result = Database::query($sql);
while ($row = Database::fetch_assoc($result)) {
if (!empty($row['value'])) {
$courseLanguageList = explode(';', $row['value']);
}
}
}
return $courseLanguageList;
}
/**
* Get the list of course IDs with the special_course field
* set to 1. This function is access_url aware.

Loading…
Cancel
Save