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))
{