From 5b747dac2e38778afa597170ef0de6e27ea982c9 Mon Sep 17 00:00:00 2001 From: Stefan Puraner Date: Tue, 15 Jul 2014 13:04:54 +0000 Subject: [PATCH] =?UTF-8?q?=C3=9Cberpr=C3=BCfung=20bei=20L=C3=B6schen=20ei?= =?UTF-8?q?ner=20LV=20aus=20Studienplan=20ob=20LV-Regeln=20vorhanden=20sin?= =?UTF-8?q?d?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/studienplan.class.php | 1410 +++++++++++++++---------------- vilesci/lehre/studienordnung.js | 44 +- 2 files changed, 739 insertions(+), 715 deletions(-) diff --git a/include/studienplan.class.php b/include/studienplan.class.php index df45ee543..b4dd1db67 100644 --- a/include/studienplan.class.php +++ b/include/studienplan.class.php @@ -28,715 +28,715 @@ require_once(dirname(__FILE__).'/basis_db.class.php'); class studienplan extends basis_db { - public $new = true; // boolean - public $result = array(); // Objekte - - //Tabellenspalten - protected $studienplan_id; // integer (PK) - protected $studienordnung_id; // integer FK Studienordnung - protected $orgform_kurzbz; // varchar (3) - protected $version; // varchar (256) - protected $bezeichnung; // varchar (256) - protected $regelstudiendauer; // integer - protected $sprache; // varchar (16) FK Sprache - protected $aktiv=false; // boolean - protected $semesterwochen; // smallint - protected $testtool_sprachwahl=true;// boolean - protected $updateamum; // timestamp - protected $updatevon; // varchar - protected $insertamum; // timestamp - protected $insertvon; // varchar - - //Tabellenspalten für Zwischentabelle tbl_studienplan_lehrveranstaltung - protected $studienplan_lehrveranstaltung_id; //integer - protected $lehrveranstaltung_id; //integer - protected $semester; //smallint - protected $studienplan_lehrveranstaltung_id_parent; //integer - protected $pflicht; //boolean - protected $koordinator; //varchar(32) + public $new = true; // boolean + public $result = array(); // Objekte + + //Tabellenspalten + protected $studienplan_id; // integer (PK) + protected $studienordnung_id; // integer FK Studienordnung + protected $orgform_kurzbz; // varchar (3) + protected $version; // varchar (256) + protected $bezeichnung; // varchar (256) + protected $regelstudiendauer; // integer + protected $sprache; // varchar (16) FK Sprache + protected $aktiv=false; // boolean + protected $semesterwochen; // smallint + protected $testtool_sprachwahl=true;// boolean + protected $updateamum; // timestamp + protected $updatevon; // varchar + protected $insertamum; // timestamp + protected $insertvon; // varchar + + //Tabellenspalten für Zwischentabelle tbl_studienplan_lehrveranstaltung + protected $studienplan_lehrveranstaltung_id; //integer + protected $lehrveranstaltung_id; //integer + protected $semester; //smallint + protected $studienplan_lehrveranstaltung_id_parent; //integer + protected $pflicht; //boolean + protected $koordinator; //varchar(32) - /** - * Konstruktor - */ - public function __construct() + /** + * Konstruktor + */ + public function __construct() + { + parent::__construct(); + } + + public function __set($name,$value) + { + $this->$name=$value; + } + + public function __get($name) + { + return $this->$name; + } + + /** + * Laedt Studienplan mit der ID $studienplan_id + * @param $studienplan_id ID des zu ladenden Studienplanes + * @return true wenn ok, false im Fehlerfall + */ + public function loadStudienplan($studienplan_id) + { + //Pruefen ob studienplan_id eine gueltige Zahl ist + if(!is_numeric($studienplan_id) || $studienplan_id === '') + { + $this->errormsg = 'Studienplan_id muss eine Zahl sein'; + return false; + } + + //Daten aus der Datenbank lesen + $qry = "SELECT * FROM lehre.tbl_studienplan WHERE studienplan_id=".$this->db_add_param($studienplan_id, FHC_INTEGER, false); + + if(!$this->db_query($qry)) + { + $this->errormsg = 'Fehler bei einer Datenbankabfrage'; + return false; + } + + if($row = $this->db_fetch_object()) + { + $this->studienplan_id = $row->studienplan_id; + $this->studienordnung_id = $row->studienordnung_id; + $this->orgform_kurzbz = $row->orgform_kurzbz; + $this->version = $row->version; + $this->bezeichnung = $row->bezeichnung; + $this->regelstudiendauer = $row->regelstudiendauer; + $this->sprache = $row->sprache; + $this->aktiv = $this->db_parse_bool($row->aktiv); + $this->semesterwochen = $row->semesterwochen; + $this->testtool_sprachwahl = $this->db_parse_bool($row->testtool_sprachwahl); + $this->updateamum = $row->updateamum; + $this->updatevon = $row->updatevon; + $this->insertamum = $row->insertamum; + $this->insertvon = $row->insertvon; + $this->new=false; + + return true; + } + else + { + $this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden'; + return false; + } + } + + /** + * Laedt die Studienplaene einer Studienordnung und Optional einer Organisationsform + * + * @param $studienordnung_id ID der Studienordnung + * @param $orgform_kurzbz Organisationsform + * @return boolean true wenn ok, false im Fehlerfall + */ + public function loadStudienplanSTO($studienordnung_id, $orgform_kurzbz=null) + { + //Pruefen ob studienordnung_id eine gueltige Zahl ist + if(!is_numeric($studienordnung_id) || $studienordnung_id === '') + { + $this->errormsg = 'Studienordnung_id muss eine Zahl sein'; + return false; + } + + //Daten aus der Datenbank lesen + $qry = "SELECT * FROM lehre.tbl_studienplan WHERE studienordnung_id=".$this->db_add_param($studienordnung_id, FHC_INTEGER, false); + + if(!is_null($orgform_kurzbz)) + $qry.=" AND orgform_kurzbz=".$this->db_add_param($orgform_kurzbz); + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $obj = new studienplan(); + + $obj->studienplan_id = $row->studienplan_id; + $obj->studienordnung_id = $row->studienordnung_id; + $obj->orgform_kurzbz = $row->orgform_kurzbz; + $obj->version = $row->version; + $obj->bezeichnung = $row->bezeichnung; + $obj->regelstudiendauer = $row->regelstudiendauer; + $obj->sprache = $row->sprache; + $obj->aktiv = $this->db_parse_bool($row->aktiv); + $obj->semesterwochen = $row->semesterwochen; + $obj->testtool_sprachwahl = $this->db_parse_bool($row->testtool_sprachwahl); + $obj->updateamum = $row->updateamum; + $obj->updatevon = $row->updatevon; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + $obj->new=false; + + $this->result[] = $obj; + } + + return true; + } + else + { + $this->errormsg = 'Fehler bei einer Datenbankabfrage'; + return false; + } + } + + /** + * Prueft die Variablen auf Gueltigkeit + * @return true wenn ok, false im Fehlerfall + */ + protected function validate() + { + //Zahlenfelder pruefen + if(!is_numeric($this->studienordnung_id)) + { + $this->errormsg='studienordnung_id enthaelt ungueltige Zeichen'; + return false; + } + + if(!is_numeric($this->regelstudiendauer)) + { + $this->errormsg='regelstudiendauer enthaelt ungueltige Zeichen oder ist leer'; + return false; + } + if(!is_numeric($this->semesterwochen) && $this->semesterwochen!=='') + { + $this->errormsg='semesterwochen enthaelt ungueltige Zeichen'; + return false; + } + + //Gesamtlaenge pruefen + if(mb_strlen($this->version)>256) + { + $this->errormsg = 'Version darf nicht länger als 256 Zeichen sein'; + return false; + } + if(mb_strlen($this->bezeichnung)>256) + { + $this->errormsg = 'Bezeichnung darf nicht länger als 256 Zeichen sein'; + return false; + } + if(mb_strlen($this->orgform_kurzbz)>3) + { + $this->errormsg = 'Orgform_kurzbz darf nicht laenger als 3 Zeichen sein'; + return false; + } + if(mb_strlen($this->sprache)>16) + { + $this->errormsg = 'sprache darf nicht laenger als 16 Zeichen sein'; + return false; + } + if(!is_bool($this->aktiv)) + { + $this->errormsg='Aktiv ist ungueltig'; + return false; + } + if(!is_bool($this->testtool_sprachwahl)) + { + $this->errormsg='Testtool_sprachwahl ist ungueltig'; + return false; + } + + $this->errormsg = ''; + return true; + } + + /** + * Speichert den aktuellen Datensatz in die Datenbank + * @return true wenn ok, false im Fehlerfall + */ + public function save() + { + //Variablen pruefen + if(!$this->validate()) + return false; + + if($this->new) + { + //Neuen Datensatz einfuegen + $qry='BEGIN;INSERT INTO lehre.tbl_studienplan (studienordnung_id, orgform_kurzbz,version, + bezeichnung, regelstudiendauer, sprache, aktiv, semesterwochen, testtool_sprachwahl, + insertamum, insertvon) VALUES ('. + $this->db_add_param($this->studienordnung_id, FHC_INTEGER).', '. + $this->db_add_param($this->orgform_kurzbz).', '. + $this->db_add_param($this->version).', '. + $this->db_add_param($this->bezeichnung).', '. + $this->db_add_param($this->regelstudiendauer, FHC_INTEGER).', '. + $this->db_add_param($this->sprache).', '. + $this->db_add_param($this->aktiv, FHC_BOOLEAN).', '. + $this->db_add_param($this->semesterwochen,FHC_INTEGER).', '. + $this->db_add_param($this->testtool_sprachwahl,FHC_BOOLEAN).', '. + 'now(), '. + $this->db_add_param($this->insertvon).');'; + } + else + { + //Pruefen ob studienplan_id eine gueltige Zahl ist + if(!is_numeric($this->studienplan_id)) + { + $this->errormsg = 'studienplan_id muss eine gueltige Zahl sein'; + return false; + } + $qry='UPDATE lehre.tbl_studienplan SET'. + ' studienordnung_id='.$this->db_add_param($this->studienordnung_id, FHC_INTEGER).', '. + ' orgform_kurzbz='.$this->db_add_param($this->orgform_kurzbz).', '. + ' version='.$this->db_add_param($this->version).', '. + ' bezeichnung='.$this->db_add_param($this->bezeichnung).', '. + ' regelstudiendauer='.$this->db_add_param($this->regelstudiendauer, FHC_INTEGER).', '. + ' sprache='.$this->db_add_param($this->sprache).', '. + ' aktiv='.$this->db_add_param($this->aktiv, FHC_BOOLEAN).', '. + ' semesterwochen='.$this->db_add_param($this->semesterwochen, FHC_INTEGER).', '. + ' testtool_sprachwahl='.$this->db_add_param($this->testtool_sprachwahl, FHC_BOOLEAN).','. + ' updateamum= now(), '. + ' updatevon='.$this->db_add_param($this->updatevon).' '. + ' WHERE studienplan_id='.$this->db_add_param($this->studienplan_id, FHC_INTEGER, false).';'; + } + + if($this->db_query($qry)) + { + if($this->new) + { + //naechste ID aus der Sequence holen + $qry="SELECT currval('lehre.seq_studienplan_studienplan_id') as id;"; + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->studienplan_id = $row->id; + $this->db_query('COMMIT'); + } + else + { + $this->db_query('ROLLBACK'); + $this->errormsg = "Fehler beim Auslesen der Sequence"; + return false; + } + } + else + { + $this->db_query('ROLLBACK'); + $this->errormsg = 'Fehler beim Auslesen der Sequence'; + return false; + } + } + + } + else + { + $this->errormsg = 'Fehler beim Speichern des Datensatzes'; + return false; + } + return $this->studienplan_id; + } + + /** + * Loescht den Datenensatz mit der ID die uebergeben wird + * @param $studienplan_id ID die geloescht werden soll + * @return true wenn ok, false im Fehlerfall + */ + public function delete($studienplan_id) + { + //Pruefen ob studienplan_id eine gueltige Zahl ist + if(!is_numeric($studienplan_id) || $studienplan_id === '') + { + $this->errormsg = 'studienplan_id muss eine gültige Zahl sein'."\n"; + return false; + } + + //loeschen des Datensatzes + $qry="DELETE FROM public.tbl_studienplan WHERE studienplan_id=".$this->db_add_param($studienplan_id, FHC_INTEGER, false).";"; + + if($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Löschen der Daten'."\n"; + return false; + } + } + + /** + * Baut die Datenstruktur für senden als JSON Objekt auf + */ + public function cleanResult() + { + $data = array(); + + if(count($this->result)>0) + { + foreach($this->result as $row) + { + $obj = new stdClass(); + $obj->studienplan_id = $row->studienplan_id; + $obj->studienordnung_id = $row->studienordnung_id; + $obj->orgform_kurzbz = $row->orgform_kurzbz; + $obj->version = $row->version; + $obj->bezeichnung = $row->bezeichnung; + $obj->regelstudiendauer = $row->regelstudiendauer; + $obj->sprache = $row->sprache; + $obj->aktiv = $row->aktiv; + $obj->semesterwochen = $row->semesterwochen; + $obj->testtool_sprachwahl = $row->testtool_sprachwahl; + $obj->updateamum = $row->updateamum; + $obj->updatevon = $row->updatevon; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + $obj->studienplan_lehrveranstaltung_id = $row->studienplan_lehrveranstaltung_id; + $obj->lehrveranstaltung_id = $row->lehrveranstaltung_id; + $obj->semester = $row->semester; + $obj->studienplan_lehrveranstaltung_id_parent = $row->studienplan_lehrveranstaltung_id_parent; + $obj->pflicht = $row->pflicht; + $obj->koordinator = $row->koordinator; + $data[]=$obj; + } + } + else + { + $obj = new stdClass(); + $obj->studienplan_id = $this->studienplan_id; + $obj->studienordnung_id = $this->studienordnung_id; + $obj->orgform_kurzbz = $this->orgform_kurzbz; + $obj->version = $this->version; + $obj->bezeichnung = $this->bezeichnung; + $obj->regelstudiendauer = $this->regelstudiendauer; + $obj->sprache = $this->sprache; + $obj->aktiv = $this->aktiv; + $obj->semesterwochen = $this->semesterwochen; + $obj->testtool_sprachwahl = $this->testtool_sprachwahl; + $obj->updateamum = $this->updateamum; + $obj->updatevon = $this->updatevon; + $obj->insertamum = $this->insertamum; + $obj->insertvon = $this->insertvon; + $obj->studienplan_lehrveranstaltung_id = $this->studienplan_lehrveranstaltung_id; + $obj->lehrveranstaltung_id = $this->lehrveranstaltung_id; + $obj->semester = $this->semester; + $obj->studienplan_lehrveranstaltung_id_parent = $this->studienplan_lehrveranstaltung_id_parent; + $obj->pflicht = $this->pflicht; + $obj->koordinator = $this->koordinator; + $data[]=$obj; + } + return $data; + } + + /** + * Prüft ob eine Lehrveranstaltung im Studienplan enthalten ist + * @return true wenn ja, sonst false + */ + public function containsLehrveranstaltung($studienplan_id, $lehrveranstaltung_id) + { + if (!is_numeric($studienplan_id) || $studienplan_id === '') + { + $this->errormsg = 'StudienplanID ist ungueltig'; + return false; + } + if (!is_numeric($lehrveranstaltung_id) || $lehrveranstaltung_id === '') + { + $this->errormsg = 'LehrveranstaltungID ist ungueltig'; + return false; + } + + $qry = "SELECT 1 FROM + lehre.tbl_studienplan_lehrveranstaltung + WHERE + studienplan_id=".$this->db_add_param($studienplan_id, FHC_INTEGER). + " AND lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER).";"; + + if (!$this->db_query($qry)) + { + $this->errormsg = 'Datensatz konnte nicht geladen werden'; + return false; + } + if($this->db_num_rows()!=0) + { + return true; + } + else + { + return false; + } + } + + /** + * Speichert die Zuordnung einer Lehrveranstaltung zu einem Studienplan + * @return true wenn ok, false im Fehlerfall + */ + public function saveStudienplanLehrveranstaltung() + { + + if ($this->new) + { + //Neuen Datensatz einfuegen + $qry = 'BEGIN;INSERT INTO lehre.tbl_studienplan_lehrveranstaltung (studienplan_id, lehrveranstaltung_id, + semester,studienplan_lehrveranstaltung_id_parent,pflicht, koordinator, + insertamum, insertvon) VALUES (' . + $this->db_add_param($this->studienplan_id, FHC_INTEGER) . ', ' . + $this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER) . ', ' . + $this->db_add_param($this->semester, FHC_INTEGER) . ', ' . + $this->db_add_param($this->studienplan_lehrveranstaltung_id_parent, FHC_INTEGER) . ', ' . + $this->db_add_param($this->pflicht, FHC_BOOLEAN) . ', ' . + $this->db_add_param($this->koordinator) . ', ' . + 'now(), ' . + $this->db_add_param($this->insertvon) . ');'; + } + else + { + //Pruefen ob studienplan_id eine gueltige Zahl ist + if (!is_numeric($this->studienplan_lehrveranstaltung_id)) + { + $this->errormsg = 'studienplan_lehrveranstaltung_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = 'UPDATE lehre.tbl_studienplan_lehrveranstaltung SET' . + ' studienplan_id=' . $this->db_add_param($this->studienplan_id, FHC_INTEGER) . ', ' . + ' lehrveranstaltung_id=' . $this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER) . ', ' . + ' semester=' . $this->db_add_param($this->semester, FHC_INTEGER) . ', ' . + ' studienplan_lehrveranstaltung_id_parent=' . $this->db_add_param($this->studienplan_lehrveranstaltung_id_parent, FHC_INTEGER) . ', ' . + ' pflicht=' . $this->db_add_param($this->pflicht, FHC_BOOLEAN) . ', ' . + ' koordinator=' . $this->db_add_param($this->koordinator) . ', ' . + ' updateamum= now(), ' . + ' updatevon=' . $this->db_add_param($this->updatevon) . ' ' . + ' WHERE studienplan_lehrveranstaltung_id=' . $this->db_add_param($this->studienplan_lehrveranstaltung_id, FHC_INTEGER, false) . ';'; + + // Bei allen darunterliegenden Zuordnungen wird das Semester angepasst, damit beim + // verschieben von Modulen die darunterliegenden Eintraege korrekt sind + $qry.=' + UPDATE lehre.tbl_studienplan_lehrveranstaltung SET semester='.$this->db_add_param($this->semester).' + WHERE studienplan_lehrveranstaltung_id IN( + WITH RECURSIVE stpllv(studienplan_lehrveranstaltung_id, studienplan_lehrveranstaltung_id_parent) as + ( + SELECT studienplan_lehrveranstaltung_id, studienplan_lehrveranstaltung_id_parent + FROM lehre.tbl_studienplan_lehrveranstaltung + WHERE studienplan_lehrveranstaltung_id='.$this->db_add_param($this->studienplan_lehrveranstaltung_id, FHC_INTEGER).' + UNION ALL + SELECT st.studienplan_lehrveranstaltung_id, st.studienplan_lehrveranstaltung_id_parent + FROM lehre.tbl_studienplan_lehrveranstaltung st, stpllv + WHERE st.studienplan_lehrveranstaltung_id_parent=stpllv.studienplan_lehrveranstaltung_id + ) + SELECT studienplan_lehrveranstaltung_id + FROM stpllv + GROUP BY studienplan_lehrveranstaltung_id);'; + } + + if ($this->db_query($qry)) + { + if ($this->new) + { + //naechste ID aus der Sequence holen + $qry = "SELECT currval('lehre.seq_studienplan_studienplan_lehrveranstaltung_id') as id;"; + if ($this->db_query($qry)) + { + if ($row = $this->db_fetch_object()) + { + $this->studienplan_lehrveranstaltung_id = $row->id; + $this->db_query('COMMIT'); + } + else + { + $this->db_query('ROLLBACK'); + $this->errormsg = "Fehler beim Auslesen der Sequence"; + return false; + } + } + else + { + $this->db_query('ROLLBACK'); + $this->errormsg = 'Fehler beim Auslesen der Sequence'; + return false; + } + } + } + else + { + $this->errormsg = 'Fehler beim Speichern des Datensatzes'; + return false; + } + return $this->studienplan_lehrveranstaltung_id; + } + + /** + * Laedt einen StudienplanLehrveranstaltung Eintrag + * + * @param $studienplan_lehrveranstaltung_id ID der Zuordnung + */ + public function loadStudienplanLehrveranstaltung($studienplan_lehrveranstaltung_id) + { + $qry = "SELECT * FROM lehre.tbl_studienplan_lehrveranstaltung WHERE studienplan_lehrveranstaltung_id=".$this->db_add_param($studienplan_lehrveranstaltung_id); + + if($result = $this->db_query($qry)) + { + if($row = $this->db_fetch_object($result)) + { + $this->studienplan_lehrveranstaltung_id = $row->studienplan_lehrveranstaltung_id; + $this->semester = $row->semester; + $this->pflicht = $this->db_parse_bool($row->pflicht); + $this->studienplan_id = $row->studienplan_id; + $this->koordinator = $row->koordinator; + $this->studienplan_lehrveranstaltung_id_parent = $row->studienplan_lehrveranstaltung_id_parent; + $this->lehrveranstaltung_id = $row->lehrveranstaltung_id; + $this->insertamum = $row->insertamum; + $this->insertvon = $row->insertvon; + $this->updateamum = $row->updateamum; + $this->updatevon = $row->updatevon; + $this->new=false; + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * 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 + * @return boolean + */ + public function deleteStudienplanLehrveranstaltung($studienplan_lehrveranstaltung_id) + { + //Pruefen ob studienplan_lehrveranstaltung_id eine gueltige Zahl ist + if(!is_numeric($studienplan_lehrveranstaltung_id) || $studienplan_lehrveranstaltung_id === '') + { + $this->errormsg = 'studienplan_lehrveranstaltung_id muss eine gültige Zahl sein'."\n"; + return false; + } + + $qry = "DELETE from lehre.tbl_studienplan_lehrveranstaltung + WHERE studienplan_lehrveranstaltung_id=".$this->db_add_param($studienplan_lehrveranstaltung_id, FHC_INTEGER).";"; + + if($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Löschen der Daten'."\n"; + return false; + } + } + + /** + * Holt den aktiven Studienplan eines Studiensemester / Ausbildungssemesters + * @param studiensemester_kurzbz + * @param $ausbuldungssemester + * @param $orgform_kurzbz + */ + function getStudienplan($studiengang_kz, $studiensemester_kurzbz, $ausbildungssemester, $orgform_kurzbz) + { + $qry = "SELECT + tbl_studienplan.studienplan_id + FROM + lehre.tbl_studienplan + JOIN lehre.tbl_studienordnung USING(studienordnung_id) + JOIN lehre.tbl_studienordnung_semester USING(studienordnung_id) + WHERE + tbl_studienplan.aktiv + AND tbl_studienordnung.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER)." + AND tbl_studienordnung_semester.studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)." + AND tbl_studienordnung_semester.semester=".$this->db_add_param($ausbildungssemester); + + if($orgform_kurzbz!='') + { + $qry.=" AND orgform_kurzbz=".$this->db_add_param($orgform_kurzbz); + } + + if($result = $this->db_query($qry)) + { + if($row = $this->db_fetch_object($result)) + { + return $row->studienplan_id; + } + } + } + + /** + * Holt alle Studienplaene eines Studienganges + * @param $studiengang_kz + */ + function getStudienplaene($studiengang_kz) + { + $qry = "SELECT + distinct tbl_studienplan.* + FROM + lehre.tbl_studienplan + JOIN lehre.tbl_studienordnung USING(studienordnung_id) + WHERE + tbl_studienordnung.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER); + + if($result = $this->db_query($qry)) { - parent::__construct(); - } - - public function __set($name,$value) - { - $this->$name=$value; - } - - public function __get($name) - { - return $this->$name; - } - - /** - * Laedt Studienplan mit der ID $studienplan_id - * @param $studienplan_id ID des zu ladenden Studienplanes - * @return true wenn ok, false im Fehlerfall - */ - public function loadStudienplan($studienplan_id) - { - //Pruefen ob studienplan_id eine gueltige Zahl ist - if(!is_numeric($studienplan_id) || $studienplan_id === '') - { - $this->errormsg = 'Studienplan_id muss eine Zahl sein'; - return false; - } - - //Daten aus der Datenbank lesen - $qry = "SELECT * FROM lehre.tbl_studienplan WHERE studienplan_id=".$this->db_add_param($studienplan_id, FHC_INTEGER, false); - - if(!$this->db_query($qry)) - { - $this->errormsg = 'Fehler bei einer Datenbankabfrage'; - return false; - } - - if($row = $this->db_fetch_object()) - { - $this->studienplan_id = $row->studienplan_id; - $this->studienordnung_id = $row->studienordnung_id; - $this->orgform_kurzbz = $row->orgform_kurzbz; - $this->version = $row->version; - $this->bezeichnung = $row->bezeichnung; - $this->regelstudiendauer = $row->regelstudiendauer; - $this->sprache = $row->sprache; - $this->aktiv = $this->db_parse_bool($row->aktiv); - $this->semesterwochen = $row->semesterwochen; - $this->testtool_sprachwahl = $this->db_parse_bool($row->testtool_sprachwahl); - $this->updateamum = $row->updateamum; - $this->updatevon = $row->updatevon; - $this->insertamum = $row->insertamum; - $this->insertvon = $row->insertvon; - $this->new=false; - - return true; - } - else - { - $this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden'; - return false; - } - } - - /** - * Laedt die Studienplaene einer Studienordnung und Optional einer Organisationsform - * - * @param $studienordnung_id ID der Studienordnung - * @param $orgform_kurzbz Organisationsform - * @return boolean true wenn ok, false im Fehlerfall - */ - public function loadStudienplanSTO($studienordnung_id, $orgform_kurzbz=null) - { - //Pruefen ob studienordnung_id eine gueltige Zahl ist - if(!is_numeric($studienordnung_id) || $studienordnung_id === '') - { - $this->errormsg = 'Studienordnung_id muss eine Zahl sein'; - return false; - } - - //Daten aus der Datenbank lesen - $qry = "SELECT * FROM lehre.tbl_studienplan WHERE studienordnung_id=".$this->db_add_param($studienordnung_id, FHC_INTEGER, false); - - if(!is_null($orgform_kurzbz)) - $qry.=" AND orgform_kurzbz=".$this->db_add_param($orgform_kurzbz); - - if($this->db_query($qry)) - { - while($row = $this->db_fetch_object()) - { - $obj = new studienplan(); - - $obj->studienplan_id = $row->studienplan_id; - $obj->studienordnung_id = $row->studienordnung_id; - $obj->orgform_kurzbz = $row->orgform_kurzbz; - $obj->version = $row->version; - $obj->bezeichnung = $row->bezeichnung; - $obj->regelstudiendauer = $row->regelstudiendauer; - $obj->sprache = $row->sprache; - $obj->aktiv = $this->db_parse_bool($row->aktiv); - $obj->semesterwochen = $row->semesterwochen; - $obj->testtool_sprachwahl = $this->db_parse_bool($row->testtool_sprachwahl); - $obj->updateamum = $row->updateamum; - $obj->updatevon = $row->updatevon; - $obj->insertamum = $row->insertamum; - $obj->insertvon = $row->insertvon; - $obj->new=false; - - $this->result[] = $obj; - } - - return true; - } - else - { - $this->errormsg = 'Fehler bei einer Datenbankabfrage'; - return false; - } - } - - /** - * Prueft die Variablen auf Gueltigkeit - * @return true wenn ok, false im Fehlerfall - */ - protected function validate() - { - //Zahlenfelder pruefen - if(!is_numeric($this->studienordnung_id)) - { - $this->errormsg='studienordnung_id enthaelt ungueltige Zeichen'; - return false; - } - - if(!is_numeric($this->regelstudiendauer)) - { - $this->errormsg='regelstudiendauer enthaelt ungueltige Zeichen oder ist leer'; - return false; - } - if(!is_numeric($this->semesterwochen) && $this->semesterwochen!=='') - { - $this->errormsg='semesterwochen enthaelt ungueltige Zeichen'; - return false; - } - - //Gesamtlaenge pruefen - if(mb_strlen($this->version)>256) - { - $this->errormsg = 'Version darf nicht länger als 256 Zeichen sein'; - return false; - } - if(mb_strlen($this->bezeichnung)>256) - { - $this->errormsg = 'Bezeichnung darf nicht länger als 256 Zeichen sein'; - return false; - } - if(mb_strlen($this->orgform_kurzbz)>3) - { - $this->errormsg = 'Orgform_kurzbz darf nicht laenger als 3 Zeichen sein'; - return false; - } - if(mb_strlen($this->sprache)>16) - { - $this->errormsg = 'sprache darf nicht laenger als 16 Zeichen sein'; - return false; - } - if(!is_bool($this->aktiv)) - { - $this->errormsg='Aktiv ist ungueltig'; - return false; - } - if(!is_bool($this->testtool_sprachwahl)) - { - $this->errormsg='Testtool_sprachwahl ist ungueltig'; - return false; - } - - $this->errormsg = ''; - return true; - } - - /** - * Speichert den aktuellen Datensatz in die Datenbank - * @return true wenn ok, false im Fehlerfall - */ - public function save() - { - //Variablen pruefen - if(!$this->validate()) - return false; - - if($this->new) - { - //Neuen Datensatz einfuegen - $qry='BEGIN;INSERT INTO lehre.tbl_studienplan (studienordnung_id, orgform_kurzbz,version, - bezeichnung, regelstudiendauer, sprache, aktiv, semesterwochen, testtool_sprachwahl, - insertamum, insertvon) VALUES ('. - $this->db_add_param($this->studienordnung_id, FHC_INTEGER).', '. - $this->db_add_param($this->orgform_kurzbz).', '. - $this->db_add_param($this->version).', '. - $this->db_add_param($this->bezeichnung).', '. - $this->db_add_param($this->regelstudiendauer, FHC_INTEGER).', '. - $this->db_add_param($this->sprache).', '. - $this->db_add_param($this->aktiv, FHC_BOOLEAN).', '. - $this->db_add_param($this->semesterwochen,FHC_INTEGER).', '. - $this->db_add_param($this->testtool_sprachwahl,FHC_BOOLEAN).', '. - 'now(), '. - $this->db_add_param($this->insertvon).');'; - } - else - { - //Pruefen ob studienplan_id eine gueltige Zahl ist - if(!is_numeric($this->studienplan_id)) - { - $this->errormsg = 'studienplan_id muss eine gueltige Zahl sein'; - return false; - } - $qry='UPDATE lehre.tbl_studienplan SET'. - ' studienordnung_id='.$this->db_add_param($this->studienordnung_id, FHC_INTEGER).', '. - ' orgform_kurzbz='.$this->db_add_param($this->orgform_kurzbz).', '. - ' version='.$this->db_add_param($this->version).', '. - ' bezeichnung='.$this->db_add_param($this->bezeichnung).', '. - ' regelstudiendauer='.$this->db_add_param($this->regelstudiendauer, FHC_INTEGER).', '. - ' sprache='.$this->db_add_param($this->sprache).', '. - ' aktiv='.$this->db_add_param($this->aktiv, FHC_BOOLEAN).', '. - ' semesterwochen='.$this->db_add_param($this->semesterwochen, FHC_INTEGER).', '. - ' testtool_sprachwahl='.$this->db_add_param($this->testtool_sprachwahl, FHC_BOOLEAN).','. - ' updateamum= now(), '. - ' updatevon='.$this->db_add_param($this->updatevon).' '. - ' WHERE studienplan_id='.$this->db_add_param($this->studienplan_id, FHC_INTEGER, false).';'; - } - - if($this->db_query($qry)) - { - if($this->new) - { - //naechste ID aus der Sequence holen - $qry="SELECT currval('lehre.seq_studienplan_studienplan_id') as id;"; - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - $this->studienplan_id = $row->id; - $this->db_query('COMMIT'); - } - else - { - $this->db_query('ROLLBACK'); - $this->errormsg = "Fehler beim Auslesen der Sequence"; - return false; - } - } - else - { - $this->db_query('ROLLBACK'); - $this->errormsg = 'Fehler beim Auslesen der Sequence'; - return false; - } - } - - } - else - { - $this->errormsg = 'Fehler beim Speichern des Datensatzes'; - return false; - } - return $this->studienplan_id; - } - - /** - * Loescht den Datenensatz mit der ID die uebergeben wird - * @param $studienplan_id ID die geloescht werden soll - * @return true wenn ok, false im Fehlerfall - */ - public function delete($studienplan_id) - { - //Pruefen ob studienplan_id eine gueltige Zahl ist - if(!is_numeric($studienplan_id) || $studienplan_id === '') - { - $this->errormsg = 'studienplan_id muss eine gültige Zahl sein'."\n"; - return false; - } - - //loeschen des Datensatzes - $qry="DELETE FROM public.tbl_studienplan WHERE studienplan_id=".$this->db_add_param($studienplan_id, FHC_INTEGER, false).";"; - - if($this->db_query($qry)) - { - return true; - } - else - { - $this->errormsg = 'Fehler beim Löschen der Daten'."\n"; - return false; - } - } - - /** - * Baut die Datenstruktur für senden als JSON Objekt auf - */ - public function cleanResult() - { - $data = array(); - - if(count($this->result)>0) - { - foreach($this->result as $row) - { - $obj = new stdClass(); - $obj->studienplan_id = $row->studienplan_id; - $obj->studienordnung_id = $row->studienordnung_id; - $obj->orgform_kurzbz = $row->orgform_kurzbz; - $obj->version = $row->version; - $obj->bezeichnung = $row->bezeichnung; - $obj->regelstudiendauer = $row->regelstudiendauer; - $obj->sprache = $row->sprache; - $obj->aktiv = $row->aktiv; - $obj->semesterwochen = $row->semesterwochen; - $obj->testtool_sprachwahl = $row->testtool_sprachwahl; - $obj->updateamum = $row->updateamum; - $obj->updatevon = $row->updatevon; - $obj->insertamum = $row->insertamum; - $obj->insertvon = $row->insertvon; - $obj->studienplan_lehrveranstaltung_id = $row->studienplan_lehrveranstaltung_id; - $obj->lehrveranstaltung_id = $row->lehrveranstaltung_id; - $obj->semester = $row->semester; - $obj->studienplan_lehrveranstaltung_id_parent = $row->studienplan_lehrveranstaltung_id_parent; - $obj->pflicht = $row->pflicht; - $obj->koordinator = $row->koordinator; - $data[]=$obj; - } - } - else - { - $obj = new stdClass(); - $obj->studienplan_id = $this->studienplan_id; - $obj->studienordnung_id = $this->studienordnung_id; - $obj->orgform_kurzbz = $this->orgform_kurzbz; - $obj->version = $this->version; - $obj->bezeichnung = $this->bezeichnung; - $obj->regelstudiendauer = $this->regelstudiendauer; - $obj->sprache = $this->sprache; - $obj->aktiv = $this->aktiv; - $obj->semesterwochen = $this->semesterwochen; - $obj->testtool_sprachwahl = $this->testtool_sprachwahl; - $obj->updateamum = $this->updateamum; - $obj->updatevon = $this->updatevon; - $obj->insertamum = $this->insertamum; - $obj->insertvon = $this->insertvon; - $obj->studienplan_lehrveranstaltung_id = $this->studienplan_lehrveranstaltung_id; - $obj->lehrveranstaltung_id = $this->lehrveranstaltung_id; - $obj->semester = $this->semester; - $obj->studienplan_lehrveranstaltung_id_parent = $this->studienplan_lehrveranstaltung_id_parent; - $obj->pflicht = $this->pflicht; - $obj->koordinator = $this->koordinator; - $data[]=$obj; - } - return $data; - } - - /** - * Prüft ob eine Lehrveranstaltung im Studienplan enthalten ist - * @return true wenn ja, sonst false - */ - public function containsLehrveranstaltung($studienplan_id, $lehrveranstaltung_id) - { - if (!is_numeric($studienplan_id) || $studienplan_id === '') - { - $this->errormsg = 'StudienplanID ist ungueltig'; - return false; - } - if (!is_numeric($lehrveranstaltung_id) || $lehrveranstaltung_id === '') - { - $this->errormsg = 'LehrveranstaltungID ist ungueltig'; - return false; - } - - $qry = "SELECT 1 FROM - lehre.tbl_studienplan_lehrveranstaltung - WHERE - studienplan_id=".$this->db_add_param($studienplan_id, FHC_INTEGER). - " AND lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER).";"; - - if (!$this->db_query($qry)) - { - $this->errormsg = 'Datensatz konnte nicht geladen werden'; - return false; - } - if($this->db_num_rows()!=0) - { - return true; - } - else - { - return false; - } - } - - /** - * Speichert die Zuordnung einer Lehrveranstaltung zu einem Studienplan - * @return true wenn ok, false im Fehlerfall - */ - public function saveStudienplanLehrveranstaltung() - { - - if ($this->new) - { - //Neuen Datensatz einfuegen - $qry = 'BEGIN;INSERT INTO lehre.tbl_studienplan_lehrveranstaltung (studienplan_id, lehrveranstaltung_id, - semester,studienplan_lehrveranstaltung_id_parent,pflicht, koordinator, - insertamum, insertvon) VALUES (' . - $this->db_add_param($this->studienplan_id, FHC_INTEGER) . ', ' . - $this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER) . ', ' . - $this->db_add_param($this->semester, FHC_INTEGER) . ', ' . - $this->db_add_param($this->studienplan_lehrveranstaltung_id_parent, FHC_INTEGER) . ', ' . - $this->db_add_param($this->pflicht, FHC_BOOLEAN) . ', ' . - $this->db_add_param($this->koordinator) . ', ' . - 'now(), ' . - $this->db_add_param($this->insertvon) . ');'; - } - else - { - //Pruefen ob studienplan_id eine gueltige Zahl ist - if (!is_numeric($this->studienplan_lehrveranstaltung_id)) - { - $this->errormsg = 'studienplan_lehrveranstaltung_id muss eine gueltige Zahl sein'; - return false; - } - - $qry = 'UPDATE lehre.tbl_studienplan_lehrveranstaltung SET' . - ' studienplan_id=' . $this->db_add_param($this->studienplan_id, FHC_INTEGER) . ', ' . - ' lehrveranstaltung_id=' . $this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER) . ', ' . - ' semester=' . $this->db_add_param($this->semester, FHC_INTEGER) . ', ' . - ' studienplan_lehrveranstaltung_id_parent=' . $this->db_add_param($this->studienplan_lehrveranstaltung_id_parent, FHC_INTEGER) . ', ' . - ' pflicht=' . $this->db_add_param($this->pflicht, FHC_BOOLEAN) . ', ' . - ' koordinator=' . $this->db_add_param($this->koordinator) . ', ' . - ' updateamum= now(), ' . - ' updatevon=' . $this->db_add_param($this->updatevon) . ' ' . - ' WHERE studienplan_lehrveranstaltung_id=' . $this->db_add_param($this->studienplan_lehrveranstaltung_id, FHC_INTEGER, false) . ';'; - - // Bei allen darunterliegenden Zuordnungen wird das Semester angepasst, damit beim - // verschieben von Modulen die darunterliegenden Eintraege korrekt sind - $qry.=' - UPDATE lehre.tbl_studienplan_lehrveranstaltung SET semester='.$this->db_add_param($this->semester).' - WHERE studienplan_lehrveranstaltung_id IN( - WITH RECURSIVE stpllv(studienplan_lehrveranstaltung_id, studienplan_lehrveranstaltung_id_parent) as - ( - SELECT studienplan_lehrveranstaltung_id, studienplan_lehrveranstaltung_id_parent - FROM lehre.tbl_studienplan_lehrveranstaltung - WHERE studienplan_lehrveranstaltung_id='.$this->db_add_param($this->studienplan_lehrveranstaltung_id, FHC_INTEGER).' - UNION ALL - SELECT st.studienplan_lehrveranstaltung_id, st.studienplan_lehrveranstaltung_id_parent - FROM lehre.tbl_studienplan_lehrveranstaltung st, stpllv - WHERE st.studienplan_lehrveranstaltung_id_parent=stpllv.studienplan_lehrveranstaltung_id - ) - SELECT studienplan_lehrveranstaltung_id - FROM stpllv - GROUP BY studienplan_lehrveranstaltung_id);'; - } - - if ($this->db_query($qry)) - { - if ($this->new) - { - //naechste ID aus der Sequence holen - $qry = "SELECT currval('lehre.seq_studienplan_studienplan_lehrveranstaltung_id') as id;"; - if ($this->db_query($qry)) - { - if ($row = $this->db_fetch_object()) - { - $this->studienplan_lehrveranstaltung_id = $row->id; - $this->db_query('COMMIT'); - } - else - { - $this->db_query('ROLLBACK'); - $this->errormsg = "Fehler beim Auslesen der Sequence"; - return false; - } - } - else - { - $this->db_query('ROLLBACK'); - $this->errormsg = 'Fehler beim Auslesen der Sequence'; - return false; - } - } - } - else - { - $this->errormsg = 'Fehler beim Speichern des Datensatzes'; - return false; - } - return $this->studienplan_lehrveranstaltung_id; - } - - /** - * Laedt einen StudienplanLehrveranstaltung Eintrag - * - * @param $studienplan_lehrveranstaltung_id ID der Zuordnung - */ - public function loadStudienplanLehrveranstaltung($studienplan_lehrveranstaltung_id) - { - $qry = "SELECT * FROM lehre.tbl_studienplan_lehrveranstaltung WHERE studienplan_lehrveranstaltung_id=".$this->db_add_param($studienplan_lehrveranstaltung_id); - - if($result = $this->db_query($qry)) - { - if($row = $this->db_fetch_object($result)) - { - $this->studienplan_lehrveranstaltung_id = $row->studienplan_lehrveranstaltung_id; - $this->semester = $row->semester; - $this->pflicht = $this->db_parse_bool($row->pflicht); - $this->studienplan_id = $row->studienplan_id; - $this->koordinator = $row->koordinator; - $this->studienplan_lehrveranstaltung_id_parent = $row->studienplan_lehrveranstaltung_id_parent; - $this->lehrveranstaltung_id = $row->lehrveranstaltung_id; - $this->insertamum = $row->insertamum; - $this->insertvon = $row->insertvon; - $this->updateamum = $row->updateamum; - $this->updatevon = $row->updatevon; - $this->new=false; - return true; - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - /** - * 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 - * @return boolean - */ - public function deleteStudienplanLehrveranstaltung($studienplan_lehrveranstaltung_id) - { - //Pruefen ob studienplan_lehrveranstaltung_id eine gueltige Zahl ist - if(!is_numeric($studienplan_lehrveranstaltung_id) || $studienplan_lehrveranstaltung_id === '') - { - $this->errormsg = 'studienplan_lehrveranstaltung_id muss eine gültige Zahl sein'."\n"; - return false; - } - - $qry = "DELETE from lehre.tbl_studienplan_lehrveranstaltung - WHERE studienplan_lehrveranstaltung_id=".$this->db_add_param($studienplan_lehrveranstaltung_id, FHC_INTEGER).";"; - - if($this->db_query($qry)) - { - return true; - } - else - { - $this->errormsg = 'Fehler beim Löschen der Daten'."\n"; - return false; - } - } - - /** - * Holt den aktiven Studienplan eines Studiensemester / Ausbildungssemesters - * @param studiensemester_kurzbz - * @param $ausbuldungssemester - * @param $orgform_kurzbz - */ - function getStudienplan($studiengang_kz, $studiensemester_kurzbz, $ausbildungssemester, $orgform_kurzbz) - { - $qry = "SELECT - tbl_studienplan.studienplan_id - FROM - lehre.tbl_studienplan - JOIN lehre.tbl_studienordnung USING(studienordnung_id) - JOIN lehre.tbl_studienordnung_semester USING(studienordnung_id) - WHERE - tbl_studienplan.aktiv - AND tbl_studienordnung.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER)." - AND tbl_studienordnung_semester.studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)." - AND tbl_studienordnung_semester.semester=".$this->db_add_param($ausbildungssemester); - - if($orgform_kurzbz!='') - { - $qry.=" AND orgform_kurzbz=".$this->db_add_param($orgform_kurzbz); - } - - if($result = $this->db_query($qry)) - { - if($row = $this->db_fetch_object($result)) - { - return $row->studienplan_id; - } - } - } - - /** - * Holt alle Studienplaene eines Studienganges - * @param $studiengang_kz - */ - function getStudienplaene($studiengang_kz) - { - $qry = "SELECT - distinct tbl_studienplan.* - FROM - lehre.tbl_studienplan - JOIN lehre.tbl_studienordnung USING(studienordnung_id) - WHERE - tbl_studienordnung.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER); - - if($result = $this->db_query($qry)) - { - while($row = $this->db_fetch_object($result)) - { - $obj = new studienplan(); - - $obj->studienplan_id = $row->studienplan_id; - $obj->studienordnung_id = $row->studienordnung_id; - $obj->orgform_kurzbz = $row->orgform_kurzbz; - $obj->version = $row->version; - $obj->bezeichnung = $row->bezeichnung; - $obj->regelstudiendauer = $row->regelstudiendauer; - $obj->sprache = $row->sprache; - $obj->aktiv = $this->db_parse_bool($row->aktiv); - $obj->semesterwochen = $row->semesterwochen; - $obj->testtool_sprachwahl = $this->db_parse_bool($row->testtool_sprachwahl); - $obj->updateamum = $row->updateamum; - $obj->updatevon = $row->updatevon; - $obj->insertamum = $row->insertamum; - $obj->insertvon = $row->insertvon; - $obj->new=false; - - $this->result[] = $obj; - } - return true; - } + while($row = $this->db_fetch_object($result)) + { + $obj = new studienplan(); + + $obj->studienplan_id = $row->studienplan_id; + $obj->studienordnung_id = $row->studienordnung_id; + $obj->orgform_kurzbz = $row->orgform_kurzbz; + $obj->version = $row->version; + $obj->bezeichnung = $row->bezeichnung; + $obj->regelstudiendauer = $row->regelstudiendauer; + $obj->sprache = $row->sprache; + $obj->aktiv = $this->db_parse_bool($row->aktiv); + $obj->semesterwochen = $row->semesterwochen; + $obj->testtool_sprachwahl = $this->db_parse_bool($row->testtool_sprachwahl); + $obj->updateamum = $row->updateamum; + $obj->updatevon = $row->updatevon; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + $obj->new=false; + + $this->result[] = $obj; + } + return true; } + } } ?> diff --git a/vilesci/lehre/studienordnung.js b/vilesci/lehre/studienordnung.js index 02e378a48..8c02feba0 100644 --- a/vilesci/lehre/studienordnung.js +++ b/vilesci/lehre/studienordnung.js @@ -448,8 +448,7 @@ function loadLehrveranstaltungSTPL(studienplan_id, bezeichnung, max_semester) var conf = confirm("Wollen Sie \""+this.get_text(obj)+"\" wirklich aus diesem Studienplan löschen?"); if(conf) { - this.remove(obj); - deleteLehrveranstaltungFromStudienplan(obj.attr("studienplan_lehrveranstaltung_id")); + deleteLehrveranstaltungFromStudienplan(obj.attr("studienplan_lehrveranstaltung_id"), this, obj); } } else @@ -1078,7 +1077,7 @@ function TreeSaveError(xhr, textStatus, errorThrown) /** * Entfernt eine LV Zuordnung */ -function deleteLehrveranstaltungFromStudienplan(lehrveranstaltung_studienplan_id) +function deleteLehrveranstaltungFromStudienplan(lehrveranstaltung_studienplan_id, tree, obj) { $.ajax({ dataType: "json", @@ -1086,16 +1085,41 @@ function deleteLehrveranstaltungFromStudienplan(lehrveranstaltung_studienplan_id type: "POST", data: { "typ": "json", - "class": "studienplan", - "method": "deleteStudienplanLehrveranstaltung", - "parameter_0" : lehrveranstaltung_studienplan_id + "class": "lvregel", + "method": "exists", + "parameter_0": lehrveranstaltung_studienplan_id }, error: loadError - }).success(function(data) - { - if(data.error==true) + }).success(function(data){ + console.log(data); + if(data.return === false) { - alert('Fehler beim Entfernen:'+data.errormsg); + $.ajax({ + dataType: "json", + url: "../../soap/fhcomplete.php", + type: "POST", + data: { + "typ": "json", + "class": "studienplan", + "method": "deleteStudienplanLehrveranstaltung", + "parameter_0" : lehrveranstaltung_studienplan_id + }, + error: loadError + }).success(function(data) + { + if(data.error==true) + { + alert('Fehler beim Entfernen:'+data.errormsg); + } + else + { + tree.remove(obj); + } + }); + } + else + { + alert("Es müssen zuerst die LV-Regeln gelöscht werden."); } }); }