aboutsummaryrefslogtreecommitdiff
path: root/lib/extern/modules/ExternModuleTemplateLecturedetails.class.php
diff options
context:
space:
mode:
authorJan-Hendrik Willms <tleilax+github@gmail.com>2021-07-22 16:07:19 +0200
committerJan-Hendrik Willms <tleilax+github@gmail.com>2021-07-22 16:19:12 +0200
commita3da1483a9e689846179159355badfec8073dbec (patch)
tree770dcca6bdf5f6f2a11b0e7fcbbeda6919a3fc52 /lib/extern/modules/ExternModuleTemplateLecturedetails.class.php
current code from svn, revision 62608
Diffstat (limited to 'lib/extern/modules/ExternModuleTemplateLecturedetails.class.php')
-rw-r--r--lib/extern/modules/ExternModuleTemplateLecturedetails.class.php566
1 files changed, 566 insertions, 0 deletions
diff --git a/lib/extern/modules/ExternModuleTemplateLecturedetails.class.php b/lib/extern/modules/ExternModuleTemplateLecturedetails.class.php
new file mode 100644
index 0000000..5dd105b
--- /dev/null
+++ b/lib/extern/modules/ExternModuleTemplateLecturedetails.class.php
@@ -0,0 +1,566 @@
+<?
+# Lifter002: TODO
+# Lifter007: TODO
+# Lifter003: TODO
+# Lifter010: TODO
+/**
+* ExternModuleTemplateLecturedetails.class.php
+*
+*
+*
+*
+* @author Peter Thienel <thienel@data-quest.de>, Suchi & Berg GmbH <info@data-quest.de>
+* @access public
+* @modulegroup extern
+* @module ExternModuleTemplateLecturedetails
+* @package studip_extern
+*/
+
+// +---------------------------------------------------------------------------+
+// This file is part of Stud.IP
+// ExternModuleTemplateLecturedetails.class.php
+//
+// Copyright (C) 2007 Peter Thienel <thienel@data-quest.de>,
+// Suchi & Berg GmbH <info@data-quest.de>
+// +---------------------------------------------------------------------------+
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation; either version 2
+// of the License, or any later version.
+// +---------------------------------------------------------------------------+
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+// +---------------------------------------------------------------------------+
+
+
+require_once 'lib/extern/views/extern_html_templates.inc.php';
+require_once 'lib/user_visible.inc.php';
+require_once 'lib/dates.inc.php';
+
+class ExternModuleTemplateLecturedetails extends ExternModule {
+
+ var $markers = [];
+ var $args = ['seminar_id'];
+
+ /**
+ *
+ */
+ function __construct($range_id, $module_name, $config_id = NULL, $set_config = NULL, $global_id = NULL) {
+
+ $this->data_fields = ['subtitle', 'lecturer', 'art', 'status', 'description',
+ 'location', 'semester', 'time', 'number', 'teilnehmer', 'requirements',
+ 'lernorga', 'leistung', 'range_path', 'misc', 'ects'];
+ $this->registered_elements = [
+ 'ReplaceTextSemType',
+ 'LinkInternPersondetails' => 'LinkInternTemplate',
+ 'TemplateLectureData' => 'TemplateGeneric',
+ 'TemplateNews' => 'TemplateGeneric',
+ 'TemplateStudipData' => 'TemplateGeneric'
+ ];
+ $this->field_names =
+ [
+ _("Untertitel"),
+ _("Lehrende"),
+ _("Veranstaltungsart"),
+ _("Veranstaltungstyp"),
+ _("Beschreibung"),
+ _("Ort"),
+ _("Semester"),
+ _("Zeiten"),
+ _("Veranstaltungsnummer"),
+ _("Teilnehmende"),
+ _("Voraussetzungen"),
+ _("Lernorganisation"),
+ _("Leistungsnachweis"),
+ _("Bereichseinordnung"),
+ _("Sonstiges"),
+ _("ECTS-Punkte")
+ ];
+
+ parent::__construct($range_id, $module_name, $config_id, $set_config, $global_id);
+ }
+
+ function setup () {
+ // extend $data_fields if generic datafields are set
+ // $config_datafields = $this->config->getValue("Main", "genericdatafields");
+ // $this->data_fields = array_merge((array)$this->data_fields, (array)$config_datafields);
+
+ // setup module properties
+ // $this->elements["LinkIntern"]->link_module_type = 2;
+ // $this->elements["LinkIntern"]->real_name = _("Link zum Modul MitarbeiterInnendetails");
+
+ $this->elements['LinkInternPersondetails']->real_name = _("Verlinkung zum Modul MitarbeiterInnendetails");
+ $this->elements['LinkInternPersondetails']->link_module_type = [2, 14];
+ $this->elements['TemplateLectureData']->real_name = _("Haupttemplate");
+ $this->elements['TemplateNews']->real_name = _("Template für News");
+ $this->elements['TemplateStudipData']->real_name = _("Template für statistische Daten aus Stud.IP");
+
+ }
+
+ function toStringEdit ($open_elements = '', $post_vars = '',
+ $faulty_values = '', $anker = '') {
+
+ $this->updateGenericDatafields('TemplateLectureData', 'sem');
+ $this->elements['TemplateLectureData']->markers = $this->getMarkerDescription('TemplateLectureData');
+ $this->elements['TemplateNews']->markers = $this->getMarkerDescription('TemplateNews');
+ $this->elements['TemplateStudipData']->markers = $this->getMarkerDescription('TemplateStudipData');
+
+ return parent::toStringEdit($open_elements, $post_vars, $faulty_values, $anker);
+ }
+
+ function getMarkerDescription ($element_name) {
+ $markers['TemplateLectureData'][] = ['__GLOBAL__', _("Globale Variablen (gültig im gesamten Template).")];
+ $markers['TemplateLectureData'][] = ['###STUDIP-EDIT-HREF###', ''];
+ $markers['TemplateLectureData'][] = ['###STUDIP-REGISTER-HREF###', ''];
+
+ $markers['TemplateLectureData'][] = ['<!-- BEGIN LECTUREDETAILS -->', ''];
+ $markers['TemplateLectureData'][] = ['###TITLE###', ''];
+ $markers['TemplateLectureData'][] = ['###SUBTITLE###', ''];
+ $markers['TemplateLectureData'][] = ['###SEMESTER###', ''];
+ $markers['TemplateLectureData'][] = ['###CYCLE###', ''];
+ $markers['TemplateLectureData'][] = ['###ROOM###', ''];
+ $markers['TemplateLectureData'][] = ['###NUMBER###', _("Die Veranstaltungsnummer")];
+
+ $markers['TemplateLectureData'][] = ['<!-- BEGIN LECTURERS -->', ''];
+ $markers['TemplateLectureData'][] = ['<!-- BEGIN LECTURER -->', ''];
+ $markers['TemplateLectureData'][] = ['###FULLNAME###', ''];
+ $markers['TemplateLectureData'][] = ['###LASTNAME###', ''];
+ $markers['TemplateLectureData'][] = ['###FIRSTNAME###', ''];
+ $markers['TemplateLectureData'][] = ['###TITLEFRONT###', ''];
+ $markers['TemplateLectureData'][] = ['###TITLEREAR###', ''];
+ $markers['TemplateLectureData'][] = ['###PERSONDETAILS-HREF###', ''];
+ $markers['TemplateLectureData'][] = ['###LECTURER-NO###', ''];
+ $markers['TemplateLectureData'][] = ['###UNAME###', ''];
+ $markers['TemplateLectureData'][] = ['<!-- END LECTURER -->', ''];
+ $markers['TemplateLectureData'][] = ['<!-- END LECTURERS -->', ''];
+
+ $markers['TemplateLectureData'][] = ['<!-- BEGIN TUTORS -->', ''];
+ $markers['TemplateLectureData'][] = ['<!-- BEGIN TUTOR -->', ''];
+ $markers['TemplateLectureData'][] = ['###TUTOR_FULLNAME###', ''];
+ $markers['TemplateLectureData'][] = ['###TUTOR_LASTNAME###', ''];
+ $markers['TemplateLectureData'][] = ['###TUTOR_FIRSTNAME###', ''];
+ $markers['TemplateLectureData'][] = ['###TUTOR_TITLEFRONT###', ''];
+ $markers['TemplateLectureData'][] = ['###TUTOR_TITLEREAR###', ''];
+ $markers['TemplateLectureData'][] = ['###TUTOR_PERSONDETAILS-HREF###', ''];
+ $markers['TemplateLectureData'][] = ['###TUTOR-NO###', ''];
+ $markers['TemplateLectureData'][] = ['###TUTOR_UNAME###', ''];
+ $markers['TemplateLectureData'][] = ['<!-- END TUTOR -->', ''];
+ $markers['TemplateLectureData'][] = ['<!-- END TUTORS -->', ''];
+
+ $markers['TemplateLectureData'][] = ['###PRELIM-DISCUSSION###', ''];
+ $markers['TemplateLectureData'][] = ['###SEMTYPE-SUBSTITUTE###', ''];
+ $markers['TemplateLectureData'][] = ['###SEMTYPE###', ''];
+ $markers['TemplateLectureData'][] = ['###FORM###', _("Die Veranstaltungsart")];
+ $markers['TemplateLectureData'][] = ['###PARTICIPANTS###', ''];
+ $markers['TemplateLectureData'][] = ['###DESCRIPTION###', ''];
+ $markers['TemplateLectureData'][] = ['###MISC###', _("Sonstiges")];
+ $markers['TemplateLectureData'][] = ['###REQUIREMENTS###', ''];
+ $markers['TemplateLectureData'][] = ['###ORGA###', _("Organisationsform")];
+ $markers['TemplateLectureData'][] = ['###LEISTUNGSNACHWEIS###', _("Leistungsnachweis")];
+ $markers['TemplateLectureData'][] = ['###FORM###', ''];
+ $markers['TemplateLectureData'][] = ['###ECTS###', ''];
+ $markers['TemplateLectureData'][] = ['###PRELIM-DISCUSSION###', ''];
+ $markers['TemplateLectureData'][] = ['###FIRST-MEETING###', ''];
+
+ $this->insertDatafieldMarkers('sem', $markers, 'TemplateLectureData');
+
+ $markers['TemplateLectureData'][] = ['###NEWS###', _("Inhalt aus dem Template für News")];
+ $markers['TemplateLectureData'][] = ['###STUDIP-DATA###', 'Inhalt aus dem Template für statistische Daten aus Stud.IP'];
+
+ $markers['TemplateLectureData'][] = ['<!-- BEGIN RANGE-PATHES -->', ''];
+ $markers['TemplateLectureData'][] = ['<!-- BEGIN RANGE-PATH -->', ''];
+ $markers['TemplateLectureData'][] = ['###PATH###', ''];
+ $markers['TemplateLectureData'][] = ['<!-- END RANGE-PATH -->', ''];
+ $markers['TemplateLectureData'][] = ['<!-- END RANGE-PATHES -->', ''];
+
+ $markers['TemplateLectureData'][] = ['<!-- BEGIN MODULES -->', ''];
+ $markers['TemplateLectureData'][] = ['<!-- BEGIN MODULE -->', ''];
+ $markers['TemplateLectureData'][] = ['###PATH###', _('Modulzuordnungen der Veranstaltung')];
+ $markers['TemplateLectureData'][] = ['<!-- END MODULE -->', ''];
+ $markers['TemplateLectureData'][] = ['<!-- END MODULES -->', ''];
+
+ $markers['TemplateLectureData'][] = ['<!-- END LECTUREDETAILS -->'];
+
+ $markers['TemplateNews'][] = ['<!-- BEGIN NEWS -->', ''];
+ $markers['TemplateNews'][] = ['<!-- BEGIN NO-NEWS -->', ''];
+ $markers['TemplateNews'][] = ['###NEWS_NO-NEWS-TEXT###', ''];
+ $markers['TemplateNews'][] = ['<!-- END NO-NEWS -->', ''];
+ $markers['TemplateNews'][] = ['<!-- BEGIN ALL-NEWS -->', ''];
+ $markers['TemplateNews'][] = ['<!-- BEGIN SINGLE-NEWS -->', ''];
+ $markers['TemplateNews'][] = ['###NEWS_TOPIC###', ''];
+ $markers['TemplateNews'][] = ['###NEWS_BODY###', ''];
+ $markers['TemplateNews'][] = ['###NEWS_DATE###', ''];
+ $markers['TemplateNews'][] = ['###NEWS_ADMIN-MESSAGE###', ''];
+ $markers['TemplateNews'][] = ['###NEWS_NO###', ''];
+ $markers['TemplateNews'][] = ['###FULLNAME###', _("Vollständiger Name des Autors.")];
+ $markers['TemplateNews'][] = ['###LASTNAME###', _("Nachname des Autors.")];
+ $markers['TemplateNews'][] = ['###FIRSTNAME###', _("Vorname des Autors.")];
+ $markers['TemplateNews'][] = ['###TITLEFRONT###', _("Titel des Autors (vorangestellt).")];
+ $markers['TemplateNews'][] = ['###TITLEREAR###', _("Titel des Autors (nachgestellt).")];
+ $markers['TemplateNews'][] = ['###PERSONDETAIL-HREF###', ''];
+ $markers['TemplateNews'][] = ['###USERNAME###', ''];
+ $markers['TemplateNews'][] = ['<!-- END SINGLE-NEWS -->', ''];
+ $markers['TemplateNews'][] = ['<!-- END ALL-NEWS -->', ''];
+ $markers['TemplateNews'][] = ['<!-- END NEWS -->', ''];
+
+ $markers['TemplateStudipData'][] = ['<!-- BEGIN STUDIP-DATA -->', ''];
+ $markers['TemplateStudipData'][] = ['###HOME-INST-NAME###', ''];
+ $markers['TemplateStudipData'][] = ['###HOME-INST-HREF###', ''];
+ $markers['TemplateStudipData'][] = ['###COUNT-USER###', ''];
+ $markers['TemplateStudipData'][] = ['###COUNT-POSTINGS###', ''];
+ $markers['TemplateStudipData'][] = ['###COUNT-DOCUMENTS###', ''];
+
+ $markers['TemplateStudipData'][] = ['<!-- BEGIN INVOLVED-INSTITUTES -->', ''];
+ $markers['TemplateStudipData'][] = ['<!-- BEGIN INVOLVED-INSTITUTE -->', ''];
+ $markers['TemplateStudipData'][] = ['###INVOLVED-INSTITUTE_HREF###', ''];
+ $markers['TemplateStudipData'][] = ['###INVOLVED-INSTITUTE_NAME###', ''];
+ $markers['TemplateStudipData'][] = ['<!-- END INVOLVED-INSTITUTE -->', ''];
+ $markers['TemplateStudipData'][] = ['<!-- END INVOLVED-INSTITUTES -->', ''];
+
+ $markers['TemplateStudipData'][] = ['<!-- END STUDIP-DATA -->', ''];
+
+ return $markers[$element_name];
+ }
+
+ function getContent ($args = NULL, $raw = FALSE) {
+ $this->seminar_id = $args["seminar_id"];
+ $course_object = new Course($this->seminar_id);
+ $seminar = new Seminar($course_object);
+
+ $visible = $this->config->getValue("Main", "visible");
+
+ $j = -1;
+ if ($seminar->visible == 1) {
+ $content['LECTUREDETAILS']['TITLE'] = ExternModule::ExtHtmlReady($seminar->getName());
+ if (trim($seminar->seminar_number)) {
+ $content['LECTUREDETAILS']['NUMBER'] = ExternModule::ExtHtmlReady($seminar->seminar_number);
+ }
+ if (trim($seminar->subtitle)) {
+ $content['LECTUREDETAILS']['SUBTITLE'] = ExternModule::ExtHtmlReady($seminar->subtitle);
+ }
+ if (trim($seminar->description)) {
+ $content['LECTUREDETAILS']['DESCRIPTION'] = ExternModule::ExtHtmlReady($seminar->description, TRUE);
+ }
+ if (trim($seminar->misc)) {
+ $content['LECTUREDETAILS']['MISC'] = ExternModule::ExtHtmlReady($seminar->misc, TRUE);
+ }
+ if (trim($seminar->participants)) {
+ $content['LECTUREDETAILS']['PARTICIPANTS'] = ExternModule::ExtHtmlReady($seminar->participants);
+ }
+ if (trim($seminar->requirements)) {
+ $content['LECTUREDETAILS']['REQUIREMENTS'] = ExternModule::ExtHtmlReady($seminar->requirements);
+ }
+ if (trim($seminar->orga)) {
+ $content['LECTUREDETAILS']['ORGA'] = ExternModule::ExtHtmlReady($seminar->orga);
+ }
+ if (trim($seminar->leistungsnachweis)) {
+ $content['LECTUREDETAILS']['LEISTUNGSNACHWEIS'] = ExternModule::ExtHtmlReady($seminar->leistungsnachweis);
+ }
+ if (trim($seminar->form)) {
+ $content['LECTUREDETAILS']['FORM'] = ExternModule::ExtHtmlReady($seminar->form);
+ }
+ if (trim($seminar->ects)) {
+ $content['LECTUREDETAILS']['ECTS'] = ExternModule::ExtHtmlReady($seminar->ects);
+ }
+
+ if (!$name_sql = $this->config->getValue("Main", "nameformat")) {
+ $name_sql = "full";
+ }
+
+ $lecturers = array_keys($seminar->getMembers('dozent'));
+
+ $l = 0;
+ foreach ($lecturers as $lecturer) {
+ $query = "SELECT {$GLOBALS['_fullname_sql'][$name_sql]} AS name, username, Vorname, Nachname, title_rear, title_front FROM auth_user_md5 aum LEFT JOIN user_info ui USING(user_id) WHERE aum.user_id = ?";
+ $parameters = [$lecturer];
+ $state = DBManager::get()->prepare($query);
+ $state->execute($parameters);
+ $rowlec = $state->fetch(PDO::FETCH_ASSOC);
+ if ($rowlec !== false) {
+ $content['LECTUREDETAILS']['LECTURERS']['LECTURER'][$l]['PERSONDETAILS-HREF'] = $this->elements['LinkInternPersondetails']->createUrl(['link_args' => 'username=' . $rowlec['username']]);
+ $content['LECTUREDETAILS']['LECTURERS']['LECTURER'][$l]['FULLNAME'] = ExternModule::ExtHtmlReady($rowlec['name']);
+ $content['LECTUREDETAILS']['LECTURERS']['LECTURER'][$l]['FIRSTNAME'] = ExternModule::ExtHtmlReady($rowlec['Vorname']);
+ $content['LECTUREDETAILS']['LECTURERS']['LECTURER'][$l]['LASTNAME'] = ExternModule::ExtHtmlReady($rowlec['Nachname']);
+ $content['LECTUREDETAILS']['LECTURERS']['LECTURER'][$l]['TITLEFRONT'] = ExternModule::ExtHtmlReady($rowlec['title_front']);
+ $content['LECTUREDETAILS']['LECTURERS']['LECTURER'][$l]['TITLEREAR'] = ExternModule::ExtHtmlReady($rowlec['title_rear']);
+ $content['LECTUREDETAILS']['LECTURERS']['LECTURER'][$l]['UNAME'] = $rowlec['username'];
+ $content['LECTUREDETAILS']['LECTURERS']['LECTURER'][$l]['LECTURER-NO'] = $l + 1;
+ $l++;
+ }
+ }
+
+ $tutors = array_keys($seminar->getMembers('tutor'));
+
+ $l = 0;
+ foreach ($tutors as $tutor) {
+ $query = "SELECT {$GLOBALS['_fullname_sql'][$name_sql]} AS name, username, Vorname, Nachname, title_rear, title_front FROM auth_user_md5 aum LEFT JOIN user_info ui USING(user_id) WHERE aum.user_id = ?";
+ $parameters = [$tutor];
+ $state = DBManager::get()->prepare($query);
+ $state->execute($parameters);
+ $rowtut = $state->fetch(PDO::FETCH_ASSOC);
+ if ($rowtut !== false) {
+ $content['LECTUREDETAILS']['TUTORS']['TUTOR'][$l]['TUTOR_PERSONDETAILS-HREF'] = $this->elements['LinkInternPersondetails']->createUrl(['link_args' => 'username=' . $rowtut['username']]);
+ $content['LECTUREDETAILS']['TUTORS']['TUTOR'][$l]['TUTOR_FULLNAME'] = ExternModule::ExtHtmlReady($rowtut['name']);
+ $content['LECTUREDETAILS']['TUTORS']['TUTOR'][$l]['TUTOR_FIRSTNAME'] = ExternModule::ExtHtmlReady($rowtut['Vorname']);
+ $content['LECTUREDETAILS']['TUTORS']['TUTOR'][$l]['TUTOR_LASTNAME'] = ExternModule::ExtHtmlReady($rowtut['Nachname']);
+ $content['LECTUREDETAILS']['TUTORS']['TUTOR'][$l]['TUTOR_TITLEFRONT'] = ExternModule::ExtHtmlReady($rowtut['title_front']);
+ $content['LECTUREDETAILS']['TUTORS']['TUTOR'][$l]['TUTOR_TITLEREAR'] = ExternModule::ExtHtmlReady($rowtut['title_rear']);
+ $content['LECTUREDETAILS']['TUTORS']['TUTOR'][$l]['TUTOR_UNAME'] = $rowtut['username'];
+ $content['LECTUREDETAILS']['TUTORS']['TUTOR'][$l]['TUTOR-NO'] = $l + 1;
+ $l++;
+ }
+ }
+
+ // reorganize the $SEM_TYPE-array
+ foreach ($GLOBALS["SEM_CLASS"] as $key_class => $class) {
+ $i = 0;
+ foreach ($GLOBALS["SEM_TYPE"] as $key_type => $type) {
+ if ($type["class"] == $key_class) {
+ $i++;
+ $sem_types_position[$key_type] = $i;
+ }
+ }
+ }
+ $aliases_sem_type = $this->config->getValue("ReplaceTextSemType",
+ "class_" . $GLOBALS["SEM_TYPE"][$seminar->status]['class']);
+ if ($aliases_sem_type[$sem_types_position[$seminar->status] - 1]) {
+ $content['LECTUREDETAILS']['SEMTYPE-SUBSTITUTE'] = $aliases_sem_type[$sem_types_position[$seminar->status] - 1];
+ } else {
+ $content['LECTUREDETAILS']['SEMTYPE-SUBSTITUTE'] = ExternModule::ExtHtmlReady($GLOBALS["SEM_TYPE"][$seminar->status]["name"]);
+ }
+ $content['LECTUREDETAILS']['SEMTYPE'] = ExternModule::ExtHtmlReady($GLOBALS["SEM_TYPE"][$seminar->status]["name"]);
+ $room = trim(Seminar::getInstance($this->seminar_id)->getDatesTemplate('dates/seminar_export_location'));
+ if ($room) {
+ $content['LECTUREDETAILS']['ROOM'] = ExternModule::ExtHtmlReady($room);
+ }
+ $content['LECTUREDETAILS']['SEMESTER'] = get_semester($this->seminar_id);
+ $content['LECTUREDETAILS']['CYCLE'] = ExternModule::ExtHtmlReady(Seminar::getInstance($this->seminar_id)->getDatesExport());
+ if ($vorbesprechung = vorbesprechung($this->seminar_id, 'export')) {
+ $content['LECTUREDETAILS']['PRELIM-DISCUSSION'] = ExternModule::ExtHtmlReady($vorbesprechung);
+ }
+ if ($veranstaltung_beginn = Seminar::getInstance($this->seminar_id)->getFirstDate('export')) {
+ $content['LECTUREDETAILS']['FIRST-MEETING'] = ExternModule::ExtHtmlReady($veranstaltung_beginn);
+ }
+
+ $range_path_level = $this->config->getValue('Main', 'rangepathlevel');
+ $pathes = get_sem_tree_path($this->seminar_id, $range_path_level);
+ if (is_array($pathes)) {
+ $i = 0;
+ foreach ($pathes as $foo => $path) {
+ $content['LECTUREDETAILS']['RANGE-PATHES']['RANGE-PATH'][$i]['PATH'] = ExternModule::ExtHtmlReady($path);
+ $i++;
+ }
+ }
+
+ if ($seminar->getSemClass()['module']) {
+ ModuleManagementModelTreeItem::setObjectFilter('Modul', function ($modul) use ($course_object) {
+ // check for public status
+ if (!$GLOBALS['MVV_MODUL']['STATUS']['values'][$modul->stat]['public']) {
+ return false;
+ }
+ $modul_start = Semester::find($modul->start)->beginn ?: 0;
+ $modul_end = Semester::find($modul->end)->beginn ?: PHP_INT_MAX;
+ return ($course_object->start_time <= $modul_end)
+ && (
+ ($course_object->start_time >= $modul_start)
+ || $course_object->isOpenEnded()
+ || $course_object->getEndSemester()->ende <= $modul_end
+ || $course_object->getEndSemester()->ende >= $modul_start
+ );
+ });
+ ModuleManagementModelTreeItem::setObjectFilter('StgteilVersion', function ($version) {
+ return $GLOBALS['MVV_STGTEILVERSION']['STATUS']['values'][$version->stat]['public'];
+ });
+ $trail_classes = ['Modulteil', 'StgteilabschnittModul', 'StgteilAbschnitt', 'StgteilVersion'];
+ $mvv_object_paths = MvvCourse::get($this->seminar_id)->getTrails($trail_classes);
+ $mvv_paths = [];
+
+ foreach ($mvv_object_paths as $mvv_object_path) {
+ // show only complete paths
+ if (count($mvv_object_path) === 4) {
+ $mvv_object_names = [];
+ foreach ($mvv_object_path as $mvv_object) {
+ $mvv_object_names[] = $mvv_object->getDisplayName();
+ }
+ $mvv_paths[] = implode(' > ', $mvv_object_names);
+ }
+ }
+
+ foreach ($mvv_paths as $mvv_path) {
+ $content['LECTUREDETAILS']['MODULES']['MODULE'][] = ['PATH' => ExternModule::ExtHtmlReady($mvv_path)];
+ }
+ }
+
+ $content['LECTUREDETAILS']['NEWS'] = $this->elements['TemplateNews']->toString(['content' => $this->getContentNews(), 'subpart' => 'NEWS']);
+ $content['LECTUREDETAILS']['STUDIP-DATA'] = $this->getStudipData();
+
+ // generic data fields
+ if ($generic_datafields = $this->config->getValue('Main', 'genericdatafields')) {
+ $localEntries = DataFieldEntry::getDataFieldEntries($this->seminar_id, 'sem');
+ $k = 1;
+ foreach ($generic_datafields as $datafield) {
+ if (isset($localEntries[$datafield]) && is_object($localEntries[$datafield])) {
+ $localEntry = trim($localEntries[$datafield]->getDisplayValue());
+ if ($localEntry) {
+ $content['LECTUREDETAILS']["DATAFIELD_$k"] = $localEntry;
+ }
+ }
+ $k++;
+ }
+ }
+
+ $content['__GLOBAL__']['STUDIP-EDIT-HREF'] = "{$GLOBALS['ABSOLUTE_URI_STUDIP']}seminar_main.php?auswahl={$this->seminar_id}&again=1&redirect_to=dispatch.php/course/basicdata/view/".$this->seminar_id."&login=true&new_sem=TRUE";
+ $content['__GLOBAL__']['STUDIP-REGISTER-HREF'] = "{$GLOBALS['ABSOLUTE_URI_STUDIP']}dispatch.php/course/details/?again=1&sem_id={$this->seminar_id}";
+ }
+
+ return $content;
+ }
+
+ private function getContentNews ()
+ {
+ $local_fullname_sql = $GLOBALS['_fullname_sql'];
+ if (!$nameformat = $this->config->getValue('Main', 'nameformat')) {
+ $nameformat = 'no_title';
+ }
+ if ($nameformat == 'last') {
+ $local_fullname_sql['last'] = ' Nachname ';
+ }
+ $dateform = $this->config->getValue('Main', 'dateformat');
+
+ $news = StudipNews::GetNewsByRange($this->seminar_id, TRUE);
+ if (!count($news)) {
+ $content['NEWS']['NO-NEWS']['NEWS_NO-NEWS-TEXT'] = $this->config->getValue('Main', 'nodatatext');
+ } else {
+ $i = 0;
+ foreach ($news as $news_id => $news_detail) {
+ $content['NEWS']['ALL-NEWS']['SINGLE-NEWS'][$i]['NEWS_BODY'] = ExternModule::ExtFormatReady((string) $news_detail->body);
+ $content['NEWS']['ALL-NEWS']['SINGLE-NEWS'][$i]['NEWS_DATE'] = strftime($dateform, $news_detail->date);
+ $content['NEWS']['ALL-NEWS']['SINGLE-NEWS'][$i]['NEWS_TOPIC'] = ExternModule::ExtHtmlReady((string) $news_detail->topic);
+ $content['NEWS']['ALL-NEWS']['SINGLE-NEWS'][$i]['NEWS_NO'] = $i + 1;
+
+ $query = "SELECT Nachname, Vorname, title_front, title_rear,
+ {$local_fullname_sql[$nameformat]} AS fullname, username,
+ aum.user_id
+ FROM auth_user_md5 AS aum
+ LEFT JOIN user_info AS ui USING (user_id)
+ WHERE aum.user_id = ?";
+ $statement = DBManager::get()->prepare($query);
+ $statement->execute([$news_detail->user_id]);
+ $temp = $statement->fetch(PDO::FETCH_ASSOC);
+ if ($temp) {
+ $content['NEWS']['ALL-NEWS']['SINGLE-NEWS'][$i]['FULLNAME'] = ExternModule::ExtHtmlReady($temp['fullname']);
+ $content['NEWS']['ALL-NEWS']['SINGLE-NEWS'][$i]['FIRSTNAME'] = ExternModule::ExtHtmlReady($temp['Vorname']);
+ $content['NEWS']['ALL-NEWS']['SINGLE-NEWS'][$i]['LASTNAME'] = ExternModule::ExtHtmlReady($temp['Nachname']);
+ $content['NEWS']['ALL-NEWS']['SINGLE-NEWS'][$i]['TITLEFRONT'] = ExternModule::ExtHtmlReady($temp['title_front']);
+ $content['NEWS']['ALL-NEWS']['SINGLE-NEWS'][$i]['TITLEREAR'] = ExternModule::ExtHtmlReady($temp['title_rear']);
+ $content['NEWS']['ALL-NEWS']['SINGLE-NEWS'][$i]['USERNAME'] = $temp['username'];
+ $content['NEWS']['ALL-NEWS']['SINGLE-NEWS'][$i]['PERSONDETAIL-HREF'] = $this->elements['LinkInternPersondetails']->createUrl(['link_args' => 'username=' . $temp['username']]);
+ }
+ $i++;
+ }
+ }
+ return $content;
+ }
+
+ function getStudipData () {
+ $query = "SELECT i.Institut_id, i.Name, i.url FROM seminare LEFT JOIN Institute i USING(institut_id) WHERE Seminar_id = ?";
+ $parameters = [$this->seminar_id];
+ $statement = DBManager::get()->prepare($query);
+ $statement->execute($parameters);
+ $row = $statement->fetch(PDO::FETCH_ASSOC);
+ $own_inst = $row['Institut_id'];
+ $content['STUDIP-DATA']['HOME-INST-NAME'] = ExternModule::ExtHtmlReady($row['Name']);
+
+ if ($row['url']) {
+ $link_inst = htmlReady($row['url']);
+ if (!preg_match('{^https?://.+$}', $link_inst)) {
+ $link_inst = "http://$link_inst";
+ }
+ $content['STUDIP-DATA']['HOME-INST-HREF'] = $link_inst;
+ }
+
+ $query = "SELECT Name, url FROM seminar_inst LEFT JOIN Institute i USING(institut_id) WHERE seminar_id='{$this->seminar_id}' AND i.institut_id!='$own_inst'";
+ $involved_insts = NULL;
+ $i = 0;
+ $statement = DBManager::get()->prepare($query);
+ $statement->execute();
+
+ while ($row = $statement->fetch(PDO::FETCH_ASSOC)) {
+ if ($row['url']) {
+ $link_inst = htmlReady($row['url']);
+ if (!preg_match('{^https?://.+$}', $link_inst)) {
+ $link_inst = "http://$link_inst";
+ }
+ $content['STUDIP-DATA']['INVOLVED-INSTITUES']['INVOLVED-INSTITUTE'][$i]['INVOLVED-INSTITUTE_HREF'] = $link_inst;
+ }
+ $content['STUDIP-DATA']['INVOLVED-INSTITUTES']['INVOLVED-INSTITUTE'][$i]['INVOLVED-INSTITUTE_NAME'] = ExternModule::ExtHtmlReady($row['Name']);
+ $i++;
+ }
+
+ $query = "SELECT count(*) as count_user FROM seminar_user WHERE Seminar_id = ?";
+ $parameters = [$this->seminar_id];
+ $statement = DBManager::get()->prepare($query);
+ $statement->execute($parameters);
+ $row = $statement->fetch(PDO::FETCH_ASSOC);
+
+ if ($row['count_user']) {
+ $content['STUDIP-DATA']['COUNT-USER'] = $row['count_user'];
+ } else {
+ $content['STUDIP-DATA']['COUNT-USER'] = '0';
+ }
+
+ $count = 0;
+ foreach (PluginEngine::getPlugins('ForumModule') as $plugin) {
+ $count += $plugin->getNumberOfPostingsForSeminar($this->seminar_id);
+ }
+ $content['STUDIP-DATA']['COUNT-POSTINGS'] = $count;
+
+ $query = "SELECT COUNT(*) AS count_documents
+ FROM folders
+ INNER JOIN file_refs ON folder_id = folders.id
+ WHERE range_id = ? AND range_type = 'course'
+ AND folder_type IN ('RootFolder', 'StandardFolder')
+ GROUP BY range_id";
+ $parameters = [$this->seminar_id];
+ $statement = DBManager::get()->prepare($query);
+ $statement->execute($parameters);
+ $row = $statement->fetch(PDO::FETCH_ASSOC);
+
+ if ($row['count_documents']) {
+ $content['STUDIP-DATA']['COUNT-DOCUMENTS'] = $row['count_documents'];
+ } else {
+ $content['STUDIP-DATA']['COUNT-DOCUMENTS'] = '0';
+ }
+
+ return $this->elements['TemplateStudipData']->toString(['content' => $content, 'subpart' => 'STUDIP-DATA']);
+ }
+
+ function printout ($args) {
+ if (!$language = $this->config->getValue("Main", "language"))
+ $language = "de_DE";
+ init_i18n($language);
+
+ echo $this->elements['TemplateLectureData']->toString(['content' => $this->getContent($args), 'subpart' => 'LECTUREDETAILS']);
+
+ }
+
+ function printoutPreview () {
+ if (!$language = $this->config->getValue("Main", "language"))
+ $language = "de_DE";
+ init_i18n($language);
+
+ echo $this->elements['TemplateLectureData']->toString(['content' => $this->getContent([]), 'subpart' => 'LECTUREDETAILS', 'hide_markers' => FALSE]);
+
+ }
+
+ function addContentStudipInfo (&$content) {
+
+ }
+}
+
+?>