From a163c40aedfaa9257bbd8e403c4cfdbd4463b31e Mon Sep 17 00:00:00 2001 From: Dennis Benz <dennis.benz@uni-osnabrueck.de> Date: Fri, 8 Sep 2023 13:42:11 +0000 Subject: [PATCH] Fix course name localization in external sites, fixes #2697 Closes #2697 Merge request studip/studip!1911 --- .../ExternModuleLecturedetails.class.php | 23 ++++++++++--------- .../ExternModuleTemplateLectures.class.php | 9 ++++---- ...xternModuleTemplatePersondetails.class.php | 13 +++++++---- .../ExternModuleTemplateSemBrowse.class.php | 16 +++++++------ .../modules/views/ExternSemBrowse.class.php | 5 ++-- .../views/ExternSemBrowseTable.class.php | 11 +++++---- .../modules/views/persondetails.inc.php | 4 +++- lib/language.inc.php | 1 + 8 files changed, 47 insertions(+), 35 deletions(-) diff --git a/lib/extern/modules/ExternModuleLecturedetails.class.php b/lib/extern/modules/ExternModuleLecturedetails.class.php index 9dbe2a328c9..379d3fec3fc 100644 --- a/lib/extern/modules/ExternModuleLecturedetails.class.php +++ b/lib/extern/modules/ExternModuleLecturedetails.class.php @@ -141,11 +141,12 @@ class ExternModuleLecturedetails extends ExternModule { $visible = $this->config->getValue("Main", "visible"); $j = -1; if ($row !== false) { + $sem_object = Seminar::getInstance($this->seminar_id); - $data["name"] = htmlReady($row['Name']); + $data["name"] = htmlReady($sem_object->name); if ($visible[++$j] && $row['Untertitel']) - $data["subtitle"] = htmlReady($row['Untertitel']); + $data["subtitle"] = htmlReady($sem_object->untertitel); if ($visible[++$j]) { if (!$name_sql = $this->config->getValue("Main", "nameformat")) @@ -170,7 +171,7 @@ class ExternModuleLecturedetails extends ExternModule { } if ($visible[++$j] && $row['art']) - $data["art"] = htmlReady($row['art']); + $data["art"] = htmlReady($sem_object->art); if ($visible[++$j]) { // reorganize the $SEM_TYPE-array @@ -193,20 +194,20 @@ class ExternModuleLecturedetails extends ExternModule { } if ($visible[++$j] && $row['Beschreibung']) - $data["description"] = formatLinks($row['Beschreibung']); + $data["description"] = formatLinks($sem_object->beschreibung); if ($visible[++$j]) - $data["location"] = htmlReady(Seminar::getInstance($this->seminar_id)->getDatesTemplate('dates/seminar_export_location')); + $data["location"] = htmlReady($sem_object->getDatesTemplate('dates/seminar_export_location')); if ($visible[++$j]) $data["semester"] = get_semester($this->seminar_id); if ($visible[++$j]) { - $data["time"] = htmlReady(Seminar::getInstance($this->seminar_id)->getDatesExport()); + $data["time"] = htmlReady($sem_object->getDatesExport()); if ($first_app = vorbesprechung($this->seminar_id, 'export')) { $data["time"] .= "<br>" . $this->config->getValue("Main", "aliaspredisc") . htmlReady($first_app); } - if ($begin = Seminar::getInstance($this->seminar_id)->getFirstDate('export')) { + if ($begin = $sem_object->getFirstDate('export')) { $data["time"] .= "<br>" . $this->config->getValue("Main", "aliasfirstmeeting") . htmlReady($begin); } } @@ -215,16 +216,16 @@ class ExternModuleLecturedetails extends ExternModule { $data["number"] = htmlReady($row['VeranstaltungsNummer']); if ($visible[++$j] && $row['teilnehmer']) - $data["teilnehmer"] = htmlReady($row['teilnehmer']); + $data["teilnehmer"] = htmlReady($sem_object->teilnehmer); if ($visible[++$j] && $row['vorrausetzungen']) - $data["requirements"] = htmlReady($row['vorrausetzungen']); + $data["requirements"] = htmlReady($sem_object->vorrausetzungen); if ($visible[++$j] && $row['lernorga']) - $data["lernorga"] = htmlReady($row['lernorga']); + $data["lernorga"] = htmlReady($sem_object->lernorga); if ($visible[++$j] && $row['leistungsnachweis']) - $data["leistung"] = htmlReady($row['leistungsnachweis']); + $data["leistung"] = htmlReady($sem_object->leistungsnachweis); if ($visible[++$j]) { $range_path_level = $this->config->getValue("Main", "rangepathlevel"); diff --git a/lib/extern/modules/ExternModuleTemplateLectures.class.php b/lib/extern/modules/ExternModuleTemplateLectures.class.php index f7b2b1da043..dc7ed295ce0 100644 --- a/lib/extern/modules/ExternModuleTemplateLectures.class.php +++ b/lib/extern/modules/ExternModuleTemplateLectures.class.php @@ -447,7 +447,8 @@ class ExternSemBrowseTemplate extends SemBrowse { if (is_array($sem_ids['Seminar_id'])) { $j = 0; foreach(array_keys($sem_ids['Seminar_id']) as $seminar_id) { - $content['LECTURES']['GROUP'][$i]['LECTURE'][$j]['TITLE'] = ExternModule::ExtHtmlReady(key($sem_data[$seminar_id]['Name'])); + $sem_object = Seminar::GetInstance($seminar_id); + $content['LECTURES']['GROUP'][$i]['LECTURE'][$j]['TITLE'] = ExternModule::ExtHtmlReady($sem_object->name); $sem_number_start = key($sem_data[$seminar_id]['sem_number']); $sem_number_end = key($sem_data[$seminar_id]['sem_number_end']); @@ -459,7 +460,7 @@ class ExternSemBrowseTemplate extends SemBrowse { $content['LECTURES']['GROUP'][$i]['LECTURE'][$j]['SEMESTER'] = $sem_semester; // create turnus field - $sem_turnus = Seminar::getInstance($seminar_id)->getDatesExport(['show_room' => true]); + $sem_turnus = $sem_object->getDatesExport(['show_room' => true]); $content['LECTURES']['GROUP'][$i]['LECTURE'][$j]['CYCLE'] = ExternModule::ExtHtmlReady($sem_turnus); @@ -491,13 +492,13 @@ class ExternSemBrowseTemplate extends SemBrowse { $content['LECTURES']['GROUP'][$i]['LECTURE'][$j]['LECTUREDETAILS-HREF'] = $this->module->elements['LinkInternLecturedetails']->createUrl(['link_args' => 'seminar_id=' . $seminar_id]); $content['LECTURES']['GROUP'][$i]['LECTURE'][$j]['NUMBER'] = ExternModule::ExtHtmlReady(key($sem_data[$seminar_id]['VeranstaltungsNummer'])); - $content['LECTURES']['GROUP'][$i]['LECTURE'][$j]['SUBTITLE'] = ExternModule::ExtHtmlReady(key($sem_data[$seminar_id]['Untertitel'])); + $content['LECTURES']['GROUP'][$i]['LECTURE'][$j]['SUBTITLE'] = ExternModule::ExtHtmlReady($sem_object->untertitel); $aliases_sem_type = $this->module->config->getValue('ReplaceTextSemType', 'class_' . $SEM_TYPE[key($sem_data[$seminar_id]['status'])]['class']); $content['LECTURES']['GROUP'][$i]['LECTURE'][$j]['SEMTYPE-SUBSTITUTE'] = $aliases_sem_type[$this->sem_types_position[key($sem_data[$seminar_id]['status'])] - 1]; $content['LECTURES']['GROUP'][$i]['LECTURE'][$j]['SEMTYPE'] = ExternModule::ExtHtmlReady($SEM_TYPE[key($sem_data[$seminar_id]['status'])]['name'] .' ('. $SEM_CLASS[$SEM_TYPE[key($sem_data[$seminar_id]['status'])]['class']]['name'] . ')'); $content['LECTURES']['GROUP'][$i]['LECTURE'][$j]['ROOM'] = ExternModule::ExtHtmlReady(Seminar::getInstance($seminar_id)->getDatesTemplate('dates/seminar_export_location')); - $content['LECTURES']['GROUP'][$i]['LECTURE'][$j]['FORM'] = ExternModule::ExtHtmlReady(key($sem_data[$seminar_id]['art'])); + $content['LECTURES']['GROUP'][$i]['LECTURE'][$j]['FORM'] = ExternModule::ExtHtmlReady($sem_object->art); // generic data fields if (is_array($generic_datafields)) { diff --git a/lib/extern/modules/ExternModuleTemplatePersondetails.class.php b/lib/extern/modules/ExternModuleTemplatePersondetails.class.php index a3dbd790387..6813e4715cc 100644 --- a/lib/extern/modules/ExternModuleTemplatePersondetails.class.php +++ b/lib/extern/modules/ExternModuleTemplatePersondetails.class.php @@ -543,14 +543,15 @@ class ExternModuleTemplatePersondetails extends ExternModule { } } + $user_obj = User::find($this->user_id); if (Visibility::verify('lebenslauf', $this->user_id)) { - $content['PERSONDETAILS']['CV'] = ExternModule::ExtFormatReady($row['lebenslauf']); + $content['PERSONDETAILS']['CV'] = ExternModule::ExtFormatReady($user_obj->lebenslauf); } if (Visibility::verify('schwerp', $this->user_id)) { - $content['PERSONDETAILS']['RESEARCH-INTERESTS'] = ExternModule::ExtFormatReady($row['schwerp']); + $content['PERSONDETAILS']['RESEARCH-INTERESTS'] = ExternModule::ExtFormatReady($user_obj->schwerp); } if (Visibility::verify('publi', $this->user_id)) { - $content['PERSONDETAILS']['PUBLICATIONS'] = ExternModule::ExtFormatReady($row['publi']); + $content['PERSONDETAILS']['PUBLICATIONS'] = ExternModule::ExtFormatReady($user_obj->publi); } $content['PERSONDETAILS']['LECTURES'] = $this->elements['TemplateLectures']->toString(['content' => $this->getContentLectures(), 'subpart' => 'LECTURES']); @@ -733,10 +734,12 @@ class ExternModuleTemplatePersondetails extends ExternModule { } $k = 0; foreach ($result as $row) { - $content['LECTURES']['SEMESTER'][$i]['LECTURE'][$k]['TITLE'] = ExternModule::ExtHtmlReady($row['Name']); + $sem_object = Seminar::GetInstance($row['Seminar_id']); + + $content['LECTURES']['SEMESTER'][$i]['LECTURE'][$k]['TITLE'] = ExternModule::ExtHtmlReady($sem_object->name); $content['LECTURES']['SEMESTER'][$i]['LECTURE'][$k]['LECTUREDETAILS-HREF'] = $this->elements['LinkInternLecturedetails']->createUrl(['link_args' => 'seminar_id=' . $row['Seminar_id']]); if (trim($row['Untertitel']) != '') { - $content['LECTURES']['SEMESTER'][$i]['LECTURE'][$k]['SUBTITLE'] = ExternModule::ExtHtmlReady($row['Untertitel']); + $content['LECTURES']['SEMESTER'][$i]['LECTURE'][$k]['SUBTITLE'] = ExternModule::ExtHtmlReady($sem_object->untertitel); } if (trim($row['VeranstaltungsNummer']) != '') { $content['LECTURES']['SEMESTER'][$i]['LECTURE'][$k]['NUMBER'] = ExternModule::ExtHtmlReady($row['VeranstaltungsNummer']); diff --git a/lib/extern/modules/ExternModuleTemplateSemBrowse.class.php b/lib/extern/modules/ExternModuleTemplateSemBrowse.class.php index 3ddfd3ee2fb..18a77c0827a 100644 --- a/lib/extern/modules/ExternModuleTemplateSemBrowse.class.php +++ b/lib/extern/modules/ExternModuleTemplateSemBrowse.class.php @@ -786,13 +786,15 @@ class ExternModuleTemplateSemBrowse extends ExternModule { $k = 0; $semester = Semester::findAllVisible(); foreach (array_keys($sem_ids['Seminar_id']) as $seminar_id) { + $sem_object = Seminar::GetInstance($seminar_id); + $content['RESULT']['GROUP'][$j]['COURSE'][$k]['COURSE_ID'] = $seminar_id; - $content['RESULT']['GROUP'][$j]['COURSE'][$k]['TITLE'] = ExternModule::ExtHtmlReady(key($sem_data[$seminar_id]['Name'])); + $content['RESULT']['GROUP'][$j]['COURSE'][$k]['TITLE'] = ExternModule::ExtHtmlReady($sem_object->name); $content['RESULT']['GROUP'][$j]['COURSE'][$k]['COURSE-NO'] = $k + 1; $content['RESULT']['GROUP'][$j]['COURSE'][$k]['COURSEDETAILS-HREF'] = $this->elements['LinkInternLecturedetails']->createUrl(['link_args' => 'seminar_id=' . $seminar_id]); $content['RESULT']['GROUP'][$j]['COURSE'][$k]['COURSE_NUMBER'] = ExternModule::ExtHtmlReady(key($sem_data[$seminar_id]['VeranstaltungsNummer'])); - $content['RESULT']['GROUP'][$j]['COURSE'][$k]['DESCRIPTION'] = ExternModule::ExtHtmlReady(key($sem_data[$seminar_id]['Beschreibung']), true); + $content['RESULT']['GROUP'][$j]['COURSE'][$k]['DESCRIPTION'] = ExternModule::ExtHtmlReady($sem_object->beschreibung, true); $sem_number_start = key($sem_data[$seminar_id]["sem_number"]); $sem_number_end = key($sem_data[$seminar_id]["sem_number_end"]); @@ -809,13 +811,13 @@ class ExternModuleTemplateSemBrowse extends ExternModule { $content['RESULT']['GROUP'][$j]['COURSE'][$k]['NO_DATES_TEXT'] = []; } - $content['RESULT']['GROUP'][$j]['COURSE'][$k]['SUBTITLE'] = ExternModule::ExtHtmlReady(key($sem_data[$seminar_id]['Untertitel'])); + $content['RESULT']['GROUP'][$j]['COURSE'][$k]['SUBTITLE'] = ExternModule::ExtHtmlReady($sem_object->untertitel); $aliases_sem_type = $this->config->getValue('ReplaceTextSemType', 'class_' . $SEM_TYPE[key($sem_data[$seminar_id]['status'])]['class']); $content['RESULT']['GROUP'][$j]['COURSE'][$k]['SEMTYPE-SUBSTITUTE'] = $aliases_sem_type[$this->sem_types_position[key($sem_data[$seminar_id]['status'])] - 1]; $content['RESULT']['GROUP'][$j]['COURSE'][$k]['SEMTYPE'] = ExternModule::ExtHtmlReady($SEM_TYPE[key($sem_data[$seminar_id]['status'])]['name'] .' ('. $SEM_CLASS[$SEM_TYPE[key($sem_data[$seminar_id]['status'])]['class']]['name'] . ')'); - $content['RESULT']['GROUP'][$j]['COURSE'][$k]['LOCATION'] = ExternModule::ExtHtmlReady(trim(key($sem_data[$seminar_id]['Ort']))); - $content['RESULT']['GROUP'][$j]['COURSE'][$k]['FORM'] = ExternModule::ExtHtmlReady(key($sem_data[$seminar_id]['art'])); + $content['RESULT']['GROUP'][$j]['COURSE'][$k]['LOCATION'] = ExternModule::ExtHtmlReady(trim($sem_object->ort)); + $content['RESULT']['GROUP'][$j]['COURSE'][$k]['FORM'] = ExternModule::ExtHtmlReady($sem_object->art); $content['RESULT']['GROUP'][$j]['COURSE'][$k]['ECTS'] = ExternModule::ExtHtmlReady(key($sem_data[$seminar_id]['ects'])); // generic data fields @@ -1384,7 +1386,8 @@ class ExternModuleTemplateSemBrowse extends ExternModule { if (is_array($sem_ids['Seminar_id'])) { $semester = Semester::findAllVisible(); foreach (array_keys($sem_ids['Seminar_id']) as $seminar_id) { - $sem_name = key($sem_data[$seminar_id]["Name"]); + $seminar_obj = new Seminar($seminar_id); + $sem_name = $seminar_obj->name; $seminar_number = key($sem_data[$seminar_id]['VeranstaltungsNummer']); $sem_number_start = key($sem_data[$seminar_id]["sem_number"]); $sem_number_end = key($sem_data[$seminar_id]["sem_number_end"]); @@ -1395,7 +1398,6 @@ class ExternModuleTemplateSemBrowse extends ExternModule { $sem_name .= ' (' . $semester[$sem_number_start]['name'] . ")"; } //create Turnus field - $seminar_obj = new Seminar($seminar_id); // is this sem a studygroup? $studygroup_mode = SeminarCategories::GetByTypeId($seminar_obj->getStatus())->studygroup_mode; if ($studygroup_mode) { diff --git a/lib/extern/modules/views/ExternSemBrowse.class.php b/lib/extern/modules/views/ExternSemBrowse.class.php index 4ba487e980f..a5e86db00bc 100644 --- a/lib/extern/modules/views/ExternSemBrowse.class.php +++ b/lib/extern/modules/views/ExternSemBrowse.class.php @@ -448,7 +448,8 @@ class ExternSemBrowse extends SemBrowse { if (!key($sem_data[$seminar_id]['parent_course']) || !$sem_data[key($sem_data[$seminar_id]['parent_course'])] || $child) { extract($table_data); - $sem_name = key($sem_data[$seminar_id]["Name"]); + $sem_object = Seminar::GetInstance($seminar_id); + $sem_name = $sem_object->name; $sem_number_start = key($sem_data[$seminar_id]["sem_number"]); $sem_number_end = key($sem_data[$seminar_id]["sem_number_end"]); if ($sem_number_start != $sem_number_end) { @@ -484,7 +485,7 @@ class ExternSemBrowse extends SemBrowse { } echo "</td></tr>\n"; //create Turnus field - $temp_turnus_string = Seminar::GetInstance($seminar_id)->getDatesExport(['show_room' => true]); + $temp_turnus_string = $sem_object->getDatesExport(['show_room' => true]); //Shorten, if string too long (add link for details.php) if (mb_strlen($temp_turnus_string) > 70) { $temp_turnus_string = mb_substr($temp_turnus_string, 0, diff --git a/lib/extern/modules/views/ExternSemBrowseTable.class.php b/lib/extern/modules/views/ExternSemBrowseTable.class.php index d9c6d11056b..29f8b2f5013 100644 --- a/lib/extern/modules/views/ExternSemBrowseTable.class.php +++ b/lib/extern/modules/views/ExternSemBrowseTable.class.php @@ -342,7 +342,8 @@ class ExternSemBrowseTable extends SemBrowse { if (is_array($sem_ids['Seminar_id'])) { foreach (array_keys($sem_ids['Seminar_id']) as $seminar_id) { - $sem_name = key($sem_data[$seminar_id]["Name"]); + $sem_object = Seminar::GetInstance($seminar_id); + $sem_name = $sem_object->name; $sem_number_start = key($sem_data[$seminar_id]["sem_number"]); $sem_number_end = key($sem_data[$seminar_id]["sem_number_end"]); if ($sem_number_start != $sem_number_end){ @@ -351,7 +352,7 @@ class ExternSemBrowseTable extends SemBrowse { } //create Turnus field - $data["content"]["zeiten"] = Seminar::GetInstance($seminar_id)->getDatesExport(['show_room' => true]); + $data["content"]["zeiten"] = $sem_object->getDatesExport(['show_room' => true]); //Shorten, if string too long if (mb_strlen($data["content"]["zeiten"]) >70) { $data["content"]["zeiten"] = mb_substr($data["content"]["zeiten"], 0, @@ -390,7 +391,7 @@ class ExternSemBrowseTable extends SemBrowse { "content" => htmlReady($sem_name)]); $data["content"]["VeranstaltungsNummer"] = htmlReady(key($sem_data[$seminar_id]["VeranstaltungsNummer"])); - $data["content"]["Untertitel"] = htmlReady(key($sem_data[$seminar_id]["Untertitel"])); + $data["content"]["Untertitel"] = htmlReady($sem_object->untertitel); $aliases_sem_type = $this->module->config->getValue("ReplaceTextSemType", "class_" . $SEM_TYPE[key($sem_data[$seminar_id]["status"])]['class']); @@ -404,9 +405,9 @@ class ExternSemBrowseTable extends SemBrowse { ." (". $SEM_CLASS[$SEM_TYPE[key($sem_data[$seminar_id]["status"])]["class"]]["name"].")"); } - $data["content"]["Ort"] = Seminar::getInstance($seminar_id)->getDatesTemplate('dates/seminar_export_location'); + $data["content"]["Ort"] = $sem_object->getDatesTemplate('dates/seminar_export_location'); if ($sem_data[$seminar_id]["art"]) - $data["content"]["art"] = htmlReady(key($sem_data[$seminar_id]["art"])); + $data["content"]["art"] = htmlReady($sem_object->art); else $data["content"]["art"] = ""; diff --git a/lib/extern/modules/views/persondetails.inc.php b/lib/extern/modules/views/persondetails.inc.php index 0889e1b0ab4..cc186170f31 100644 --- a/lib/extern/modules/views/persondetails.inc.php +++ b/lib/extern/modules/views/persondetails.inc.php @@ -140,6 +140,8 @@ if ($generic_datafields = $this->config->getValue("Main", "genericdatafields")) // $datafields = $datafields_obj->getLocalFields($row['user_id']); } +$user_obj = User::find($row['user_id']); + $order = $this->config->getValue("Main", "order"); foreach ($order as $position) { @@ -160,7 +162,7 @@ foreach ($order as $position) { echo "<tr" . $this->config->getAttributes("TableParagraphText", "tr") . ">"; echo "<td" . $this->config->getAttributes("TableParagraphText", "td") . ">"; echo "$text_div<font" . $this->config->getAttributes("TableParagraphText", "font") . ">\n"; - echo formatReady($row[$data_field], TRUE, TRUE); + echo formatReady($user_obj->$data_field, TRUE, TRUE); echo "</font>$text_div_end</td></tr>\n</table>\n</td></tr>\n"; } break; diff --git a/lib/language.inc.php b/lib/language.inc.php index 921efc0f54a..414f80aa00c 100644 --- a/lib/language.inc.php +++ b/lib/language.inc.php @@ -97,6 +97,7 @@ function init_i18n($_language) { global $_language_domain, $INSTALLED_LANGUAGES; $_language_path = null; if (isset($_language_domain) && isset($_language)) { + $_SESSION['_language'] = $_language; $_language_path = $INSTALLED_LANGUAGES[$_language]["path"]; setLocaleEnv($_language, $_language_domain); } -- GitLab