diff --git a/config/global.config-default.inc.php b/config/global.config-default.inc.php index b2737f2d2..7c3e9a43d 100644 --- a/config/global.config-default.inc.php +++ b/config/global.config-default.inc.php @@ -48,6 +48,12 @@ define('VORRUECKUNG_STATUS_MAX_SEMESTER',true); // Bei Statuswechsel auf Bewerber -> soll Reihungstest brücksichtigt werden define('REIHUNGSTEST_CHECK', true); +/* Schema zur Erstellung der Kurs Kategorien im Moodle + * Leer oder nicht gesetzt: STSEM -> STG -> Ausbsemester (WS2014 -> BEL -> 1) + * DEP-STG-JG-STSEM: Department -> STG -> Jahrgang -> StSem (Informationstechnologie und Informationsmanagement -> BIMK -> Jahrgang 2014 -> WS2014) + */ +define('MOODLE_COURSE_SCHEMA',''); + // Bei Statuswechsel auf Bewerber -> bei true wird email (INFOMAIL_BEWERBER) an den Bewerber geschickt define('SEND_BEWERBER_INFOMAIL', false); diff --git a/include/moodle24_course.class.php b/include/moodle24_course.class.php index e63a7d7ca..1f92ec095 100644 --- a/include/moodle24_course.class.php +++ b/include/moodle24_course.class.php @@ -28,6 +28,7 @@ require_once(dirname(__FILE__).'/basis_db.class.php'); require_once(dirname(__FILE__).'/moodle.class.php'); require_once(dirname(__FILE__).'/datum.class.php'); require_once(dirname(__FILE__).'/studiensemester.class.php'); +require_once(dirname(__FILE__).'/../config/global.config.inc.php'); class moodle24_course extends basis_db { @@ -212,7 +213,8 @@ class moodle24_course extends basis_db $lvid = $this->lehrveranstaltung_id; //Studiengang und Semester holen - $qry = "SELECT tbl_lehrveranstaltung.semester, UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as stg + $qry = "SELECT tbl_lehrveranstaltung.semester, UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as stg, + studiengang_kz, tbl_studiengang.oe_kurzbz FROM lehre.tbl_lehrveranstaltung JOIN public.tbl_studiengang USING(studiengang_kz) WHERE lehrveranstaltung_id=".$this->db_add_param($lvid, FHC_INTEGER); @@ -222,6 +224,8 @@ class moodle24_course extends basis_db { $semester = $row->semester; $stg = $row->stg; + $stg_kz = $row->studiengang_kz; + $oe_kurzbz = $row->oe_kurzbz; } else { @@ -235,32 +239,109 @@ class moodle24_course extends basis_db return false; } - //Studiensemester Categorie holen - if(!$id_stsem = $this->getCategorie($this->studiensemester_kurzbz, '0')) + // Kategoriebau Aufbauen + if(defined('MOODLE_COURSE_SCHEMA') && MOODLE_COURSE_SCHEMA=='DEP-STG-JG-STSEM') { - if(!$id_stsem = $this->createCategorie($this->studiensemester_kurzbz, '0')) - echo "
Fehler beim Anlegen des Studiensemesters"; - } - //Studiengang Categorie holen - if(!$id_stg = $this->getCategorie($stg, $id_stsem)) - { - if(!$id_stg = $this->createCategorie($stg, $id_stsem)) - echo "
$this->errormsg"; - } - //Semester Categorie holen - if(!$id_sem = $this->getCategorie($semester, $id_stg)) - { - if(!$id_sem = $this->createCategorie($semester, $id_stg)) - echo "
$this->errormsg"; - } + // Struktur: Department -> STG -> Jahrgang -> StSem (Informationstechnologie und Informationsmanagement -> BIMK -> Jahrgang 2014 -> WS2014) + + // Studiengang der Lehrveranstaltung holen + // Uebergeordnetes Department ermitteln + $qry = 'SELECT + bezeichnung + FROM + public.tbl_organisationseinheit + WHERE + oe_kurzbz=(SELECT oe_parent_kurzbz FROM public.tbl_organisationseinheit WHERE oe_kurzbz='.$this->db_add_param($oe_kurzbz).')'; + + if($result_department = $this->db_query($qry)) + { + if($row_department = $this->db_fetch_object($result_department)) + { + $department = $row_department->bezeichnung; + } + else + { + $this->errormsg = 'Fehler beim Ermitteln des Departments'; + return false; + } + } + // Department + if(!$id_department = $this->getCategorie($department, '0')) + { + if(!$id_department = $this->createCategorie($department, '0')) + echo "
$this->errormsg"; + } + + // Studiengang + if(!$id_stg = $this->getCategorie($stg, $id_department)) + { + if(!$id_stg = $this->createCategorie($stg, $id_department)) + echo "
$this->errormsg"; + } + + // Jahrgang - 1. Studiensemester ermitteln (Stsem um Ausbsem -1 zurückspringen) und das Jahr ermitteln + $studiensemester = new studiensemester(); + if($semester!=0) + { + $jahrgangstsem = $studiensemester->jump($this->studiensemester_kurzbz, ($semester-1)*-1); + $studiensemester->load($jahrgangstsem); + } + else + { + $jahrgangstsem=$this->studiensemester_kurzbz; + $studiensemester->load($jahrgangstsem); + } + + $datum = new Datum(); + $jahr = $datum->formatDatum($studiensemester->start, 'Y'); + + if(!$id_jahrgang = $this->getCategorie('Jahrgang '.$jahr, $id_stg)) + { + if(!$id_jahrgang = $this->createCategorie('Jahrgang '.$jahr, $id_stg)) + echo "
$this->errormsg"; + } + + // Studiensemester + if(!$id_stsem = $this->getCategorie($this->studiensemester_kurzbz, $id_jahrgang)) + { + if(!$id_stsem = $this->createCategorie($this->studiensemester_kurzbz, $id_jahrgang)) + echo "
Fehler beim Anlegen des Studiensemesters"; + } + + $categoryid=$id_stsem; + } + else + { + // Struktur: STSEM -> STG -> Ausbsemester (WS2014 -> BEL -> 1) + + //Studiensemester Categorie holen + if(!$id_stsem = $this->getCategorie($this->studiensemester_kurzbz, '0')) + { + if(!$id_stsem = $this->createCategorie($this->studiensemester_kurzbz, '0')) + echo "
Fehler beim Anlegen des Studiensemesters"; + } + //Studiengang Categorie holen + if(!$id_stg = $this->getCategorie($stg, $id_stsem)) + { + if(!$id_stg = $this->createCategorie($stg, $id_stsem)) + echo "
$this->errormsg"; + } + //Semester Categorie holen + if(!$id_sem = $this->getCategorie($semester, $id_stg)) + { + if(!$id_sem = $this->createCategorie($semester, $id_stg)) + echo "
$this->errormsg"; + } + $categoryid=$id_sem; + } $client = new SoapClient($this->serverurl); $data = new stdClass(); $data->fullname=$this->mdl_fullname; $data->shortname=$this->mdl_shortname; - $data->categoryid=$id_sem; + $data->categoryid=$categoryid; $data->format='topics'; $stsem = new studiensemester(); diff --git a/include/studiensemester.class.php b/include/studiensemester.class.php index ef25507c2..e01d59dea 100644 --- a/include/studiensemester.class.php +++ b/include/studiensemester.class.php @@ -536,16 +536,19 @@ class studiensemester extends basis_db { $op='>'; $sort='ASC'; + $sort2='DESC'; } elseif($wert<0) { $op='<'; $sort='DESC'; + $sort2='ASC'; } else { $op='='; $sort=''; + $sort2=''; } $qry = "SELECT studiensemester_kurzbz @@ -558,7 +561,7 @@ class studiensemester extends basis_db ORDER BY start $sort LIMIT ".abs($wert)." ) as foo - ORDER BY start DESC LIMIT 1"; + ORDER BY start $sort2 LIMIT 1"; if($this->db_query($qry)) {