diff --git a/application/models/education/Lehrveranstaltung_model.php b/application/models/education/Lehrveranstaltung_model.php
index 8517d7f9d..0390613f7 100644
--- a/application/models/education/Lehrveranstaltung_model.php
+++ b/application/models/education/Lehrveranstaltung_model.php
@@ -309,4 +309,50 @@ class Lehrveranstaltung_model extends DB_Model
return $this->execQuery($query, array($uid, $studiensemester_kurzbz, $lehrveranstaltung_id));
}
+
+ /**
+ * Sucht nach LV Templates und gibt Id und Label ("bezeichnung [kurzbz]") aus
+ * Diese funktion ist für autocomplete gedacht
+ *
+ * @param string $filter Suchfilter
+ * @return \stdClass A return object
+ */
+ public function loadTemplates($filter)
+ {
+ $filter = strtolower($filter);
+ $qry = "SELECT
+ tbl_lehrveranstaltung.lehrveranstaltung_id, tbl_lehrveranstaltung.bezeichnung, tbl_lehrveranstaltung.kurzbz
+ FROM
+ lehre.tbl_lehrveranstaltung
+ WHERE
+ tbl_lehrveranstaltung.lehrtyp_kurzbz = 'tpl' AND (
+ CAST(tbl_lehrveranstaltung.lehrveranstaltung_id AS TEXT) LIKE '%".$this->db_escape($filter)."%' OR
+ LOWER(tbl_lehrveranstaltung.bezeichnung) LIKE '%".$this->db_escape($filter). "%' OR
+ LOWER(tbl_lehrveranstaltung.kurzbz) LIKE '%".$this->db_escape($filter). "%'
+ )
+ ";
+ return $this->execQuery($qry);
+ }
+
+ /**
+ * Lädt Template und gibt Id und Label ("bezeichnung [kurzbz]") zurück
+ * Diese funktion ist für autocomplete gedacht
+ *
+ * @param string $name
+ * @return \stdClass A return object
+ */
+ public function loadTemplateByName($name)
+ {
+ $qry = "SELECT
+ tbl_lehrveranstaltung.lehrveranstaltung_id as id, CONCAT(tbl_lehrveranstaltung.bezeichnung, ' [', tbl_lehrveranstaltung.kurzbz, ']') as label
+ FROM
+ lehre.tbl_lehrveranstaltung
+ WHERE
+ tbl_lehrveranstaltung.lehrtyp_kurzbz = 'tpl' AND (
+ CAST(tbl_lehrveranstaltung.lehrveranstaltung_id AS TEXT) = '".($name ? $this->db_escape($name) : 0)."' OR tbl_lehrveranstaltung.bezeichnung = '".$this->db_escape($name). "' OR tbl_lehrveranstaltung.kurzbz = '".$this->db_escape($name). "'
+ )
+ ";
+ return $this->execQuery($qry);
+ }
+
}
diff --git a/include/lehrveranstaltung.class.php b/include/lehrveranstaltung.class.php
index 6cff4c75f..342e08487 100644
--- a/include/lehrveranstaltung.class.php
+++ b/include/lehrveranstaltung.class.php
@@ -69,6 +69,7 @@ class lehrveranstaltung extends basis_db
public $semester_alternativ; // smallint
public $farbe;
public $lehrauftrag=true;
+ public $lehrveranstaltung_template_id; // integer
public $studienplan_lehrveranstaltung_id;
@@ -158,6 +159,7 @@ class lehrveranstaltung extends basis_db
$this->lvnr = $row->lvnr;
$this->semester_alternativ = $row->semester_alternativ;
$this->farbe = $row->farbe;
+ $this->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$this->sws = $row->sws;
$this->lvs = $row->lvs;
@@ -237,6 +239,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->lvnr = $row->lvnr;
$lv_obj->semester_alternativ = $row->semester_alternativ;
$lv_obj->farbe = $row->farbe;
+ $lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
@@ -387,6 +390,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->lvnr = $row->lvnr;
$lv_obj->semester_alternativ = $row->semester_alternativ;
$lv_obj->farbe = $row->farbe;
+ $lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
@@ -516,6 +520,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->lvnr = $row->lvnr;
$lv_obj->semester_alternativ = $row->semester_alternativ;
$lv_obj->farbe = $row->farbe;
+ $lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
@@ -598,6 +603,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->lvnr = $row->lvnr;
$lv_obj->semester_alternativ = $row->semester_alternativ;
$lv_obj->farbe = $row->farbe;
+ $lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
@@ -729,6 +735,25 @@ class lehrveranstaltung extends basis_db
$this->errormsg = 'Semesterwochen muss ein eine gueltige ganze Zahl sein';
return false;
}
+ if ($this->lehrveranstaltung_template_id != '')
+ {
+ if (!isint($this->lehrveranstaltung_template_id)) {
+ $this->errormsg = 'Lehrveranstaltung Template Id muss eine gültige ganze Zahl sein';
+ return false;
+ } elseif($this->lehrtyp_kurzbz == 'tpl') {
+ $this->errormsg = 'Lehrveranstaltung Template Id darf bei Lehrveranstaltungen des Typs "Template" nicht gesetzt werden';
+ return false;
+ } else {
+ $template = new lehrveranstaltung($this->lehrveranstaltung_template_id);
+ if ($template->errormsg) {
+ $this->errormsg = 'Lehrveranstaltung Template: ' . $template->errormsg;
+ return false;
+ } elseif ($template->lehrtyp_kurzbz != 'tpl') {
+ $this->errormsg = 'Lehrveranstaltung Template: Als Lehrtyp muss Template ausgewählt sein';
+ return false;
+ }
+ }
+ }
$this->errormsg = '';
return true;
}
@@ -753,7 +778,7 @@ class lehrveranstaltung extends basis_db
semester, ects, semesterstunden, anmerkung, lehre, lehreverzeichnis, aktiv, insertamum,
insertvon, planfaktor, planlektoren, planpersonalkosten, plankostenprolektor, updateamum, updatevon, sort,
zeugnis, projektarbeit, sprache, koordinator, bezeichnung_english, orgform_kurzbz, incoming, lehrtyp_kurzbz, oe_kurzbz,
- raumtyp_kurzbz, anzahlsemester, semesterwochen, lvnr, semester_alternativ, farbe,sws,lvs,alvs,lvps,las,benotung,lvinfo,
+ raumtyp_kurzbz, anzahlsemester, semesterwochen, lvnr, semester_alternativ, farbe, lehrveranstaltung_template_id,sws,lvs,alvs,lvps,las,benotung,lvinfo,
lehrauftrag, lehrmodus_kurzbz) VALUES ('.
$this->db_add_param($this->studiengang_kz). ', '.
$this->db_add_param($this->bezeichnung). ', '.
@@ -790,6 +815,7 @@ class lehrveranstaltung extends basis_db
$this->db_add_param($this->lvnr).','.
$this->db_add_param($this->semester_alternativ).','.
$this->db_add_param($this->farbe).','.
+ $this->db_add_param($this->lehrveranstaltung_template_id, FHC_INTEGER).','.
$this->db_add_param($this->sws).','.
$this->db_add_param($this->lvs).','.
$this->db_add_param($this->alvs).','.
@@ -846,6 +872,7 @@ class lehrveranstaltung extends basis_db
'lvnr = ' . $this->db_add_param($this->lvnr) . ', ' .
'semester_alternativ = '.$this->db_add_param($this->semester_alternativ).', '.
'farbe = '.$this->db_add_param($this->farbe).', '.
+ 'lehrveranstaltung_template_id = '.$this->db_add_param($this->lehrveranstaltung_template_id, FHC_INTEGER).', '.
'sws = '.$this->db_add_param($this->sws).', '.
'lvs = '.$this->db_add_param($this->lvs).', '.
'alvs = '.$this->db_add_param($this->alvs).', '.
@@ -960,6 +987,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->lvnr = $row->lvnr;
$lv_obj->semester_alternativ = $row->semester_alternativ;
$lv_obj->farbe = $row->farbe;
+ $lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
@@ -1054,6 +1082,7 @@ class lehrveranstaltung extends basis_db
$l->lvnr = $row->lvnr;
$l->semester_alternativ = $row->semester_alternativ;
$l->farbe = $row->farbe;
+ $l->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$l->benotung = $this->db_parse_bool($row->benotung);
$l->lvinfo = $this->db_parse_bool($row->lvinfo);
$l->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
@@ -1137,6 +1166,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->lvnr = $row->lvnr;
$lv_obj->semester_alternativ = $row->semester_alternativ;
$lv_obj->farbe = $row->farbe;
+ $lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
@@ -1236,6 +1266,7 @@ class lehrveranstaltung extends basis_db
$obj->lvnr = $row->lvnr;
$obj->semester_alternativ = $row->semester_alternativ;
$obj->farbe = $row->farbe;
+ $obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$obj->stpllv_sort = $row->stpllv_sort;
$obj->benotung = $this->db_parse_bool($row->benotung);
$obj->lvinfo = $this->db_parse_bool($row->lvinfo);
@@ -1309,7 +1340,7 @@ class lehrveranstaltung extends basis_db
return $childs;
}
- /**
+ /**
* Generiert die Subtrees des Lehrveranstaltungstrees
*/
public function hasChildren($studienplan_lehrveranstaltung_id)
@@ -1360,6 +1391,7 @@ class lehrveranstaltung extends basis_db
$obj->stpllv_koordinator = $lv->stpllv_koordinator;
$obj->oe_kurzbz = $lv->oe_kurzbz;
$obj->lvnr = $lv->lvnr;
+ $obj->lehrveranstaltung_template_id = $lv->lehrveranstaltung_template_id;
$obj->benotung = $this->db_parse_bool($lv->benotung);
$obj->lvinfo =$this->db_parse_bool( $lv->lvinfo);
$obj->zeugnis = $this->db_parse_bool($lv->zeugnis);
@@ -1385,6 +1417,7 @@ class lehrveranstaltung extends basis_db
$obj->stpllv_koordinator = $this->stpllv_koordinator;
$obj->oe_kurzbz = $this->oe_kurzbz;
$obj->lvnr = $this->lvnr;
+ $obj->lehrveranstaltung_template_id = $this->lehrveranstaltung_template_id;
$obj->benotung = $this->db_parse_bool($this->benotung);
$obj->lvinfo =$this->db_parse_bool( $this->lvinfo);
$obj->zeugnis = $this->db_parse_bool($this->zeugnis);
@@ -1424,6 +1457,7 @@ class lehrveranstaltung extends basis_db
$obj->stpllv_pflicht = $lv->stpllv_pflicht;
$obj->stpllv_koordinator = $lv->stpllv_koordinator;
$obj->lvnr = $lv->lvnr;
+ $obj->lehrveranstaltung_template_id = $lv->lehrveranstaltung_template_id;
$obj->stpllv_sort = $lv->stpllv_sort;
$obj->oe_kurzbz = $lv->oe_kurzbz;
$obj->sws = $lv->sws;
@@ -1467,6 +1501,7 @@ class lehrveranstaltung extends basis_db
$obj->stpllv_pflicht = $this->stpllv_pflicht;
$obj->stpllv_koordinator = $this->stpllv_koordinator;
$obj->lvnr = $this->lvnr;
+ $obj->lehrveranstaltung_template_id = $this->lehrveranstaltung_template_id;
$obj->benotung = $this->db_parse_bool($this->benotung);
$obj->lvinfo =$this->db_parse_bool( $this->lvinfo);
$obj->zeugnis = $this->db_parse_bool($this->zeugnis);
@@ -1574,6 +1609,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$lv_obj->farbe = $row->farbe;
+ $lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
@@ -1660,6 +1696,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->lehrtyp_kurzbz = $row->lehrtyp_kurzbz;
$lv_obj->lehrmodus_kurzbz = $row->lehrmodus_kurzbz;
$lv_obj->farbe = $row->farbe;
+ $lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
@@ -1831,6 +1868,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->lvnr = $row->lvnr;
$lv_obj->semester_alternativ = $row->semester_alternativ;
$lv_obj->farbe = $row->farbe;
+ $lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->oe_kurzbz = $row->oe_kurzbz;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
@@ -1961,6 +1999,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->lvnr = $row->lvnr;
$lv_obj->semester_alternativ = $row->semester_alternativ;
$lv_obj->farbe = $row->farbe;
+ $lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
@@ -2088,6 +2127,7 @@ class lehrveranstaltung extends basis_db
$lv_obj->lvnr = $row->lvnr;
$lv_obj->semester_alternativ = $row->semester_alternativ;
$lv_obj->farbe = $row->farbe;
+ $lv_obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$lv_obj->benotung = $this->db_parse_bool($row->benotung);
$lv_obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$lv_obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
@@ -2276,7 +2316,7 @@ class lehrveranstaltung extends basis_db
}
/**
- * Lädt alle Lehrveranstaltungen eine Studienplans
+ * Lädt alle Lehrveranstaltungen eines Studienplans
* Optionale Filterung nach Lehrtyp und Semester
* @param type $studienplan_id
* @param type $lehrtyp_kurzbz
@@ -2358,6 +2398,7 @@ class lehrveranstaltung extends basis_db
$obj->lvnr = $row->lvnr;
$obj->semester_alternativ = $row->semester_alternativ;
$obj->farbe = $row->farbe;
+ $obj->lehrveranstaltung_template_id = $row->lehrveranstaltung_template_id;
$obj->benotung = $this->db_parse_bool($row->benotung);
$obj->lvinfo = $this->db_parse_bool($row->lvinfo);
$obj->lehrauftrag = $this->db_parse_bool($row->lehrauftrag);
@@ -2665,5 +2706,75 @@ class lehrveranstaltung extends basis_db
return false;
}
}
+
+ /**
+ * Sucht nach LV Templates und gibt Id und Label ("bezeichnung [kurzbz]") aus
+ * Diese funktion ist für autocomplete gedacht
+ *
+ * @param string $filter Suchfilter
+ * @return array
+ */
+ public function loadTemplates($filter)
+ {
+ $filter = strtolower($filter);
+ $qry = "SELECT
+ tbl_lehrveranstaltung.lehrveranstaltung_id, tbl_lehrveranstaltung.bezeichnung, tbl_lehrveranstaltung.kurzbz
+ FROM
+ lehre.tbl_lehrveranstaltung
+ WHERE
+ tbl_lehrveranstaltung.lehrtyp_kurzbz = 'tpl' AND (
+ CAST(tbl_lehrveranstaltung.lehrveranstaltung_id AS TEXT) LIKE '%".$this->db_escape($filter)."%' OR
+ LOWER(tbl_lehrveranstaltung.bezeichnung) LIKE '%".$this->db_escape($filter). "%' OR
+ LOWER(tbl_lehrveranstaltung.kurzbz) LIKE '%".$this->db_escape($filter). "%'
+ )
+ ";
+ $lehrveranstaltungen = [];
+ if($result = $this->db_query($qry))
+ {
+ while($row = $this->db_fetch_object($result))
+ {
+ $lehrveranstaltungen[] = $row;
+ }
+ return $lehrveranstaltungen;
+ }
+ else
+ {
+ $this->errormsg='Fehler bei Datenbankabfrage';
+ return [];
+ }
+ }
+
+ /**
+ * Lädt Template und gibt Id und Label ("bezeichnung [kurzbz]") zurück
+ * Diese funktion ist für autocomplete gedacht
+ *
+ * @param string $name
+ * @return stdClass | null
+ */
+ public function loadTemplateByName($name)
+ {
+ $qry = "SELECT
+ tbl_lehrveranstaltung.lehrveranstaltung_id as id, CONCAT(tbl_lehrveranstaltung.bezeichnung, ' [', tbl_lehrveranstaltung.kurzbz, ']') as label
+ FROM
+ lehre.tbl_lehrveranstaltung
+ WHERE
+ tbl_lehrveranstaltung.lehrtyp_kurzbz = 'tpl' AND (
+ CAST(tbl_lehrveranstaltung.lehrveranstaltung_id AS TEXT) = '".($name ? $this->db_escape($name) : 0)."' OR tbl_lehrveranstaltung.bezeichnung = '".$this->db_escape($name). "' OR tbl_lehrveranstaltung.kurzbz = '".$this->db_escape($name). "'
+ )
+ ";
+ if($result = $this->db_query($qry))
+ {
+ while($row = $this->db_fetch_object($result))
+ {
+ return $row;
+ }
+ }
+ else
+ {
+ $this->errormsg='Fehler bei Datenbankabfrage ' .$this->db_last_error();
+ }
+ return null;
+ }
+
}
?>
diff --git a/system/dbupdate_3.3.php b/system/dbupdate_3.3.php
index 9e73828d0..d9ce84926 100644
--- a/system/dbupdate_3.3.php
+++ b/system/dbupdate_3.3.php
@@ -6141,6 +6141,61 @@ if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berecht
}
}
+// NOTE(chris): Add "Template" to "Lehrtyp"
+if($result = @$db->db_query("SELECT 1 FROM lehre.tbl_lehrtyp WHERE bezeichnung = 'Template';"))
+{
+ if($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO lehre.tbl_lehrtyp(lehrtyp_kurzbz, bezeichnung) VALUES('tpl', 'Template');";
+
+ if(!$db->db_query($qry))
+ echo 'lehre.tbl_lehrtyp '.$db->db_last_error().'
';
+ else
+ echo '
lehre.tbl_lehrtyp: Added "Template"';
+ }
+}
+
+// NOTE(chris): Add Column "lehrveranstaltung_template_id" in tbl_lehrveranstaltung
+if(!$result = @$db->db_query("SELECT lehrveranstaltung_template_id FROM lehre.tbl_lehrveranstaltung LIMIT 1"))
+{
+ $qry = "ALTER TABLE lehre.tbl_lehrveranstaltung ADD COLUMN lehrveranstaltung_template_id integer;
+ ALTER TABLE lehre.tbl_lehrveranstaltung ADD CONSTRAINT fk_lehrveranstaltung_template FOREIGN KEY (lehrveranstaltung_template_id) REFERENCES lehre.tbl_lehrveranstaltung (lehrveranstaltung_id) ON DELETE RESTRICT ON UPDATE CASCADE;";
+
+ if(!$db->db_query($qry))
+ echo 'lehre.tbl_lehrveranstaltung: '.$db->db_last_error().'
';
+ else
+ echo '
lehre.tbl_lehrveranstaltung: Spalte lehrveranstaltung_template_id hinzugefuegt';
+}
+
+// NOTE(chris): Add Webservice Rights for lehrveranstaltung::loadTemplates
+if($result = @$db->db_query("SELECT 1 FROM system.tbl_webservicerecht WHERE berechtigung_kurzbz='soap/studienordnung' AND methode = 'loadTemplates' AND klasse = 'lehrveranstaltung';"))
+{
+ if($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO system.tbl_webservicerecht(berechtigung_kurzbz, methode, insertamum, insertvon, klasse) VALUES('soap/studienordnung', 'loadTemplates', now(), 'checksystem', 'lehrveranstaltung');";
+
+ if(!$db->db_query($qry))
+ echo 'system.tbl_webservicerecht '.$db->db_last_error().'
';
+ else
+ echo '
system.tbl_webservicerecht: soap/studienordnung/loadTemplates->lehrveranstaltung hinzugefügt';
+ }
+}
+
+// NOTE(chris): Add Webservice Rights for lehrveranstaltung::loadTemplateByName
+if($result = @$db->db_query("SELECT 1 FROM system.tbl_webservicerecht WHERE berechtigung_kurzbz='soap/studienordnung' AND methode = 'loadTemplateByName' AND klasse = 'lehrveranstaltung';"))
+{
+ if($db->db_num_rows($result) == 0)
+ {
+ $qry = "INSERT INTO system.tbl_webservicerecht(berechtigung_kurzbz, methode, insertamum, insertvon, klasse) VALUES('soap/studienordnung', 'loadTemplateByName', now(), 'checksystem', 'lehrveranstaltung');";
+
+ if(!$db->db_query($qry))
+ echo 'system.tbl_webservicerecht '.$db->db_last_error().'
';
+ else
+ echo '
system.tbl_webservicerecht: soap/studienordnung/loadTemplateByName->lehrveranstaltung hinzugefügt';
+ }
+}
+
+
// *** Pruefung und hinzufuegen der neuen Attribute und Tabellen
echo '