diff --git a/include/lehrveranstaltung.class.php b/include/lehrveranstaltung.class.php index 6b484e27a..57fae9ee4 100644 --- a/include/lehrveranstaltung.class.php +++ b/include/lehrveranstaltung.class.php @@ -71,6 +71,12 @@ class lehrveranstaltung extends basis_db public $stpllv_pflicht=true; public $stpllv_koordinator; public $stpllv_semester; + + public $sws; + public $lvs; + public $alvs; + public $lvps; + public $las; /** * Konstruktor @@ -142,6 +148,12 @@ class lehrveranstaltung extends basis_db $this->semester_alternativ = $row->semester_alternativ; $this->farbe = $row->farbe; + $this->sws = $row->sws; + $this->lvs = $row->lvs; + $this->alvs = $row->alvs; + $this->lvps = $row->lvps; + $this->las = $row->las; + $this->bezeichnung_arr['German'] = $this->bezeichnung; $this->bezeichnung_arr['English'] = $this->bezeichnung_english; if ($this->bezeichnung_arr['English'] == '') @@ -695,7 +707,8 @@ class lehrveranstaltung extends basis_db $qry = 'BEGIN; INSERT INTO lehre.tbl_lehrveranstaltung (studiengang_kz, bezeichnung, kurzbz, lehrform_kurzbz, semester, ects, semesterstunden, anmerkung, lehre, lehreverzeichnis, aktiv, ext_id, 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) VALUES (' . + 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) VALUES (' . $this->db_add_param($this->studiengang_kz) . ', ' . $this->db_add_param($this->bezeichnung) . ', ' . $this->db_add_param($this->kurzbz) . ', ' . @@ -731,7 +744,12 @@ class lehrveranstaltung extends basis_db $this->db_add_param($this->semesterwochen) . ',' . $this->db_add_param($this->lvnr) .','. $this->db_add_param($this->semester_alternativ).','. - $this->db_add_param($this->farbe).');'; + $this->db_add_param($this->farbe).','. + $this->db_add_param($this->sws).','. + $this->db_add_param($this->lvs).','. + $this->db_add_param($this->alvs).','. + $this->db_add_param($this->lvps).','. + $this->db_add_param($this->las).');'; } else { @@ -777,7 +795,12 @@ class lehrveranstaltung extends basis_db 'semesterwochen=' . $this->db_add_param($this->semesterwochen, FHC_INTEGER) . ',' . 'lvnr = ' . $this->db_add_param($this->lvnr) . ', ' . 'semester_alternativ = '.$this->db_add_param($this->semester_alternativ).', '. - 'farbe = '.$this->db_add_param($this->farbe).' '. + 'farbe = '.$this->db_add_param($this->farbe).', '. + 'sws = '.$this->db_add_param($this->sws).', '. + 'lvs = '.$this->db_add_param($this->lvs).', '. + 'alvs = '.$this->db_add_param($this->alvs).', '. + 'lvps = '.$this->db_add_param($this->lvps).', '. + 'las = '.$this->db_add_param($this->las).' '. 'WHERE lehrveranstaltung_id = ' . $this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER, false) . ';'; } @@ -1609,100 +1632,6 @@ class lehrveranstaltung extends basis_db return true; } - /** - * Loescht eine Lehrveranstaltung - * @param $lvid - * @return true wenn ok, false wenn Fehler - */ -/* public function delete_lva($lvid) - { - if(!is_numeric($lvid)) - { - $this->errormsg = 'lvid ist ungueltig'; - return false; - } - - $qry = "DELETE FROM public.tbl_lehrveranstaltung - WHERE lehrveranstaltung_id=".$this->db_add_param($lvid, FHC_INTEGER); - - if($this->load($lvid)) - { - $this->db_query('BEGIN;'); - - $log = new log(); - - $log->executetime = date('Y-m-d H:i:s'); - $log->beschreibung = 'Loeschen der Lehrveranstaltung '.$lvid; - $log->mitarbeiter_uid = get_uid(); - $log->sql = $qry; - $log->sqlundo = 'INSERT INTO lehre.tbl_lehrveranstaltung (studiengang_kz, bezeichnung, kurzbz, lehrform_kurzbz, - semester, ects, semesterstunden, anmerkung, lehre, lehreverzeichnis, aktiv, ext_id, 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) VALUES (' . - $this->db_add_param($this->studiengang_kz) . ', ' . - $this->db_add_param($this->bezeichnung) . ', ' . - $this->db_add_param($this->kurzbz) . ', ' . - $this->db_add_param($this->lehrform_kurzbz) . ', ' . - $this->db_add_param($this->semester) . ', ' . - $this->db_add_param($this->ects) . ', ' . - $this->db_add_param($this->semesterstunden) . ', ' . - $this->db_add_param($this->anmerkung) . ', ' . - $this->db_add_param($this->lehre, FHC_BOOLEAN) . ',' . - $this->db_add_param($this->lehreverzeichnis) . ', ' . - $this->db_add_param($this->aktiv, FHC_BOOLEAN) . ', ' . - $this->db_add_param($this->ext_id) . ', ' . - $this->db_add_param($this->insertamum) . ', ' . - $this->db_add_param($this->insertvon) . ', ' . - $this->db_add_param($this->planfaktor) . ', ' . - $this->db_add_param($this->planlektoren) . ', ' . - $this->db_add_param($this->planpersonalkosten) . ', ' . - $this->db_add_param($this->plankostenprolektor) . ', ' . - $this->db_add_param($this->updateamum) . ', ' . - $this->db_add_param($this->updatevon) . ',' . - $this->db_add_param($this->sort) . ',' . - $this->db_add_param($this->zeugnis, FHC_BOOLEAN) . ',' . - $this->db_add_param($this->projektarbeit, FHC_BOOLEAN) . ',' . - $this->db_add_param($this->sprache) . ',' . - $this->db_add_param($this->koordinator) . ',' . - $this->db_add_param($this->bezeichnung_english) . ',' . - $this->db_add_param($this->orgform_kurzbz) . ',' . - $this->db_add_param($this->incoming) . ',' . - $this->db_add_param($this->lehrtyp_kurzbz) . ',' . - $this->db_add_param($this->oe_kurzbz) . ',' . - $this->db_add_param($this->raumtyp_kurzbz) . ',' . - $this->db_add_param($this->anzahlsemester) . ',' . - $this->db_add_param($this->semesterwochen) . ',' . - $this->db_add_param($this->lvnr) .','. - $this->db_add_param($this->semester_alternativ).','. - $this->db_add_param($this->farbe).');'; - - if($log->save(true)) - { - - if($this->db_query($qry)) - { - $this->db_query('COMMIT'); - return true; - } - else - { - $this->db_query('ROLLBACK'); - $this->errormsg = 'Fehler beim Loeschen der Daten'; - return false; - } - } - else - { - $this->db_query('ROLLBACK'); - $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; - return false; - } - } - else - { - return false; - } - } */ /** * Loescht den Datenensatz mit der ID die uebergeben wird @@ -2052,61 +1981,73 @@ class lehrveranstaltung extends basis_db } /** - * Lädt alle Lehreinheit_IDs eine Lehrveranstaltung (optional mit Studiensemester) - * @param integer $lehrveranstaltung_id ID der Lehrveranstaltung + * Lädt alle Lehreinheit_IDs eine Lehrveranstaltung (optional mit Studiensemester) + * @param integer $lehrveranstaltung_id ID der Lehrveranstaltung * @param string $uid UID eines Studenten - * @param string $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters - * @return boolean|array false, wenn eine Fehler auftritt; Array mit UIDs wenn erfolgreich - */ - public function getLehreinheitenOfLv($lehrveranstaltung_id, $uid, $studiensemester_kurzbz=null) - { - if(!is_numeric($lehrveranstaltung_id)) - { - $this->errormsg = "Lehrveranstaltung ID muss eine gültige Zahl sein."; - return false; - } - - $qry = 'SELECT lehreinheit_id FROM campus.vw_student_lehrveranstaltung WHERE ' - . 'lehrveranstaltung_id='.$this->db_add_param($lehrveranstaltung_id) - . ' AND uid='.$this->db_add_param($uid); - - if(!is_null($studiensemester_kurzbz)) - { - $qry .= ' AND studiensemester_kurzbz='.$this->db_add_param($studiensemester_kurzbz); - } - $qry .= ' ORDER BY lehreinheit_id;'; - - if($this->db_query($qry)) - { - $result = array(); - while($row = $this->db_fetch_object()) - { - array_push($result, $row->lehreinheit_id); - } - return $result; - } - return false; - } - - public function lehreverzeichnisExists($lehreverzeichnis) + * @param string $studiensemester_kurzbz Kurzbezeichnung des Studiensemesters + * @return boolean|array false, wenn eine Fehler auftritt; Array mit UIDs wenn erfolgreich + */ + public function getLehreinheitenOfLv($lehrveranstaltung_id, $uid, $studiensemester_kurzbz=null) { - $qry = 'SELECT * FROM lehre.tbl_lehrveranstaltung WHERE lehreverzeichnis='.$this->db_add_param($lehreverzeichnis); - $qry .= ';'; - - if($this->db_query($qry)) - { - if($this->db_num_rows() > 0) + if(!is_numeric($lehrveranstaltung_id)) { - return true; + $this->errormsg = "Lehrveranstaltung ID muss eine gültige Zahl sein."; + return false; + } + + $qry = 'SELECT lehreinheit_id FROM campus.vw_student_lehrveranstaltung WHERE ' + . 'lehrveranstaltung_id='.$this->db_add_param($lehrveranstaltung_id) + . ' AND uid='.$this->db_add_param($uid); + + if(!is_null($studiensemester_kurzbz)) + { + $qry .= ' AND studiensemester_kurzbz='.$this->db_add_param($studiensemester_kurzbz); + } + $qry .= ' ORDER BY lehreinheit_id;'; + + if($this->db_query($qry)) + { + $result = array(); + while($row = $this->db_fetch_object()) + { + array_push($result, $row->lehreinheit_id); + } + return $result; } return false; - } - else - { - $this->errormsg = "Fehler beim Laden der Daten"; - return false; - } } + /** + * Prueft ob das Lehrverzeichnis bereits anderwertig verwendet wird + * @param $lehreverzeichnis + * @param $studiengang_kz + * @param $semester + */ + public function lehreverzeichnisExists($lehreverzeichnis, $studiengang_kz, $semester) + { + $qry = 'SELECT + 1 + FROM + lehre.tbl_lehrveranstaltung + WHERE + lehreverzeichnis='.$this->db_add_param($lehreverzeichnis).' + AND studiengang_kz='.$this->db_add_param($studiengang_kz).' + AND semester='.$this->db_add_param($semester).';'; + + + if($this->db_query($qry)) + { + if($this->db_num_rows() > 0) + { + return true; + } + return false; + } + else + { + $this->errormsg = "Fehler beim Laden der Daten"; + return false; + } + } } ?> diff --git a/include/studienordnung.class.php b/include/studienordnung.class.php index b7c37a3d6..efdeb958e 100644 --- a/include/studienordnung.class.php +++ b/include/studienordnung.class.php @@ -29,7 +29,7 @@ require_once 'studiensemester.class.php'; class studienordnung extends basis_db { - private $new = true; // boolean + public $new = true; // boolean public $result = array(); // Objekte //Tabellenspalten diff --git a/include/studienplan.class.php b/include/studienplan.class.php index 5381beb5e..df45ee543 100644 --- a/include/studienplan.class.php +++ b/include/studienplan.class.php @@ -28,7 +28,7 @@ require_once(dirname(__FILE__).'/basis_db.class.php'); class studienplan extends basis_db { - private $new = true; // boolean + public $new = true; // boolean public $result = array(); // Objekte //Tabellenspalten @@ -596,6 +596,45 @@ class studienplan extends basis_db } } + /** + * Laedt die Lehrveranstaltungszuordnungen zu einem Studienplan + * + * @param $studienplan_id ID des Studienplanes + */ + public function loadStudienplanLV($studienplan_id) + { + $qry = "SELECT * FROM lehre.tbl_studienplan_lehrveranstaltung WHERE studienplan_id=".$this->db_add_param($studienplan_id); + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $obj = new studienplan(); + + $obj->studienplan_lehrveranstaltung_id = $row->studienplan_lehrveranstaltung_id; + $obj->semester = $row->semester; + $obj->pflicht = $this->db_parse_bool($row->pflicht); + $obj->studienplan_id = $row->studienplan_id; + $obj->koordinator = $row->koordinator; + $obj->studienplan_lehrveranstaltung_id_parent = $row->studienplan_lehrveranstaltung_id_parent; + $obj->lehrveranstaltung_id = $row->lehrveranstaltung_id; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + $obj->updateamum = $row->updateamum; + $obj->updatevon = $row->updatevon; + $obj->new=false; + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + /** * Löscht eine Lehrveranstaltung aus dem Studienplan * @param $studienplan_lehrveranstaltung_id ID der LV in der Zwischentabelle diff --git a/soap/studienordnung.json.php b/soap/studienordnung.json.php index 0c5cac4db..f633778ae 100644 --- a/soap/studienordnung.json.php +++ b/soap/studienordnung.json.php @@ -9,6 +9,8 @@ require_once('../config/vilesci.config.inc.php'); require_once('../include/functions.inc.php'); require_once('../include/studienordnung.class.php'); require_once('../include/benutzerberechtigung.class.php'); +require_once('../include/studienplan.class.php'); +require_once('../include/lvregel.class.php'); $uid = get_uid(); @@ -55,6 +57,135 @@ switch($method) $data['errormsg']=$studienordnung->errormsg; } break; + case 'copyStudienordnung': + $studienordnung_id=$_REQUEST['studienordnung_id']; + + $studienordnung = new studienordnung(); + if($studienordnung->loadStudienordnung($studienordnung_id)) + { + // Studienordnung anlegen + $studienordnung->new=true; + $studienordnung->bezeichnung .= ' Kopie 1'; + $studienordnung->insertamum=date('Y-m-d H:i:s'); + $studienordnung->insertvon=$uid; + + if($studienordnung->save()) + { + $studienordnung_id_neu = $studienordnung->studienordnung_id; + + // Studienplaene kopieren + $studienplan = new studienplan(); + if($studienplan->loadStudienplanSTO($studienordnung_id)) + { + foreach($studienplan->result as $studienplan_obj) + { + $stpllv_ID_Array=array(); + $lvregel_ID_Array=array(); + + $studienplan_obj->studienordnung_id = $studienordnung_id_neu; + $studienplan_obj->new=true; + $studienplan_obj->insertamum=date('Y-m-d H:i:s'); + $studienplan_obj->insertvon=$uid; + + $studienplan_id_alt = $studienplan_obj->studienplan_id; + + if($studienplan_obj->save()) + { + + // Lehrveranstaltungszuordnungen kopieren + $stpllv = new studienplan(); + $stpllv->loadStudienplanLV($studienplan_id_alt); + foreach($stpllv->result as $stpllv_obj) + { + $stpllv_obj->new=true; + $stpllv_obj->studienplan_id=$studienplan_obj->studienplan_id; + $stpllv_obj->insertamum = date('Y-m-d H:i:s'); + $stpllv_obj->insertvon = $uid; + + $studienplan_lehrveranstaltung_id_alt = $stpllv_obj->studienplan_lehrveranstaltung_id; + + if($stpllv_obj->saveStudienplanLehrveranstaltung()) + { + // Alte und neue ID Speichern damit danach die Parents gesetzt werden koennen + $stpllv_ID_Array[$studienplan_lehrveranstaltung_id_alt]=$stpllv_obj->studienplan_lehrveranstaltung_id; + + // LVRegeln kopieren + $lvregel = new lvregel(); + $lvregel->loadLVRegeln($studienplan_lehrveranstaltung_id_alt); + foreach($lvregel->result as $regel_obj) + { + + $regel_obj->new=false; + $regel_obj->studienplan_lehrveranstaltung_id=$stpllv_obj->studienplan_lehrveranstaltung_id; + $regel_obj->insertamum = date('Y-m-d H:i:s'); + $regel_obj->insertvon = $uid; + + $lvregel_id_alt = $regel_obj->lvregel_id; + + if($regel_obj->save()) + { + // Alte und neue ID Speichern damit danach die Parents gesetzt werden koennen + $lvregel_ID_Array[$lvregel_id_alt]=$regel_obj->lvregel_id; + } + } + } + } + } + + // Damit die Parent Eintraege korrekt gesetzt werden koennen, muessen zuerst die uebergeordneten + // Eintraege in der Datenbank vorhanden sein. Deshalb werden zuerst alle Eintraege angelegt + // und danach die Parent Keys korrekt gesetzt. + + // Alle neuen LVZuordnungen nochmals durchlaufen und die parents korrekt setzen + foreach($stpllv_ID_Array as $studienplan_lehrveranstaltung_id) + { + $stpllv_obj = new studienplan(); + if($stpllv_obj->loadStudienplanLehrveranstaltung($studienplan_lehrveranstaltung_id)) + { + if($stpllv_obj->studienplan_lehrveranstaltung_id_parent!='') + { + $stpllv_obj->studienplan_lehrveranstaltung_id_parent = $stpllv_ID_Array[$stpllv_obj->studienplan_lehrveranstaltung_id_parent]; + $stpllv_obj->saveStudienplanLehrveranstaltung(); + } + } + } + + // Alle neuen LVRegeln nochmals durchlaufen und die parents korrekt setzen + foreach($lvregel_ID_Array as $lvregel_id) + { + $lvregel_obj = new lvregel(); + if($lvregel_obj->load($lvregel_id)) + { + if($lvregel_obj->lvregel_id_parent!='') + { + $lvregel_obj->lvregel_id_parent = $lvregel_ID_Array[$lvregel_obj->lvregel_id_parent]; + $lvregel_obj->save(); + } + } + } + } + // tbl_studienordnung_semester: wird nicht kopiert da es sonst dazu kommen kann, dass mehrere aktive Studienordnungen vorhanden sind + $data['error']='false'; + $data['errormsg']=''; + } + else + { + $data['error']='true'; + $data['errormsg']=$studienplan->errormsg; + } + } + else + { + $data['error']='true'; + $data['errormsg']=$studienordnung->errormsg; + } + } + else + { + $data['error']='true'; + $data['errormsg']=$studienordnung->errormsg; + } + break; default: break; } diff --git a/vilesci/lehre/studienordnung.js b/vilesci/lehre/studienordnung.js index f1a280755..02e378a48 100644 --- a/vilesci/lehre/studienordnung.js +++ b/vilesci/lehre/studienordnung.js @@ -134,7 +134,8 @@ function drawStudienordnungen(data) if(data[i].studienordnung_id !== null) { obj=obj+'

'
+ +'
';
}
}
obj=obj+'';
@@ -1395,3 +1396,31 @@ function deleteSemesterZuordnung(ausbildungssemester_kurzbz, studiensemester)
}
}
+
+/**
+ * Kopiert eine Studienordnung
+ * @param studienordnung_id
+ */
+function copyStudienordnung(studienordnung_id)
+{
+ if(confirm("Wollen Sie diese Studienordnung wirklich kopieren?"))
+ {
+ $.ajax({
+ dataType: "json",
+ url: "../../soap/studienordnung.json.php",
+ type: "POST",
+ data: {
+ "method": "copyStudienordnung",
+ "studienordnung_id": studienordnung_id
+ },
+ error: loadError
+ }).success(function(data)
+ {
+ if(data.error === "true")
+ {
+ alert(data.errormsg);
+ }
+ loadStudienordnung();
+ });
+ }
+}