diff --git a/include/Authorization.class.php b/include/Authorization.class.php deleted file mode 100644 index f15ac49ce..000000000 --- a/include/Authorization.class.php +++ /dev/null @@ -1,123 +0,0 @@ - - * date: - * title: Authorization.class.php - * manual: $auth = new Authorization($uid, $course_id, $semester, $lesson); - * - * Tries to login a user as a student, if fails, it tries - * to login as a teacher. - * returns 0 for student - * 1 for teacher - * -1 on error - * holt den firstname, lastname, uid und id des Benutzers - */ -class Authorization -{ - var $firstname; - var $lastname; - var $id; - var $uid; - var $stg_id; - var $semester; - var $verband; - var $gruppe; - var $isLector; - var $module; - var $lehrfach; - var $date; - var $session; - var $birthday; - - function Authorization($uid ="", $course_id = 0, $semester = 0, $lesson = "",$conn="") - { - $this->isLector = -1; - $this->module = 0; - - if ($uid == "oesi" || $uid == "kates") - { - $this->uid = $uid; - $this->stg_id = $course_id; - $this->lehrfach = $lesson; - $this->semester = $semester; - $this->isLector = 1; - return $this->isLector; - } - - // try to looon as a student - $sql = "SELECT * ". - "FROM tbl_student JOIN tbl_person USING (uid) WHERE - uid = '$uid' AND studiengang_kz = $course_id - AND semester >= $semester"; - - $rs = new pgRS($conn,$sql); - - if ($rs->num > 0) - { - $this->firstname = $rs->arr[0]["vornamen"]; - $this->lastname = $rs->arr[0]["nachname"]; - //$this->id = $rs->arr[0]["id"]; - $this->uid = $uid; - $this->stg_id = $rs->arr[0]["studiengang_kz"]; - $this->semester = $rs->arr[0]["semester"]; - $this->verband = $rs->arr[0]["verband"]; - $this->gruppe = $rs->arr[0]["gruppe"]; - $this->birthday = $rs->arr[0]["gebdatum"]; - $this->isLector = 0; - } - else - { - /* oesi 17-01-2005 - $sql = "SELECT * FROM lehre.tbl_lehrfachzuteilung JOIN tbl_person ON - (lektor_uid = uid) WHERE lektor_uid = '$uid' AND - lehrfachzuteilung_kurzbz = '$lesson' AND - semester = $semester AND studiengang_kz = $course_id LIMIT 1"; - */ - $sql = "SELECT * FROM tbl_lehrveranstaltung, tbl_lehrfach, tbl_person WHERE - tbl_lehrveranstaltung.lehrfach_nr=tbl_lehrfach.lehrfach_nr AND - tbl_person.uid=lektor AND lektor='$uid' AND - tbl_lehrfach.studiengang_kz=$course_id AND - tbl_lehrfach.semester=$semester AND lehrevz='$lesson' LIMIT 1"; - - $rs = new pgRS($conn,$sql); - if ($rs->num > 0) - { - $this->firstname = $rs->arr[0]["vornamen"]; - $this->lastname = $rs->arr[0]["nachname"]; - $this->birthday = $rs->arr[0]["gebdatum"]; - $this->uid = $uid; - $this->stg_id = $course_id; - $this->lehrfach = $lesson; - $this->semester = $semester; - $this->isLector = 1; - } - else - { - //$sql = "SELECT DISTINCT tbl_person.uid FROM public.tbl_person, lehre.tbl_lehrfachzuteilung WHERE tbl_person.uid='$uid' AND tbl_lehrfachzuteilung.lektor_uid=tbl_person.uid AND studiengang_kz='$course_id' UNION SELECT DISTINCT tbl_person.uid FROM public.tbl_person, public.tbl_personfunktion WHERE tbl_person.uid='$uid' AND tbl_personfunktion.uid=tbl_person.uid AND studiengang_kz='$course_id' LIMIT 1"; - $sql = "SELECT vornamen, nachname, gebdatum FROM public.tbl_person, tbl_lehrveranstaltung - WHERE tbl_person.uid='$uid' AND tbl_lehrveranstaltung.lektor=tbl_person.uid AND - studiengang_kz='$course_id' - UNION - SELECT vornamen, nachname, gebdatum FROM public.tbl_person, public.tbl_personfunktion - WHERE tbl_person.uid='$uid' AND tbl_personfunktion.uid=tbl_person.uid AND - studiengang_kz='$course_id' LIMIT 1"; - - $rs = new pgRS($conn,$sql); - - if ($rs->num > 0) - { - $this->firstname = $rs->arr[0]["vornamen"]; - $this->lastname = $rs->arr[0]["nachname"]; - $this->birthday = $rs->arr[0]["gebdatum"]; - $this->uid = $uid; - $this->stg_id = $course_id; - $this->lehrfach = $lesson; - $this->semester = $semester; - $this->isLector = 1; - } - } - } - return $this->isLector; - } -} -?> diff --git a/include/adresse.class.php b/include/adresse.class.php new file mode 100644 index 000000000..a1df7eff2 --- /dev/null +++ b/include/adresse.class.php @@ -0,0 +1,355 @@ +conn = $conn; + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + if(!pg_query($conn,$qry)) + { + $this->errormsg = "Encoding konnte nicht gesetzt werden"; + return false; + } + if($adress_id != null) + $this->load($adress_id); + } + + /** + * Laedt die Funktion mit der ID $adress_id + * @param $adress_id ID der zu ladenden Funktion + * @return true wenn ok, false im Fehlerfall + */ + function load($adress_id) + { + + //Pruefen ob adress_id eine gueltige Zahl ist + if(!is_numeric($adress_id) || $adress_id == '') + { + $this->errormsg = 'Adress_id muss eine Zahl sein'; + return false; + } + + //Daten aus der Datenbank lesen + $qry = "SELECT * FROM adresse WHERE adresse_pk=$adress_id"; + + if(!$res = pg_query($this->conn,$qry)) + { + $this->errormsg = 'Fehler bei einer Datenbankabfrage'; + return false; + } + + if($row = pg_fetch_object($res)) + { + $this->adresse_id = $row->adresse_pk; + $this->bismeldeadresse = ($row->bismeldeadresse=='J'?true:false); + $this->gemeinde = $row->gemeinde; + $this->name = $row->name; + $this->nation = $row->nation; + $this->ort = $row->ort; + $this->person_id = $row->person_fk; + $this->plz = $row->plz; + $this->strasse = $row->strasse; + $this->typ = $row->typ; + $this->updateamum = $row->creationdate; + $this->updatevon = $row->creationuser; + $this->zustelladresse = ($row->zustelladresse=='J'?true:false); + } + else + { + $this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden'; + return false; + } + + return true; + } + + /** + * Laedt alle adressen zu der Person die uebergeben wird + * @param $pers_id ID der Person zu der die Adressen geladen werden sollen + * @return true wenn ok, false im Fehlerfall + */ + function load_pers($pers_id) + { + //Pruefen ob pers_id eine gueltige Zahl ist + if(!is_numeric($pers_id) || $pers_id == '') + { + $this->errormsg = 'person_id muss eine gueltige Zahl sein'; + return false; + } + + //Lesen der Daten aus der Datenbank + $qry = "SELECT * FROM adresse WHERE person_fk=$pers_id"; + + if(!$res = pg_query($this->conn,$qry)) + { + $this->errormsg = 'Fehler bei einer Datenbankabfrage'; + return false; + } + + while($row = pg_fetch_object($res)) + { + $adr_obj = new adresse($this->conn); + + $adr_obj->adresse_id = $row->adresse_pk; + $adr_obj->bismeldeadresse = ($row->bismeldeadresse=='J'?true:false); + $adr_obj->gemeinde = $row->gemeinde; + $adr_obj->name = $row->name; + $adr_obj->nation = $row->nation; + $adr_obj->ort = $row->ort; + $adr_obj->person_id = $row->person_fk; + $adr_obj->plz = $row->plz; + $adr_obj->strasse = $row->strasse; + $adr_obj->typ = $row->typ; + $adr_obj->updateamum = $row->creationdate; + $adr_obj->updatevon = $row->creationuser; + $adr_obj->zustelladresse = ($row->zustelladresse=='J'?true:false); + + $this->result[] = $adr_obj; + } + return true; + } + + /** + * Laedt alle Adressen aus der Datenbank + * @return true wenn ok, false im Fehlerfall + */ + function getAll() + { + $qry = "SELECT * FROM adresse"; + + if(!$res = pg_query($this->conn,$qry)) + { + $this->errormsg = 'Fehler bei einer Datenbankabfrage'; + return false; + } + + while($row = pg_fetch_object($res)) + { + $adr_obj = new adresse($this->conn); + + $adr_obj->adresse_id = $row->adresse_pk; + $adr_obj->bismeldeadresse = ($row->bismeldeadresse=='J'?true:false); + $adr_obj->gemeinde = $row->gemeinde; + $adr_obj->name = $row->name; + $adr_obj->nation = $row->nation; + $adr_obj->ort = $row->ort; + $adr_obj->person_id = $row->person_fk; + $adr_obj->plz = $row->plz; + $adr_obj->strasse = $row->strasse; + $adr_obj->typ = $row->typ; + $adr_obj->updateamum = $row->creationdate; + $adr_obj->updatevon = $row->creationuser; + $adr_obj->zustelladresse = ($row->zustelladresse=='J'?true:false); + + $this->result[] = $adr_obj; + } + + return true; + } + + /** + * Prueft die Variablen auf gueltigkeit + * @return true wenn ok, false im Fehlerfall + */ + function checkvars() + { + //Zahlenfelder pruefen + $this->errormsg='Ein Zahlenfeld enthaelt ungueltige Zeichen'; + if(!is_numeric($this->person_id)) + { + $this->errormsg='Person_id enthaelt ungueltige Zeichen:'.$this->person_id; + return false; + } + if(!is_numeric($this->typ)) + { + $this->errormsg='Typ enthaelt ungueltige Zeichen'; + return false; + } + + //Gesamtlaenge pruefen + $this->errormsg='Eine der Gesamtlaengen wurde ueberschritten'; + if(strlen($this->name)>255) + { + $this->errormsg = 'Name darf nicht länger als 255 Zeichen sein'; + return false; + } + if(strlen($this->strasse)>255) + { + $this->errormsg = 'Strasse darf nicht länger als 255 Zeichen sein'; + return false; + } + if(strlen($this->plz)>10) + { + $this->errormsg = 'Plz darf nicht länger als 10 Zeichen sein'; + return false; + } + if(strlen($this->ort)>255) + { + $this->errormsg = 'Ort darf nicht länger als 255 Zeichen sein'; + return false; + } + if(strlen($this->nation)>3) + { + $this->errormsg = 'Nation darf nicht länger als 3 Zeichen sein'; + return false; + } + if(strlen($this->gemeinde)>255) + { + $this->errormsg = 'Gemeinde darf nicht länger als 255 Zeichen sein'; + return false; + } + + $this->errormsg = ''; + return true; + } + + /** + * Speichert den aktuellen Datensatz in die Datenbank + * Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt + * andernfalls wird der Datensatz mit der ID in $adresse_id aktualisiert + * @return true wenn ok, false im Fehlerfall + */ + function save() + { + //Variablen pruefen + if(!$this->checkvars()) + return false; + + if($this->new) + { + //Neuen Datensatz einfuegen + + //naechste ID aus der Sequence holen + $qry="SELECT nextval('adresse_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn,$qry))) + { + $this->errormsg = 'Fehler beim auslesen der Sequence'; + return false; + } + $this->adresse_id = $row->id; + + $qry="INSERT INTO adresse (adresse_pk, person_fk, name, strasse, plz, typ, ort, nation, creationdate, creationuser,". + " gemeinde, bismeldeadresse, zustelladresse) VALUES(". + " $this->adresse_id, $this->person_id, '$this->name', '$this->strasse', '$this->plz', $this->typ, '$this->ort',". + " '$this->nation', now(), $this->updatevon, '$this->gemeinde', '".($this->bismeldeadresse?'J':'N')."',". + " '".($this->zustelladresse?'J':'N')."');"; + } + else + { + //Updaten des bestehenden Datensatzes + + //Pruefen ob adresse_id eine gueltige Zahl ist + if(!is_numeric($this->adresse_id)) + { + $this->errormsg = 'adresse_id muss eine gueltige Zahl sein'; + return false; + } + + $qry="UPDATE adresse SET person_fk='$this->person_id', name='$this->name', strasse='$this->strasse', plz='$this->plz',". + " typ='$this->typ', ort='$this->ort', nation='$this->nation', gemeinde='$this->gemeinde',". + " bismeldeadresse='".($this->bismeldeadresse?'J':'N')."', zustelladresse='".($this->zustelladresse?'J':'N')."'". + " WHERE adresse_pk='$this->adresse_id'"; + } + + if(pg_query($this->conn,$qry)) + { + //Log schreiben + $sql = $qry; + $qry = "SELECT nextval('log_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim Auslesen der Log-Sequence'; + return false; + } + + $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')"; + if(pg_query($this->conn, $qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Speichern der Daten'; + return false; + } + } + + /** + * Loescht den Datenensatz mit der ID die uebergeben wird + * @param $adress_id ID die geloescht werden soll + * @return true wenn ok, false im Fehlerfall + */ + function delete($adress_id) + { + //Pruefen ob adresse_id eine gueltige Zahl ist + if(!is_numeric($adress_id) || $adress_id == '') + { + $this->errormsg = 'adresse_id muss eine gueltige Zahl sein'; + return false; + } + + //loeschen des Datensatzes + $qry="DELETE FROM adresse WHERE adresse_pk=$adress_id;"; + + if(pg_query($this->conn,$qry)) + { + //Log schreiben + $sql = $qry; + $qry = "SELECT nextval('log_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim Auslesen der Log-Sequence'; + return false; + } + + $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')"; + if(pg_query($this->conn, $qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim loeschen der Daten'; + return false; + } + } +} +?> \ No newline at end of file diff --git a/include/ausbildungssemester.class.php b/include/ausbildungssemester.class.php new file mode 100644 index 000000000..dc94d4414 --- /dev/null +++ b/include/ausbildungssemester.class.php @@ -0,0 +1,182 @@ +conn = $conn; + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + if(!pg_query($conn,$qry)) + { + $this->errormsg = "Encoding konnte nicht gesetzt werden"; + return false; + } + if($ausbildungssemester_id != null) + $this->load($ausbildungssemester_id); + } + + /** + * Laedt einen Datensatz aus der Datenbank + * @param $ausbildungssemester_id ID des zu ladenden Datensatzes + * @return true wenn ok, false im Fehlerfall + */ + function load($ausbildungssemester_id) + { + if(!is_numeric($ausbildungssemester_id) || $ausbildungssemester_id == '') + { + $this->errormsg = 'ausbildungssemester_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "SELECT * FROM ausbildungssemester WHERE ausbildungssemester_pk = '$ausbildungssemester_id';"; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Fehler beim laden des Datensatzes'; + return false; + } + + if($row=pg_fetch_object($res)) + { + $this->ausbildungssemester_id = $row->ausbildungssemester_pk; + $this->studiengang_id = $row->studiengang_fk; + $this->semester = $row->semester; + $this->name = $row->name; + $this->personenstatus = $row->personenstatus; + $this->updateamum = $row->creationdate; + $this->updatevon = $row->creationuser; + } + else + { + $this->errormsg = 'Fehler beim laden des Datensatzes'; + return false; + } + + return true; + } + + /** + * Liefert alle ausbildungssemester zu einem Studiengang + * @param $studiengang_id Studiengang_id des Ausbildungssemesters + * @return true wenn ok, false im Fehlerfall + */ + function load_stg($studiengang_id) + { + if(!is_numeric($studiengang_id) || $studiengang_id == '') + { + $this->errormsg = 'studiengang_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "SELECT * FROM ausbildungssemester WHERE studiengang_fk = '$studiengang_id' order by semester"; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Fehler beim laden des Datensatzes'; + return false; + } + + while($row = pg_fetch_object($res)) + { + $ausb_obj = new ausbildungssemester($this->conn); + + $ausb_obj->ausbildungssemester_id = $row->ausbildungssemester_pk; + $ausb_obj->studiengang_id = $row->studiengang_fk; + $ausb_obj->semester = $row->semester; + $ausb_obj->name = $row->name; + $ausb_obj->personenstatus = $row->personenstatus; + $ausb_obj->updateamum = $row->creationdate; + $ausb_obj->updatevon = $row->creationuser; + + $this->result[] = $ausb_obj; + } + return true; + } + + /** + * Liefert alle Ausbildungssemester + * @return true wenn ok, false im Fehlerfall + */ + function getAll() + { + $qry = "SELECT * FROM ausbildungssemester;"; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Fehler beim laden des Datensatzes'; + return false; + } + + while($row = pg_fetch_object($res)) + { + $ausb_obj = new ausbildungssemester($this->conn); + + $ausb_obj->ausbildungssemester_id = $row->ausbildungssemester_pk; + $ausb_obj->studiengang_id = $row->studiengang_fk; + $ausb_obj->semester = $row->semester; + $ausb_obj->name = $row->name; + $ausb_obj->personenstatus = $row->personenstatus; + $ausb_obj->updateamum = $row->creationdate; + $ausb_obj->updatevon = $row->creationuser; + + $this->result[] = $ausb_obj; + } + return true; + } + + /** + * Checkt die Variablen vor dem Speichern + * @return true wenn ok, false im Fehlerfall + */ + function checkvars() + { + $this->errormsg = 'Noch nicht implementiert'; + return false; + } + + /** + * Speichert den aktuellen Datensatz + * @return true wenn ok, false im Fehlerfall + */ + function save() + { + if(!checkvars()) + return false; + + $this->errormsg = 'Noch nicht implementiert'; + return false; + } + + /** + * Loescht den Datensatz mit der ID die uebergeben wurde + * @param $ausbildungssemester_id ID des zu loeschenden Datensatzes + * @return true wenn ok, false im Fehlerfall + */ + function delete($ausbildungssemester_id) + { + $this->errormsg = 'Noch nicht implementiert'; + return false; + } +} +?> \ No newline at end of file diff --git a/include/bankverbindung.class.php b/include/bankverbindung.class.php new file mode 100644 index 000000000..62630d19e --- /dev/null +++ b/include/bankverbindung.class.php @@ -0,0 +1,340 @@ +conn = $conn; + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + if(!pg_query($conn,$qry)) + { + $this->errormsg = "Encoding konnte nicht gesetzt werden"; + return false; + } + if($bank_id != null) + $this->load($bank_id); + } + + /** + * Prueft die gueltigkeit der Variablen + * @return true wenn ok, false im Fehlerfall + */ + function checkvars() + { + //Gesamtlaenge pruefen + $this->errormsg = 'Eine der Maximiallaengen wurde ueberschritten'; + if(strlen($this->name)>255) + { + $this->errormsg = 'Name darf nicht länger als 255 Zeichen sein'; + return false; + } + if(strlen($this->anschrift)>255) + { + $this->errormsg = 'Anschrift darf nicht länger als 255 Zeichen sein'; + return false; + } + if(strlen($this->blz)>15) + { + $this->errormsg = 'BLZ darf nicht länger als 15 Zeichen sein'; + return false; + } + if(strlen($this->bic)>15) + { + $this->errormsg = 'BIC darf nicht länger als 15 Zeichen sein'; + return false; + } + if(strlen($this->kontonr)>25) + { + $this->errormsg = 'KontoNr darf nicht länger als 25 Zeichen sein'; + return false; + } + if(strlen($this->iban)>25) + { + $this->errormsg = 'IBAN darf nicht länger als 25 Zeichen sein'; + return false; + } + + //Zahlenwerte ueberpruefen + $this->errormsg = 'Ein Zahlenfeld enthaelt ungueltige Zeichen'; + if(!is_numeric($this->person_id)) return false; + if(!is_numeric($this->typ)) return false; + + $this->errormsg = ''; + return true; + } + + + /** + * Speichert den aktuellen Datensatz + * Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt + * andernfalls wird der Datensatz mit der ID in $bankverbindung_id aktualisiert + * @return true wenn ok, false im Fehlerfall + */ + function save() + { + //Gueltigkeit der Variablen pruefen + if(!$this->checkvars()) + return false; + + if($this->new) + { + //Neuen Datensatz einfuegen + + //Naechste ID aus der Sequence holen + $qry = "SELECT nextval('bankverbindung_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim auslesen der Sequence'; + return false; + } + $this->bankverbindung_id = $row->id; + + $qry = "INSERT INTO bankverbindung (bankverbindung_pk, person_fk, name, anschrift, blz, bic,". + " kontonr, iban, typ, creationdate, creationuser) VALUES(". + " '$this->bankverbindung_id', '$this->person_id', '$this->name', '$this->anschrift',". + " '$this->blz', '$this->bic', '$this->kontonr', '$this->iban', '$this->typ', now(), $this->updatevon);"; + } + else + { + //Datensatz Updaten + + //ID pruefen + if(!is_numeric($this->bankverbindung_id)) + { + $this->errormsg = 'bankverbindung_id muss eine Zahl sein'; + return false; + } + + $qry="UPDATE bankverbindung SET person_fk='$this->person_id', name='$this->name',". + " anschrift='$this->anschrift', blz='$this->blz', bic='$this->bic',". + " kontonr='$this->kontonr', iban='$this->iban', typ='$this->typ'". + " WHERE bankverbindung_pk=$this->bankverbindung_id"; + } + + if(pg_query($this->conn, $qry)) + { + //Log schreiben + $sql = $qry; + $qry = "SELECT nextval('log_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim Auslesen der Log-Sequence'; + return false; + } + + $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')"; + if(pg_query($this->conn, $qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Speichern der Daten'; + return false; + } + } + + /** + * Loescht den Datensatz mit der uebergebenen ID + * @param $bank_id ID des zu loeschenden Datensatzes + * @return true wenn ok, false im Fehlerfall + */ + function delete($bank_id) + { + if(!is_numeric($bank_id) || $bank_id == '') + { + $this->errormsg = 'bank_id muss eine Zahl sein'; + return false; + } + + $qry="DELETE FROM bankverbindung WHERE bankverbindung_pk=$bank_id"; + + if(!pg_query($this->conn, $qry)) + { + $this->errormsg = 'Fehler beim loeschen der Daten'; + return false; + } + else + { + //Log schreiben + $sql = $qry; + $qry = "SELECT nextval('log_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim Auslesen der Log-Sequence'; + return false; + } + + $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')"; + if(pg_query($this->conn, $qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; + return false; + } + } + } + + /** + * Liefert die Bankverbindung mit der uebergebenen ID + * @param $bank_id ID der bankverbindung + * @return true wenn ok, false im Fehlerfall + */ + function load($bank_id) + { + if(!is_numeric($bank_id) || $bank_id == '') + { + $this->errormsg = 'bank_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "SELECT * FROM bankverbindung WHERE bankverbindung_pk=$bank_id"; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Fehler bei einer Datenbankabfrage'; + return false; + } + + if($row = pg_fetch_object($res)) + { + $this->bankverbindung_id = $row->bankverbindung_pk; + $this->person_id = $row->person_fk; + $this->name = $row->name; + $this->anschrift = $row->anschrift; + $this->blz = $row->blz; + $this->bic = $row->bic; + $this->kontonr = $row->kontonr; + $this->iban = $row->iban; + $this->typ = $row->typ; + $this->updateamum = $row->creationdate; + $this->updatevon = $row->creationuser; + } + else + { + $this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden'; + return false; + } + + return true; + } + + /** + * Liefert alle Bankverbindungen der Person die uebergeben wird + * @param $pers_id ID der Person + * @return true wenn ok, false im Fehlerfall + */ + function load_pers($pers_id) + { + if(!is_numeric($pers_id) || $pers_id == '') + { + $this->errormsg = 'pers_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "SELECT * FROM bankverbindung WHERE person_fk=$pers_id"; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Fehler bei einer Datenbankabfrage'; + return false; + } + + while($row = pg_fetch_object($res)) + { + $bank_obj = new bankverbindung($this->conn); + + $bank_obj->bankverbindung_id = $row->bankverbindung_pk; + $bank_obj->person_id = $row->person_fk; + $bank_obj->name = $row->name; + $bank_obj->anschrift = $row->anschrift; + $bank_obj->blz = $row->blz; + $bank_obj->bic = $row->bic; + $bank_obj->kontonr = $row->kontonr; + $bank_obj->iban = $row->iban; + $bank_obj->typ = $row->typ; + $bank_obj->updateamum = $row->creationdate; + $bank_obj->updatevon = $row->creationuser; + + $this->result[] = $bank_obj; + } + return true; + } + + /** + * Liefert alle Bankverbindungen + * @return true wenn ok, false im Fehlerfall + */ + function getAll() + { + $qry = "SELECT * FROM bankverbindung"; + + if(!$res = pg_query($this->conn,$qry)) + { + $this->errormsg = 'Fehler bei einer Datenbankabfrage'; + return false; + } + + while($row = pg_fetch_object($res)) + { + $bank_obj = new bankverbindung($this->conn); + + $bank_obj->bankverbindung_id = $row->bankverbindung_pk; + $bank_obj->person_id = $row->person_fk; + $bank_obj->name = $row->name; + $bank_obj->anschrift = $row->anschrift; + $bank_obj->blz = $row->blz; + $bank_obj->bic = $row->bic; + $bank_obj->kontonr = $row->kontonr; + $bank_obj->iban = $row->iban; + $bank_obj->typ = $row->typ; + $bank_obj->updateamum = $row->creationdate; + $bank_obj->updatevon = $row->creationuser; + + $this->result[] = $bank_obj; + } + return true; + } + + function getTypBezeichnung($id) + { + switch($id) + { + case 1: return 'Privatkonto'; + case 2: return 'Firmenkonto'; + default: return ''; + } + } +} +?> \ No newline at end of file diff --git a/include/fas/zeitwunsch.class.php b/include/benutzer.class.php similarity index 50% rename from include/fas/zeitwunsch.class.php rename to include/benutzer.class.php index 0014645d3..1b6edb517 100644 --- a/include/fas/zeitwunsch.class.php +++ b/include/benutzer.class.php @@ -1,158 +1,151 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ - -class zeitwunsch -{ - var $conn; // resource DB-Handle - var $errormsg; // string - var $new; // boolean - var $zeitwuensche = array(); // zeitwunsch Objekt - - //Tabellenspalten - var $stunde; // smalint - var $mitarbeiter_uid; // varchar(16) - var $tag; // smalint - var $gewicht; // smalint - - // ************************************************************************* - // * Konstruktor - Uebergibt die Connection und laedt optional eine Lehrform - // * @param $conn Datenbank-Connection - // * $uid Uid des Mitarbeiters - // * $tag Tag des Zeitwunsches - // * $stunde Stunde des Zeitwunsches - // * $unicode Gibt an ob die Daten mit UNICODE Codierung - // * oder LATIN9 Codierung verarbeitet werden sollen - // ************************************************************************* - function zeitwunsch($conn, $mitarbeiter_uid=null, $tag=null, $stunde=null, $unicode=false) - { - $this->conn = $conn; - - if($unicode) - $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; - else - $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; - - if(!pg_query($conn,$qry)) - { - $this->errormsg = 'Encoding konnte nicht gesetzt werden'; - return false; - } - - if($mitarbeiter_uid != null && $tag!=null && $stunde!=null) - $this->load($mitarbeiter_uid, $tag, $stunde); - } - - // ********************************************************* - // * Laedt einen Zeitwunsch - // * @param - // ********************************************************* - function load($mitarbeiter_uid, $tag, $stunde) - { - return true; - } - - // ******************************************* - // * Prueft die Variablen vor dem Speichern - // * auf Gueltigkeit. - // * @return true wenn ok, false im Fehlerfall - // ******************************************* - function validate() - { - if(strlen($this->mitarbeiter_uid)>16) - { - $this->errormsg = 'UID darf nicht laenger als 16 Zeichen sein.'; - return false; - } - if($this->mitarbeiter_uid == '') - { - $this->errormsg = 'UID muss angegeben werden'; - return false; - } - if(!is_numeric($this->stunde)) - { - $this->errormsg = 'Stunde muss eine gueltige Zahl sein'; - return false; - } - if(!is_numeric($this->gewicht)) - { - $this->errormsg = 'Gewicht muss eine gueltige Zahl sein'; - return false; - } - if(!is_numeric($this->tag)) - { - $this->errormsg = 'Tag muss eine gueltige Zahl sein'; - return false; - } - - return true; - } - - // ************************************************ - // * wenn $var '' ist wird NULL zurueckgegeben - // * wenn $var !='' ist werden Datenbankkritische - // * Zeichen mit Backslash versehen und das Ergbnis - // * unter Hochkomma gesetzt. - // ************************************************ - function addslashes($var) - { - return ($var!=''?"'".addslashes($var)."'":'null'); - } - - // ************************************************************ - // * Speichert einen Zeitwunsch in die Datenbank - // * Wenn $new auf true gesetzt ist wird ein neuer Datensatz - // * angelegt, ansonsten der Datensatz mit $lehrfach_nr upgedated - // * @return true wenn erfolgreich, false im Fehlerfall - // ************************************************************ - function save() - { - //Variablen auf Gueltigkeit pruefen - if(!$this->validate()) - return false; - - if($this->new) - { - $qry = "INSERT INTO campus.tbl_zeitwunsch (mitarbeiter_uid, tag, stunde, gewicht) - VALUES('".addslashes($this->mitarbeiter_uid)."',". - $this->tag.','.$this->stunde.','.$this->gewicht.');'; - } - else - { - $qry = 'UPDATE campus.tbl_zeitwunsch SET'. - ' gewicht='.$this->gewicht. - " WHERE mitarbeiter_uid='".addslashes($this->mitarbeiter_uid)."' AND - tag=".$this->tag.' AND stunde='.$this->stunde; - } - - if(pg_query($this->conn,$qry)) - { - //Log schreiben - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern des Zeitwunsches:'.$qry; - return false; - } - } -} +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ + +class benutzer extends person +{ + //Tabellenspalten + var $uid; // varchar(16) + var $bnaktiv; // boolean + var $alias; // varchar(256) + + // ************************************************************************* + // * Konstruktor - Uebergibt die Connection und laedt optional einen Benutzer + // * @param $conn Datenbank-Connection + // * $uid Benutzer der geladen werden soll (default=null) + // * $unicode Gibt an ob die Daten mit UNICODE Codierung + // * oder LATIN9 Codierung verarbeitet werden sollen + // ************************************************************************* + function benutzer($conn, $uid=null, $unicode=false) + { + $this->conn = $conn; + + if($unicode) + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + else + $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; + + if(!pg_query($conn,$qry)) + { + $this->errormsg = 'Encoding konnte nicht gesetzt werden'; + return false; + } + + if($uid != null) + $this->load($uid); + } + + // *********************************************************** + // * Laedt Benutzer mit der uebergebenen ID + // * @param $uid ID der Person die geladen werden soll + // *********************************************************** + function load($uid) + { + + } + + // ******************************************* + // * Prueft die Variablen vor dem Speichern + // * auf Gueltigkeit. + // * @return true wenn ok, false im Fehlerfall + // ******************************************* + function validate() + { + if(strlen($this->uid)>16) + { + $this->errormsg = 'UID darf nicht laenger als 16 Zeichen sein'; + return false; + } + if($this->uid == '') + { + $this->errormsg = 'UID muss eingegeben werden'; + return false; + } + if(strlen($this->alias)>256) + { + $this->errormsg = 'Alias darf nicht laenger als 256 Zeichen sein'; + return false; + } + if(!is_numeric($this->person_id)) + { + $this->errormsg = 'person_id muss eine gueltige Zahl sein'; + return false; + } + if(!is_bool($this->aktiv)) + { + $this->errormsg = 'aktiv muss ein boolscher wert sein'; + return false; + } + return true; + } + + // ****************************************************************** + // * Speichert die Benutzerdaten in die Datenbank + // * Wenn $new auf true gesetzt ist wird ein neuer Datensatz angelegt + // * ansonsten der Datensatz mit $uid upgedated + // * @return true wenn erfolgreich, false im Fehlerfall + // ****************************************************************** + function save() + { + //Personen Datensatz speichern + if(!person::save()) + return false; + + //Variablen auf Gueltigkeit pruefen + if(!benutzer::validate()) + return false; + + if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE + { + $qry = 'INSERT INTO tbl_benutzer (uid, aktiv, alias, person_id, insertamum, insertvon, updateamum, updatevon) VALUES('. + "'".addslashes($this->uid)."',". + ($this->aktiv?'true':'false').','. + $this->addslashes($this->alias).",'". + $this->person_id."',". + $this->addslashes($this->insertamum).",". + $this->addslashes($this->insertvon).",". + $this->addslashes($this->updateamum).",". + $this->addslashes($this->updatevon).");"; + } + else + { + $qry = 'UPDATE tbl_benutzer SET'. + ' aktiv='.($this->aktiv?'true':'false').','. + ' alias='.$this->addslashes($this->alias).','. + " person_id='".$this->person_id."',". + ' updateamum='.$this->addslashes($this->updateamum).','. + ' updatevon='.$this->addslashes($this->updatevon). + " WHERE uid='".addslashes($this->uid)."';"; + } + + if(pg_query($this->conn,$qry)) + { + //Log schreiben + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern des Benutzer-Datensatzes:'.$qry; + return false; + } + } +} ?> \ No newline at end of file diff --git a/include/fas/benutzer_berechtigung.class.php b/include/benutzer_berechtigung.class.php similarity index 100% rename from include/fas/benutzer_berechtigung.class.php rename to include/benutzer_berechtigung.class.php diff --git a/include/fas/benutzerberechtigung.class.php b/include/benutzerberechtigung.class.php similarity index 100% rename from include/fas/benutzerberechtigung.class.php rename to include/benutzerberechtigung.class.php diff --git a/include/fas/benutzerfunktion.class.php b/include/benutzerfunktion.class.php similarity index 100% rename from include/fas/benutzerfunktion.class.php rename to include/benutzerfunktion.class.php diff --git a/include/fas/benutzergruppe.class.php b/include/benutzergruppe.class.php similarity index 100% rename from include/fas/benutzergruppe.class.php rename to include/benutzergruppe.class.php diff --git a/include/fas/benutzerlvstudiensemester.class.php b/include/benutzerlvstudiensemester.class.php similarity index 100% rename from include/fas/benutzerlvstudiensemester.class.php rename to include/benutzerlvstudiensemester.class.php diff --git a/include/berechtigung.class.php b/include/berechtigung.class.php index 0be0e732d..48377a574 100644 --- a/include/berechtigung.class.php +++ b/include/berechtigung.class.php @@ -1,321 +1,138 @@ -conn=$conn; - $this->new=true; - } - - - /** - * Ladet die Attribute der Berechtigung aus der Datenbank. Bei Fehler ist der - * Rueckgabewert 'false' und die Fehlermeldung steht in 'errormsg'. - * @return boolean true=ok, false=fehler - */ - function load($id) - { - // Berechtigung holen - $sql_query="SELECT * FROM tbl_userberechtigung WHERE userberechtigung_id=$id"; - //echo $sql_query; - if(!($erg=pg_exec($this->conn, $sql_query))) - { - $this->errormsg=pg_errormessage($this->conn); - return false; - } - $num_rows=pg_numrows($erg); - if($num_rows!=1) - { - $this->errormsg="Zuwenige oder zuviele Ergebnisse (Anzahl: $num_rows)!"; - return false; - } - $row=pg_fetch_object($erg,0); - - $this->userberechtigung_id=$row->userberechtigung_id; - $this->studiengang_kz=$row->studiengang_kz; - $this->fachbereich_id=$row->fachbereich_id; - $this->berechtigung_kurzbz=$row->berechtigung_kurzbz; - $this->uid=$row->uid; - $this->studiensemester_kurzbz=$row->studiensemester_kurzbz; - $this->start=$row->start; - $this->ende=$row->ende; - $this->art=$row->art; - $this->new=false; - return true; - } - - /** - * @return boolean true=ok, false=fehler - */ - function save() - { - // Connection holen - if (is_null($conn=$this->getConnection())) - { - return false; - } - // Daten zur Person speichern - - if (!person::save()) { - $this->errormsg.="Daten zur LVA konnten nicht gespeichert werden."; - return false; - } - if ($this->new) { - $qry="INSERT INTO tbl_lehrveranstaltung(lvnr,unr,einheit_kurzbz,". - "lektor,lehrfach_nr,studiengang_kz,fachbereich_id,semester,verband,". - "gruppe,raumtyp,raumtypalternativ,semesterstunden,stundenblockung,". - "wochenrythmus,start_kw,anmerkung)". - "values(". - "'".$this->lvnr."',". - "'".$this->unr."',". - "'".$this->einheit_kurzbz."',". - "'".$this->lektor."',". - (strlen($this->lehrfach_nr)>0?$this->lehrfach_nr:NULL).",". - (strlen($this->studiengang_kz)>0?$this->studiengang_kz:NULL).",". - (strlen($this->fachbereich_id)>0?$this->fachbereich_id:NULL).",". - (strlen($this->semester)>0?$this->semester:NULL).",". - "'".$this->verband."',". - "'".$this->gruppe."',". - (strlen($this->raumtyp)>0?"'".$this->raumtyp."'":NULL).",". - (strlen($this->raumtypalternativ)>0?"'".$this->raumtypalternativ."'":NULL).",". - (strlen($this->semesterstunden)>0?$this->semesterstunden:NULL).",". - (strlen($this->stundenblockung)>0?$this->stundenblockung:NULL).",". - (strlen($this->wochenrythmus)>0?$this->wochenrythmus:NULL).",". - (strlen($this->start_kw)>0?$this->start_kw:NULL).",". - (strlen($this->anmerkung)>0?"'".$this->anmerkung."'":NULL).",". - ")"; - } else - { - $qry="UPDATE tbl_lehrveranstaltung ". - "SET lvnr='".$this->lvnr."',". - "unr='".$this->unr."',". - "einheit_kurzbz='".$this->einheit_kurzbz."',". - "lektor='".$this->lehrfach_nr."',". - "lehrfach_nr=".(strlen($this->lehrfach_nr)>0?$this->lehrfach_nr:NULL).",". - "studiengang_kz=".(strlen($this->studiengang_kz)>0?$this->studiengang_kz:NULL).",". - "fachbereich_id=".(strlen($this->fachbereich_id)>0?$this->fachbereich_id:NULL).",". - "semester=".(strlen($this->semester)>0?$this->semester:NULL).",". - "verband='".$this->verband."',". - "gruppe='".$this->gruppe."',". - "raumtyp=".(strlen($this->raumtyp)>0?"'".$this->raumtyp."'":NULL).",". - "raumtypalternativ=".(strlen($this->raumtypalternativ)>0?"'".$this->raumtypalternativ."'":NULL).",". - "semesterstunden=".(strlen($this->semesterstunden)>0?$this->semesterstunden:NULL).",". - "stundenblockung=".(strlen($this->stundenblockung)>0?$this->stundenblockung:NULL).",". - "wochenrythmus=".(strlen($this->wochenrythmus)>0?$this->wochenrythmus:NULL).",". - "start_kw=".(strlen($this->start_kw)>0?$this->start_kw:NULL).",". - "anmerkung=".(strlen($this->anmerkung)>0?"'".$this->anmerkung."'":NULL). - " WHERE lehrveranstaltung_id='".$this->lehrveranstaltung_id."'"; - } - //echo "
".$qry; - if(!@pg_query($conn, $qry)) - { - $this->errormsg=pg_errormessage($conn); - return false; - } - return true; - } - - - /** - * Rueckgabewert ist ein Array mit den Ergebnissen. Bei Fehler false und die - * Fehlermeldung liegt in errormsg. - * Wenn der Parameter stg_kz NULL ist tritt einheit_kurzbzb in Kraft. - * @param string $uid UserID - * @return variabel Array mit LVA; false bei Fehler - */ - function getBerechtigungen($uid) - { - // Berechtigungen holen - $sql_query="SELECT * FROM tbl_userberechtigung WHERE uid='$uid' AND (startnow() OR ende IS NULL)"; - //echo $sql_query; - if(!$erg=@pg_query($this->conn, $sql_query)) - { - $this->errormsg=pg_errormessage($this->conn); - return false; - } - //$num_rows=pg_numrows($erg); - while($row=pg_fetch_object($erg)) - { - $b=new berechtigung($this->conn); - $b->userberechtigung_id=$row->userberechtigung_id; - $b->studiengang_kz=$row->studiengang_kz; - $b->fachbereich_id=$row->fachbereich_id; - $b->berechtigung_kurzbz=$row->berechtigung_kurzbz; - $b->uid=$row->uid; - $b->studiensemester_kurzbz=$row->studiensemester_kurzbz; - $b->start=$row->start; - if ($row->start!=null) - $b->starttimestamp=mktime(0,0,0,substr($row->start,5,2),substr($row->start,8),substr($row->start,0,4)); - else - $b->starttimestamp=null; - $b->ende=$row->ende; - if ($row->ende!=null) - $b->endetimestamp=mktime(23,59,59,substr($row->ende,5,2),substr($row->ende,8),substr($row->ende,0,4)); - else - $b->endetimestamp=null; - $b->art=$row->art; - $this->berechtigungen[]=$b; - } - return true; - } - - function isBerechtigt($berechtigung,$studiengang_kz=null,$art=null, $fachbereich_id=null) - { - $timestamp=time(); - foreach ($this->berechtigungen as $b) - { - //Fachbereichsberechtigung - if($fachbereich_id!=null) - { - //Wenn Fachbereichs oder Adminberechtigung - if(($berechtigung == $b->berechtigung_kurzbz || $b->berechtigung_kurzbz == 'admin') && ($b->fachbereich_id==$fachbereich_id || $b->fachbereich_id=='0')) - { - if ($b->starttimestamp!=null && $b->endetimestamp!=null) - { - if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) - return true; - } - else - return true; - } - } - - //Wenn Berechtigung fuer Bestimmte Klasse vorhanden ist - if($berechtigung == $b->berechtigung_kurzbz && $studiengang_kz==null && $art==null && $fachbereich_id==null) - if ($b->starttimestamp!=null && $b->endetimestamp!=null) - { - if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) - return true; - } - else - return true; - //Wenn Berechtigung fuer Bestimmten Studiengang vorhanden ist - if ($berechtigung==$b->berechtigung_kurzbz - && ($studiengang_kz==$b->studiengang_kz || $b->studiengang_kz==0) && $art==null && $b->fachbereich_id==null) - if ($b->starttimestamp!=null && $b->endetimestamp!=null) - { - if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) - return true; - } - else - return true; - //Wenn Berechtigung mit Studiengang und der richtigen BerechtigungsArt (suid) vorhanden ist - if ($berechtigung==$b->berechtigung_kurzbz - && ($studiengang_kz==$b->studiengang_kz || $b->studiengang_kz==0) - && strstr($b->art,$art)) - if ($b->starttimestamp!=null && $b->endetimestamp!=null) - { - if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) - return true; - } - else - return true; - } - return false; - } - - /** - * Gibt Array mit Kennzahlen der Studiengaenge sortiert zurueck. - * Optional wird auf Berechtigung eingeschraenkt. - * Wenn Berechtigung ueber alle Studiengaenge steht im ersten Feld 0. - */ - function getStgKz($berechtigung=null) - { - $studiengang_kz=array(); - $timestamp=time(); - - foreach ($this->berechtigungen as $b) - if ($berechtigung==$b->berechtigung_kurzbz || $berechtigung==null) - if($b->fachbereich_id==null) - $studiengang_kz[]=$b->studiengang_kz; - $studiengang_kz=array_unique($studiengang_kz); - sort($studiengang_kz); - return $studiengang_kz; - } - - function getFbKz($berechtigung=null) - { - $fachbereichs_kz=array(); - $timestamp=time(); - - foreach($this->berechtigungen as $b) - { - if(($berechtigung==$b->berechtigung_kurzbz || $berechtigung==null) - && (($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) || ($b->starttimestamp==null && $b->endetimestamp==null))) - { - if($b->fachbereich_id!='' && !in_array($b->fachbereich_id,$fachbereichs_kz)) - $fachbereichs_kz[] = $b->fachbereich_id; - } - } - sort($fachbereichs_kz); - return $fachbereichs_kz; - } -} +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ + +class berechtigung +{ + var $conn; // resource DB-Handle + var $errormsg; // string + var $new; // boolean + var $berechtigungen = array(); // berechtigung Objekt + + //Tabellenspalten + var $berechtigung_kurzbz; // varchar(16) + var $beschreibung; // varchar(256) + + // ************************************************************************* + // * Konstruktor - Uebergibt die Connection und laedt optional eine Lehrform + // * @param $conn Datenbank-Connection + // * $berechtigung_kurzbz + // * $unicode Gibt an ob die Daten mit UNICODE Codierung + // * oder LATIN9 Codierung verarbeitet werden sollen + // ************************************************************************* + function berechtigung($conn, $berechtigung_kurzbz=null, $unicode=false) + { + $this->conn = $conn; + + if($unicode) + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + else + $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; + + if(!pg_query($conn,$qry)) + { + $this->errormsg = 'Encoding konnte nicht gesetzt werden'; + return false; + } + + if($berechtigung_kurzbz!=null) + $this->load($berechtigung_kurzbz); + } + + // ********************************************************* + // * Laedt eine Berechtigung + // * @param berechtigung_kurzbz + // ********************************************************* + function load($berechtigung_kurzbz) + { + return true; + } + + // ******************************************* + // * Prueft die Variablen vor dem Speichern + // * auf Gueltigkeit. + // * @return true wenn ok, false im Fehlerfall + // ******************************************* + function validate() + { + if(strlen($this->berechtigung_kurzbz)>16) + { + $this->errormsg = 'Berechtigung_kurzbz darf nicht laenger als 16 Zeichen sein'; + return false; + } + if(strlen($this->beschreibung)>256) + { + $this->errormsg = 'Beschreibung darf nicht laenger als 256 Zeichen sein'; + return false; + } + + return true; + } + + // ************************************************ + // * wenn $var '' ist wird NULL zurueckgegeben + // * wenn $var !='' ist werden Datenbankkritische + // * Zeichen mit Backslash versehen und das Ergbnis + // * unter Hochkomma gesetzt. + // ************************************************ + function addslashes($var) + { + return ($var!=''?"'".addslashes($var)."'":'null'); + } + + // ************************************************************ + // * Speichert Berechtigung in die Datenbank + // * Wenn $new auf true gesetzt ist wird ein neuer Datensatz + // * angelegt, ansonsten der Datensatz upgedated + // * @return true wenn erfolgreich, false im Fehlerfall + // ************************************************************ + function save() + { + //Variablen auf Gueltigkeit pruefen + if(!$this->validate()) + return false; + + if($this->new) + { + $qry = 'INSERT INTO tbl_berechtigung (berechtigung_kurzbz, beschreibung) + VALUES('.$this->addslashes($this->berechtigung_kurzbz).','. + $this->addslashes($this->beschreibung).');'; + } + else + { + $qry = 'UPDATE tbl_berechtigung SET'. + ' beschreibung='.$this->addslashes($this->beschreibung). + " WHERE berechtigung_kurzbz='".addslashes($this->berechtigung_kurzbz)."'"; + } + + if(pg_query($this->conn,$qry)) + { + //Log schreiben + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern der Berechtigung:'.$qry; + return false; + } + } +} ?> \ No newline at end of file diff --git a/include/fas/bis_funktion.class.php b/include/bis_funktion.class.php similarity index 100% rename from include/fas/bis_funktion.class.php rename to include/bis_funktion.class.php diff --git a/include/cis_functions.inc.php b/include/cis_functions.inc.php deleted file mode 100644 index beb74e1d7..000000000 --- a/include/cis_functions.inc.php +++ /dev/null @@ -1,515 +0,0 @@ -stg_id; - $term_id = $auth->semester; - - $sql = "SELECT distinct verband, gruppe FROM tbl_student WHERE (studiengang_kz = $course_id) AND (semester = $term_id) ORDER BY verband,gruppe"; - $rs = new pgRS($sql); - $count_verband = $rs->num; - $verbands = $rs->arr; - for ($rt = $count_verband-1; $rt >= 0; $rt--) { - $verband = $verbands[$rt]["verband"] . $verbands[$rt]["gruppe"]; - if ($verbands[$rt]["verband"] == $auth->verband && - $verbands[$rt]["gruppe"] == $auth->gruppe) - return pow(2,$rt); - } - return 0; - } // eof function get_active_status - - //get_lf_bezeichnung holt die Studiengang Bezeichnung und die Lehrfach - // bezeichnung für das aktuelle Lehrfach. - function get_lf_bezeichnung($course_id, $term_id, $lesson) - { - $sql = "SELECT lf.bezeichnung, kurzbzlang FROM lehre.tbl_lehrfachzuteilung lf - JOIN tbl_studiengang USING(studiengang_kz) WHERE lf.studiengang_kz = $course_id - AND lf.lehrfachzuteilung_kurzbz = '$lesson' AND lf.semester = $term_id LIMIT 1"; - $rs = new pgRS($sql); - $ret[0] = $rs->arr[0]["kurzbzlang"]; - $ret[1] = $rs->arr[0]["bezeichnung"]; - - return $ret; - } - - // Die Freigabe für die Verbände für den Studienbrief berechnen - // Um die Freigeschaltenen Studienbriefe zu berechnen. - function sum($points = array()) { - $p = 0; - for ($i = 0; $i < count($points); $i++) - { - $p+= $points[$i]; - } - return $p; - } /* eof sum() */ - - // erstellen des aktuellen studienjahres - function get_studienjahr($i = -1) { - if ($i != -1) { - $stj = date("Y")+$i; - $stj .= "/"; - $stj .= sprintf("%02d", date("y")+$i+1); - } else if ( date("n") >= 7) - $stj = date("Y") . "/" . date("y", mktime(0,0,0,1,1,date("Y")+1)); - else - $stj = date("Y")-1 . "/" . date("y"); - return $stj; - } - - function get_needed_term_id($term_id = 0, $stj = "") { - if ($stj == "") - $stj = get_studienjahr(); - $needed_term_id = $term_id + ((date("Y") - substr($stj,0,4))*2); - - if ((date("n") >= 8 || date("n") < 3)) - if ($term_id%2==0) - $needed_term_id--; - else - $needed_term_id++; - - if ((date("n") < 8 || date("n") >= 3)) - if ($term_id%2!= 0) - $needed_term_id--; - return $needed_term_id; - } - - - // berechnet die notwendige Semester_ID zum Anzeigen der - // Studenten im Kreuzerltool - function get_needed_term_id2($term_id = 0, $stj = "") { - // im WS sollen noch Studenten vom letzten SS sichtbar sein - if ((date("n") >= 8 || date("n") < 2)) { - if ($term_id%2==0) - $term_id++; - } - // im SS sollen noch die Studenten vom WS sichtbar sein - else { - if ($term_id%2==1) { - $term_id++; - } - } - return $term_id; - } - - - // zurückrechnen auf die studenten im jetzigen semester - // studienpunkte sind nur für die eigene person sichtbar - function get_old_studienjahr() { - if (date("n") >= 7 && $term_id%2 == 1) { - $studienjahr = date("Y") - intval(($auth->semester - $term_id)/2); - } - else if (date("n") >= 7 && $term_id%2 == 0) { - $studienjahr = date("Y") - intval(($auth->semester - $term_id)/2)-1; - } - else if (date("n") < 7 && $term_id%2 == 1) { - $studienjahr = date("Y") - intval(($auth->semester - $term_id)/2); - } - else { - $studienjahr = date("Y") - intval(($auth->semester - $term_id)/2); - } - - $studienjahr .= "/" . date("y", mktime(0,0,0,1,1,$studienjahr+1)); - } - // write out the menu for kreuzerltool (campus/lehre/effort - function write_menu($menu, $course_id, $lesson, $term_id, $module = "", $stj = 0) { - if ($stj == 0) - $stj = get_studienjahr(); - print " -
- - - -
- - - - - - - - - - - - - - - - - -
-
  • Kreuzerlliste Statistik
  • -
    -
  • Anwesenheits- - und
       Übersichtstabelle
  • -
  • Kreuzerllisten anlegen
       und verwalten
  • -
  • Studentenpunkte
        verwalten
  •  
      - $menuStudienjahr:
     
    - -
    - -EOF; - } - - - - /** - * @params inputString - the String to be formatted - * @return the formatted String - */ - function format($inputString) { - $inputString = stripslashes($inputString); - return str_replace("\n", "
    ",$inputString); - } - - - function get_lectors($course_id, $term_id, $short) { - if ($course_id && $term_id && $short) { - $sql = "SELECT DISTINCT on (bezeichnung,nachname) bezeichnung, studiengang_kz, semester, vornamen, nachname, email, uid FROM lehre.tbl_lehrfachzuteilung JOIN tbl_person ON uid = lektor_uid WHERE studiengang_kz='$course_id' AND semester='$term_id' AND lehrfachzuteilung_kurzbz = '$short' AND tbl_person.aktiv=TRUE ORDER BY bezeichnung, nachname"; - //$sql_query = "SELECT DISTINCT ON(uid), vornamen, nachname, - // titel FROM lehre.tbl_lehrfachzuteilung, tbl_person, - //tbl_mitarbeiter WHERE tbl_person.uid = - //lehre.tbl_lehrfachzuteilung.lektor_uid AND - //lehre.tbl_lehrfachzuteilung.studiengang_kz='$course_id' - //AND lehre.tbl_lehrfachzuteilung.semester='$term_id' - //AND LOWER(lehre.tbl_lehrfachzuteilung.lehrfachzuteilung_kurzbz)='$short' - //AND lehre.tbl_lehrfachzuteilung.aktiv = true - //ORDER BY nachname"; - - $result_lectors = new pgRS($sql); - } - $num_rows_lectors = $result_lectors->num; - $row_email = array(); - $row_vornamen = array(); - $row_nachname = array(); - $row_titel = array(); - for($i = 0; $i < $num_rows_lectors; $i++) - { - $row_email[] = $result_lectors->arr[$i]["emailtw"]; - $row_vornamen[] = $result_lectors->arr[$i]["vornamen"]; - $row_nachname[] = $result_lectors->arr[$i]["nachname"]; - $row_titel[] = $result_lectors->arr[$i]["titel"]; - - } - $ret = ""; - for ($i = 0; $i < count($row_email); $i++) - { - $ret .= "$row_titel[$i] $row_vornamen[$i] $row_nachname[$i]"; - if ($i < count($row_email)-1) - $ret .= ", "; - } - return $ret; - } - - function get_person($bezeichnung, $course_id) { - $sql = "SELECT titel, vornamen, nachname, bezeichnung FROM tbl_funktion, public.tbl_person JOIN tbl_personfunktion ON (tbl_personfunktion.uid = tbl_person.uid) WHERE tbl_personfunktion.funktion_kurzbz = tbl_funktion.funktion_kurzbz AND bezeichnung='$bezeichnung' AND tbl_personfunktion.studiengang_kz='$course_id'"; - $rs = new pgRS($sql); - $arr = $rs->arr[0]; - $ret = $arr["titel"]." " . $arr["vornamen"]." " . $arr["nachname"]; - return $ret; - } - function create_version($user, $info_data) { - $id = 0; - $info_id = 0; - $version_id = 0; - - $ects_points = $info_data["ects_credits"]; - $learning_language = $info_data["sprache"]; - $wochenstunden = $info_data["hours"]; - $course_id = $info_data["course_id"]; - $term_id = $info_data["term_id"]; - $short = $info_data["short"]; - $studienjahr = $info_data["studienjahr"]; - $fachbereich = $info_data["fachbereich"]; - $fachbereichsleiter = $info_data["fachbereichsleiter"]; - $fachbereichskoordinator = $info_data["fachbereichskoordinator"]; - $lehrender = $info_data["lehrender"]; - - $sql = "INSERT INTO lv_infos (ects_credits, - sprache, hours, studienjahr, fachbereich, - fachbereichsleiter, fachbereichskoordinator, lehrender) VALUES - ($ects_points, $learning_language, - $wochenstunden, '$studienjahr', - '$fachbereich', '$fachbereichsleiter', - '$fachbereichskoordinator', '$lehrender')"; - $rs = new myRS($sql); - $info_id = $rs->iid; - if ($info_id) { - $sql = "SELECT max(version) as version FROM lv_versions - WHERE studiengang_kz = $course_id AND - short = '$short' AND term_id = $term_id"; - $rs = new myRS($sql); - $max_version = $rs->arr[0]["version"]; - $sql ="INSERT INTO lv_versions (studiengang_kz, term_id, - short, lector_uid, version, - status, info_id, date_created, date_modified) - VALUES ($course_id, $term_id, '$short', - '$user', " . ($max_version +1).", 0,$info_id," .time() .", " . time().")"; - $rs = new myRS($sql); - $version_id = $rs->iid; - } - return array($version_id, $info_id); - } // eof create_version - - function get_version($version_id) { - $sql = "SELECT * FROM lv_versions v, lv_infos i - WHERE v.id = $version_id AND v.info_id = i.id"; - $rs = new myRS($sql); - return array( - $rs->arr[0]["ects_credits"]/10, - $rs->arr[0]["sprache"], - $rs->arr[0]["hours"]/10, - $rs->arr[0]["info_id"], - $rs->arr[0]["content_de_id"], - $rs->arr[0]["content_en_id"], - $rs->arr[0]["date_created"], - $rs->arr[0]["date_modified"], - $rs->arr[0]["studienjahr"], - $rs->arr[0]["fachbereich"], - $rs->arr[0]["fachbereichsleiter"], - $rs->arr[0]["fachbereichskoordinator"], - $rs->arr[0]["lehrender"], - $rs->arr[0]["studiengang_kz"], - $rs->arr[0]["term_id"], - $rs->arr[0]["short"] - ); - - } // eof get_version - - - // updates the record with info_id in lv_infos - function update_version($user, $info_data) { - $id = 0; - $version_id = 0; - $ects_points = $info_data["ects_credits"]; - $learning_language = $info_data["sprache"]; - $wochenstunden = $info_data["hours"]; - $info_id = $info_data["info_id"]; - $studienjahr = $info_data["studienjahr"]; - $fachbereich = $info_data["fachbereich"]; - $fachbereichsleiter = $info_data["fachbereichsleiter"]; - $fachbereichskoordinator = $info_data["fachbereichskoordinator"]; - $lehrender = $info_data["lehrender"]; - $version_id = $info_data["version_id"]; - - $sql = "UPDATE lv_infos SET ects_credits = $ects_points, - sprache = $learning_language, - hours = $wochenstunden, - studienjahr = '$studienjahr', - fachbereich = '$fachbereich', - fachbereichsleiter = '$fachbereichsleiter', - fachbereichskoordinator = '$fachbereichskoordinator', - lehrender = '$lehrender' - WHERE id = $info_id"; - $rs = new myRS($sql); - $sql = "UPDATE lv_versions SET date_modified = " .time() . - " WHERE id = $version_id"; - $rs = new myRS($sql); - } // eof update_version - - - // saves a version to be displayed in LV infos freigeben - function save_version($version_id) { - $sql = "UPDATE lv_versions SET status = 1 WHERE id = $version_id"; - $rs = new myRS($sql); - } - - // inserts a record into lv_content_$lang and - // update lv_versions.content_$lang_id - function create_content($lang, $version_id, $info_data) { - $arr_values = array_values($info_data); - $keys = join(", ", array_keys($info_data)); - - for ($i = 0; $i < count($arr_values)-1;$i++) { - $values .= "'" . $arr_values[$i] . "', "; - } - $values .= "'" . $arr_values[count($arr_values)-1] ."'"; - $sql = "INSERT INTO lv_content_$lang ($keys) VALUES ($values)"; - $rs = new myRS($sql); - $content_id = $rs->iid; - - $sql = "UPDATE lv_versions SET content_" . $lang . "_id = - $content_id WHERE id = $version_id"; - $rs = new myRS($sql); - - return $content_id; - } // eof create_content - - // update_content updates the table lv_content_$lang - function update_content($lang, $id, $info_data) { - $sql = "UPDATE lv_content_$lang SET "; - - $keys = array_keys($info_data); - $values = array_values($info_data); - - for ($i = 0; $i < count($values); $i++) { - $sql .= $keys[$i] ." = '" . $values[$i] . "'"; - if ($i < count($values)-1) $sql .= ", "; - } - $sql .= " WHERE id = $id"; - $rs = new myRS($sql); - } // eof update_content - function get_content($lang, $content_id, $fields) { - $sql = "SELECT " . join (", ", $fields) . " FROM - lv_content_$lang WHERE id = $content_id"; - $rs = new myRS($sql); - return $rs->arr[0]; - } // eof get_content - - function write_log($lektor_uid, $action) { - $sql = "INSERT INTO lv_log (lektor_uid, action, datum)" . - " VALUES ('$lektor_uid', '$action', " . time() .")"; - $rs = new myRS($sql); - return 1; - } - - -/***************************************************************************** -* function write_ects_menu($menu = 0, $course_id, $term_id, $short, $lang) { -* -* if ($menu == 1) $menu_name = "LV-Infos anzeigen"; -* -* print << - - - - - - - - - - - - - - - - - -
     
  • LV-Infos - anzeigen - -
  • LV-Infos - erstellen / bearbeiten - -
  • LV-Infos - freigeben
  • LV-Infos - Feedback
  •     
    - - -EOF; - - if ($menu_name) { - print << - - - - - - - -*
    - $menu_name - -Lehrfach: '; - if ($menu != 2) { - if ($lang == "" || $lang!="en") { -* echo "[Deutsch]"; -* } else { -* echo "[Deutsch]"; -* } -* if ($lang == "en") { -* echo "[English]"; -* } else { -* echo "[English]"; -* } -* } // eof menu=2 -* echo '
    -* '; -* } -* echo ' -*  '; -* } -***************************************************************************/ - - - // write a menu for a quicker navigation in the ects - course contents program - function write_ects_quick_menu($course_id, $term_id, $short, $p, $version_id = 0, $info_id = 0, $content_de_id = 0, $content_en_id = 0) { - if ($p > 0) { - print '
    Schnellnavigation
    -'; - static $headlines = array("", "Allgemeine Infos", "Inhalte DE", "Prüfung DE", "Inhalte EN", "Prüfung EN", "Beenden"); - for ($i = 1; $i < count($headlines); $i++) { - echo " - $i "; - if ($i==$p) echo ""; - echo $headlines[$i]; - if ($i==$p) echo ""; - echo "
    "; - } - } - } - - - - // this function returns the dictionary entry for the keyword in the - // given language - function dict($lang = "de", $key = "") { - static $dictionary = array ( - "back" => array("de" => "Zurück", "en" => "Back"), - "LVInfos" => array("de" => "LV - Informationen", "en" => "Course Description"), - "allCourses" => array("de" => "Alle Studiengänge", "en" => "All Courses"), - "availCourses" => array("de" => "Vorhandene Lehrfächer in ", "en" => "Available Courses in "), - "term" => array("de" => "Semester", "en" => "term"), - "noinfo" => array("de" => "Keine Informationenen verfügbar", "en" => "No course information available") - - ); - - return $dictionary[$key][$lang]; - } -?> diff --git a/include/ects_sync.class.php b/include/ects_sync.class.php deleted file mode 100644 index f59427f95..000000000 --- a/include/ects_sync.class.php +++ /dev/null @@ -1,110 +0,0 @@ -connection=$conn; - } - - /******************************************************************** - * @brief Überprüft ob der Fachbereich existiert - * - * @param $fachb Fachbereichsbezeichnung - ********************************************************************/ - function check_fachbereich($fachb) - { - $sql_query = "SELECT * FROM tbl_fachbereich where bezeichnung='$fachb' OR kurzbz='$fachb'"; - - $result = pg_exec($this->connection, $sql_query); - - if($row=pg_fetch_object($result)) - $this->erg = $row->fachbereich_id; - else - return false; - - return true; - } - - /******************************************************************** - * @brief Überprüft ob der Studiengang existiert - * - * @param $stg Studiengangs Kurzzeichen - ********************************************************************/ - function check_studiengang($stg) - { - $sql_query = "SELECT * FROM tbl_studiengang where studiengang_kz = $stg"; - - $result = pg_exec($this->connection, $sql_query); - - if(pg_numrows($result)>0) - $this->erg = $stg; - else - return false; - - return true; - } - /******************************************************************** - * @brief Überprüft ob das Lehrfach existiert - * - * @param $lehrf LehrfachsKurzbz - * $stg Studiengang - * $sem Semester - ********************************************************************/ - function check_lehrfach($lehrf, $stg, $sem) - { - $sql_query = "SELECT * FROM tbl_lehrfach where kurzbz = upper('$lehrf') AND studiengang_kz=$stg AND semester=$sem"; - - $result = pg_exec($this->connection, $sql_query); - - if($row=pg_fetch_object($result)) - $this->erg = $row->lehrfach_nr; - else - return false; - - return true; - } - - /******************************************************************** - * @brief Überprüft das Semester - * - * @param $sem Semster - ********************************************************************/ - function check_semester($sem) - { - if(is_numeric($sem) AND $sem<10) - $this->erg = $sem; - else - return false; - - return true; - } -} -?> \ No newline at end of file diff --git a/include/einheit.class.php b/include/einheit.class.php deleted file mode 100644 index 77f137b02..000000000 --- a/include/einheit.class.php +++ /dev/null @@ -1,315 +0,0 @@ -conn = $conn; - - if (strlen($kurzbz)>0) - { - $this->kurzbz=$kurzbz; - $this->load(); - - } - } - - - /** - * Speichert die Einheit in der Datenbank. Bei Fehler ist der Rueckgabewert - * 'false' und die Fehlermeldung steht in 'errormsg'. INSERT oder DELETE wird - * durch 'new' bestimmt. - * @param string $kurzbz_new Kurzbezeichnung ist optional - * @return boolean true=ok, false=fehler - */ - function save($kurzbz_new='') - { - if (is_null($this->conn)) - { - return false; - } - - if (strlen($this->kurzbz)==0) - { - $this->errormsg="kurzbz nicht gesetzt"; - return false; - } - - if ($this->new) - { - if (is_numeric($this->semester)) $semester=$this->semester; - else $semester='NULL'; - if (is_numeric($this->typ)) $typ=$this->typ; - else $typ='NULL'; - if(!strlen($this->mailgrp_kurzbz)>0) - $this->mailgrp_kurzbz='NULL'; - $qry="insert into tbl_einheit(einheit_kurzbz,studiengang_kz,bezeichnung,semester,typ,mailgrp_kurzbz) ". - "values('".$this->kurzbz."','".$this->stg_kz."','".$this->bezeichnung."',$semester,$typ,$this->mailgrp_kurzbz)"; - } else - { - if (is_numeric($this->semester)) $semester='semester='.$this->semester; - else $semester='semester=NULL'; - if (is_numeric($this->typ)) $typ='typ='.$this->typ; - else $typ='NULL'; - if(!strlen($this->mailgrp_kurzbz)>0) - $this->mailgrp_kurzbz='mailgrp_kurzbz=NULL'; - else - $this->mailgrp_kurzbz="mailgrp_kurzbz='$this->mailgrp_kurzbz'"; - - $qry="update tbl_einheit set studiengang_kz=".$this->stg_kz.",bezeichnung='".$this->bezeichnung."',". - "$semester,$typ,".$this->mailgrp_kurzbz.",einheit_kurzbz='".(strlen($kurzbz_new)>0?$kurzbz_new:$this->kurzbz)."' ". - "where einheit_kurzbz='".$this->kurzbz."'"; - - } - //echo $qry; - if(!($erg=pg_exec($this->conn, $qry))) - { - $this->errormsg=pg_errormessage($this->conn); - return false; - } - return true; - - } - - /** - * @return boolean true=ok, false=fehler - */ - function load($kurzbz='') - { - // optional: kurzbz setzen - if (strlen($uid)>0) - $this->kurzbz=$kurzbz; - // uid vorhanden? - if (strlen($this->kurzbz)==0) { - $this->errormsg='einheit_kurzbz nicht gesetzt'; - return false; - } - if (is_null($this->conn)) { - return false; - } - $qry="select einheit_kurzbz,studiengang_kz,bezeichnung,semester,typ, mailgrp_kurzbz ". - "from tbl_einheit ". - "where einheit_kurzbz='".$this->kurzbz."'"; - - if(!($erg=pg_exec($this->conn, $qry))) { - $this->errormsg=pg_errormessage($this->conn); - return false; - } - $num_rows=pg_numrows($erg); - if($num_rows!=1) { - $this->errormsg="Zuwenige oder zuviele Ergebnisse (Anzahl: $num_rows)!"; - return false; - } - $row=pg_fetch_object($erg,0); - - $this->stg_kz=$row->studiengang_kz; - $this->bezeichnung=$row->bezeichnung; - $this->semester=$row->semester; - $this->typ=$row->typ; - $this->mailgrp_kurzbz=$row->mailgrp_kurzbz; - - return true; - - } - - /** - * Loescht die Funktion aus der Datenbank. Bei Fehler ist der Rueckgabewert - * 'false' und die Fehlermeldung steht in 'errormsg'. - * @return boolean true=ok, false=fehler - */ - function delete() - { - if (is_null($this->conn)) { - return false; - } - $qry="delete from tbl_einheit where einheit_kurzbz='".$this->kurzbz."'"; - - if(!($erg=pg_exec($this->conn, $qry))) { - $this->errormsg=pg_errormessage($this->conn); - return false; - } - return true; - } - - function addStudent($uid) { - if (is_null($this->conn)) { - return false; - } - $qry="insert into tbl_einheitstudent(einheit_kurzbz,uid,updateamum,updatevon) ". - "values('".$this->kurzbz."','".$uid."',now(),'".$_SERVER['PHP_AUTH_USER']."')"; - - if(!($erg=pg_exec($this->conn, $qry))) { - $this->errormsg=pg_errormessage($this->conn); - return false; - } - return true; - } - - function deleteStudent($uid) { - if (is_null($this->conn)) { - return false; - } - $qry="delete from tbl_einheitstudent ". - "where einheit_kurzbz='".$this->kurzbz."' and uid='$uid'"; - - if(!($erg=pg_exec($this->conn, $qry))) { - $this->errormsg=pg_errormessage($this->conn); - return false; - } - return true; - } - - - /** - * Alle Einheiten zurueckgeben - * @return array Array der einheiten - */ - function getAll($studiengang_kz='') - { - if (is_null($this->conn)) { - return false; - } - if (strlen($studiengang_kz)>0) - { - $where=" where tbl_einheit.studiengang_kz='".$studiengang_kz."' "; - } else - { - $where=""; - } - $qry="select tbl_einheit.*,tbl_studiengang.kurzbz from tbl_einheit join tbl_studiengang using(studiengang_kz) ". - "$where order by einheit_kurzbz;"; - if(!($erg=pg_exec($this->conn, $qry))) { - $this->errormsg=pg_errormessage($this->conn); - return false; - } - $num_rows=pg_numrows($erg); - $result=array(); - for($i=0;$i<$num_rows;$i++) - { - $row=pg_fetch_object($erg,$i); - $l=new einheit($this->conn); - $l->kurzbz=$row->einheit_kurzbz; - $l->stg_kz=$row->studiengang_kz; - $l->stg_kurzbz=$row->kurzbz; - $l->bezeichnung=$row->bezeichnung; - $l->semester=$row->semester; - $l->typ=$row->typ; - $l->mailgrp_kurzbz=$row->mailgrp_kurzbz; - $result[]=$l; - } - return $result; - } - - /** - * Liste aller Studenten zurueckgeben - * @param string $studiengang_kz optional - * @return array Array mit allen Studenten, false bei fehler - */ - function getStudenten($studiengang_kz='') - { - if (is_null($this->conn)) { - return false; - } - if (strlen($studiengang_kz)>0) - { - $where=" and tbl_einheit.studiengang_kz='".$studiengang_kz."' "; - } else - { - $where=""; - } - $qry="select einheit_kurzbz,uid ". - "from tbl_einheitstudent join tbl_student using(uid) join tbl_person using(uid) ". - " join tbl_einheit using (einheit_kurzbz) ". - "where einheit_kurzbz='".$this->kurzbz."' $where ". - "order by upper(tbl_person.nachname),upper(tbl_person.vornamen)"; - - if(!($erg=pg_exec($this->conn, $qry))) { - $this->errormsg=pg_errormessage($this->conn); - return false; - } - $num_rows=pg_numrows($erg); - $result=array(); - for($i=0;$i<$num_rows;$i++) - { - $row=pg_fetch_object($erg,$i); - $l=new student($this->conn,$row->uid); - $result[]=$l; - } - return $result; - } - - /** - * Liefert die Anzahl der Studenten in einer Einheit - * @param string kurzbzlang - * @return anzahl der Studenten - */ - function countStudenten($einheit_kurzbz) - { - $qry = "Select count(*) as anzahl from tbl_einheitstudent where einheit_kurzbz='$einheit_kurzbz'"; - if($result=pg_query($this->conn,$qry)) - { - if($row=pg_fetch_object($result)) - return $row->anzahl; - else - { - $this->errormsg = pg_errormessage($this->conn); - return false; - } - } - else - { - $this->errormsg = pg_errormessage($this->conn); - return false; - } - } - -} -?> \ No newline at end of file diff --git a/include/email.class.php b/include/email.class.php new file mode 100644 index 000000000..399e84d99 --- /dev/null +++ b/include/email.class.php @@ -0,0 +1,310 @@ +conn = $conn; + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + if(!pg_query($conn,$qry)) + { + $this->errormsg = "Encoding konnte nicht gesetzt werden"; + return false; + } + if($mail_id != null) + $this->load($mail_id); + } + + /** + * Laedt einen Datensatz + * @param mail_id ID des zu ladenden Datensatzes + */ + function load($mail_id) + { + //mail_id auf gueltigkeit pruefen + if(!is_numeric($mail_id) || $mail_id == '') + { + $this->errormsg = 'mail_id muss eine gueltige Zahl sein'; + return false; + } + + //laden des Datensatzes + $qry = "SELECT * FROM email WHERE email_pk='$mail_id';"; + + if(!$res = pg_query($this->conn,$qry)) + { + $this->errormsg = 'Fehler bei der Datenbankabfrage'; + return false; + } + + if($row=pg_fetch_object($res)) + { + $this->email_id = $row->email_pk; + $this->person_id = $row->person_fk; + $this->email = $row->email; + $this->name = $row->name; + $this->typ = $row->typ; + $this->zustelladresse = ($row->zustelladresse=='J'?true:false); + $this->updateamum = $row->creationdate; + $this->updatevon = $row->creationuser; + } + else + { + $this->errormsg = 'Fehler bei der Datenbankabfrage'; + return false; + } + + return true; + } + + /** + * Laedt alle Datensaetze + * @return true wenn ok, false im Fehlerfall + */ + function getAll() + { + /* Frisst zu viel Speicher und wird beendet + + $qry = "SELECT * FROM email;"; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Fehler bei einer Datenbankabfrage'; + return false; + } + + while($row = pg_fetch_object($res)) + { + $mail_obj = new email($this->conn); + + $mail_obj->email_id = $row->email_pk; + $mail_obj->person_id = $row->person_fk; + $mail_obj->email = $row->email; + $mail_obj->name = $row->name; + $mail_obj->typ = $row->typ; + $mail_obj->zustelladresse = ($row->zustelladresse=='J'?true:false); + $mail_obj->updateamum = $row->creationdate; + $mail_obj->updatevon = $row->creationuser; + + $this->result[] = $mail_obj; + } + + return true; + */ + return false; + } + + /** + * Laedt alle Datensaetze zu einer person + * @param pers_id ID der Person zu der die Mails geladen werden sollen + * @return true wenn ok, false im Fehlerfall + */ + function load_pers($pers_id) + { + //pers_id auf gueltigkeit pruefen + if(!is_numeric($pers_id) || $pers_id == '') + { + $this->errormsg = 'pers_id muss eine gueltige Zahl sein'; + return false; + } + + //Datensaetze laden + $qry = "SELECT * FROM email WHERE person_fk='$pers_id';"; + + if(!$result = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Fehler bei einer Datenbankabfrage'; + return false; + } + + while($row = pg_fetch_object($result)) + { + $mail_obj = new email($this->conn); + + $mail_obj->email_id = $row->email_pk; + $mail_obj->person_id = $row->person_fk; + $mail_obj->email = $row->email; + $mail_obj->name = $row->name; + $mail_obj->typ = $row->typ; + $mail_obj->zustelladresse = ($row->zustelladresse=='J'?true:false); + $mail_obj->updateamum = $row->creationdate; + $mail_obj->updatevon = $row->creationuser; + + $this->result[] = $mail_obj; + } + + return true; + } + + /** + * Loescht einen Datensatz + * @param mail_id ID des zu leoschenden Datensatzes + * @return true wenn ok, false im Fehlerfall + */ + function delete($mail_id) + { + //mail_id auf gueltigkeit pruefen + if(!is_numeric($mail_id) || $mail_id == '') + { + $this->errormsg = 'mail_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "DELETE FROM email WHERE email_pk = '$mail_id';"; + + if(pg_query($this->conn,$qry)) + { + //Log schreiben + $sql = $qry; + $qry = "SELECT nextval('log_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim Auslesen der Log-Sequence'; + return false; + } + + $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')"; + if(pg_query($this->conn, $qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim loeschen'; + return false; + } + } + + /** + * Prueft die variablen auf gueltigkeit + * @return true wenn ok, false im Fehlerfall + */ + function checkvars() + { + //Gesamtlaenge pruefen + if(strlen($this->name)>255) + { + $this->errormsg = 'Name darf nicht mehr als 255 Zeichen lang sein'; + return false; + } + if(strlen($this->email)>255) + { + $this->errormsg = 'EMail darf nicht mehr als 255 Zeichen lang sein'; + return false; + } + + //Zahlenfelder pruefen + if(!is_numeric($this->person_id)) + { + $this->errormsg = 'Person_id muss eine gueltige Zahl sein'; + return false; + } + if(!is_numeric($this->typ)) + { + $this->errormsg = 'Typ muss eine gueltige Zahl sein'; + return false; + } + + $this->errormsg = ''; + return true; + } + + /** + * Speichert den aktuellen Datensatz + * Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt + * andernfalls wird der Datensatz mit der ID in $email_id aktualisiert + * @return true wenn ok, false im Fehlerfall + */ + function save() + { + if(!$this->checkvars()) + return false; + + if($this->new) + { + //Neuen Datensatz anlegen + + //Naechste ID aus Sequence holen + $qry = "SELECT nextval('email_seq') as id;"; + if(!$row=pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim auslesen der ID aus der Sequence'; + return false; + } + $this->email_id = $row->id; + + $qry = "INSERT INTO email (email_pk, person_fk, name, email, typ, creationdate, creationuser, zustelladresse)". + " VALUES ('$this->email_id', '$this->person_id', '$this->name', '$this->email', '$this->typ', now(),". + " $this->updatevon, '".($this->zustelladresse?'J':'N')."');"; + } + else + { + //Bestehenden Datensatz aktualisieren + + //email_id auf gueltigkeit pruefen + if(!is_numeric($this->email_id) || $this->email_id == '') + { + $this->errormsg = 'email_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "UPDATE email SET person_fk = '$this->person_id', name = '$this->name', email = '$this->email',". + " typ = '$this->typ', zustelladresse = '".($this->zustelladresse?'J':'N')."' WHERE email_pk = '$this->email_id';"; + } + + if(pg_query($this->conn, $qry)) + { + //Log schreiben + $sql = $qry; + $qry = "SELECT nextval('log_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim Auslesen der Log-Sequence'; + return false; + } + + $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')"; + if(pg_query($this->conn, $qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim speichern des Datensatzes'; + return false; + } + } +} +?> \ No newline at end of file diff --git a/include/fachbereich.class.php b/include/fachbereich.class.php index 2c8da72dc..fa294f6be 100644 --- a/include/fachbereich.class.php +++ b/include/fachbereich.class.php @@ -1,92 +1,229 @@ -, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ +/** + * Klasse fachbereich (FAS-Online) + * @create 04-12-2006 + */ class fachbereich { - + var $conn; // @var resource DB-Handle + var $new; // @var boolean + var $errormsg; // @var string + var $result = array(); // @var fachbereich Objekt + + //Tabellenspalten + var $fachbereich_kurzbz; // @var string + var $bezeichnung; // @var string + var $farbe; // @var string + var $studiengang_kz; // @var integer + var $ext_id; // @var bigint + + /** - * @var integer + * Konstruktor + * @param $conn Connection zur DB + * $fachb_id ID des zu ladenden Fachbereiches */ - var $id; - /** - * @var string - */ - var $kurzbz; - /** - * @var string - */ - var $bezeichnung; - /** - * @var string; - */ - var $farbe; - /** - * @var integer - */ - var $studiengang_kz; - /** - * @var boolean default true - */ - var $boolean = true; - /** - * - * @var studiengang_kurzbz - */ - var $studiengang_kurzbz; - /** - * @var string - */ - var $errormsg; - /** - * @var resource - */ - var $conn; - - - function fachbereich($conn) + function fachbereich($conn, $fachbereich_kurzbz=null) { - $this->conn = $conn; + $this->conn = $conn; + if($fachbereich_kurzbz != null) + $this->load($fachbereich_kurzbz); } - - + /** - * Alle Fachbereiche zurückgeben - * @return array mit Fachbereichen oder false=fehler + * Laedt alle verfuegbaren Fachbereiche + * @return true wenn ok, false im Fehlerfall */ function getAll() { - if (is_null($this->conn)) + $qry = 'SELECT * FROM tbl_fachbereich order by fachbereich_kurzbz;'; + + if(!$res = pg_query($this->conn, $qry)) { + $this->errormsg = 'Fehler beim Laden der Datensaetze'; return false; } - $qry = "select fachbereich_id,tbl_fachbereich.kurzbz,tbl_fachbereich.bezeichnung,tbl_fachbereich.farbe,tbl_fachbereich.studiengang_kz,". - "tbl_studiengang.kurzbz as studiengang_kurzbz ". - "from tbl_fachbereich join tbl_studiengang using(studiengang_kz) ". - "order by tbl_Fachbereich.kurzbz"; - //echo $qry; - if (!($erg = pg_exec($this->conn, $qry))) + + while($row = pg_fetch_object($res)) { - $this->errormsg = pg_errormessage($this->conn); - return false; + $fachb_obj = new fachbereich($this->conn); + + $fachb_obj->fachbereich_kurzbz = $row->fachbereich_kurzbz; + $fachb_obj->erhalter_id = $row->erhalter_fk; + $fachb_obj->name = $row->name; + + $this->result[] = $fachb_obj; } - $result = array(); - $num_rows = pg_numrows($erg); - for ($i = 0; $i < $num_rows; $i ++) - { - // Record holen - $row = pg_fetch_object($erg, $i); - // Instanz erzeugen - $fb = new fachbereich($this->conn); - $fb->id = $row->fachbereich_id; - $fb->kurzbz = $row->kurzbz; - $fb->bezeichnung = $row->bezeichnung; - $fb->farbe = $row->farbe; - $fb->studiengang_kz = $row->studiengang_kz; - $fb->studiengang_kurzbz = $row->studiengang_kurzbz; - // in array speichern - $result[] = $fb; - } - return $result; + return true; } + + /** + * Laedt einen Fachbereich + * @param $fachb_id ID des zu ladenden Fachbereiches + * @return true wenn ok, false im Fehlerfall + */ + function load($fachbereich_kurzbz) + { + if($fachbereich_kurzbz == '') + { + $this->errormsg = 'fachbereich_kurzbz ungueltig!'; + return false; + } + + $qry = "SELECT * FROM tbl_fachbereich WHERE fachbereich_kurzbz = '$fachbereich_kurzbz';"; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Fehler beim Laden des Datensatzes'; + return false; + } + + if($row=pg_fetch_object($res)) + { + $this->fachbereich_kurzbz = $row->fachbereich_kurzbz; + $this->erhalter_id = $row->erhalter_fk; + $this->name = $row->name; + } + else + { + $this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden'; + return false; + } + + return true; + } + + /** + * Loescht einen Datensatz + * @param $fachb_id id des Datensatzes der geloescht werden soll + * @return true wenn ok, false im Fehlerfall + */ + function delete($fachb_id) + { + $this->errormsg = 'Noch nicht implementiert'; + return false; + } + function addslashes($var) + { + return ($var!=''?"'".addslashes($var)."'":'null'); + } + /** + * Prueft die Gueltigkeit der Variablen + * @return true wenn ok, false im Fehlerfall + */ + function checkvars() + { + $this->bezeichnung = str_replace("'",'´',$this->bezeichnung); + $this->fachbereich_kurzbz = str_replace("'",'´',$this->fachbereich_kurzbz); + + //Laenge Pruefen + if(strlen($this->bezeichnung)>128) + { + $this->errormsg = "Bezeichnung darf nicht laenger als 128 Zeichen sein bei $this->ext_id - $this->bezeichnung"; + return false; + } + if(strlen($this->fachbereich_kurzbz)>16) + { + $this->errormsg = "Kurzbez darf nicht laenger als 16 Zeichen sein bei $this->ext_id - $this->fachbereich_kurzbz"; + return false; + } + $this->errormsg = ''; + return true; + } + /** + * Speichert den aktuellen Datensatz + * @return true wenn ok, false im Fehlerfall + */ + function save() + { + //Gueltigkeit der Variablen pruefen + if(!$this->checkvars()) + return false; + + if($this->new) + { + //Pruefen ob fachbereich_kurzbz gueltig ist + if($this->fachbereich_kurzbz == '') + { + $this->errormsg = 'fachbereich_id ungueltig!'; + return false; + } + //Neuen Datensatz anlegen + $qry = 'INSERT INTO tbl_fachbereich (fachbereich_kurzbz, bezeichnung, farbe, ext_id, studiengang_kz) VALUES ('. + $this->addslashes($this->fachbereich_kurzbz).', '. + $this->addslashes($this->bezeichnung).', '. + $this->addslashes($this->farbe).', '. + $this->addslashes($this->ext_id).', '. + $this->addslashes($this->studiengang_kz).');'; + } + else + { + //bestehenden Datensatz akualisieren + + //Pruefen ob fachbereich_kurzbz gueltig ist + if($this->fachbereich_kurzbz == '') + { + $this->errormsg = 'fachbereich_kurzbz ungueltig.'; + return false; + } + + $qry = 'UPDATE tbl_fachbereich SET '. + 'fachbereich_kurzbz='.$this->addslashes($this->fachbereich_kurzbz).', '. + 'bezeichnung='.$this->addslashes($this->bezeichnung).', '. + 'farbe='.$this->addslashes($this->farbe).', '. + 'ext_id='.$this->addslashes($this->ext_id).', '. + 'studiengang_kz='.$this->addslashes($this->studiengang_kz).' '. + 'WHERE fachbereich_kurzbz = '.$this->addslashes($this->fachbereich_kurzbz).';'; + } + + if(pg_query($this->conn, $qry)) + { + /*//Log schreiben + $sql = $qry; + $qry = "SELECT nextval('log_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim Auslesen der Log-Sequence'; + return false; + } + + $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')"; + if(pg_query($this->conn, $qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; + return false; + }*/ + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern des Datensatzes'; + return false; + } + } } ?> \ No newline at end of file diff --git a/include/fas/benutzer.class.php b/include/fas/benutzer.class.php index 1b6edb517..31f9ac952 100644 --- a/include/fas/benutzer.class.php +++ b/include/fas/benutzer.class.php @@ -1,151 +1,386 @@ , - * Andreas Oesterreicher and - * Rudolf Hangl . +/** + * Klasse fuer Berechtigungen der User + * @author Christian Paminger + * @version 1.0 + * @updated 11-Feb-2004 */ - -class benutzer extends person +class benutzer { - //Tabellenspalten - var $uid; // varchar(16) - var $bnaktiv; // boolean - var $alias; // varchar(256) - - // ************************************************************************* - // * Konstruktor - Uebergibt die Connection und laedt optional einen Benutzer - // * @param $conn Datenbank-Connection - // * $uid Benutzer der geladen werden soll (default=null) - // * $unicode Gibt an ob die Daten mit UNICODE Codierung - // * oder LATIN9 Codierung verarbeitet werden sollen - // ************************************************************************* - function benutzer($conn, $uid=null, $unicode=false) - { - $this->conn = $conn; - - if($unicode) - $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; - else - $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; - - if(!pg_query($conn,$qry)) - { - $this->errormsg = 'Encoding konnte nicht gesetzt werden'; - return false; - } - - if($uid != null) - $this->load($uid); - } + /** + * interne userberechtigung_id (Zaehler aus DB) + * @var integer + */ + var $userberechtigung_id; + /** + * @var integer + */ + var $studiengang_kz; + /** + * @var integer + */ + var $fachbereich_id; + /** + * @var string + */ + var $berechtigung_kurzbz; + /** + * @var string + */ + var $uid; + /** + * @var string + */ + var $studiensemester_kurzbz; + /** + * @var integer + */ + var $start; + /** + * @var integer + */ + var $ende; + /** + * @var integer + */ + var $starttimestamp; + /** + * @var integer + */ + var $endetimestamp; + /** + * @var string + */ + var $art; + + /** + * @var array + */ + var $berechtigungen=array(); + + /** + * @var string + */ + + var $variable; - // *********************************************************** - // * Laedt Benutzer mit der uebergebenen ID - // * @param $uid ID der Person die geladen werden soll - // *********************************************************** - function load($uid) + var $conn; //Vilesci Connection + /** + * @var boolean + */ + var $new; + var $errormsg; + + function benutzer($conn) { - + $this->conn=$conn; + $this->new=true; } - - // ******************************************* - // * Prueft die Variablen vor dem Speichern - // * auf Gueltigkeit. - // * @return true wenn ok, false im Fehlerfall - // ******************************************* - function validate() + + + /** + * Ladet die Attribute der Berechtigung aus der Datenbank. Bei Fehler ist der + * Rueckgabewert 'false' und die Fehlermeldung steht in 'errormsg'. + * @return boolean true=ok, false=fehler + */ + function load($id) { - if(strlen($this->uid)>16) + // Berechtigung holen + $sql_query="SELECT * FROM tbl_userberechtigung WHERE userberechtigung_id=$id"; + //echo $sql_query; + if(!($erg=pg_exec($this->conn, $sql_query))) { - $this->errormsg = 'UID darf nicht laenger als 16 Zeichen sein'; + $this->errormsg=pg_errormessage($this->conn); return false; } - if($this->uid == '') + $num_rows=pg_numrows($erg); + if($num_rows!=1) { - $this->errormsg = 'UID muss eingegeben werden'; + $this->errormsg="Zuwenige oder zuviele Ergebnisse (Anzahl: $num_rows)!"; return false; } - if(strlen($this->alias)>256) + $row=pg_fetch_object($erg,0); + + $this->userberechtigung_id=$row->userberechtigung_id; + $this->studiengang_kz=$row->studiengang_kz; + $this->fachbereich_id=$row->fachbereich_id; + $this->berechtigung_kurzbz=$row->berechtigung_kurzbz; + $this->uid=$row->uid; + $this->studiensemester_kurzbz=$row->studiensemester_kurzbz; + $this->start=$row->start; + $this->ende=$row->ende; + $this->art=$row->art; + $this->new=false; + + return true; + } + + /** + * @return boolean true=ok, false=fehler + */ + function save() + { + /* + // Connection holen + if (is_null($conn=$this->getConnection())) { - $this->errormsg = 'Alias darf nicht laenger als 256 Zeichen sein'; return false; } - if(!is_numeric($this->person_id)) - { - $this->errormsg = 'person_id muss eine gueltige Zahl sein'; + // Daten zur Person speichern + + if (!person::save()) { + $this->errormsg.="Daten zur LVA konnten nicht gespeichert werden."; return false; } - if(!is_bool($this->aktiv)) + if ($this->new) { + $qry="INSERT INTO tbl_lehrveranstaltung(lvnr,unr,einheit_kurzbz,". + "lektor,lehrfach_nr,studiengang_kz,fachbereich_id,semester,verband,". + "gruppe,raumtyp,raumtypalternativ,semesterstunden,stundenblockung,". + "wochenrythmus,start_kw,anmerkung)". + "values(". + "'".$this->lvnr."',". + "'".$this->unr."',". + "'".$this->einheit_kurzbz."',". + "'".$this->lektor."',". + (strlen($this->lehrfach_nr)>0?$this->lehrfach_nr:NULL).",". + (strlen($this->studiengang_kz)>0?$this->studiengang_kz:NULL).",". + (strlen($this->fachbereich_id)>0?$this->fachbereich_id:NULL).",". + (strlen($this->semester)>0?$this->semester:NULL).",". + "'".$this->verband."',". + "'".$this->gruppe."',". + (strlen($this->raumtyp)>0?"'".$this->raumtyp."'":NULL).",". + (strlen($this->raumtypalternativ)>0?"'".$this->raumtypalternativ."'":NULL).",". + (strlen($this->semesterstunden)>0?$this->semesterstunden:NULL).",". + (strlen($this->stundenblockung)>0?$this->stundenblockung:NULL).",". + (strlen($this->wochenrythmus)>0?$this->wochenrythmus:NULL).",". + (strlen($this->start_kw)>0?$this->start_kw:NULL).",". + (strlen($this->anmerkung)>0?"'".$this->anmerkung."'":NULL).",". + ")"; + } else { - $this->errormsg = 'aktiv muss ein boolscher wert sein'; + $qry="UPDATE tbl_lehrveranstaltung ". + "SET lvnr='".$this->lvnr."',". + "unr='".$this->unr."',". + "einheit_kurzbz='".$this->einheit_kurzbz."',". + "lektor='".$this->lehrfach_nr."',". + "lehrfach_nr=".(strlen($this->lehrfach_nr)>0?$this->lehrfach_nr:NULL).",". + "studiengang_kz=".(strlen($this->studiengang_kz)>0?$this->studiengang_kz:NULL).",". + "fachbereich_id=".(strlen($this->fachbereich_id)>0?$this->fachbereich_id:NULL).",". + "semester=".(strlen($this->semester)>0?$this->semester:NULL).",". + "verband='".$this->verband."',". + "gruppe='".$this->gruppe."',". + "raumtyp=".(strlen($this->raumtyp)>0?"'".$this->raumtyp."'":NULL).",". + "raumtypalternativ=".(strlen($this->raumtypalternativ)>0?"'".$this->raumtypalternativ."'":NULL).",". + "semesterstunden=".(strlen($this->semesterstunden)>0?$this->semesterstunden:NULL).",". + "stundenblockung=".(strlen($this->stundenblockung)>0?$this->stundenblockung:NULL).",". + "wochenrythmus=".(strlen($this->wochenrythmus)>0?$this->wochenrythmus:NULL).",". + "start_kw=".(strlen($this->start_kw)>0?$this->start_kw:NULL).",". + "anmerkung=".(strlen($this->anmerkung)>0?"'".$this->anmerkung."'":NULL). + " WHERE lehrveranstaltung_id='".$this->lehrveranstaltung_id."'"; + } + //echo "
    ".$qry; + if(!@pg_query($conn, $qry)) + { + $this->errormsg=pg_errormessage($conn); return false; } return true; + */ + } + + + /** + * Rueckgabewert ist ein Array mit den Ergebnissen. Bei Fehler false und die + * Fehlermeldung liegt in errormsg. + * Wenn der Parameter stg_kz NULL ist tritt einheit_kurzbzb in Kraft. + * @param string $uid UserID + * @return variabel Array mit LVA; false bei Fehler + */ + function getBerechtigungen($uid) + { + // Berechtigungen holen + $sql_query="SELECT * FROM tbl_userberechtigung WHERE uid='$uid' AND (startnow() OR ende IS NULL)"; + //echo $sql_query; + if(!$erg=@pg_query($this->conn, $sql_query)) + { + $this->errormsg=pg_errormessage($this->conn); + return false; + } + //$num_rows=pg_numrows($erg); + while($row=pg_fetch_object($erg)) + { + $b=new berechtigung($this->conn); + $b->userberechtigung_id=$row->userberechtigung_id; + $b->studiengang_kz=$row->studiengang_kz; + $b->fachbereich_id=$row->fachbereich_id; + $b->berechtigung_kurzbz=$row->berechtigung_kurzbz; + $b->uid=$row->uid; + $b->studiensemester_kurzbz=$row->studiensemester_kurzbz; + $b->start=$row->start; + if ($row->start!=null) + $b->starttimestamp=mktime(0,0,0,substr($row->start,5,2),substr($row->start,8),substr($row->start,0,4)); + else + $b->starttimestamp=null; + $b->ende=$row->ende; + if ($row->ende!=null) + $b->endetimestamp=mktime(23,59,59,substr($row->ende,5,2),substr($row->ende,8),substr($row->ende,0,4)); + else + $b->endetimestamp=null; + $b->art=$row->art; + $this->berechtigungen[]=$b; + } + return true; } - // ****************************************************************** - // * Speichert die Benutzerdaten in die Datenbank - // * Wenn $new auf true gesetzt ist wird ein neuer Datensatz angelegt - // * ansonsten der Datensatz mit $uid upgedated - // * @return true wenn erfolgreich, false im Fehlerfall - // ****************************************************************** - function save() + + function isBerechtigt($berechtigung,$studiengang_kz=null,$art=null) { - //Personen Datensatz speichern - if(!person::save()) - return false; - - //Variablen auf Gueltigkeit pruefen - if(!benutzer::validate()) - return false; - - if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE + $timestamp=time(); + foreach ($this->berechtigungen as $b) { - $qry = 'INSERT INTO tbl_benutzer (uid, aktiv, alias, person_id, insertamum, insertvon, updateamum, updatevon) VALUES('. - "'".addslashes($this->uid)."',". - ($this->aktiv?'true':'false').','. - $this->addslashes($this->alias).",'". - $this->person_id."',". - $this->addslashes($this->insertamum).",". - $this->addslashes($this->insertvon).",". - $this->addslashes($this->updateamum).",". - $this->addslashes($this->updatevon).");"; - } - else - { - $qry = 'UPDATE tbl_benutzer SET'. - ' aktiv='.($this->aktiv?'true':'false').','. - ' alias='.$this->addslashes($this->alias).','. - " person_id='".$this->person_id."',". - ' updateamum='.$this->addslashes($this->updateamum).','. - ' updatevon='.$this->addslashes($this->updatevon). - " WHERE uid='".addslashes($this->uid)."';"; + if($berechtigung == $b->berechtigung_kurzbz && $studiengang_kz==null && $art==null) + if ($b->starttimestamp!=null && $b->endetimestamp!=null) + { + if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) + return true; + } + else + return true; + + if ($berechtigung==$b->berechtigung_kurzbz + && ($studiengang_kz==$b->studiengang_kz || $b->studiengang_kz==0) && $art==null) + if ($b->starttimestamp!=null && $b->endetimestamp!=null) + { + if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) + return true; + } + else + return true; + + if ($berechtigung==$b->berechtigung_kurzbz + && ($studiengang_kz==$b->studiengang_kz || $b->studiengang_kz==0) + && strstr($b->art,$art)) + if ($b->starttimestamp!=null && $b->endetimestamp!=null) + { + if ($timestamp>$b->starttimestamp && $timestamp<$b->endetimestamp) + return true; + } + else + return true; } + return false; + } + + /** + * Gibt Array mit Kennzahlen der Studiengaenge sortiert zurueck. + * Optional wird auf Berechtigung eingeschraenkt. + * Wenn Berechtigung ueber alle Studiengaenge steht im ersten Feld 0. + */ + function getStgKz($berechtigung=null) + { + $studiengang_kz=array(); + $timestamp=time(); - if(pg_query($this->conn,$qry)) + foreach ($this->berechtigungen as $b) + if ($berechtigung==$b->berechtigung_kurzbz || $berechtigung==null) + $studiengang_kz[]=$b->studiengang_kz; + $studiengang_kz=array_unique($studiengang_kz); + sort($studiengang_kz); + return $studiengang_kz; + } + + /** + * Setzt die Studiensemester Variable + */ + function setVariableStudiensemester($user,$stsem) + { + //Vorhandende Variable aendern + $qry = "Update tbl_variable SET wert='$stsem' WHERE uid='$user' AND name='semester_aktuell'"; + if($result = pg_query($this->conn,$qry)) { - //Log schreiben - return true; + if(pg_affected_rows($result)==0) + { + //Falls Variable nicht vorhanden ist eine neue anlegen + $qry = "INSERT INTO tbl_variable(uid, name, wert) values('$user', 'semester_aktuell', '$stsem')"; + if(pg_query($this->conn,$qry)) + return true; + else + { + $this->errormsg.=pg_errormessage($this->conn); + return false; + } + } + else + return true; } else - { - $this->errormsg = 'Fehler beim Speichern des Benutzer-Datensatzes:'.$qry; + { + $this->errormsg.=pg_errormessage($this->conn); return false; } } + + function getpossibilities($variable) + { + $ret = array(); + + switch($variable) + { + case 'semester_aktuell': + $qry = "Select * from tbl_studiensemester order by start"; + if($result = pg_query($this->conn,$qry)) + { + while($row=pg_fetch_object($result)) + $ret[] = $row->studiensemester_kurzbz; + } + break; + } + return $ret; + } + + function loadVariables($user) + { + if(!($result=@pg_query($this->conn, "SELECT * FROM tbl_variable WHERE uid='$user'"))) + { + $this->errormsg.=pg_errormessage($this->conn); + return false; + } + else + $num_rows=@pg_numrows($result); + + while($row=pg_fetch_object($result)) + { + $this->variable->{$row->name}=$row->wert; + } + + if (!isset($this->variable->semester_aktuell)) + { + if(!($result=@pg_query($this->conn, 'SELECT * FROM tbl_studiensemester WHERE ende>now() ORDER BY start LIMIT 1'))) + { + $this->errormsg.=pg_errormessage($this->conn); + return false; + } + else + { + $num_rows=@pg_numrows($result); + if ($num_rows>0) + { + $row=pg_fetch_object($result); + $this->variable->semester_aktuell=$row->studiensemester_kurzbz; + } + } + } + + if (!isset($this->variable->db_stpl_table)) + $this->variable->db_stpl_table='stundenplan'; + + if (!isset($this->variable->fas_id)) + $this->variable->fas_id=0; + + if (!isset($this->variable->sleep_time)) + $this->variable->sleep_time=300; + + return true; + } } ?> \ No newline at end of file diff --git a/include/fas/berechtigung.class.php b/include/fas/berechtigung.class.php deleted file mode 100644 index 48377a574..000000000 --- a/include/fas/berechtigung.class.php +++ /dev/null @@ -1,138 +0,0 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ - -class berechtigung -{ - var $conn; // resource DB-Handle - var $errormsg; // string - var $new; // boolean - var $berechtigungen = array(); // berechtigung Objekt - - //Tabellenspalten - var $berechtigung_kurzbz; // varchar(16) - var $beschreibung; // varchar(256) - - // ************************************************************************* - // * Konstruktor - Uebergibt die Connection und laedt optional eine Lehrform - // * @param $conn Datenbank-Connection - // * $berechtigung_kurzbz - // * $unicode Gibt an ob die Daten mit UNICODE Codierung - // * oder LATIN9 Codierung verarbeitet werden sollen - // ************************************************************************* - function berechtigung($conn, $berechtigung_kurzbz=null, $unicode=false) - { - $this->conn = $conn; - - if($unicode) - $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; - else - $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; - - if(!pg_query($conn,$qry)) - { - $this->errormsg = 'Encoding konnte nicht gesetzt werden'; - return false; - } - - if($berechtigung_kurzbz!=null) - $this->load($berechtigung_kurzbz); - } - - // ********************************************************* - // * Laedt eine Berechtigung - // * @param berechtigung_kurzbz - // ********************************************************* - function load($berechtigung_kurzbz) - { - return true; - } - - // ******************************************* - // * Prueft die Variablen vor dem Speichern - // * auf Gueltigkeit. - // * @return true wenn ok, false im Fehlerfall - // ******************************************* - function validate() - { - if(strlen($this->berechtigung_kurzbz)>16) - { - $this->errormsg = 'Berechtigung_kurzbz darf nicht laenger als 16 Zeichen sein'; - return false; - } - if(strlen($this->beschreibung)>256) - { - $this->errormsg = 'Beschreibung darf nicht laenger als 256 Zeichen sein'; - return false; - } - - return true; - } - - // ************************************************ - // * wenn $var '' ist wird NULL zurueckgegeben - // * wenn $var !='' ist werden Datenbankkritische - // * Zeichen mit Backslash versehen und das Ergbnis - // * unter Hochkomma gesetzt. - // ************************************************ - function addslashes($var) - { - return ($var!=''?"'".addslashes($var)."'":'null'); - } - - // ************************************************************ - // * Speichert Berechtigung in die Datenbank - // * Wenn $new auf true gesetzt ist wird ein neuer Datensatz - // * angelegt, ansonsten der Datensatz upgedated - // * @return true wenn erfolgreich, false im Fehlerfall - // ************************************************************ - function save() - { - //Variablen auf Gueltigkeit pruefen - if(!$this->validate()) - return false; - - if($this->new) - { - $qry = 'INSERT INTO tbl_berechtigung (berechtigung_kurzbz, beschreibung) - VALUES('.$this->addslashes($this->berechtigung_kurzbz).','. - $this->addslashes($this->beschreibung).');'; - } - else - { - $qry = 'UPDATE tbl_berechtigung SET'. - ' beschreibung='.$this->addslashes($this->beschreibung). - " WHERE berechtigung_kurzbz='".addslashes($this->berechtigung_kurzbz)."'"; - } - - if(pg_query($this->conn,$qry)) - { - //Log schreiben - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern der Berechtigung:'.$qry; - return false; - } - } -} -?> \ No newline at end of file diff --git a/include/fas/fachbereich.class.php b/include/fas/fachbereich.class.php index fa294f6be..95f93716b 100644 --- a/include/fas/fachbereich.class.php +++ b/include/fas/fachbereich.class.php @@ -1,54 +1,39 @@ , - * Andreas Oesterreicher and - * Rudolf Hangl . - */ /** * Klasse fachbereich (FAS-Online) - * @create 04-12-2006 + * @create 14-03-2006 */ class fachbereich { - var $conn; // @var resource DB-Handle - var $new; // @var boolean - var $errormsg; // @var string - var $result = array(); // @var fachbereich Objekt + var $conn; // @var resource DB-Handle + var $new; // @var boolean + var $errormsg; // @var string + var $result = array(); // @var fachbereich Objekt //Tabellenspalten - var $fachbereich_kurzbz; // @var string - var $bezeichnung; // @var string - var $farbe; // @var string - var $studiengang_kz; // @var integer - var $ext_id; // @var bigint - + var $fachbereich_id; // @var integer + var $erhalter_id; // @var integer + var $name; // @var string + var $updateamum; // @var timestamp + var $updatevon=0; // @var string /** * Konstruktor * @param $conn Connection zur DB * $fachb_id ID des zu ladenden Fachbereiches */ - function fachbereich($conn, $fachbereich_kurzbz=null) + function fachbereich($conn, $fachb_id=null) { $this->conn = $conn; - if($fachbereich_kurzbz != null) - $this->load($fachbereich_kurzbz); + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + if(!pg_query($conn,$qry)) + { + $this->errormsg = "Encoding konnte nicht gesetzt werden"; + return false; + } + if($fachb_id != null) + $this->load($fachb_id); } /** @@ -57,11 +42,11 @@ class fachbereich */ function getAll() { - $qry = 'SELECT * FROM tbl_fachbereich order by fachbereich_kurzbz;'; + $qry = 'SELECT * FROM fachbereich order by name;'; if(!$res = pg_query($this->conn, $qry)) { - $this->errormsg = 'Fehler beim Laden der Datensaetze'; + $this->errormsg = 'Fehler beim laden der Datensaetze'; return false; } @@ -69,9 +54,11 @@ class fachbereich { $fachb_obj = new fachbereich($this->conn); - $fachb_obj->fachbereich_kurzbz = $row->fachbereich_kurzbz; - $fachb_obj->erhalter_id = $row->erhalter_fk; - $fachb_obj->name = $row->name; + $fachb_obj->fachbereich_id = $row->fachbereich_pk; + $fachb_obj->erhalter_id = $row->erhalter_fk; + $fachb_obj->name = $row->name; + $fachb_obj->updateamum = $row->creationdate; + $fachb_obj->updatevon = $row->creationuser; $this->result[] = $fachb_obj; } @@ -83,27 +70,29 @@ class fachbereich * @param $fachb_id ID des zu ladenden Fachbereiches * @return true wenn ok, false im Fehlerfall */ - function load($fachbereich_kurzbz) + function load($fachb_id) { - if($fachbereich_kurzbz == '') + if(!is_numeric($fachb_id) || $fachb_id == '') { - $this->errormsg = 'fachbereich_kurzbz ungueltig!'; + $this->errormsg = 'fachb_id muss eine gueltige Zahl sein'; return false; } - $qry = "SELECT * FROM tbl_fachbereich WHERE fachbereich_kurzbz = '$fachbereich_kurzbz';"; + $qry = "SELECT * FROM fachbereich WHERE fachbereich_pk = '$fachb_id';"; if(!$res = pg_query($this->conn, $qry)) { - $this->errormsg = 'Fehler beim Laden des Datensatzes'; + $this->errormsg = 'Fehler beim laden des Datensatzes'; return false; } if($row=pg_fetch_object($res)) { - $this->fachbereich_kurzbz = $row->fachbereich_kurzbz; - $this->erhalter_id = $row->erhalter_fk; - $this->name = $row->name; + $this->fachbereich_id = $row->fachbereich_pk; + $this->erhalter_id = $row->erhalter_fk; + $this->name = $row->name; + $this->updateamum = $row->creationdate; + $this->updatevon = $row->creationuser; } else { @@ -124,106 +113,15 @@ class fachbereich $this->errormsg = 'Noch nicht implementiert'; return false; } - function addslashes($var) - { - return ($var!=''?"'".addslashes($var)."'":'null'); - } - /** - * Prueft die Gueltigkeit der Variablen - * @return true wenn ok, false im Fehlerfall - */ - function checkvars() - { - $this->bezeichnung = str_replace("'",'´',$this->bezeichnung); - $this->fachbereich_kurzbz = str_replace("'",'´',$this->fachbereich_kurzbz); - - - //Laenge Pruefen - if(strlen($this->bezeichnung)>128) - { - $this->errormsg = "Bezeichnung darf nicht laenger als 128 Zeichen sein bei $this->ext_id - $this->bezeichnung"; - return false; - } - if(strlen($this->fachbereich_kurzbz)>16) - { - $this->errormsg = "Kurzbez darf nicht laenger als 16 Zeichen sein bei $this->ext_id - $this->fachbereich_kurzbz"; - return false; - } - $this->errormsg = ''; - return true; - } + /** * Speichert den aktuellen Datensatz * @return true wenn ok, false im Fehlerfall */ function save() { - //Gueltigkeit der Variablen pruefen - if(!$this->checkvars()) - return false; - - if($this->new) - { - //Pruefen ob fachbereich_kurzbz gueltig ist - if($this->fachbereich_kurzbz == '') - { - $this->errormsg = 'fachbereich_id ungueltig!'; - return false; - } - //Neuen Datensatz anlegen - $qry = 'INSERT INTO tbl_fachbereich (fachbereich_kurzbz, bezeichnung, farbe, ext_id, studiengang_kz) VALUES ('. - $this->addslashes($this->fachbereich_kurzbz).', '. - $this->addslashes($this->bezeichnung).', '. - $this->addslashes($this->farbe).', '. - $this->addslashes($this->ext_id).', '. - $this->addslashes($this->studiengang_kz).');'; - } - else - { - //bestehenden Datensatz akualisieren - - //Pruefen ob fachbereich_kurzbz gueltig ist - if($this->fachbereich_kurzbz == '') - { - $this->errormsg = 'fachbereich_kurzbz ungueltig.'; - return false; - } - - $qry = 'UPDATE tbl_fachbereich SET '. - 'fachbereich_kurzbz='.$this->addslashes($this->fachbereich_kurzbz).', '. - 'bezeichnung='.$this->addslashes($this->bezeichnung).', '. - 'farbe='.$this->addslashes($this->farbe).', '. - 'ext_id='.$this->addslashes($this->ext_id).', '. - 'studiengang_kz='.$this->addslashes($this->studiengang_kz).' '. - 'WHERE fachbereich_kurzbz = '.$this->addslashes($this->fachbereich_kurzbz).';'; - } - - if(pg_query($this->conn, $qry)) - { - /*//Log schreiben - $sql = $qry; - $qry = "SELECT nextval('log_seq') as id;"; - if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) - { - $this->errormsg = 'Fehler beim Auslesen der Log-Sequence'; - return false; - } - - $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')"; - if(pg_query($this->conn, $qry)) - return true; - else - { - $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; - return false; - }*/ - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern des Datensatzes'; - return false; - } + $this->errormsg = 'Noch nicht implementiert'; + return false; } } ?> \ No newline at end of file diff --git a/include/fas/ferien.class.php b/include/fas/ferien.class.php deleted file mode 100644 index ddae3748b..000000000 --- a/include/fas/ferien.class.php +++ /dev/null @@ -1,217 +0,0 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ -/** - * Klasse ferien (FAS-Online) - * @create 07-12-2006 - */ - -class ferien -{ - var $conn; // @var resource DB-Handle - var $new; // @var boolean - var $errormsg; // @var string - var $result = array(); // @var ferien Objekt - - //Tabellenspalten - var $bezeichnung; // @var varchar(64) - var $studiengang_kz; // @var integer - var $vondatum; // @var date - var $bisdatum; // @var date - - /** - * Konstruktor - * @param $conn Connection zur DB - * $bezeichnung und studiengang_kz ID der zu ladenden Ferien - */ - function ferien($conn, $bezeichnung=null, $studiengang_kz=null) - { - $this->conn = $conn; - if($bezeichnung != null && $studiengang_kz != null && !is_numeric($studiengang_kz)) - $this->load($bezeichnung, studiengang_kz); - } - - /** - * Laedt alle verfuegbaren Feriendaten - * @return true wenn ok, false im Fehlerfall - */ - function getAll() - { - $qry = 'SELECT * FROM lehre.tbl_ferien order by bezeichnung, studiengang_kz;'; - - if(!$res = pg_query($this->conn, $qry)) - { - $this->errormsg = 'Fehler beim Laden der Datensaetze'; - return false; - } - - while($row = pg_fetch_object($res)) - { - $ferien_obj = new ferien($this->conn); - $ferien_obj->bezeichnung = $row->bezeichnung; - $ferien_obj->studiengang_kz = $row->studiengang_kz; - $ferien_obj->vondatum = $row->vondatum; - $ferien_obj->bisdatum = $row->bisdatum; - - $this->result[] = $ferien_obj; - } - return true; - } - - /** - * Laedt einen Feriendatensatz - * @param $bezeichnung, studiengang_kz ID der zu ladenden Ferien - * @return true wenn ok, false im Fehlerfall - */ - function load($bezeichnung, $studiengang_kz) - { - if($studiengang_kz == '' || !is_numeric($studiengang_kz) || $bezeichnung=='') - { - $this->errormsg = 'ID ungültig'; - return false; - } - - $qry = "SELECT * FROM lehre.tbl_ferien WHERE bezeichnung = '$this->bezeichnung' AND studiengang_kz = '$this->studiengang_kz';"; - - if(!$res = pg_query($this->conn, $qry)) - { - $this->errormsg = 'Fehler beim Laden des Datensatzes'; - return false; - } - - if($row=pg_fetch_object($res)) - { - $this->bezeichnung = $row->bezeichnung; - $this->studiengang_kz = $row->studiengang_kz; - $this->vondatum = $row->vondatum; - $this->bisdatum = $row->bisdatum; - } - else - { - $this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden'; - return false; - } - - return true; - } - - /** - * Loescht einen Datensatz - * @param $bezeichnung, studiengang_kz id des Datensatzes der geloescht werden soll - * @return true wenn ok, false im Fehlerfall - */ - function delete($bezeichnung, $studiengang_kz) - { - $this->errormsg = 'Noch nicht implementiert'; - return false; - } - function addslashes($var) - { - return ($var!=''?"'".addslashes($var)."'":'null'); - } - /** - * Prueft die Gueltigkeit der Variablen - * @return true wenn ok, false im Fehlerfall - */ - function checkvars() - { - $this->bezeichnung = str_replace("'",'´',$this->bezeichnung); - - //Laenge Pruefen - if(strlen($this->bezeichnung)>64) - { - $this->errormsg = "Bezeichnung darf nicht laenger als 64 Zeichen sein bei $this->studiengang_kz - $this->bezeichnung"; - return false; - } - $this->errormsg = ''; - return true; - } - /** - * Speichert den aktuellen Datensatz - * @return true wenn ok, false im Fehlerfall - */ - function save() - { - //Gueltigkeit der Variablen pruefen - if(!$this->checkvars()) - return false; - - if($this->new) - { - //Neuen Datensatz anlegen - - if($this->studiengang_kz == '' || !is_numeric($this->studiengang_kz) || $this->bezeichnung=='') - { - $this->errormsg = 'ID ungültig'; - return false; - } - $qry = 'INSERT INTO lehre.tbl_ferien (bezeichnung, studiengang_kz, vondatum, bisdatum) VALUES ('. - $this->addslashes($this->bezeichnung).', '. - $this->addslashes($this->studiengang_kz).', '. - $this->addslashes($this->vondatum).', '. - $this->addslashes($this->bisdatum).'); '; - } - else - { - //bestehenden Datensatz akualisieren - - if($this->studiengang_kz == '' || !is_numeric($this->studiengang_kz) || $this->bezeichnung=='') - { - $this->errormsg = 'ID der Ferien ungültig'; - return false; - } - - $qry = 'UPDATE lehre.tbl_ferien SET '. - 'bezeichnung='.$this->addslashes($this->bezeichnung).', '. - 'studiengang_kz='.$this->addslashes($this->studiengang_kz).', '. - 'vondatum='.$this->addslashes($this->vondatum).', '. - 'bisdatum='.$this->addslashes($this->bisdatum).';'; - } - - if(pg_query($this->conn, $qry)) - { - /*//Log schreiben - $sql = $qry; - $qry = "SELECT nextval('log_seq') as id;"; - if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) - { - $this->errormsg = 'Fehler beim Auslesen der Log-Sequence'; - return false; - } - - $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')"; - if(pg_query($this->conn, $qry)) - return true; - else - { - $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; - return false; - }*/ - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern des Datensatzes - '.$this->uid; - return false; - } - } -} -?> \ No newline at end of file diff --git a/include/fas/funktion.class.php b/include/fas/funktion.class.php index 2cab6f0be..bd274e06e 100644 --- a/include/fas/funktion.class.php +++ b/include/fas/funktion.class.php @@ -1,194 +1,288 @@ , - * Andreas Oesterreicher and - * Rudolf Hangl . - */ -/** - * Klasse funktion (FAS-Online) - * @create 14-03-2006 +/** + * Klasse funktionen (FAS-Online) + * Verwaltet die Funktionen der Mitarbeiter + * @create 07-03-2006 */ class funktion { - var $conn; // @var resource DB-Handle - var $new; // @var boolean - var $errormsg; // @var string - var $result = array(); // @var fachbereich Objekt - - //Tabellenspalten - var $funktion_kurzbz; // @var integer - var $bezeichnung; // @var string - var $aktiv; // @var boolean - var $ext_id; // @var bigint - + var $conn; // @var resource DB-Handle + var $errormsg; // @var string + var $new; // @var boolean + var $result = array(); // @var funktion Objekt + //vars fuer Tabellenspalten + var $funktion_id; // @var integer + var $mitarbeiter_id; // @var integer + var $studiensemester_id; // @var integer + var $erhalter_id; // @var integer + var $studiengang_id; // @var integer + var $fachbereich_id; // @var integer + var $name; // @var string + var $funktion; // @var integer ( 0 = Mitarbeiter, 1 = Lektor, 2 = Fachbereichskoordinatior, 3 = Assistenz, + // 4 = Rektor, 5 = Studiengangsleiter, 6 = Fachbereichsleiter) + var $updateamum; // @var timestamp + var $updatevon=0; // @var string + var $beschart1; // @var integer ( 1 = Dienstverhaeltnis zum Bund, 2 = Dienstverhaeltnis zu einer anderen Gebietskoerperschaft, + // 3 = Echter Dienstvertrag, 4 = Freier Dienstvertrag, 5 = Lehre/Ausbildung, 6 = Sonstiges) + var $beschart2; // @var integer ( 1 = befristet, 2 = unbefristet) + var $verwendung; // @var integer + var $hauptberuflich; // @var boolean + var $hauptberuf; // @var integer + var $entwicklungsteam; // @var boolean + var $besonderequalifikation; // @var integer + var $sws; // @var float wird nicht verwendet + var $ausmass; // @var float ( 1 = Vollzeit, 2 = <=15 Wochenstd, 3 = 15-25 Wochenstd, 4 = 26-36 Wochenstd, 5 = Karenz) + var $status; // @var integer Aktstatus der Person (wird bei loeschen einer funktion gesetzt) + /** * Konstruktor - * @param $conn Connection zur DB - * $funktion_kurzbz ID der zu ladenden Funktion + * @param $conn Connection zur Datenbank + * $fkt_id Id der zu ladenden Funktion (Default=null) */ - function funktion($conn, $funktion_kurzbz=null) + function funktion($conn, $fkt_id=null) { $this->conn = $conn; - if($funktion_kurzbz != null) - $this->load($funktion_kurzbz); + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + if(!pg_query($conn,$qry)) + { + $this->errormsg = "Encoding konnte nicht gesetzt werden"; + return false; + } + if($fkt_id != null) + $this->load($fkt_id); } /** - * Laedt alle verfuegbaren Funktionen + * loescht die Funktion mit der uebergebenen ID + * @param $funktion_id ID des zu loeschenden Datensatzes * @return true wenn ok, false im Fehlerfall */ - function getAll() + function delete($funktion_id) { - $qry = 'SELECT * FROM tbl_funktion order by funktion_kurzbz;'; - - if(!$res = pg_query($this->conn, $qry)) + //Pruefen ob funktion_id gueltig ist + if(is_numeric($funktion_id) && $funktion_id != '') { - $this->errormsg = 'Fehler beim laden der Datensaetze'; - return false; - } - - while($row = pg_fetch_object($res)) - { - $funktion_obj = new funktion($this->conn); + //Person ermitteln + $person_id=0; + $mitarbeiter_id=0; + $qry = "Select person_fk, mitarbeiter_pk from mitarbeiter join funktion on(mitarbeiter_pk=mitarbeiter_fk) where funktion_pk = $funktion_id"; + if($row=pg_fetch_object(pg_query($this->conn,$qry))) + { + $person_id = $row->person_fk; + $mitarbeiter_id = $row->mitarbeiter_pk; + } + else + { + $this->errormsg = 'Fehler beim ermitteln der Person'; + return false; + } - $funktion_obj->funktion_kurzbz = $row->funktion_kurzbz; - $funktion_obj->bezeichnung = $row->bezeichnung; - $funktion_obj->aktiv = $row->aktiv; - - $this->result[] = $funktion_obj; - } - return true; - } - - /** - * Laedt eine Funktion - * @param $funktion_kurzbz ID der zu ladenden Funktion - * @return true wenn ok, false im Fehlerfall - */ - function load($funktion_kurzbz) - { - if($funktion_kurzbz == '') - { - $this->errormsg = 'funktion_bz darf nicht leer sein'; - return false; - } - - $qry = "SELECT * FROM tbl_funktion WHERE funktion_kurzbz = '$funktion_kurzbz';"; - - if(!$res = pg_query($this->conn, $qry)) - { - $this->errormsg = 'Fehler beim laden des Datensatzes'; - return false; - } - - if($row=pg_fetch_object($res)) - { - $this->funktion_kurzbz = $row->funktion_kurzbz; - $this->bezeichnung = $row->bezeichnung; - $this->aktiv = $row->aktiv; + $qry = "DELETE FROM funktion WHERE funktion_pk=$funktion_id;"; + $sql = $qry; + if(pg_query($this->conn,$qry)) + { + //Neuen aktstatus ermitteln + $qry = "Select aktstatus from person where person_pk=$person_id"; + if($row=pg_fetch_object(pg_query($this->conn,$qry))) + { + $aktstatus = $row->aktstatus; + if($aktstatus!=150) //wenn er nicht ausgeschieden ist + { + //Funktionen holen + $qry = "Select funktion from funktion where ". + "studiensemester_fk = (Select studiensemester_pk from studiensemester where aktuell='J')". + " AND mitarbeiter_fk = '$mitarbeiter_id'"; + if($result = pg_query($this->conn, $qry)) + { + $fkt=array(); + $i=0; + while($row=pg_fetch_object($result)) + { + $fkt[$i]=$row->funktion; + $i++; + } + + //Aktstatus ermitteln + if(in_array(5,$fkt)) //STGL + $aktstatus = 104; + elseif(in_array(6,$fkt)) //FBL + $aktstatus = 103; + elseif(in_array(2,$fkt)) //FBK + $aktstatus = 102; + elseif(in_array(1,$fkt)) //LKT + $aktstatus = 101; + else + $aktstatus = 100; //Mitarbeiter + + $this->status = $aktstatus; + //neuen akstatus setzen + $qry = "Update person set aktstatus = $aktstatus where person_pk = $person_id"; + if(pg_query($qry)) + { + //Log schreiben + $sql .= $qry; + $qry = "SELECT nextval('log_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim Auslesen der Log-Sequence'; + return false; + } + + $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')"; + if(pg_query($this->conn, $qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim setzen des Aktstatus'; + return false; + } + } + } + else + return true; + + } + else + { + $this->errormsg = 'Fehler beim Laden des aktuellen Status'; + return false; + } + } + else + { + $this->errormsg = 'Beim loeschen ist ein Fehler aufgetreten'; + return false; + } } else { - $this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden'; + $this->errormsg = 'funktion_id muss eine gueltige Zahl sein'; return false; - } - - return true; + } } + /** - * Loescht einen Datensatz - * @param $funktion_id id des Datensatzes der geloescht werden soll - * @return true wenn ok, false im Fehlerfall - */ - function delete($funktion_kurzbz) - { - $this->errormsg = 'Noch nicht implementiert'; - return false; - } - function addslashes($var) - { - return ($var!=''?"'".addslashes($var)."'":'null'); - } - /** - * Speichert den aktuellen Datensatz - * @return true wenn ok, false im Fehlerfall - */ - /** - * Prueft die Gueltigkeit der Variablen + * Prueft die Variablen auf Gueltigkeit * @return true wenn ok, false im Fehlerfall */ function checkvars() - { - $this->bezeichnung = str_replace("'",'´',$this->bezeichnung); + { + //Hochkomma und HTML Tags ersetzen + //$this->name = htmlentities($this->name, ENT_QUOTES); - //Laenge Pruefen - if(strlen($this->bezeichnung)>64) - { - $this->errormsg = "Bezeichnung darf nicht laenger als 128 Zeichen sein bei $this->funktion_kurzbz - $this->bezeichnung"; - return false; - } - + //Maximallaenge pruefen + $this->errormsg = 'Die Maximallaenge eines Feldes wurde ueberschritten'; + if(strlen($this->name)>255) return false; + + //Zahlenwerte ueberpruefen + /* + $this->errormsg = 'Ein Zahlenfeld enthaelt ungueltige Zeichen'; + + if(!is_numeric($this->funktion)) return false; + if(!is_numeric($this->beschart1)) return false; + if(!is_numeric($this->beschart2)) return false; + if(!is_numeric($this->verwendung)) return false; + if(!is_numeric($this->hauptberuf)) return false; + if(!is_numeric($this->sws)) $this->sws=0; + if(!is_numeric($this->ausmass)) return false; + if(!is_numeric($this->mitarbeiter_id)) return false; + if(!is_numeric($this->erhalter_id)) return false; + if(!is_numeric($this->studiengang_id)) return false; + if(!is_numeric($this->fachbereich_id)) return false; + if(!is_numeric($this->studiensemester_id)) return false; + if(!is_numeric($this->besonderequalifikation)) return false; + */ $this->errormsg = ''; - return true; + return true; } + + /** + * Speichert die Daten in die Datenbank + * @return true wenn OK, false im Fehlerfall + */ function save() { - //Gueltigkeit der Variablen pruefen if(!$this->checkvars()) return false; + //neuen aktstatus ermitteln + if($status=$this->getaktstatus()) + $statusqry = "Update person SET aktstatus=$status where person_pk = (Select person_fk from mitarbeiter where mitarbeiter_pk='$this->mitarbeiter_id');"; + else + $statusqry = ""; + if($this->new) { - //Pruefen ob funktion_kurzbz befüllt ist - if($this->funktion_kurzbz == '') + //Naechste ID aus der Sequence holen + $qry = "SELECT nextval('funktion_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn,$qry))) { - $this->errormsg = 'funktion_kurzbz darf nicht leer sein'; + $this->errormsg = 'Sequence konnte nicht ausgelesen werden'; return false; } - //Neuen Datensatz anlegen - $qry = 'INSERT INTO tbl_funktion (funktion_kurzbz, bezeichnung, aktiv) VALUES ('. - $this->addslashes($this->funktion_kurzbz).', '. - $this->addslashes($this->bezeichnung).', '. - ($this->aktiv?'true':'false').'); '; + $this->funktion_id = $row->id; + + $qry= $statusqry."INSERT INTO funktion (funktion_pk, mitarbeiter_fk, studiensemester_fk, erhalter_fk, studiengang_fk,". + " fachbereich_fk, name, funktion, creationdate, creationuser, beschart1, beschart2, verwendung,". + " hauptberuflich, hauptberuf, entwicklungsteam, besonderequalifikation, sws, ausmass) VALUES(". + " '$this->funktion_id','$this->mitarbeiter_id', '$this->studiensemester_id', '$this->erhalter_id',". + ($this->studiengang_id!=''?" '$this->studiengang_id'":'null').",". + ($this->fachbereich_id!=''?" '$this->fachbereich_id'":'null').",". + ($this->name!=''?" '$this->name'":'null').",". + ($this->funktion!=''?" '$this->funktion'":'null').", now(), $this->updatevon,". + ($this->beschart1!=''?" '$this->beschart1'":'null').",". + ($this->beschart2!=''?" '$this->beschart2'":'null').",". + ($this->verwendung!=''?" '$this->verwendung'":'null').", '".($this->hauptberuflich?'J':'N')."',". + ($this->hauptberuf!=''?" '$this->hauptberuf'":'null').", '".($this->entwicklungsteam?'J':'N')."',". + ($this->besonderequalifikation!=''?" '$this->besonderequalifikation'":'null').", null,". + ($this->ausmass!=''?" '$this->ausmass'":'null').")"; + } else { - //bestehenden Datensatz akualisieren - - //Pruefen ob fachbereich_id eine gueltige Zahl ist - if( $this->funktion_kurzbz == '') + if(!is_numeric($this->mitarbeiter_id) && !is_numeric($this->funktion_id)) { - $this->errormsg = 'funktion_kurzbz darf nicht leer sein'; + $this->errormsg = 'mitarbeiter_id und funktion_id muessen eine gueltige Zahl sein'; return false; } - $qry = 'UPDATE tbl_funktion SET '. - 'bezeichnung='.$this->addslashes($this->bezeichnung).', '. - 'aktiv='.($this->aktiv?'true':'false') .' '. - 'WHERE funktion_kurzbz = '.$this->addslashes($this->funktion_kurzbz).';'; + $qry= $statusqry. "UPDATE funktion SET ". + " studiensemester_fk=".($this->studiensemester_id!=''?"'$this->studiensemester_id'":'null').",". + " erhalter_fk=".($this->erhalter_id!=''?"'$this->erhalter_id'":'null').",". + " studiengang_fk=".($this->studiengang_id!=''?"'$this->studiengang_id'":'null').",". + " fachbereich_fk=".($this->fachbereich_id!=''?"'$this->fachbereich_id'":'null').",". + " name=".($this->name!=''?"'$this->name'":'null').",". + " funktion=".($this->funktion!=''?"'$this->funktion'":'null').",". + " beschart1=".($this->beschart1!=''?"'$this->beschart1'":'null').",". + " beschart2=".($this->beschart2!=''?"'$this->beschart2'":'null').",". + " verwendung=".($this->verwendung!=''?"'$this->verwendung'":'null').",". + " hauptberuflich='".($this->hauptberuflich?'J':'N')."',". + " hauptberuf=".($this->hauptberuf!=''?"'$this->hauptberuf'":'null').",". + " entwicklungsteam='".($this->entwicklungsteam?'J':'N')."',". + " besonderequalifikation=".($this->besonderequalifikation!=''?"'$this->besonderequalifikation'":'null').",". + " sws=".($this->sws!=''?"'$this->sws'":'null').",". + " ausmass=".($this->ausmass!=''?"'$this->ausmass'":'null'). + " WHERE funktion_pk=$this->funktion_id"; // AND mitarbeiter_fk=$this->mitarbeiter_id"; } - if(pg_query($this->conn, $qry)) + if(pg_query($this->conn,$qry)) { - /*//Log schreiben + $qry = "UPDATE funktion SET hauptberuflich='".($this->hauptberuflich?'J':'N')."', hauptberuf=".($this->hauptberuf!=''?"'$this->hauptberuf'":'null')." WHERE mitarbeiter_fk ='$this->mitarbeiter_id' AND studiensemester_fk='$this->studiensemester_id'"; + if(!pg_query($this->conn,$qry)) + { + $this->errormsg = 'Fehler beim Updaten der Funktionen'; + return false; + } + //Log schreiben $sql = $qry; $qry = "SELECT nextval('log_seq') as id;"; if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) @@ -204,14 +298,394 @@ class funktion { $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; return false; - }*/ + } + } + else + { + $this->errormsg = 'Fehler beim Speichern der Daten'.$qry; + return false; + } + } + + /** + * Ermittelt den neuen aktstatus einer Person + */ + function getaktstatus() + { + $aktstatus=100; + //Aktuellen Status holen + $qry = "Select aktstatus from person join mitarbeiter on(person_fk=person_pk) where mitarbeiter_pk='".$this->mitarbeiter_id."'"; + if($result = pg_query($this->conn,$qry)) + { + if($row = pg_fetch_object($result)) + $aktstatus = $row->aktstatus; + else + { + $this->errormsg = 'Fehler beim Laden des aktuellen Status'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden des aktuellen Status'; + return false; + } + + /* + //Wenn die Funktion das aktuelle Studiensemester betrifft + $qry = "Select studiensemester_pk from studiensemester where aktuell='J'"; + if($result = pg_query($this->conn,$qry)) + { + if($row=pg_fetch_object($result)) + { + if($row->studiensemester_pk == $this->studiensemester_id) + { + */ + //Neuen Status setzen + if($this->funktion == 1 && $aktstatus < 101) //Lektor + $aktstatus = 101; + elseif($this->funktion == 2 && $aktstatus < 102) //Fachbereichskoordinator + $aktstatus = 102; + elseif($this->funktion == 6 && $aktstatus < 103) //Fachbereichsleiter + $aktstatus = 103; + elseif($this->funktion == 5 && $aktstatus < 104) //Studiengangsleiter + $aktstatus = 104; + /* } + } + else + { + $this->errormsg = 'Fehler beim Laden des aktuellen Studiensemesters'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden des aktuellen Studiensemesters'; + return false; + }*/ + $this->status = $aktstatus; + return $aktstatus; + } + + /** + * Laedt eine Funktion aus der DB + * @param $fkt_id ID der zu ladenden Funktion + * @return true wenn erfolgreich geladen, false im Fehlerfall + */ + function load($fkt_id) + { + //Pruefen ob fkt_id gueltig ist + if(!is_numeric($fkt_id)) + { + $this->errormsg = 'funktion_id muss eine Zahl sein'; + return false; + } + + $qry = "SELECT * FROM funktion WHERE funktion_pk=$fkt_id"; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Fehler bei einer Datenbankabfrage'; + return false; + } + + if($row = pg_fetch_object($res)) + { + $this->funktion_id = $row->funktion_pk; + $this->mitarbeiter_id = $row->mitarbeiter_fk; + $this->studiensemester_id = $row->studiensemester_fk; + $this->erhalter_id = $row->erhalter_fk; + $this->studiengang_id = $row->studiengang_fk; + $this->fachbereich_id = $row->fachbereich_fk; + $this->name = $row->name; + $this->funktion = $row->funktion; + $this->updateamum = $row->creationdate; + $this->updatevon = $row->creationuser; + $this->beschart1 = $row->beschart1; + $this->beschart2 = $row->beschart2; + $this->verwendung = $row->verwendung; + $this->hauptberuflich = ($row->hauptberuflich=='J'?true:false); + $this->hauptberuf = $row->hauptberuf; + $this->entwicklungsteam = ($row->entwicklungsteam=='J'?true:false); + $this->besonderequalifikation = $row->besonderequalifikation; + $this->sws = $row->sws; + $this->ausmass = $row->ausmass; + } + else + { + $this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden'; + return false; + } + + return true; + } + + /** + * Laedt die Funktion(en) eines Mitarbeiters + * @param $ma_id ID des zu ladenden Mitarbeiters + * @return true wenn erfolgreich geladen, false im Fehlerfall + */ + function load_pers($ma_id, $stsem='') + { + //pruefen ob ma_id gueltig ist + if(!is_numeric($ma_id)) + { + $this->errormsg = 'mitarbeiter_id muss eine Zahl sein'; + return false; + } + + $qry="SELECT * FROM funktion WHERE mitarbeiter_fk=$ma_id"; + if($stsem!='') + $qry.= " AND studiensemester_fk='$stsem'"; + $qry.=" ORDER BY studiensemester_fk DESC, funktion_pk"; + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Fehler bei einer Datenbankabfrage'; + return false; + } + + while($row = pg_fetch_object($res)) + { + $fkt_obj = new funktion($this->conn); + + $fkt_obj->funktion_id = $row->funktion_pk; + $fkt_obj->mitarbeiter_id = $row->mitarbeiter_fk; + $fkt_obj->studiensemester_id = $row->studiensemester_fk; + $fkt_obj->erhalter_id = $row->erhalter_fk; + $fkt_obj->studiengang_id = $row->studiengang_fk; + $fkt_obj->fachbereich_id = $row->fachbereich_fk; + $fkt_obj->name = $row->name; + $fkt_obj->funktion = $row->funktion; + $fkt_obj->updateamum = $row->creationdate; + $fkt_obj->updatevon = $row->creationuser; + $fkt_obj->beschart1 = $row->beschart1; + $fkt_obj->beschart2 = $row->beschart2; + $fkt_obj->verwendung = $row->verwendung; + $fkt_obj->hauptberuflich = ($row->hauptberuflich=='J'?true:false); + $fkt_obj->hauptberuf = $row->hauptberuf; + $fkt_obj->entwicklungsteam = ($row->entwicklungsteam=='J'?true:false); + $fkt_obj->besonderequalifikation = $row->besonderequalifikation; + $fkt_obj->sws = $row->sws; + $fkt_obj->ausmass = $row->ausmass; + + $this->result[] = $fkt_obj; + } + + return true; + } + + function getMitarbeiter($stg,$fb,$funktion,$stsem=null) + { + $qry = "SELECT + mitarbeiter_fk + FROM + funktion + WHERE + studiengang_fk='$stg' AND + fachbereich_fk='$fb' + GROUP BY mitarbeiter_fk"; + if($result = pg_query($this->conn,$qry)) + { + while($row = pg_fetch_object($result)) + { + $fkt = new funktion($this->conn); + $fkt->mitarbeiter_id = $row->mitarbeiter_fk; + $this->result[] = $fkt; + } return true; } - else + else { - $this->errormsg = 'Fehler beim Speichern des Datensatzes'; + $this->errormsg = 'Fehler beim laden der Mitarbeiter'; return false; - } + } + } + + /** + * Laedt alle Funktionen + * @return true wenn erfolgreich geladen, false im Fehlerfall + */ + function getAll() + { + /*Eventuell Speicherprobleme + + $qry = "SELECT * FROM funktion"; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Fehler bei einer Datenbankabfrage'; + return false; + } + + while($row=pg_fetch_object($res)) + { + $fkt_obj = new funktion($this->conn); + + $fkt_obj->funktion_id = $row->funktion_pk; + $fkt_obj->mitarbeiter_id = $row->mitarbeiter_fk; + $fkt_obj->studiensemester_id = $row->studiensemester_fk; + $fkt_obj->erhalter_id = $row->erhalter_fk; + $fkt_obj->studiengang_id = $row->studiengang_fk; + $fkt_obj->fachbereich_id = $row->fachbereich_fk; + $fkt_obj->name = $row->name; + $fkt_obj->funktion = $row->funktion; + $fkt_obj->updateamum = $row->creationdate; + $fkt_obj->updatevon = $row->creationuser; + $fkt_obj->beschart1 = $row->beschart1; + $fkt_obj->beschart2 = $row->beschart2; + $fkt_obj->verwendung = $row->verwendung; + $fkt_obj->hauptberuflich = ($row->hauptberuflich=='J'?true:false); + $fkt_obj->hauptberuf = $row->hauptberuf; + $fkt_obj->entwicklungsteam = ($row->entwicklungsteam=='J'?true:false); + $fkt_obj->besonderequalifikation = $row->besonderequalifikation; + $fkt_obj->sws = $row->sws; + $fkt_obj->ausmass = $row->ausmass; + + $this->result[] = $fkt_obj; + } + return true; + */ + return false; + } + + function FunktionExists($mitarbeiter_id, $studiengang_id, $fachbereich_id, $studiensemester_id, $funktion) + { + $qry = "SELECT + count(*) as anzahl + FROM + funktion + WHERE + mitarbeiter_fk='$mitarbeiter_id' AND + studiengang_fk='$studiengang_id' AND + fachbereich_fk='$fachbereich_id' AND + studiensemester_fk = '$studiensemester_id' AND + funktion='$funktion'"; + if($result = pg_query($this->conn, $qry)) + { + if($row = pg_fetch_object($result)) + { + if($row->anzahl>0) + return true; + else + { + return false; + } + } + else + { + return false; + $this->errormsg = 'Fehler beim auslesen der Funktionen'; + } + } + else + { + return false; + $this->errormsg = 'Fehler beim auslesen der Funktionen'; + } + } + + function getNameFunktion($id) + { + switch($id) + { + case 0: return 'Mitarbeiter'; + case 1: return 'Lektor'; + case 2: return 'Fachbereichskoordinatior'; + case 3: return 'Assistenz'; + case 4: return 'Rektor'; + case 5: return 'Studiengangsleiter'; + case 6: return 'Fachbereichsleiter'; + default: return ''; + } + } + + function getNameBeschart1($id) + { + switch($id) + { + case 1: return 'Dienstverhältnis zum Bund'; + case 2: return 'Dienstverhältnis zu einer anderen Gebietskörperschaft'; + case 3: return 'Echter Dienstvertrag'; + case 4: return 'Freier Dienstvertrag'; + case 5: return 'Lehr- oder Ausbildungsverhältnis'; + case 6: return 'Sonstiges Beschäftigungsverhältnis'; + default: return ''; + } + } + + function getNameBeschart2($id) + { + switch($id) + { + case 1: return 'befristet'; + case 2: return 'unbefristet'; + default: return ''; + } + } + + function getNameVerwendung($id) + { + switch($id) + { + case 1: return 'Lehr- und Forschungspersonal'; + case 2: return 'Lehr- und Forschungshilfspersonal'; + case 3: return 'Akademische dienste für Studierende'; + case 4: return 'Soziale Dienste und Gesundheitsdienste'; + case 5: return 'Studiengangsleiter/in'; + case 6: return 'Leiter/in FH-Kollegium'; + case 7: return 'Management'; + case 8: return 'Verwaltung'; + case 9: return 'Hauspersonal, Gebäude-/Haustechnik'; + default: return ''; + } + + } + + function getNameHauptberuf($id) + { + switch($id) + { + case '': return ''; + case 0: return 'Universität'; + case 1: return 'Fachhochschule'; + case 2: return 'Andere postsekundäre Bildungseinrichtung'; + case 3: return 'Allgemeinbildende höhere Schule'; + case 4: return 'Berufsbildende höhere Schule'; + case 5: return 'Andere Schule'; + case 6: return 'Öffentlicher Sektor'; + case 7: return 'Unternehmenssektor'; + case 8: return 'Freiberuflich tätig'; + case 9: return 'Privater gemeinnütziger Sektor'; + case 10: return 'Ausserhochschulische Forschungseinrichtung'; + case 11: return 'Internationale Organisation'; + case 12: return 'Sonstiges'; + default: return ''; + } + } + + function getNameBesonderequalifikation($id) + { + switch($id) + { + case 0: return 'keine'; + case 1: return 'Habilitation'; + case 2: return 'der Habilitation gleichwertige Qualifikation'; + case 3: return 'berufliche Tätigkeit'; + default: return ''; + } + } + + function getNameAusmass($id) + { + switch($id) + { + case 1: return 'Vollzeit'; + case 2: return '<= 15 Wochenstunden'; + case 3: return '16 - 25 Wochenstunden'; + case 4: return '26 - 35 Wochenstunden'; + case 5: return 'Karenz'; + default: return ''; + } } } ?> \ No newline at end of file diff --git a/include/fas/gruppe.class.php b/include/fas/gruppe.class.php index 7cccadbb8..c9f49216e 100644 --- a/include/fas/gruppe.class.php +++ b/include/fas/gruppe.class.php @@ -1,247 +1,202 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ - -class gruppe -{ - var $conn; // resource DB-Handle - var $errormsg; // string - var $new; // boolean - var $gruppen = array(); // gruppen Objekt - - //Tabellenspalten - var $gruppe_kurzbz; // varchar(16) - var $studiengang_kz; // integer - var $bezeichnung; // varchar(32) - var $semester; // smallint - var $sort; // smallint - var $mailgrp; // boolean - var $beschreibung; // varchar(128) - var $sichtbar; // boolean - var $aktiv; // boolean - var $updateamum; // timestamp - var $updatevon; // varchar(16) - var $insertamum; // timestamp - var $insertvon; // varchar(16) - - // ************************************************************************* - // * Konstruktor - Uebergibt die Connection und laedt optional eine Gruppe - // * @param $conn Datenbank-Connection - // * $gruppe_kurzbz - // * $unicode Gibt an ob die Daten mit UNICODE Codierung - // * oder LATIN9 Codierung verarbeitet werden sollen - // ************************************************************************* - function gruppe($conn, $gruppe_kurzbz=null, $unicode=false) - { - $this->conn = $conn; - - if($unicode) - $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; - else - $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; - - if(!pg_query($conn,$qry)) - { - $this->errormsg = 'Encoding konnte nicht gesetzt werden'; - return false; - } - - if($gruppe_kurzbz!=null) - $this->load($gruppe_kurzbz); - } - - // **************************************** - // * Prueft ob bereits eine Gruppe mit der - // * uebergebenen Kurzbezeichnung existiert - // * @param gruppe_kurzbz - // **************************************** - function exists($gruppe_kurzbz) - { - $qry = "SELECT count(*) as anzahl FROM tbl_gruppe WHERE gruppe_kurzbz='".addslashes($gruppe_kurzbz)."'"; - - if($row = pg_fetch_object(pg_query($this->conn,$qry))) - { - if($row->anzahl>0) - return true; - else - return false; - } - else - { - $this->errormsg = 'Fehler bei einer Abfrage: '.$qry; - return false; - } - } - - // ********************************************************* - // * Laedt die Gruppe - // * @param gruppe_kurzbz - // ********************************************************* - function load($gruppe_kurzbz) - { - return false; - } - - // ******************************************* - // * Prueft die Variablen vor dem Speichern - // * auf Gueltigkeit. - // * @return true wenn ok, false im Fehlerfall - // ******************************************* - function validate() - { - if(strlen($this->gruppe_kurzbz)>16) - { - $this->errormsg = 'Gruppe_kurzbz darf nicht laenger als 16 Zeichen sein'; - return false; - } - if($this->gruppe_kurzbz=='') - { - $this->errormsg = 'Gruppe muss angegeben werden'; - return false; - } - if(!is_numeric($this->studiengang_kz)) - { - $this->errormsg = 'Studiengang_kz muss eine gueltige Zahl sein'; - return false; - } - if(strlen($this->bezeichnung)>32) - { - $this->errormsg = 'Bezeichnung darf nicht laenger als 32 Zeichen sein'; - return false; - } - if($this->semester!='' && !is_numeric($this->semester)) - { - $this->errormsg = 'Semester muss eine gueltige Zahl sein'; - return false; - } - if($this->sort!='' && !is_numeric($this->sort)) - { - $this->errormsg = 'Typ muss eine gueltige Zahl sein'; - return false; - } - if(!is_bool($this->mailgrp)) - { - $this->errormsg = 'Mailgrp muss ein boolscher wert sein'; - return false; - } - if(strlen($this->beschreibung)>128) - { - $this->errormsg = 'Beschreibung darf nicht laenger als 128 Zeichen sein'; - return false; - } - if(!is_bool($this->sichtbar)) - { - $this->errormsg = 'Sichtbar muss ein boolscher Wert sein'; - return false; - } - if(!is_bool($this->aktiv)) - { - $this->errormsg = 'Aktiv muss ein boolscher Wert sein'; - return false; - } - if(strlen($this->updatevon)>16) - { - $this->errormsg = 'Updatevon darf nicht laenger als 16 Zeichen sein'; - return false; - } - if(strlen($this->insertvon)>16) - { - $this->errormsg = 'Insertvon darf nicht laenger als 16 Zeichen sein'; - return false; - } - - return true; - } - - // ************************************************ - // * wenn $var '' ist wird NULL zurueckgegeben - // * wenn $var !='' ist werden Datenbankkritische - // * Zeichen mit Backslash versehen und das Ergbnis - // * unter Hochkomma gesetzt. - // ************************************************ - function addslashes($var) - { - return ($var!=''?"'".addslashes($var)."'":'null'); - } - - // ************************************************************ - // * Speichert Gruppe in die Datenbank - // * Wenn $new auf true gesetzt ist wird ein neuer Datensatz - // * angelegt, ansonsten der Datensatz upgedated - // * @return true wenn erfolgreich, false im Fehlerfall - // ************************************************************ - function save($new=null) - { - if(is_null($new)) - $new = $this->new; - - //Variablen auf Gueltigkeit pruefen - if(!$this->validate()) - return false; - - if($new) - { - $qry = 'INSERT INTO tbl_gruppe (gruppe_kurzbz, studiengang_kz, bezeichnung, semester, sort, - mailgrp, beschreibung, sichtbar, aktiv, - updateamum, updatevon, insertamum, insertvon) - VALUES('.$this->addslashes($this->gruppe_kurzbz).','. - $this->addslashes($this->studiengang_kz).','. - $this->addslashes($this->bezeichnung).','. - $this->addslashes($this->semester).','. - $this->addslashes($this->sort).','. - ($this->mailgrp?'true':'false').','. - $this->addslashes($this->beschreibung).','. - ($this->sichtbar?'true':'false').','. - ($this->aktiv?'true':'false').','. - $this->addslashes($this->updateamum).','. - $this->addslashes($this->updatevon).','. - $this->addslashes($this->insertamum).','. - $this->addslashes($this->insertvon).');'; - } - else - { - $qry = 'UPDATE tbl_gruppe SET'. - ' studiengang_kz='.$this->addslashes($this->studiengang_kz).','. - ' bezeichnung='.$this->addslashes($this->bezeichnung).','. - ' semester='.$this->addslashes($this->semester).','. - ' sort='.$this->addslashes($this->sort).','. - ' mailgrp='.($this->mailgrp?'true':'false').','. - ' beschreibung='.$this->addslashes($this->beschreibung).','. - ' sichtbar='.($this->sichtbar?'true':'false').','. - ' aktiv='.($this->aktiv?'true':'false').','. - ' updateamum='.$this->addslashes($this->updateamum).','. - ' updatevon='.$this->addslashes($this->updatevon). - " WHERE gruppe_kurzbz=".$this->addslashes($this->gruppe_kurzbz).";"; - } - - if(pg_query($this->conn,$qry)) - { - //Log schreiben - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern der Gruppe:'.$qry; - return false; - } - } -} +conn = $conn; + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + if(!pg_query($conn,$qry)) + { + $this->errormsg = "Encoding konnte nicht gesetzt werden"; + return false; + } + if($gruppe_id != null) + $this->load($gruppe_id); + } + + /** + * Laedt eine Gruppe + * @param gruppe_id ID der Gruppe + * @return true wenn ok, false im Fehlerfall + */ + function load($gruppe_id) + { + //gruppe_id auf gueltigkeit pruefen + if(!is_numeric($gruppe_id) || $gruppe_id =='') + { + $this->errormsg = 'gruppe_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "SELECT * FROM gruppe WHERE gruppe_pk='$gruppe_id';"; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Datensatz konnte nicht geladen werden'; + return false; + } + + if($row = pg_fetch_object($res)) + { + $this->ausbildungssemester_id = $row->ausbildungssemester_fk; + $this->gruppe_id = $row->gruppe_pk; + $this->name = $row->name; + $this->nummerintern = $row->nummerintern; + $this->obergruppe_id = $row->obergruppe_fk; + $this->ordnung = $row->ordnung; + $this->studiengang_id = $row->studiengang_fk; + $this->typ = $row->typ; + $this->updateamum = $row->creationdate; + $this->updatevon = $row->creationuser; + + $this->fullname = $this->getFullName($row->gruppe_pk); + } + else + { + $this->errormsg = 'Datensatz konnte nicht geladen werden'; + return false; + } + + return true; + } + + /** + * Liefert den vollen namen einer Gruppe + * @param $gruppe_id + * @return voller name, false im Fehlerfall + */ + function getFullName($gruppe_id) + { + //gruppe_id auf gueltigkeit pruefen + if(!is_numeric($gruppe_id) || $gruppe_id == '') + { + $this->errormsg = 'gruppe_id muss eine gueltige Zahl sein'; + return false; + } + + //gesamten gruppennamen ermitteln + $qry = "SELECT fas_function_get_fullname_from_gruppe($gruppe_id) as fullname;"; + + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Gruppenname konnte nicht ermittelt werden'; + return false; + } + + return $row->fullname; + } + + /** + * Laedt alle Gruppen eines Studienganges/studiensemesters/ausbildungssemesters + * @param studiengang_id ID des studienganges + * studiensemester_id ID des Studiensemesters (optional) + * ausbildungssemester_id ID des Ausbildungssemesters (optional) + * @return true wenn ok, false im Fehlerfall + */ + function load_gruppen($studiengang_id, $studiensemester_id=null, $ausbildungssemester_id=null) + { + //Pruefen ob gueltige Werte uebergeben wurden + if(!is_numeric($studiengang_id) || $studiengang_id == '') + { + $this->errormsg = 'studiengang_id muss eine gueltige Zahl sein'; + return false; + } + + if($studiensemester_id!=null && (!is_numeric($studiensemester_id) || $studiensemester_id == '')) + { + $this->errormsg = 'studiensemester_id muss eine gueltige Zahl sein'; + return false; + } + + if($ausbildungssemester_id!=null && (!is_numeric($ausbildungssemester_id) || $ausbildungssemester_id == '')) + { + $this->errormsg = 'ausbildungssemester_id muss eine gueltige Zahl sein'; + return false; + } + + //Befehl zusammenbauen + $qry = "SELECT * FROM gruppe WHERE studiengang_fk='$studiengang_id' "; + + if($ausbildungssemester_id!=null) + $qry .= "AND ausbildungssemester_fk='$ausbildungssemester_id' "; + + if($studiensemester_id != null) + $qry .= "AND studiensemester_fk='$studiensemester_id' "; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Datensatz konnte nicht geladen werden'; + return false; + } + //Daten laden + while($row = pg_fetch_object($res)) + { + $grp_obj = new gruppe($this->conn); + + $grp_obj->ausbildungssemester_id = $row->ausbildungssemester_fk; + $grp_obj->gruppe_id = $row->gruppe_pk; + $grp_obj->name = $row->name; + $grp_obj->nummerintern = $row->nummerintern; + $grp_obj->obergruppe_id = $row->obergruppe_fk; + $grp_obj->ordnung = $row->ordnung; + $grp_obj->studiengang_id = $row->studiengang_fk; + $grp_obj->typ = $row->typ; + $grp_obj->updateamum = $row->creationdate; + $grp_obj->updatevon = $row->creationuser; + + $grp_obj->fullname = $this->getFullName($row->gruppe_pk); + + $this->result[] = $grp_obj; + } + + return true; + } + + /** + * Speichert den aktuellen Datensatz in die DB + * @return true wenn ok, false im Fehlerfall + */ + function save() + { + $this->errormsg = 'Noch nicht implementiert'; + return false; + } + + /** + * Loescht einen Datensatz + * @param $gruppe_id ID des zu loeschenden Datensatzes + * @return true wenn ok, false im Fehlerfall + */ + function delete($gruppe_id) + { + $this->errormsg = 'Noch nicht implementiert'; + return false; + } +} ?> \ No newline at end of file diff --git a/include/fas/lehreinheit.class.php b/include/fas/lehreinheit.class.php index 810eeb158..b7077575a 100644 --- a/include/fas/lehreinheit.class.php +++ b/include/fas/lehreinheit.class.php @@ -1,261 +1,1588 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ - -class lehreinheit -{ - var $conn; // resource DB-Handle - var $errormsg; // string - var $new; // boolean - var $lehreinheiten = array(); // lehreinheit Objekt - - //Tabellenspalten - var $lehreinheit_id; // integer - var $lehrveranstaltung_id; // integer - var $studiensemester_kurzbz; // varchar(16) - var $lehrfach_id; // integer - var $lehrform_kurzbz; // varchar(8) - var $stundenblockung; // smalint - var $wochenrythmus; // smalint - var $start_kw; // smalint - var $raumtyp; // varchar(8) - var $raumtypalternativ; // varchar(8) - var $lehre; // boolean - var $anmerkung; // varchar(255) - var $unr; // integer - var $ext_id; // bigint - - // ************************************************************************* - // * Konstruktor - Uebergibt die Connection und laedt optional eine LE - // * @param $conn Datenbank-Connection - // * $gruppe_kurzbz - // * $unicode Gibt an ob die Daten mit UNICODE Codierung - // * oder LATIN9 Codierung verarbeitet werden sollen - // ************************************************************************* - function lehreinheit($conn, $lehreinheit_id=null, $unicode=false) - { - $this->conn = $conn; - - if($unicode) - $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; - else - $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; - - if(!pg_query($conn,$qry)) - { - $this->errormsg = 'Encoding konnte nicht gesetzt werden'; - return false; - } - - if($lehreinheit_id!=null) - $this->load($lehreinheit_id); - } - - // ********************************************************* - // * Laedt die LE - // * @param lehreinheit_id - // ********************************************************* - function load($lehreinheit_id) - { - return false; - } - - // ******************************************* - // * Prueft die Variablen vor dem Speichern - // * auf Gueltigkeit. - // * @return true wenn ok, false im Fehlerfall - // ******************************************* - function validate() - { - if($this->lehreinheit_id!='' && !is_numeric($this->lehreinheit_id)) - { - $this->errormsg = 'Lehreinheit_id muss eine gueltige Zahl sein'; - return false; - } - if(!is_numeric($this->lehrveranstaltung_id)) - { - $this->errormsg = 'LehrveranstaltungsNr muss eine gueltige Zahl sein'; - return false; - } - if(strlen($this->studiensemester_kurzbz)>16) - { - $this->errormsg = 'Studiensemesterkurzbz darf nicht laenger als 16 Zeichen sein'; - return false; - } - if($this->studiensemester_kurzbz=='') - { - $this->errormsg = 'Studiensemester muss angegeben werden'; - return false; - } - if(!is_numeric($this->lehrfach_id)) - { - $this->errormsg = 'Lehrfach_id muss eine gueltige Zahl sein'; - return false; - } - if(strlen($this->lehrform_kurzbz)>8) - { - $this->errormsg = 'Lehrform_kurzbz darf nicht laenger als 8 Zeichen sein'; - return false; - } - if($this->lehrform_kurzbz=='') - { - $this->lehrform_kurzbz='SO'; - //TODO - //$this->errormsg = 'Lehrform muss angegeben werden'; - //return false; - } - if(!is_numeric($this->stundenblockung)) - { - $this->errormsg = 'Stundenblockung muss eine gueltige Zahl sein'; - return false; - } - if(!is_numeric($this->wochenrythmus)) - { - $this->errormsg = 'Wochenrythmus muss eine gueltige Zahl sein'; - return false; - } - if($this->start_kw!='' && !is_numeric($this->start_kw)) - { - $this->errormsg = 'StartKW muss eine gueltige Zahl sein'; - return false; - } - if($this->start_kw!='' && ($this->start_kw>53 || $this->start_kw<1)) - { - $this->errormsg = 'StartKW muss zwischen 1 und 53 liegen'; - return false; - } - if(strlen($this->raumtyp)>8) - { - $this->errormsg = 'Raumtyp darf nicht laenger als 8 Zeichen sein'; - return false; - } - if(strlen($this->raumtypalternativ)>8) - { - $this->errormsg = 'Raumtypalternativ darf nicht alenger als 8 Zeichen sein'; - return false; - } - if($this->raumtypalternativ=='') - { - //TODO - $this->raumtypalternativ='Dummy'; - } - if(!is_bool($this->lehre)) - { - $this->errormsg = 'Lehre muss ein boolscher Wert sein'; - return false; - } - if(strlen($this->anmerkung)>255) - { - $this->errormsg = 'Anmerkung darf nicht laenger als 255 Zeichen sein'; - return false; - } - if($this->unr!='' && !is_numeric($this->unr)) - { - $this->errormsg = 'UNR muss eine gueltige Zahl sein'; - return false; - } - if($this->ext_id!='' && !is_numeric($this->ext_id)) - { - $this->errormsg = 'Ext_id muss eine gueltige Zahl sein'; - return false; - } - - return true; - } - - // ************************************************ - // * wenn $var '' ist wird NULL zurueckgegeben - // * wenn $var !='' ist werden Datenbankkritische - // * Zeichen mit Backslash versehen und das Ergbnis - // * unter Hochkomma gesetzt. - // ************************************************ - function addslashes($var) - { - return ($var!=''?"'".addslashes($var)."'":'null'); - } - - // ************************************************************ - // * Speichert LE in die Datenbank - // * Wenn $new auf true gesetzt ist wird ein neuer Datensatz - // * angelegt, ansonsten der Datensatz upgedated - // * @return true wenn erfolgreich, false im Fehlerfall - // ************************************************************ - function save($new=null) - { - if(is_null($new)) - $new = $this->new; - - //Variablen auf Gueltigkeit pruefen - if(!$this->validate()) - return false; - - if($new) - { - //ToDo ID entfernen - $qry = 'INSERT INTO lehre.tbl_lehreinheit (lehrveranstaltung_id, studiensemester_kurzbz, - lehrfach_id, lehrform_kurzbz, stundenblockung, wochenrythmus, - start_kw, raumtyp, raumtypalternativ, lehre, anmerkung, unr, ext_id) - VALUES('.$this->addslashes($this->lehrveranstaltung_id).','. - $this->addslashes($this->studiensemester_kurzbz).','. - $this->addslashes($this->lehrfach_id).','. - $this->addslashes($this->lehrform_kurzbz).','. - $this->addslashes($this->stundenblockung).','. - $this->addslashes($this->wochenrythmus).','. - $this->addslashes($this->start_kw).','. - $this->addslashes($this->raumtyp).','. - $this->addslashes($this->raumtypalternativ).','. - ($this->lehre?'true':'false').','. - $this->addslashes($this->anmerkung).','. - $this->addslashes($this->unr).','. - $this->addslashes($this->ext_id).');'; - } - else - { - $qry = 'UPDATE lehre.tbl_lehreinheit SET'. - ' lehrveranstaltung_nr='.$this->addslashes($this->lehrveranstaltung_id).','. - ' studiensemester_kurzbz='.$this->addslashes($this->studiensemester_kurzbz).','. - ' lehrfach_id='.$this->addslashes($this->lehrfach_id).','. - ' lehrform_kurzbz='.$this->addslashes($this->lehrform_kurzbz).','. - ' stundenblockung='.$this->addslashes($this->stundenblockung).','. - ' wochenrythmus='.$this->addslashes($this->wochenrythmus).','. - ' start_kw='.$this->addslashes($this->start_kw).','. - ' raumtyp='.$this->addslashes($this->raumtyp).','. - ' raumtypalternativ='.$this->addslashes($this->raumtypalternativ).','. - ' lehre='.($this->lehre?'true':'false').','. - ' anmerkung='.$this->addslashes($this->anmerkung).','. - ' unr='.$this->addslashes($this->unr).','. - ' ext_id='.$this->addslashes($this->ext_id). - " WHERE lehreinheit_id=".$this->addslashes($this->lehreinheit_id).";"; - } - - if(pg_query($this->conn,$qry)) - { - //Log schreiben - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern der LE:'.$qry; - return false; - } - } -} +conn = $conn; + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + if(!pg_query($conn,$qry)) + { + $this->errormsg = "Encoding konnte nicht gesetzt werden"; + return false; + } + if($lehreinheit_id != null) + $this->load($lehreinheit_id); + } + + /** + * Laedt einen Datensatz + * @param $lehreinheit_id ID des zu ladenden Datensatzes + * @return true wenn ok, false im Fehlerfall + */ + function load($lehreinheit_id) + { + if(!is_numeric($lehreinheit_id) || $lehreinheit_id == '') + { + $this->errormsg = 'lehreinheit_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "SELECT * FROM lehreinheit WHERE lehreinheit_pk = '$lehreinheit_id'"; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Datensatz konnte nicht geladen werden'; + return false; + } + + if($row = pg_fetch_object($res)) + { + $this->lehreinheit_id = $row->lehreinheit_pk; + $this->studiengang_id = $row->studiengang_fk; + $this->studiensemester_id = $row->studiensemester_fk; + $this->ausbildungssemester_id = $row->ausbildungssemester_fk; + $this->fachbereich_id = $row->fachbereich_fk; + $this->gruppe_id = $row->gruppe_fk; + $this->koordinator_id = $row->bivar1; + $this->lehrform_id = $row->lehrform_fk; + $this->lehrveranstaltung_id = $row->lehrveranstaltung_fk; + $this->raumtyp_id = $row->raumtyp_fk; + $this->raumtypalternativ_id = $row->alternativraumtyp_fk; + $this->bemerkungen = $row->bemerkungen; + $this->bezeichnung = $row->bezeichnung; + $this->gesamtstunden = $row->gesamtstunden; + $this->kurzbezeichnung = $row->kurzbezeichnung; + $this->nummer = $row->nummer; + $this->planfaktor = $row->planfaktor; + $this->plankostenprolektor = $row->plankostenprolektor; + $this->planlektoren = $row->planlektoren; + $this->semesterwochenstunden = $row->semesterwochenstunden; + $this->start_kw = $row->ivar2; + $this->stundenblockung = $row->ivar3; + $this->updateamum = $row->creationdate; + $this->updatevon = $row->creationuser; + $this->wochenrythmus = $row->ivar1; + } + else + { + $this->errormsg = 'Datensatz konnte nicht geladen werden'; + return false; + } + return true; + } + + /** + * Laedt eine / mehrere Lehreinheit(en) + * @param $studiengang_id ID des zu ladenden Studienganges + * $studiensemester_id ID des zu ladenden Studiensemesters (optional) + * $ausbildungssemester_id ID des zu ladenden Ausbildungssemesters (optional) + * $lehrform_id ID der zu ladenden Lehrform (optional) + * @return true wenn ok, false im Fehlerfall + */ + function load_einheit($studiengang_id, $studiensemester_id=null, $ausbildungssemester_id=null, $lehrform_id=null) + { + //Gueltigkeit der Parameter pruefen + if(!is_numeric($studiengang_id) || $studiengang_id == '') + { + $this->errormsg = 'studiengang_id muss eine gueltige Zahl sein'; + return false; + } + if($studiensemester_id!=null && (!is_numeric($studiensemester_id) || $studiensemester_id == '')) + { + $this->errormsg = 'studiensemester_id muss eine gueltige Zahl oder null sein'; + return false; + } + if($ausbildungssemester_id!=null && (!is_numeric($ausbildungssemester_id) || $ausbildungssemester_id == '')) + { + $this->errormsg = 'ausbildungssemester_id muss eine gueltige Zahl oder null sein'; + return false; + } + if($lehrform_id!=null && (!is_numeric($lehrform_id) || $lehrform_id == '')) + { + $this->errormsg = 'lehrform_id muss eine gueltige Zahl oder null sein'; + return false; + } + + //Select Befehl zusammenbauen + $qry = "SELECT * FROM lehreinheit WHERE studiengang_fk = '$studiengang_id'"; + + if($studiensemester_id != null) + $qry .= " AND studiensemester_fk = '$studiensemester_id'"; + + if($ausbildungssemester_id != null) + $qry .= " AND ausbildungssemester_fk = '$ausbildungssemester_id'"; + + if($lehrform_id != null) + $qry .= " AND lehrform_fk = '$lehrform_id'"; + + //Daten auslesen + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Datensatz konnte nicht geladen werden'; + return false; + } + + while($row = pg_fetch_object($res)) + { + $einh_obj = new lehreinheit($this->conn); + + $einh_obj->lehreinheit_id = $row->lehreinheit_pk; + $einh_obj->studiengang_id = $row->studiengang_fk; + $einh_obj->studiensemester_id = $row->studiensemester_fk; + $einh_obj->ausbildungssemester_id = $row->ausbildungssemester_fk; + $einh_obj->fachbereich_id = $row->fachbereich_fk; + $einh_obj->gruppe_id = $row->gruppe_fk; + $einh_obj->koordinator_id = $row->bivar1; + $einh_obj->lehrform_id = $row->lehrform_fk; + $einh_obj->lehrveranstaltung_id = $row->lehrveranstaltung_fk; + $einh_obj->raumtyp_id = $row->raumtyp_fk; + $einh_obj->raumtypalternativ_id = $row->alternativraumtyp_fk; + $einh_obj->bemerkungen = $row->bemerkungen; + $einh_obj->bezeichnung = $row->bezeichnung; + $einh_obj->gesamtstunden = $row->gesamtstunden; + $einh_obj->kurzbezeichnung = $row->kurzbezeichnung; + $einh_obj->nummer = $row->nummer; + $einh_obj->planfaktor = $row->planfaktor; + $einh_obj->plankostenprolektor = $row->plankostenprolektor; + $einh_obj->planlektoren = $row->planlektoren; + $einh_obj->semesterwochenstunden = $row->semesterwochenstunden; + $einh_obj->start_kw = $row->ivar2; + $einh_obj->stundenblockung = $row->ivar3; + $einh_obj->updateamum = $row->creationdate; + $einh_obj->updatevon = $row->creationuser; + $einh_obj->wochenrythmus = $row->ivar1; + + $this->result[] = $einh_obj; + } + return true; + } + + /** + * Prueft die Variablen auf Gueltigkeit + * Hochkomma und HTML Tags werden ersetzt + * @return true wenn ok, false im Fehlerfall + */ + function checkvars() + { + + //Hochkomma und HTML Tags codieren + $this->nummer = str_replace("'","`",$this->nummer); + $this->bezeichnung = str_replace("'","`",$this->bezeichnung); + $this->kurzbezeichnung = str_replace("'","`",$this->kurzbezeichnung); + $this->bemerkungen = str_replace("'","`",$this->bemerkungen); + + if(ereg("[^a-zA-Z0-9]", $this->kurzbezeichnung)) + { + $this->errormsg = "Die Kurzbezeichnung darf keine Umlaute oder Sonderzeichen enthalten"; + return false; + } + + //Gesamtlaenge pruefen + if(strlen($this->nummer)>20) + { + $this->errormsg = 'Nummer darf nicht laenger als 20 Zeichen sein'; + return false; + } + if(strlen($this->bezeichnung)>255) + { + $this->errormsg = 'Bezeichnung darf nicht laenger als 255 Zeichen sein'; + return false; + } + if(strlen($this->kurzbezeichnung)>5) + { + $this->errormsg = 'Kurzbezeichnung darf nicht laenger als 5 Zeichen sein'; + return false; + } + if(strlen($this->bemerkungen)>255) + { + $this->errormsg = 'Bemerkung darf nicht laenger als 255 Zeichen sein'; + return false; + } + + //Zahlenfelder pruefen + if(!is_numeric($this->studiengang_id)) + { + $this->errormsg = 'Studiengang ist ungueltig'; + return false; + } + if(!is_numeric($this->studiensemester_id)) + { + $this->errormsg = 'Studiensemester ist ungueltig'; + return false; + } + if($this->lehrveranstaltung_id!='' && !is_numeric($this->lehrveranstaltung_id)) + { + $this->errormsg = 'Lehrveranstaltung_id ist ungueltig'; + return false; + } + if($this->fachbereich_id!='' && !is_numeric($this->fachbereich_id)) + { + $this->errormsg = 'Fachbereich_id ist ungueltig'; + return false; + } + if($this->ausbildungssemester_id !='' && !is_numeric($this->ausbildungssemester_id)) + { + $this->errormsg = 'Ausbildungssemester_id ist ungueltig'; + return false; + } + if($this->lehrform_id!='' && !is_numeric($this->lehrform_id)) + { + $this->errormsg = 'Lehrform_id ist ungueltig'; + return false; + } + if($this->lehreinheit_fk!='' && !is_numeric($this->lehreinheit_fk)) + { + $this->errormsg = 'Lehreinheit_fk ist ungueltig'; + return false; + } + if($this->gruppe_id!='' && !is_numeric($this->gruppe_id)) + { + $this->errormsg = 'Gruppe ist ungueltig'; + return false; + } + if($this->semesterwochenstunden!='' && !is_numeric($this->semesterwochenstunden)) + { + $this->errormsg = 'Semesterwochenstunden muessen eine gueltige Zahl sein'; + return false; + } + if($this->gesamtstunden!='' && !is_numeric($this->gesamtstunden)) + { + $this->errormsg = 'Gesamtstunden muessen eine gueltige Zahl sein'; + return false; + } + if($this->plankostenprolektor!='' && !is_numeric($this->plankostenprolektor)) + { + $this->errormsg = 'Kosten pro Lektor muss eine gueltige Zahl sein'; + return false; + } + if($this->planfaktor!='' && !is_numeric($this->planfaktor)) + { + $this->errormsg = 'Geplanter Faktor muss eine gueltige Zahl sein'; + return false; + } + if($this->planlektoren!='' && !is_numeric($this->planlektoren)) + { + $this->errormsg = 'Anzahl der Lektoren muss eine gueltige Zahl sein'; + return false; + } + if($this->raumtyp_id!='' && !is_numeric($this->raumtyp_id)) + { + $this->errormsg = 'Raumtyp ist ungueltig'; + return false; + } + if($this->raumtypalternativ_id!='' && !is_numeric($this->raumtypalternativ_id)) + { + $this->errormsg = 'Alternativraumtyp ist ungueltig'; + return false; + } + if($this->wochenrythmus!='' && !is_numeric($this->wochenrythmus)) + { + $this->errormsg = 'Wochenrythmus muss eine gueltige Zahl sein'; + return false; + } + if($this->start_kw!='' && !is_numeric($this->start_kw)) + { + $this->errormsg = 'Kalenderwoche muss eine gueltige Zahl sein'; + return false; + } + if($this->stundenblockung!='' && !is_numeric($this->stundenblockung)) + { + $this->errormsg = 'Stundenblockung muss eine gueltige Zahl sein'; + return false; + } + if($this->koordinator_id!='' && !is_numeric($this->koordinator_id)) + { + $this->errormsg = 'Koordinator ist ungueltig'; + return false; + } + + $this->errormsg = ''; + return true; + } + + /** + * Speichert den aktuellen Datensatz + * Wenn new auf true gesetzt ist wird ein neuer Datensatz angelegt + * ansonsten wird der datensatz mit der ID lehreinheit_id aktualisiert + * @return true wenn ok, false im Fehlerfall + */ + function save() + { + //Variablen pruefen + if(!$this->checkvars()) + return false; + + if($this->new) + { + //Neuen Datensatz anlegen + + //naechste ID aus Sequence holen + $qry = "SELECT nextval('lehreinheit_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim auslesen der Sequence'; + return false; + } + $this->lehreinheit_id = $row->id; + + //Insert Befehl zusammenbauen + $qry = "INSERT INTO lehreinheit (lehreinheit_pk, studiengang_fk, studiensemester_fk, lehrveranstaltung_fk,". + " fachbereich_fk, ausbildungssemester_fk, lehreinheit_fk, lehrform_fk, gruppe_fk, nummer, bezeichnung,". + " kurzbezeichnung, semesterwochenstunden, gesamtstunden, plankostenprolektor, planfaktor, planlektoren,". + " raumtyp_fk, alternativraumtyp_fk, bemerkungen, ivar1, ivar2, ivar3, bivar1, creationdate, creationuser)". + " VALUES('$this->lehreinheit_id', '$this->studiengang_id', '$this->studiensemester_id',". + ($this->lehrveranstaltung_id!=''?" '$this->lehrveranstaltung_id'":" null").",". + ($this->fachbereich_id!=''?" '$this->fachbereich_id'":" null").",". + ($this->ausbildungssemester_id!=''?" '$this->ausbildungssemester_id'":" null").",". + ($this->lehreinheit_fk!=''?" '$this->lehreinheit_fk'":" null").",". + ($this->lehrform_id!=''?" '$this->lehrform_id'":" null").",". + ($this->gruppe_id!=''?" '$this->gruppe_id'":" null").",". + ($this->nummer!=''?" '$this->nummer'":" null").",". + ($this->bezeichnung!=''?" '$this->bezeichnung'":" null").",". + ($this->kurzbezeichnung!=''?" '$this->kurzbezeichnung'":" null").",". + ($this->semesterwochenstunden!=''?" '$this->semesterwochenstunden'":" null").",". + ($this->gesamtstunden!=''?" '$this->gesamtstunden'":" null").",". + ($this->plankostenprolektor!=''?" '$this->plankostenprolektor'":" null").",". + ($this->planfaktor!=''?" '$this->planfaktor'":" null").",". + ($this->planlektoren!=''?" '$this->planlektoren'":" null").",". + ($this->raumtyp_id!=''?" '$this->raumtyp_id'":" null").",". + ($this->raumtypalternativ_id!=''?" '$this->raumtypalternativ_id'":" null").",". + ($this->bemerkungen!=''?" '$this->bemerkungen'":" null").",". + ($this->wochenrythmus!=''?" '$this->wochenrythmus'":" null").",". + ($this->start_kw!=''?" '$this->start_kw'":" null").",". + ($this->stundenblockung!=''?" '$this->stundenblockung'":" null").",". + ($this->koordinator_id!=''?" '$this->koordinator_id'":" null").", now(),$this->updatevon);"; + } + else + { + //lehreinheit_id auf gueltigkeit pruefen + if(!is_numeric($this->lehreinheit_id) || $this->lehreinheit_id == '') + { + $this->errormsg = 'lehreinheit_id muss eine gueltige Zahl sein'; + return false; + } + + //Update Befehl zusammenbauen + $qry = "UPDATE lehreinheit SET". + " studiengang_fk = '$this->studiengang_id',". + " studiensemester_fk = '$this->studiensemester_id',". + " lehrveranstaltung_fk = '$this->lehrveranstaltung_id',". + " fachbereich_fk = ".($this->fachbereich_id!=''?"'$this->fachbereich_id'":"null").",". + " ausbildungssemester_fk = ".($this->ausbildungssemester_id!=''?"'$this->ausbildungssemester_id'":"null").",". + " lehreinheit_fk = ".($this->lehreinheit_fk!=''?"'$this->lehreinheit_fk'":"null").",". + " lehrform_fk = ".($this->lehrform_id!=''?"'$this->lehrform_id'":"null").",". + " gruppe_fk = ".($this->gruppe_id!=''?"'$this->gruppe_id'":"null").",". + " nummer = '$this->nummer',". + " bezeichnung = '$this->bezeichnung',". + " kurzbezeichnung = '$this->kurzbezeichnung',". + " semesterwochenstunden = ".($this->semesterwochenstunden!=''?"'$this->semesterwochenstunden'":"null").",". + " gesamtstunden = ".($this->gesamtstunden!=''?"'$this->gesamtstunden'":"null").",". + " plankostenprolektor = ".($this->plankostenprolektor!=''?"'$this->plankostenprolektor'":"null").",". + " planfaktor = ".($this->planfaktor!=''?"'$this->planfaktor'":"null").",". + " planlektoren = ".($this->planlektoren!=''?"'$this->planlektoren'":"null").",". + " raumtyp_fk = ".($this->raumtyp_id!=''?"'$this->raumtyp_id'":"null").",". + " alternativraumtyp_fk = ".($this->raumtypalternativ_id!=''?"'$this->raumtypalternativ_id'":"null").",". + " bemerkungen = '$this->bemerkungen',". + " ivar1 = ".($this->wochenrythmus!=''?"'$this->wochenrythmus'":"null").",". + " ivar2 = ".($this->start_kw!=''?"'$this->start_kw'":"null").",". + " ivar3 = ".($this->stundenblockung!=''?"'$this->stundenblockung'":"null").",". + " bivar1= ".($this->koordinator_id!=''?"'$this->koordinator_id'":"null"). + " WHERE lehreinheit_pk = '$this->lehreinheit_id';"; + } + + if(pg_query($this->conn, $qry)) + { + //Log schreiben + $sql = $qry; + $qry = "SELECT nextval('log_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim Auslesen der Log-Sequence'; + return false; + } + + $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')"; + if(pg_query($this->conn, $qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Speichern des Datensatzes'.$qry.' '.pg_errormessage($this->conn); + return false; + } + } + + /** + * Loescht einen Datensatz + * @param $lehreinheit_id ID des zu leoschenden DS + * @return true wenn ok, false im Fehlerfall + */ + function delete($lehreinheit_id) + { + if(!is_numeric($lehreinheit_id) || $lehreinheit_id == '') + { + $this->errormsg = 'lehreinheit_id muss eine gueltige Zahl sein'; + return false; + } + //Pruefen ob diese Lehreinheit Partizipierte Lehreinheiten hat + $qry = "SELECT count(*) as anz FROM lehreinheit where lehreinheit_fk='$lehreinheit_id'"; + if(!$result = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Fehler beim Auslesen der partizipierenden Lehreinheiten'; + return false; + } + else + { + if(!$row=pg_fetch_object($result) || $row->anz>0) + { + $this->errormsg = 'Sie können diese Lehreinheit nicht löschen da noch partizipierende Lehreinheiten vorhanden sind.'.$qry; + return false; + } + } + + $qry = "DELETE FROM lehreinheit where lehreinheit_pk = '$lehreinheit_id'"; + + if(!pg_query($this->conn, $qry)) + { + $this->errormsg = 'Fehler beim loeschen des Datensatzes'; + return false; + } + else + { + //Log schreiben + $sql = $qry; + $qry = "SELECT nextval('log_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim Auslesen der Log-Sequence'; + return false; + } + + $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')"; + if(pg_query($this->conn, $qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; + return false; + } + } + } + + + + + /** + * Laedt alle/id des uebergebenen Mitarbeiter die zu einer Lehreinheit gehoeren + * @param $lehreinheit_id ID der Lehreinheit + * $mitarbeiter_id ID des Mitarbeiters (optional) + * @return true wenn ok, false im Fehlerfall + */ + function load_zuteilung($lehreinheit_id, $mitarbeiter_id=null) + { + //Variablen pruefen + if(!is_numeric($lehreinheit_id) || $lehreinheit_id == '') + { + $this->errormsg = 'lehreinheit_id muss eine gueltige Zahl sein'; + return false; + } + if($mitarbeiter_id != null && (!is_numeric($mitarbeiter_id) || $mitarbeiter_id == '')) + { + $this->errormsg = 'mitarbeiter_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "SELECT * FROM mitarbeiter_lehreinheit where lehreinheit_fk = '$lehreinheit_id'"; + + if($mitarbeiter_id != null) + $qry .= " AND mitarbeiter_id = '$mitarbeiter_id'"; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Datensatz konnte nicht geladen werden'; + return false; + } + + while($row = pg_fetch_object($res)) + { + $einh_obj = new lehreinheit($this->conn); + + $einh_obj->mitarbeiter_lehreinheit_id = $row->mitarbeiter_lehreinheit_pk; + $einh_obj->lehreinheit_fk = $row->lehreinheit_fk; + $einh_obj->lehrfunktion_id = $row->lehrfunktion_fk; + $einh_obj->mitarbeiter_id = $row->mitarbeiter_fk; + $einh_obj->faktor = $row->faktor; + $einh_obj->kosten = $row->kosten; + $einh_obj->gesamtstunden_mitarbeiter = $row->rvar1; + + $this->result[] = $einh_obj; + } + return true; + } + + /** + * Laedt die Mitarbeiterzuteilung + * @param $mitarbeiter_lehreinheit_id ID der Zuteilung + * @return true wenn ok, false im Fehlerfall + */ + function load_mitarbeiterzuteilung($mitarbeiter_lehreinheit_id) + { + //Variablen pruefen + if(!is_numeric($mitarbeiter_lehreinheit_id) || $mitarbeiter_lehreinheit_id == '') + { + $this->errormsg = 'mitarbeiter_lehreinheit_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "SELECT * FROM mitarbeiter_lehreinheit where mitarbeiter_lehreinheit_pk = '$mitarbeiter_lehreinheit_id'"; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Datensatz konnte nicht geladen werden'; + return false; + } + + while($row = pg_fetch_object($res)) + { + $einh_obj = new lehreinheit($this->conn); + + $einh_obj->mitarbeiter_lehreinheit_id = $row->mitarbeiter_lehreinheit_pk; + $einh_obj->lehreinheit_fk = $row->lehreinheit_fk; + $einh_obj->lehrfunktion_id = $row->lehrfunktion_fk; + $einh_obj->mitarbeiter_id = $row->mitarbeiter_fk; + $einh_obj->faktor = $row->faktor; + $einh_obj->kosten = $row->kosten; + $einh_obj->gesamtstunden_mitarbeiter = $row->rvar1; + + $this->result[] = $einh_obj; + } + return true; + } + + /** + * Prueft die variablen auf gueltigkeit + * @return true wenn ok, false im Fehlerfall + */ + function checkvars_zuteilung() + { + + if(!is_numeric($this->mitarbeiter_id)) + { + $this->errormsg = 'Bitte einen gueltigen Mitarbeiter auswaehlen'; + return false; + } + if(!is_numeric($this->lehreinheit_fk)) + { + $this->errormsg = 'lehreinheit_fk ist ungueltig'; + return false; + } + if(!is_numeric($this->lehrfunktion_id)) + { + $this->errormsg = 'Die Lehrfuntkion ist ungueltig'; + return false; + } + if(!is_numeric($this->kosten)) + { + $this->errormsg = 'Die Kosten muessen eine gueltige Zahl sein'; + return false; + } + if(!is_numeric($this->faktor)) + { + $this->errormsg = 'Faktor muss eine gueltige Zahl sein'; + return false; + } + if(!is_numeric($this->gesamtstunden_mitarbeiter)) + { + $this->errormsg = 'Gesamtstunden muss eine gueltige Zahl sein'; + return false; + } + + $this->errormsg = ''; + return true; + } + + /** + * Speichert die Zuteilung eines Mitarbeiters zu einer Lehreinheit + * @return true wenn ok, false im Fehlerfall + */ + function save_zuteilung() + { + if(!$this->checkvars_zuteilung()) + return false; + + if($this->new) + { + $qry = "SELECT nextval('mitarbeiter_lehreinheit_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Sequence konnte nicht ausgelesen werden'; + return false; + } + + $this->mitarbeiter_lehreinheit_id = $row->id; + + $qry = "INSERT INTO mitarbeiter_lehreinheit (mitarbeiter_lehreinheit_pk, mitarbeiter_fk, lehreinheit_fk,". + " lehrfunktion_fk, kosten, faktor, rvar1, creationdate, creationuser) VALUES(". + " '$this->mitarbeiter_lehreinheit_id', '$this->mitarbeiter_id', '$this->lehreinheit_fk', '$this->lehrfunktion_id',". + " '$this->kosten', '$this->faktor', '$this->gesamtstunden_mitarbeiter', now(), '$this->updatevon');"; + } + else + { + //mitarbeiter_lehreinheit_id auf gueltigkeit pruefen + if(!is_numeric($this->mitarbeiter_lehreinheit_id) || $this->mitarbeiter_lehreinheit_id =='') + { + $this->errormsg = 'mitarbeiter_lehreinheit muss eine gueltige Zahl sein'; + return false; + } + + $qry = "UPDATE mitarbeiter_lehreinheit SET mitarbeiter_fk = '$this->mitarbeiter_id',". + " lehreinheit_fk = '$this->lehreinheit_fk', lehrfunktion_fk = '$this->lehrfunktion_id',". + " kosten = '$this->kosten', faktor = '$this->faktor', rvar1 = '$this->gesamtstunden_mitarbeiter'". + " WHERE mitarbeiter_lehreinheit_pk = '$this->mitarbeiter_lehreinheit_id';"; + } + + if(pg_query($this->conn, $qry)) + { + //Log schreiben + $sql = $qry; + $qry = "SELECT nextval('log_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim Auslesen der Log-Sequence'; + return false; + } + + $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')"; + if(pg_query($this->conn, $qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Speichern des Datensatzes'; + return false; + } + } + + /** + * Loescht die Zuteilung eines Mitarbeiters zu einer Lehreinheit + * @param $mitarbeiter_lehreinheit_id ID des zu loeschenden Datensatzes + * @return true wenn ok, false im Fehlerfall + */ + function delete_zuteilung($mitarbeiter_lehreinheit_id) + { + //Pruefen ob mitarbeiter_lehreinheit_id eine gueltige Zahl ist + if(!is_numeric($mitarbeiter_lehreinheit_id) || $mitarbeiter_lehreinheit_id == '') + { + $this->errormsg = 'mitarbeiter_lehreinheit_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "DELETE FROM mitarbeiter_lehreinheit WHERE mitarbeiter_lehreinheit_pk = '$mitarbeiter_lehreinheit_id';"; + + if(!pg_query($this->conn, $qry)) + { + $this->errormsg = 'Fehler beim loeschen der Zuteilung'; + return false; + } + else + { + //Log schreiben + $sql = $qry; + $qry = "SELECT nextval('log_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim Auslesen der Log-Sequence'; + return false; + } + + $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')"; + if(pg_query($this->conn, $qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; + return false; + } + } + + } + + /** + * Liefert die Lehreinheiten mit den dazugehoerigen Attributen + * @param stg Studiengang + * sem Semester + * stsem Studiensemester + */ + function getLehreinheiten($stg=null, $sem=null, $stsem=null, $lehreinheit_id=null, $include_partizipierungen=false) + { + $qry = "SELECT lehreinheit.lehreinheit_pk as lehreinheit_id, + studiengang.studiengang_pk as studiengang_id, + (CASE WHEN studiengang.studiengangsart=1 THEN 'B' + WHEN studiengang.studiengangsart=2 THEN 'M' + WHEN studiengang.studiengangsart=3 THEN 'D' END) || studiengang.kuerzel as studiengang_kurzbz, + studiensemester.studiensemester_pk as studiensemester_id, + (CASE WHEN studiensemester.art=1 THEN 'WS' + WHEN studiensemester.art=2 THEN 'SS' END) || studiensemester.jahr as studiensemester_kurzbz, + lehreinheit.lehrveranstaltung_fk as lehrveranstaltung_id, + lehreinheit.fachbereich_fk as fachbereich_id, + fachbereich.name as fachbereich_bezeichnung, + lehreinheit.ausbildungssemester_fk as ausbildungssemester_id, + ausbildungssemester.semester as ausbildungssemester_semester, + ausbildungssemester.name as ausbildungssemester_kurzbz, + lehreinheit.lehreinheit_fk as lehreinheit_fk, + lehreinheit.lehrform_fk as lehrform_id, + lehrform.kurzbezeichnung as lehrform_kurzbz, + lehreinheit.gruppe_fk as gruppe_id, + fas_function_get_fullname_from_gruppe(lehreinheit.gruppe_fk) as gruppe_kurzbz, + lehreinheit.nummer as nummer, + lehreinheit.bezeichnung as bezeichnung, + lehreinheit.kurzbezeichnung as kurzbezeichnung, + lehreinheit.semesterwochenstunden as semesterwochenstunden, + lehreinheit.gesamtstunden as gesamtstunden, + lehreinheit.plankostenprolektor as plankostenprolektor, + lehreinheit.planfaktor as planfaktor, + lehreinheit.planlektoren as planlektoren, + lehreinheit.raumtyp_fk as raumtyp_id, + lehreinheit.alternativraumtyp_fk as raumtypalternativ_id, + lehreinheit.bemerkungen as bemerkungen, + lehreinheit.ivar1 as wochenrythmus, + lehreinheit.ivar2 as kalenderwoche, + lehreinheit.ivar3 as stundenblockung, + lehreinheit.bivar1 as koordinator_id, + (Select vorname from person join mitarbeiter on (person_fk=person_pk) where mitarbeiter_pk=lehreinheit.bivar1) as koordinator_vorname, + (Select familienname from person join mitarbeiter on (person_fk=person_pk) where mitarbeiter_pk=lehreinheit.bivar1) as koordinator_nachname, + lehreinheit.creationdate as creationdate, + lehreinheit.creationuser as creationuser + FROM lehreinheit, studiengang, studiensemester, fachbereich, ausbildungssemester, lehrform + WHERE lehreinheit.studiengang_fk=studiengang.studiengang_pk + AND lehreinheit.studiensemester_fk=studiensemester.studiensemester_pk + AND lehreinheit.fachbereich_fk = fachbereich.fachbereich_pk + AND ausbildungssemester.ausbildungssemester_pk=lehreinheit.ausbildungssemester_fk + AND lehreinheit.lehrform_fk = lehrform.lehrform_pk"; + + if($stg!=null) + $qry .= " AND studiengang.studiengang_pk = '$stg'"; + if($sem!=null) + $qry .= " AND ausbildungssemester.semester= '$sem'"; + if($stsem!=null) + $qry .= " AND studiensemester.studiensemester_pk= '$stsem'"; + if($lehreinheit_id!=null) + $qry .= " AND lehreinheit_pk = '$lehreinheit_id'"; + $qry .= " Order by lehreinheit_fk"; + if($res=pg_query($this->conn, $qry)) + { + while($row=pg_fetch_object($res)) + { + $lehreinheit_obj = new lehreinheit($this->conn); + + $lehreinheit_obj->lehreinheit_id = $row->lehreinheit_id; + $lehreinheit_obj->studiengang_id = $row->studiengang_id; + $lehreinheit_obj->studiengang_kurzbz = $row->studiengang_kurzbz; + $lehreinheit_obj->studiensemester_id = $row->studiensemester_id; + $lehreinheit_obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $lehreinheit_obj->lehrveranstaltung_id = $row->lehrveranstaltung_id; + $lehreinheit_obj->fachbereich_id = $row->fachbereich_id; + $lehreinheit_obj->fachbereich_bezeichnung = $row->fachbereich_bezeichnung; + $lehreinheit_obj->ausbildungssemester_id = $row->ausbildungssemester_id; + $lehreinheit_obj->ausbildungssemester_semester = $row->ausbildungssemester_semester; + $lehreinheit_obj->ausbildungssemester_kurzbz = $row->ausbildungssemester_kurzbz; + $lehreinheit_obj->lehreinheit_fk = $row->lehreinheit_fk; + $lehreinheit_obj->lehrform_id = $row->lehrform_id; + $lehreinheit_obj->lehrform_kurzbz = $row->lehrform_kurzbz; + $lehreinheit_obj->gruppe_id = $row->gruppe_id; + $lehreinheit_obj->gruppe_kurzbz = $row->gruppe_kurzbz; + $lehreinheit_obj->nummer = $row->nummer; + $lehreinheit_obj->bezeichnung = $row->bezeichnung; + $lehreinheit_obj->kurzbezeichnung = $row->kurzbezeichnung; + $lehreinheit_obj->semesterwochenstunden = $row->semesterwochenstunden; + $lehreinheit_obj->gesamtstunden = $row->gesamtstunden; + $lehreinheit_obj->plankostenprolektor = $row->plankostenprolektor; + $lehreinheit_obj->planfaktor = $row->planfaktor; + $lehreinheit_obj->planlektoren = $row->planlektoren; + $lehreinheit_obj->raumtyp_id = $row->raumtyp_id; + $lehreinheit_obj->raumtypalternativ_id = $row->raumtypalternativ_id; + $lehreinheit_obj->bemerkungen = $row->bemerkungen; + $lehreinheit_obj->wochenrythmus = $row->wochenrythmus; + $lehreinheit_obj->start_kw = $row->kalenderwoche; + $lehreinheit_obj->stundenblockung = $row->stundenblockung; + $lehreinheit_obj->koordinator_id = $row->koordinator_id; + $lehreinheit_obj->koordinator_vorname = $row->koordinator_vorname; + $lehreinheit_obj->koordinator_nachname = $row->koordinator_nachname; + $lehreinheit_obj->updateamum = $row->creationdate; + $lehreinheit_obj->updatevon = $row->creationuser; + + $this->result[] = $lehreinheit_obj; + $lehreinheit_id = $row->lehreinheit_id; + //Laden der Datensaetze die partizipiert sind aber in einem anderen Studiengang/Gruppe sind + if($include_partizipierungen) + { + if($row->lehreinheit_fk!='' && $row->lehreinheit_fk!='-1') + { + $qry = "SELECT lehreinheit.lehreinheit_pk as lehreinheit_id, + studiengang.studiengang_pk as studiengang_id, + (CASE WHEN studiengang.studiengangsart=1 THEN 'B' + WHEN studiengang.studiengangsart=2 THEN 'M' + WHEN studiengang.studiengangsart=3 THEN 'D' END) || studiengang.kuerzel as studiengang_kurzbz, + studiensemester.studiensemester_pk as studiensemester_id, + (CASE WHEN studiensemester.art=1 THEN 'WS' + WHEN studiensemester.art=2 THEN 'SS' END) || studiensemester.jahr as studiensemester_kurzbz, + lehreinheit.lehrveranstaltung_fk as lehrveranstaltung_id, + lehreinheit.fachbereich_fk as fachbereich_id, + fachbereich.name as fachbereich_bezeichnung, + lehreinheit.ausbildungssemester_fk as ausbildungssemester_id, + ausbildungssemester.semester as ausbildungssemester_semester, + ausbildungssemester.name as ausbildungssemester_kurzbz, + lehreinheit.lehreinheit_fk as lehreinheit_fk, + lehreinheit.lehrform_fk as lehrform_id, + lehrform.kurzbezeichnung as lehrform_kurzbz, + lehreinheit.gruppe_fk as gruppe_id, + fas_function_get_fullname_from_gruppe(lehreinheit.gruppe_fk) as gruppe_kurzbz, + lehreinheit.nummer as nummer, + lehreinheit.bezeichnung as bezeichnung, + lehreinheit.kurzbezeichnung as kurzbezeichnung, + lehreinheit.semesterwochenstunden as semesterwochenstunden, + lehreinheit.gesamtstunden as gesamtstunden, + lehreinheit.plankostenprolektor as plankostenprolektor, + lehreinheit.planfaktor as planfaktor, + lehreinheit.planlektoren as planlektoren, + lehreinheit.raumtyp_fk as raumtyp_id, + lehreinheit.alternativraumtyp_fk as raumtypalternativ_id, + lehreinheit.bemerkungen as bemerkungen, + lehreinheit.ivar1 as wochenrythmus, + lehreinheit.ivar2 as kalenderwoche, + lehreinheit.ivar3 as stundenblockung, + lehreinheit.bivar1 as koordinator_id, + (Select vorname from person join mitarbeiter on (person_fk=person_pk) where mitarbeiter_pk=lehreinheit.bivar1) as koordinator_vorname, + (Select familienname from person join mitarbeiter on (person_fk=person_pk) where mitarbeiter_pk=lehreinheit.bivar1) as koordinator_nachname, + lehreinheit.creationdate as creationdate, + lehreinheit.creationuser as creationuser + FROM lehreinheit, studiengang, studiensemester, fachbereich, ausbildungssemester, lehrform + WHERE lehreinheit.studiengang_fk=studiengang.studiengang_pk + AND lehreinheit.studiensemester_fk=studiensemester.studiensemester_pk + AND lehreinheit.fachbereich_fk = fachbereich.fachbereich_pk + AND ausbildungssemester.ausbildungssemester_pk=lehreinheit.ausbildungssemester_fk + AND lehreinheit.lehrform_fk = lehrform.lehrform_pk + AND lehreinheit_pk='$row->lehreinheit_fk'"; + + if($result=pg_query($this->conn,$qry)) + { + if($row=pg_fetch_object($result)) + { + if($row->studiengang_id!=$stg) + { + $lehreinheit_obj = new lehreinheit($this->conn); + + $lehreinheit_obj->lehreinheit_id = $row->lehreinheit_id; + $lehreinheit_obj->studiengang_id = $row->studiengang_id; + $lehreinheit_obj->studiengang_kurzbz = $row->studiengang_kurzbz; + $lehreinheit_obj->studiensemester_id = $row->studiensemester_id; + $lehreinheit_obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $lehreinheit_obj->lehrveranstaltung_id = $row->lehrveranstaltung_id; + $lehreinheit_obj->fachbereich_id = $row->fachbereich_id; + $lehreinheit_obj->fachbereich_bezeichnung = $row->fachbereich_bezeichnung; + $lehreinheit_obj->ausbildungssemester_id = $row->ausbildungssemester_id; + $lehreinheit_obj->ausbildungssemester_semester = $row->ausbildungssemester_semester; + $lehreinheit_obj->ausbildungssemester_kurzbz = $row->ausbildungssemester_kurzbz; + $lehreinheit_obj->lehreinheit_fk = $row->lehreinheit_fk; + $lehreinheit_obj->lehrform_id = $row->lehrform_id; + $lehreinheit_obj->lehrform_kurzbz = $row->lehrform_kurzbz; + $lehreinheit_obj->gruppe_id = $row->gruppe_id; + $lehreinheit_obj->gruppe_kurzbz = $row->gruppe_kurzbz; + $lehreinheit_obj->nummer = $row->nummer; + $lehreinheit_obj->bezeichnung = $row->bezeichnung; + $lehreinheit_obj->kurzbezeichnung = $row->kurzbezeichnung; + $lehreinheit_obj->semesterwochenstunden = $row->semesterwochenstunden; + $lehreinheit_obj->gesamtstunden = $row->gesamtstunden; + $lehreinheit_obj->plankostenprolektor = $row->plankostenprolektor; + $lehreinheit_obj->planfaktor = $row->planfaktor; + $lehreinheit_obj->planlektoren = $row->planlektoren; + $lehreinheit_obj->raumtyp_id = $row->raumtyp_id; + $lehreinheit_obj->raumtypalternativ_id = $row->raumtypalternativ_id; + $lehreinheit_obj->bemerkungen = $row->bemerkungen; + $lehreinheit_obj->wochenrythmus = $row->wochenrythmus; + $lehreinheit_obj->start_kw = $row->kalenderwoche; + $lehreinheit_obj->stundenblockung = $row->stundenblockung; + $lehreinheit_obj->koordinator_id = $row->koordinator_id; + $lehreinheit_obj->koordinator_vorname = $row->koordinator_vorname; + $lehreinheit_obj->koordinator_nachname = $row->koordinator_nachname; + $lehreinheit_obj->updateamum = $row->creationdate; + $lehreinheit_obj->updatevon = $row->creationuser; + + $this->result[] = $lehreinheit_obj; + } + } + } + else + { + $this->errormsg = 'Fehler beim laden der Partizipierungen aus anderen Studiengaengen'; + return false; + } + } + + //Laden der uebergeordneten + + $qry = "SELECT lehreinheit.lehreinheit_pk as lehreinheit_id, + studiengang.studiengang_pk as studiengang_id, + (CASE WHEN studiengang.studiengangsart=1 THEN 'B' + WHEN studiengang.studiengangsart=2 THEN 'M' + WHEN studiengang.studiengangsart=3 THEN 'D' END) || studiengang.kuerzel as studiengang_kurzbz, + studiensemester.studiensemester_pk as studiensemester_id, + (CASE WHEN studiensemester.art=1 THEN 'WS' + WHEN studiensemester.art=2 THEN 'SS' END) || studiensemester.jahr as studiensemester_kurzbz, + lehreinheit.lehrveranstaltung_fk as lehrveranstaltung_id, + lehreinheit.fachbereich_fk as fachbereich_id, + fachbereich.name as fachbereich_bezeichnung, + lehreinheit.ausbildungssemester_fk as ausbildungssemester_id, + ausbildungssemester.semester as ausbildungssemester_semester, + ausbildungssemester.name as ausbildungssemester_kurzbz, + lehreinheit.lehreinheit_fk as lehreinheit_fk, + lehreinheit.lehrform_fk as lehrform_id, + lehrform.kurzbezeichnung as lehrform_kurzbz, + lehreinheit.gruppe_fk as gruppe_id, + fas_function_get_fullname_from_gruppe(lehreinheit.gruppe_fk) as gruppe_kurzbz, + lehreinheit.nummer as nummer, + lehreinheit.bezeichnung as bezeichnung, + lehreinheit.kurzbezeichnung as kurzbezeichnung, + lehreinheit.semesterwochenstunden as semesterwochenstunden, + lehreinheit.gesamtstunden as gesamtstunden, + lehreinheit.plankostenprolektor as plankostenprolektor, + lehreinheit.planfaktor as planfaktor, + lehreinheit.planlektoren as planlektoren, + lehreinheit.raumtyp_fk as raumtyp_id, + lehreinheit.alternativraumtyp_fk as raumtypalternativ_id, + lehreinheit.bemerkungen as bemerkungen, + lehreinheit.ivar1 as wochenrythmus, + lehreinheit.ivar2 as kalenderwoche, + lehreinheit.ivar3 as stundenblockung, + lehreinheit.bivar1 as koordinator_id, + (Select vorname from person join mitarbeiter on (person_fk=person_pk) where mitarbeiter_pk=lehreinheit.bivar1) as koordinator_vorname, + (Select familienname from person join mitarbeiter on (person_fk=person_pk) where mitarbeiter_pk=lehreinheit.bivar1) as koordinator_nachname, + lehreinheit.creationdate as creationdate, + lehreinheit.creationuser as creationuser + FROM lehreinheit, studiengang, studiensemester, fachbereich, ausbildungssemester, lehrform + WHERE lehreinheit.studiengang_fk=studiengang.studiengang_pk + AND lehreinheit.studiensemester_fk=studiensemester.studiensemester_pk + AND lehreinheit.fachbereich_fk = fachbereich.fachbereich_pk + AND ausbildungssemester.ausbildungssemester_pk=lehreinheit.ausbildungssemester_fk + AND lehreinheit.lehrform_fk = lehrform.lehrform_pk + AND lehreinheit_fk='$lehreinheit_id'"; + + if($result=pg_query($this->conn,$qry)) + { + while($row=pg_fetch_object($result)) + { + if($row->studiengang_id!=$stg) + { + $lehreinheit_obj = new lehreinheit($this->conn); + + $lehreinheit_obj->lehreinheit_id = $row->lehreinheit_id; + $lehreinheit_obj->studiengang_id = $row->studiengang_id; + $lehreinheit_obj->studiengang_kurzbz = $row->studiengang_kurzbz; + $lehreinheit_obj->studiensemester_id = $row->studiensemester_id; + $lehreinheit_obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $lehreinheit_obj->lehrveranstaltung_id = $row->lehrveranstaltung_id; + $lehreinheit_obj->fachbereich_id = $row->fachbereich_id; + $lehreinheit_obj->fachbereich_bezeichnung = $row->fachbereich_bezeichnung; + $lehreinheit_obj->ausbildungssemester_id = $row->ausbildungssemester_id; + $lehreinheit_obj->ausbildungssemester_semester = $row->ausbildungssemester_semester; + $lehreinheit_obj->ausbildungssemester_kurzbz = $row->ausbildungssemester_kurzbz; + $lehreinheit_obj->lehreinheit_fk = $row->lehreinheit_fk; + $lehreinheit_obj->lehrform_id = $row->lehrform_id; + $lehreinheit_obj->lehrform_kurzbz = $row->lehrform_kurzbz; + $lehreinheit_obj->gruppe_id = $row->gruppe_id; + $lehreinheit_obj->gruppe_kurzbz = $row->gruppe_kurzbz; + $lehreinheit_obj->nummer = $row->nummer; + $lehreinheit_obj->bezeichnung = $row->bezeichnung; + $lehreinheit_obj->kurzbezeichnung = $row->kurzbezeichnung; + $lehreinheit_obj->semesterwochenstunden = $row->semesterwochenstunden; + $lehreinheit_obj->gesamtstunden = $row->gesamtstunden; + $lehreinheit_obj->plankostenprolektor = $row->plankostenprolektor; + $lehreinheit_obj->planfaktor = $row->planfaktor; + $lehreinheit_obj->planlektoren = $row->planlektoren; + $lehreinheit_obj->raumtyp_id = $row->raumtyp_id; + $lehreinheit_obj->raumtypalternativ_id = $row->raumtypalternativ_id; + $lehreinheit_obj->bemerkungen = $row->bemerkungen; + $lehreinheit_obj->wochenrythmus = $row->wochenrythmus; + $lehreinheit_obj->start_kw = $row->kalenderwoche; + $lehreinheit_obj->stundenblockung = $row->stundenblockung; + $lehreinheit_obj->koordinator_id = $row->koordinator_id; + $lehreinheit_obj->koordinator_vorname = $row->koordinator_vorname; + $lehreinheit_obj->koordinator_nachname = $row->koordinator_nachname; + $lehreinheit_obj->updateamum = $row->creationdate; + $lehreinheit_obj->updatevon = $row->creationuser; + + $this->result[] = $lehreinheit_obj; + } + } + } + else + { + $this->errormsg = 'Fehler beim laden der Partizipierungen aus anderen Studiengaengen'; + return false; + } + + } + } + } + else + { + $this->errormsg = "Fehler bei einer SQL Abfrage"; + return false; + } + return true; + } + + /** + * Liefert die Lehreinheiten mit den dazugehoerigen Attributen + * @param stg Studiengang + * sem Semester + * stsem Studiensemester + */ + function getLehreinheitenfromGruppe($gruppe_id, $stsem) + { + + $qry = "SELECT lehreinheit.lehreinheit_pk as lehreinheit_id, + studiengang.studiengang_pk as studiengang_id, + (CASE WHEN studiengang.studiengangsart=1 THEN 'B' + WHEN studiengang.studiengangsart=2 THEN 'M' + WHEN studiengang.studiengangsart=3 THEN 'D' END) || studiengang.kuerzel as studiengang_kurzbz, + studiensemester.studiensemester_pk as studiensemester_id, + (CASE WHEN studiensemester.art=1 THEN 'WS' + WHEN studiensemester.art=2 THEN 'SS' END) || studiensemester.jahr as studiensemester_kurzbz, + lehreinheit.lehrveranstaltung_fk as lehrveranstaltung_id, + lehreinheit.fachbereich_fk as fachbereich_id, + fachbereich.name as fachbereich_bezeichnung, + lehreinheit.ausbildungssemester_fk as ausbildungssemester_id, + ausbildungssemester.semester as ausbildungssemester_semester, + ausbildungssemester.name as ausbildungssemester_kurzbz, + lehreinheit.lehreinheit_fk as lehreinheit_fk, + lehreinheit.lehrform_fk as lehrform_id, + lehrform.kurzbezeichnung as lehrform_kurzbz, + lehreinheit.gruppe_fk as gruppe_id, + fas_function_get_fullname_from_gruppe(lehreinheit.gruppe_fk) as gruppe_kurzbz, + lehreinheit.nummer as nummer, + lehreinheit.bezeichnung as bezeichnung, + lehreinheit.kurzbezeichnung as kurzbezeichnung, + lehreinheit.semesterwochenstunden as semesterwochenstunden, + lehreinheit.gesamtstunden as gesamtstunden, + lehreinheit.plankostenprolektor as plankostenprolektor, + lehreinheit.planfaktor as planfaktor, + lehreinheit.planlektoren as planlektoren, + lehreinheit.raumtyp_fk as raumtyp_id, + lehreinheit.alternativraumtyp_fk as raumtypalternativ_id, + lehreinheit.bemerkungen as bemerkungen, + lehreinheit.ivar1 as wochenrythmus, + lehreinheit.ivar2 as kalenderwoche, + lehreinheit.ivar3 as stundenblockung, + lehreinheit.bivar1 as koordinator_id, + (Select vorname from person join mitarbeiter on (person_fk=person_pk) where mitarbeiter_pk=lehreinheit.bivar1) as koordinator_vorname, + (Select familienname from person join mitarbeiter on (person_fk=person_pk) where mitarbeiter_pk=lehreinheit.bivar1) as koordinator_nachname, + lehreinheit.creationdate as creationdate, + lehreinheit.creationuser as creationuser + FROM lehreinheit, studiengang, studiensemester, fachbereich, ausbildungssemester, lehrform + WHERE lehreinheit.studiengang_fk=studiengang.studiengang_pk + AND lehreinheit.studiensemester_fk=studiensemester.studiensemester_pk + AND lehreinheit.fachbereich_fk = fachbereich.fachbereich_pk + AND ausbildungssemester.ausbildungssemester_pk=lehreinheit.ausbildungssemester_fk + AND lehreinheit.lehrform_fk = lehrform.lehrform_pk + AND gruppe_fk in (Select gruppe_pk from gruppe where gruppe_pk=$gruppe_id union Select gruppe_pk from gruppe where gruppe_pk in (Select gruppe_pk from gruppe where obergruppe_fk=$gruppe_id) union Select gruppe_pk from gruppe where obergruppe_fk in (Select gruppe_pk from gruppe where obergruppe_fk in (Select gruppe_pk from gruppe where gruppe_pk=$gruppe_id))) + "; + $qry .= " AND studiensemester.studiensemester_pk= '$stsem'"; + + $qry .= " Order by lehreinheit_fk"; + if($res=pg_query($this->conn, $qry)) + { + while($row=pg_fetch_object($res)) + { + $lehreinheit_obj = new lehreinheit($this->conn); + + $lehreinheit_obj->lehreinheit_id = $row->lehreinheit_id; + $lehreinheit_obj->studiengang_id = $row->studiengang_id; + $lehreinheit_obj->studiengang_kurzbz = $row->studiengang_kurzbz; + $lehreinheit_obj->studiensemester_id = $row->studiensemester_id; + $lehreinheit_obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $lehreinheit_obj->lehrveranstaltung_id = $row->lehrveranstaltung_id; + $lehreinheit_obj->fachbereich_id = $row->fachbereich_id; + $lehreinheit_obj->fachbereich_bezeichnung = $row->fachbereich_bezeichnung; + $lehreinheit_obj->ausbildungssemester_id = $row->ausbildungssemester_id; + $lehreinheit_obj->ausbildungssemester_semester = $row->ausbildungssemester_semester; + $lehreinheit_obj->ausbildungssemester_kurzbz = $row->ausbildungssemester_kurzbz; + $lehreinheit_obj->lehreinheit_fk = $row->lehreinheit_fk; + $lehreinheit_obj->lehrform_id = $row->lehrform_id; + $lehreinheit_obj->lehrform_kurzbz = $row->lehrform_kurzbz; + $lehreinheit_obj->gruppe_id = $row->gruppe_id; + $lehreinheit_obj->gruppe_kurzbz = $row->gruppe_kurzbz; + $lehreinheit_obj->nummer = $row->nummer; + $lehreinheit_obj->bezeichnung = $row->bezeichnung; + $lehreinheit_obj->kurzbezeichnung = $row->kurzbezeichnung; + $lehreinheit_obj->semesterwochenstunden = $row->semesterwochenstunden; + $lehreinheit_obj->gesamtstunden = $row->gesamtstunden; + $lehreinheit_obj->plankostenprolektor = $row->plankostenprolektor; + $lehreinheit_obj->planfaktor = $row->planfaktor; + $lehreinheit_obj->planlektoren = $row->planlektoren; + $lehreinheit_obj->raumtyp_id = $row->raumtyp_id; + $lehreinheit_obj->raumtypalternativ_id = $row->raumtypalternativ_id; + $lehreinheit_obj->bemerkungen = $row->bemerkungen; + $lehreinheit_obj->wochenrythmus = $row->wochenrythmus; + $lehreinheit_obj->start_kw = $row->kalenderwoche; + $lehreinheit_obj->stundenblockung = $row->stundenblockung; + $lehreinheit_obj->koordinator_id = $row->koordinator_id; + $lehreinheit_obj->koordinator_vorname = $row->koordinator_vorname; + $lehreinheit_obj->koordinator_nachname = $row->koordinator_nachname; + $lehreinheit_obj->updateamum = $row->creationdate; + $lehreinheit_obj->updatevon = $row->creationuser; + + $this->result[] = $lehreinheit_obj; + + $lehreinheit_id = $row->lehreinheit_id; + //Wenn eine Obergruppe existiert und diese nicht in der selben Gruppe ist + //dann wird diese auch geladen + + if($row->lehreinheit_fk!='' && $row->lehreinheit_fk!='-1' ) + { + + $qry = "SELECT lehreinheit.lehreinheit_pk as lehreinheit_id, + studiengang.studiengang_pk as studiengang_id, + (CASE WHEN studiengang.studiengangsart=1 THEN 'B' + WHEN studiengang.studiengangsart=2 THEN 'M' + WHEN studiengang.studiengangsart=3 THEN 'D' END) || studiengang.kuerzel as studiengang_kurzbz, + studiensemester.studiensemester_pk as studiensemester_id, + (CASE WHEN studiensemester.art=1 THEN 'WS' + WHEN studiensemester.art=2 THEN 'SS' END) || studiensemester.jahr as studiensemester_kurzbz, + lehreinheit.lehrveranstaltung_fk as lehrveranstaltung_id, + lehreinheit.fachbereich_fk as fachbereich_id, + fachbereich.name as fachbereich_bezeichnung, + lehreinheit.ausbildungssemester_fk as ausbildungssemester_id, + ausbildungssemester.semester as ausbildungssemester_semester, + ausbildungssemester.name as ausbildungssemester_kurzbz, + lehreinheit.lehreinheit_fk as lehreinheit_fk, + lehreinheit.lehrform_fk as lehrform_id, + lehrform.kurzbezeichnung as lehrform_kurzbz, + lehreinheit.gruppe_fk as gruppe_id, + fas_function_get_fullname_from_gruppe(lehreinheit.gruppe_fk) as gruppe_kurzbz, + lehreinheit.nummer as nummer, + lehreinheit.bezeichnung as bezeichnung, + lehreinheit.kurzbezeichnung as kurzbezeichnung, + lehreinheit.semesterwochenstunden as semesterwochenstunden, + lehreinheit.gesamtstunden as gesamtstunden, + lehreinheit.plankostenprolektor as plankostenprolektor, + lehreinheit.planfaktor as planfaktor, + lehreinheit.planlektoren as planlektoren, + lehreinheit.raumtyp_fk as raumtyp_id, + lehreinheit.alternativraumtyp_fk as raumtypalternativ_id, + lehreinheit.bemerkungen as bemerkungen, + lehreinheit.ivar1 as wochenrythmus, + lehreinheit.ivar2 as kalenderwoche, + lehreinheit.ivar3 as stundenblockung, + lehreinheit.bivar1 as koordinator_id, + (Select vorname from person join mitarbeiter on (person_fk=person_pk) where mitarbeiter_pk=lehreinheit.bivar1) as koordinator_vorname, + (Select familienname from person join mitarbeiter on (person_fk=person_pk) where mitarbeiter_pk=lehreinheit.bivar1) as koordinator_nachname, + lehreinheit.creationdate as creationdate, + lehreinheit.creationuser as creationuser + FROM lehreinheit, studiengang, studiensemester, fachbereich, ausbildungssemester, lehrform + WHERE lehreinheit.studiengang_fk=studiengang.studiengang_pk + AND lehreinheit.studiensemester_fk=studiensemester.studiensemester_pk + AND lehreinheit.fachbereich_fk = fachbereich.fachbereich_pk + AND ausbildungssemester.ausbildungssemester_pk=lehreinheit.ausbildungssemester_fk + AND lehreinheit.lehrform_fk = lehrform.lehrform_pk + AND studiensemester.studiensemester_pk= '$stsem' + AND lehreinheit_pk='$row->lehreinheit_fk'"; + + if($result=pg_query($this->conn,$qry)) + { + if($row=pg_fetch_object($result)) + { + + if($row->gruppe_id!=$gruppe_id) + { + + $lehreinheit_obj = new lehreinheit($this->conn); + + $lehreinheit_obj->lehreinheit_id = $row->lehreinheit_id; + $lehreinheit_obj->studiengang_id = $row->studiengang_id; + $lehreinheit_obj->studiengang_kurzbz = $row->studiengang_kurzbz; + $lehreinheit_obj->studiensemester_id = $row->studiensemester_id; + $lehreinheit_obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $lehreinheit_obj->lehrveranstaltung_id = $row->lehrveranstaltung_id; + $lehreinheit_obj->fachbereich_id = $row->fachbereich_id; + $lehreinheit_obj->fachbereich_bezeichnung = $row->fachbereich_bezeichnung; + $lehreinheit_obj->ausbildungssemester_id = $row->ausbildungssemester_id; + $lehreinheit_obj->ausbildungssemester_semester = $row->ausbildungssemester_semester; + $lehreinheit_obj->ausbildungssemester_kurzbz = $row->ausbildungssemester_kurzbz; + $lehreinheit_obj->lehreinheit_fk = $row->lehreinheit_fk; + $lehreinheit_obj->lehrform_id = $row->lehrform_id; + $lehreinheit_obj->lehrform_kurzbz = $row->lehrform_kurzbz; + $lehreinheit_obj->gruppe_id = $row->gruppe_id; + $lehreinheit_obj->gruppe_kurzbz = $row->gruppe_kurzbz; + $lehreinheit_obj->nummer = $row->nummer; + $lehreinheit_obj->bezeichnung = $row->bezeichnung; + $lehreinheit_obj->kurzbezeichnung = $row->kurzbezeichnung; + $lehreinheit_obj->semesterwochenstunden = $row->semesterwochenstunden; + $lehreinheit_obj->gesamtstunden = $row->gesamtstunden; + $lehreinheit_obj->plankostenprolektor = $row->plankostenprolektor; + $lehreinheit_obj->planfaktor = $row->planfaktor; + $lehreinheit_obj->planlektoren = $row->planlektoren; + $lehreinheit_obj->raumtyp_id = $row->raumtyp_id; + $lehreinheit_obj->raumtypalternativ_id = $row->raumtypalternativ_id; + $lehreinheit_obj->bemerkungen = $row->bemerkungen; + $lehreinheit_obj->wochenrythmus = $row->wochenrythmus; + $lehreinheit_obj->start_kw = $row->kalenderwoche; + $lehreinheit_obj->stundenblockung = $row->stundenblockung; + $lehreinheit_obj->koordinator_id = $row->koordinator_id; + $lehreinheit_obj->koordinator_vorname = $row->koordinator_vorname; + $lehreinheit_obj->koordinator_nachname = $row->koordinator_nachname; + $lehreinheit_obj->updateamum = $row->creationdate; + $lehreinheit_obj->updatevon = $row->creationuser; + + $this->result[] = $lehreinheit_obj; + } + } + else + { + $this->errormsg = 'Fehler beim laden der partizipierenden Lehreinheiten'.$qry; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim laden der partizipierenden Lehreinheiten'; + return false; + } + } + + //Laden der Datensaetze die partizipiert sind aber in einem anderen Studiengang/Gruppe sind + $qry = "SELECT lehreinheit.lehreinheit_pk as lehreinheit_id, + studiengang.studiengang_pk as studiengang_id, + (CASE WHEN studiengang.studiengangsart=1 THEN 'B' + WHEN studiengang.studiengangsart=2 THEN 'M' + WHEN studiengang.studiengangsart=3 THEN 'D' END) || studiengang.kuerzel as studiengang_kurzbz, + studiensemester.studiensemester_pk as studiensemester_id, + (CASE WHEN studiensemester.art=1 THEN 'WS' + WHEN studiensemester.art=2 THEN 'SS' END) || studiensemester.jahr as studiensemester_kurzbz, + lehreinheit.lehrveranstaltung_fk as lehrveranstaltung_id, + lehreinheit.fachbereich_fk as fachbereich_id, + fachbereich.name as fachbereich_bezeichnung, + lehreinheit.ausbildungssemester_fk as ausbildungssemester_id, + ausbildungssemester.semester as ausbildungssemester_semester, + ausbildungssemester.name as ausbildungssemester_kurzbz, + lehreinheit.lehreinheit_fk as lehreinheit_fk, + lehreinheit.lehrform_fk as lehrform_id, + lehrform.kurzbezeichnung as lehrform_kurzbz, + lehreinheit.gruppe_fk as gruppe_id, + fas_function_get_fullname_from_gruppe(lehreinheit.gruppe_fk) as gruppe_kurzbz, + lehreinheit.nummer as nummer, + lehreinheit.bezeichnung as bezeichnung, + lehreinheit.kurzbezeichnung as kurzbezeichnung, + lehreinheit.semesterwochenstunden as semesterwochenstunden, + lehreinheit.gesamtstunden as gesamtstunden, + lehreinheit.plankostenprolektor as plankostenprolektor, + lehreinheit.planfaktor as planfaktor, + lehreinheit.planlektoren as planlektoren, + lehreinheit.raumtyp_fk as raumtyp_id, + lehreinheit.alternativraumtyp_fk as raumtypalternativ_id, + lehreinheit.bemerkungen as bemerkungen, + lehreinheit.ivar1 as wochenrythmus, + lehreinheit.ivar2 as kalenderwoche, + lehreinheit.ivar3 as stundenblockung, + lehreinheit.bivar1 as koordinator_id, + (Select vorname from person join mitarbeiter on (person_fk=person_pk) where mitarbeiter_pk=lehreinheit.bivar1) as koordinator_vorname, + (Select familienname from person join mitarbeiter on (person_fk=person_pk) where mitarbeiter_pk=lehreinheit.bivar1) as koordinator_nachname, + lehreinheit.creationdate as creationdate, + lehreinheit.creationuser as creationuser + FROM lehreinheit, studiengang, studiensemester, fachbereich, ausbildungssemester, lehrform + WHERE lehreinheit.studiengang_fk=studiengang.studiengang_pk + AND lehreinheit.studiensemester_fk=studiensemester.studiensemester_pk + AND lehreinheit.fachbereich_fk = fachbereich.fachbereich_pk + AND ausbildungssemester.ausbildungssemester_pk=lehreinheit.ausbildungssemester_fk + AND lehreinheit.lehrform_fk = lehrform.lehrform_pk + AND studiensemester.studiensemester_pk= '$stsem' + AND lehreinheit_fk='$lehreinheit_id'"; + + if($result=pg_query($this->conn,$qry)) + { + while($row=pg_fetch_object($result)) + { + + if($row->gruppe_id!=$gruppe_id) + { + + $lehreinheit_obj = new lehreinheit($this->conn); + + $lehreinheit_obj->lehreinheit_id = $row->lehreinheit_id; + $lehreinheit_obj->studiengang_id = $row->studiengang_id; + $lehreinheit_obj->studiengang_kurzbz = $row->studiengang_kurzbz; + $lehreinheit_obj->studiensemester_id = $row->studiensemester_id; + $lehreinheit_obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $lehreinheit_obj->lehrveranstaltung_id = $row->lehrveranstaltung_id; + $lehreinheit_obj->fachbereich_id = $row->fachbereich_id; + $lehreinheit_obj->fachbereich_bezeichnung = $row->fachbereich_bezeichnung; + $lehreinheit_obj->ausbildungssemester_id = $row->ausbildungssemester_id; + $lehreinheit_obj->ausbildungssemester_semester = $row->ausbildungssemester_semester; + $lehreinheit_obj->ausbildungssemester_kurzbz = $row->ausbildungssemester_kurzbz; + $lehreinheit_obj->lehreinheit_fk = $row->lehreinheit_fk; + $lehreinheit_obj->lehrform_id = $row->lehrform_id; + $lehreinheit_obj->lehrform_kurzbz = $row->lehrform_kurzbz; + $lehreinheit_obj->gruppe_id = $row->gruppe_id; + $lehreinheit_obj->gruppe_kurzbz = $row->gruppe_kurzbz; + $lehreinheit_obj->nummer = $row->nummer; + $lehreinheit_obj->bezeichnung = $row->bezeichnung; + $lehreinheit_obj->kurzbezeichnung = $row->kurzbezeichnung; + $lehreinheit_obj->semesterwochenstunden = $row->semesterwochenstunden; + $lehreinheit_obj->gesamtstunden = $row->gesamtstunden; + $lehreinheit_obj->plankostenprolektor = $row->plankostenprolektor; + $lehreinheit_obj->planfaktor = $row->planfaktor; + $lehreinheit_obj->planlektoren = $row->planlektoren; + $lehreinheit_obj->raumtyp_id = $row->raumtyp_id; + $lehreinheit_obj->raumtypalternativ_id = $row->raumtypalternativ_id; + $lehreinheit_obj->bemerkungen = $row->bemerkungen; + $lehreinheit_obj->wochenrythmus = $row->wochenrythmus; + $lehreinheit_obj->start_kw = $row->kalenderwoche; + $lehreinheit_obj->stundenblockung = $row->stundenblockung; + $lehreinheit_obj->koordinator_id = $row->koordinator_id; + $lehreinheit_obj->koordinator_vorname = $row->koordinator_vorname; + $lehreinheit_obj->koordinator_nachname = $row->koordinator_nachname; + $lehreinheit_obj->updateamum = $row->creationdate; + $lehreinheit_obj->updatevon = $row->creationuser; + + $this->result[] = $lehreinheit_obj; + } + } + } + else + { + $this->errormsg = "Fehler beim Auslesen der partizipierenden Lehreinheiten"; + return false; + } + } + + } + else + { + $this->errormsg = "Fehler bei einer SQL Abfrage"; + return false; + } + //$this->errormsg = $qry; + // return false; + return true; + } + + /** + * Setzt eine Partizipierung + * @param $quell_lehreinheit_id ... Lehreinheit welche an eine andere Lehreinheit angehaengt wird + * $ziel_lehreinheit_id .... Lehreinheit an welche die andere Lehreinheit angehaengt wird + * + * Wenn $ziel_lehreinheit_id = -1 dann wird die zuteilung entfernt + * Wenn Ziel Lehreinheit bereits eine Partizipierende ist, dann wird automatisch die uebergeordnete genommen + */ + function setPartizipierung($quell_lehreinheit_id, $ziel_lehreinheit_id) + { + //Parameter auf gueltigkeit pruefen + if(is_numeric($quell_lehreinheit_id) && is_numeric($ziel_lehreinheit_id)) + { + //Keine Aktion bei gleicher ID + if($quell_lehreinheit_id != $ziel_lehreinheit_id) + { + //Wenn Ziel = -1 dann die Partizipierung loeschen + if($ziel_lehreinheit_id!=-1) + { + //Wenn die Quell-Lehreinheit eine Partizipierende Lehreinheit hat dann kann Sie nicht an eine andere + //angehaengt werden + $qry = "SELECT count(*) as anz FROM lehreinheit WHERE lehreinheit_fk='$quell_lehreinheit_id'"; + if($result = pg_query($this->conn,$qry)) + { + if($row = pg_fetch_object($result)) + { + if($row->anz>0) + { + $this->errormsg = 'Operation nicht zulaessig'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Auslesen der Quell-Lehreinheit'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Auslesen der Quell-Lehreinheit'; + return false; + } + //Nummer der Ziel Lehreinheit ermitteln + $qry = "SELECT nummer, lehreinheit_fk FROM lehreinheit WHERE lehreinheit_pk='$ziel_lehreinheit_id'"; + if($result = pg_query($this->conn, $qry)) + { + if($row = pg_fetch_object($result)) + { + if($row->lehreinheit_fk==-1 || $row->lehreinheit_fk==null) + { + $nummer = $row->nummer; + } + else + { + //Wenn Ziel Lehreinheit selbst eine Partizipierende Lehreinheit ist, + //wird die uebergeordnete Lehreinheit genommen + $ziel_lehreinheit_id = $row->lehreinheit_fk; + + $qry = "SELECT nummer FROM lehreinheit WHERE lehreinheit_pk='$ziel_lehreinheit_id'"; + if($result = pg_query($this->conn, $qry)) + { + if($row = pg_fetch_object($result)) + $nummer = $row->nummer; + else + { + $this->errormsg = 'Fehler beim Auslesen der Nummer'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Auslesen der Nummer'; + return false; + } + } + //Zuteilung speichern + $qry = "UPDATE lehreinheit SET lehreinheit_fk='$ziel_lehreinheit_id', + bemerkungen=(bemerkungen || ' Partizipierende LVA bei $nummer') + WHERE lehreinheit_pk = '$quell_lehreinheit_id'"; + + if(pg_query($this->conn, $qry)) + return true; + else + { + $this->errormsg = 'Fehler beim speichern'; + return false; + } + + } + else + { + $this->errormsg = 'Ziel Lehreinheit konnte nicht ermittelt werden'; + return true; + } + } + else + { + $this->errormsg = 'Ziel Lehreinheit konnte nicht ermittelt werden'; + return false; + } + } + else + { + $qry = "SELECT b.nummer as nummer, a.bemerkungen as bemerkung FROM lehreinheit as a, lehreinheit as b where a.lehreinheit_fk=b.lehreinheit_pk AND a.lehreinheit_pk='$quell_lehreinheit_id'"; + if($result = pg_query($this->conn, $qry)) + { + if($row = pg_fetch_object($result)) + { + $bemerkung = $row->bemerkung; + $bemerkung = str_replace('Partizipierende LVA bei '.$row->nummer,'',$bemerkung); + + //Loeschen der Zuteilung + $qry = "UPDATE lehreinheit SET lehreinheit_fk='-1', bemerkungen = '$bemerkung' WHERE lehreinheit_pk='$quell_lehreinheit_id'"; + if(pg_query($this->conn, $qry)) + return true; + else + { + $this->errormsg = 'Fehler beim speichern'; + return false; + } + } + else + { + $this->errormsg = 'Nummer konnte nicht ermittelt werden'; + return false; + } + } + else + { + $this->errormsg = 'Nummer konnte nicht ermittelt werden'; + return false; + } + } + } + else + { + $this->errormsg = 'Quell und Ziel ID sind identisch'; + return false; + } + } + else + { + $this->errormsg = 'Quell und Ziel ID muessen gueltige Zahlen sein'; + return false; + } + } +} ?> \ No newline at end of file diff --git a/include/fas/lehrfach.class.php b/include/fas/lehrfach.class.php deleted file mode 100644 index bd7930e64..000000000 --- a/include/fas/lehrfach.class.php +++ /dev/null @@ -1,232 +0,0 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ - -class lehrfach -{ - var $conn; // resource DB-Handle - var $errormsg; // string - var $new; // boolean - var $lehrfaecher = array(); // lehrfach Objekt - - //Tabellenspalten - var $lehrfach_id; // integer - var $studiengang_kz; // integer - var $fachbereich_kurzbz;// integer - var $kurzbz; // varchar(12) - var $bezeichnung; // varchar(255) - var $farbe; // char(6) - var $aktiv; // boolean - var $semester; // smallint - var $sprache; // varchar(16) - - // *********************************************************************** - // * Konstruktor - Uebergibt die Connection und laedt optional ein LF - // * @param $conn Datenbank-Connection - // * $lehrfach_nr Lehrfach das geladen werden soll (default=null) - // * $unicode Gibt an ob die Daten mit UNICODE Codierung - // * oder LATIN9 Codierung verarbeitet werden sollen - // *********************************************************************** - function lehrfach($conn, $lehrfach_id=null, $unicode=false) - { - $this->conn = $conn; - - if($unicode) - $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; - else - $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; - - if(!pg_query($conn,$qry)) - { - $this->errormsg = 'Encoding konnte nicht gesetzt werden'; - return false; - } - - if($lehrfach_id != null) - $this->load($lehrfach_id); - } - - // ********************************************************* - // * Laedt Lehrfach mit der uebergebenen ID - // * @param $lehrfach_nr Nr des LF das geladen werden soll - // ********************************************************* - function load($lehrfach_id) - { - //lehrfach_nr auf Gueltigkeit pruefen - if(is_numeric($lehrfach_id) && $lehrfach_id!='') - { - $qry = "SELECT * FROM lehre.tbl_lehrfach WHERE lehrfach_id='$lehrfach_id'"; - - if(!$result=pg_query($this->conn,$qry)) - { - $this->errormsg = 'Fehler beim lesen des Lehrfaches'; - return false; - } - - if($row = pg_fetch_object($result)) - { - $this->lehrfach_id = $row->lehrfach_id; - $this->studiengang_kz = $row->studiengang_kz; - $this->fachbereich_kurzbz = $row->fachbereich_kurzbz; - $this->kurzbz = $row->kurzbz; - $this->bezeichnung = $row->bezeichnung; - $this->farbe = $row->farbe; - $this->aktiv = ($row->aktiv=='t'?true:false); - $this->semester = $row->semester; - $this->sprache = $row->sprache; - } - else - { - $this->errormsg = 'Es ist kein Lehrfach mit der ID '.$lehrfach_id.' vorhanden'; - return false; - } - - return true; - } - else - { - $this->errormsg = 'Die lehrfach_nr muss eine gueltige Zahl sein'; - return false; - } - } - - // ******************************************* - // * Prueft die Variablen vor dem Speichern - // * auf Gueltigkeit. - // * @return true wenn ok, false im Fehlerfall - // ******************************************* - function validate() - { - if(!is_numeric($this->studiengang_kz)) - { - $this->errormsg = 'Studiengang_kz muss eine gueltige Zahl sein'; - return false; - } - if(strlen($this->fachbereich_kurzbz)>16) - { - $this->errormsg = 'Fachbereich_kurzbz darf nicht laenger als 16 Zeichen sein'; - return false; - } - if(strlen($this->kurzbz)>12) - { - $this->errormsg = 'Kurzbezeichnung darf nicht laenger als 12 Zeichen sein'; - return false; - } - if(strlen($this->bezeichnung)>255) - { - $this->errormsg = 'Bezeichnung darf nicht laenger als 255 Zeichen sein'; - return false; - } - if(strlen($this->farbe)>6) - { - $this->errormsg = 'Farbe darf nicht laenger als 6 Zeichen sein'; - return false; - } - if(!is_bool($this->aktiv)) - { - $this->errormsg = 'Aktiv muss ein boolscher Wert sein'; - return false; - } - if($this->semester!='' && !is_numeric($this->semester)) - { - $this->errormsg = 'Semester muss eine Zahl sein'; - return false; - } - if(strlen($this->sprache)>16) - { - $this->errormsg = 'Sprache darf nicht laenger als 16 Zeichen sein'; - return false; - } - - return true; - } - - // ************************************************ - // * wenn $var '' ist wird "null" zurueckgegeben - // * wenn $var !='' ist werden Datenbankkritische - // * zeichen mit backslash versehen und das ergbnis - // * unter hochkomma gesetzt. - // ************************************************ - function addslashes($var) - { - return ($var!=''?"'".addslashes($var)."'":'null'); - } - - // ************************************************************ - // * Speichert das Lehrfach in die Datenbank - // * Wenn $new auf true gesetzt ist wird ein neuer Datensatz - // * angelegt, ansonsten der Datensatz mit $lehrfach_nr upgedated - // * @return true wenn erfolgreich, false im Fehlerfall - // ************************************************************ - function save() - { - //Variablen auf Gueltigkeit pruefen - if(!$this->validate()) - return false; - - if($this->new) - { - $qry = 'INSERT INTO lehre.tbl_lehrfach (lehrfach_id, studiengang_kz, fachbereich_kurzbz, kurzbz, - bezeichnung, farbe, aktiv, semester, sprache) - VALUES('.$this->addslashes($this->lehrfach_id).','. - $this->addslashes($this->studiengang_kz).','. - $this->addslashes($this->fachbereich_kurzbz).','. - $this->addslashes($this->kurzbz).','. - $this->addslashes($this->bezeichnung).','. - $this->addslashes($this->farbe).','. - ($this->aktiv?'true':'false').','. - $this->addslashes($this->semester).','. - $this->addslashes($this->sprache).');'; - } - else - { - //lehrfach_nr auf Gueltigkeit pruefen - if(!is_numeric($this->lehrfach_nr)) - { - $this->errormsg = 'Lehrfach_nr muss eine gueltige Zahl sein'; - return false; - } - - $qry = 'UPDATE lehre.tbl_lehrfach SET'. - ' studiengang_kz='.$this->addslashes($this->studiengang_kz).','. - ' fachbereich_kurzbz='.$this->addslashes($this->fachbereich_kurzbz).','. - ' kurzbz='.$this->addslashes($this->kurzbz).','. - ' bezeichnung='.$this->addslashes($this->bezeichnung).','. - ' farbe='.$this->addslashes($this->farbe).','. - ' aktiv='.($this->aktiv?'true':'false').','. - ' semester='.$this->semester.','. - ' sprache='.$this->addslashes($this->sprache). - " WHERE lehrfach_id='$this->lehrfach_id'"; - } - - if(pg_query($this->conn,$qry)) - { - //Log schreiben - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern des Lehrfaches:'.$qry; - return false; - } - } -} -?> \ No newline at end of file diff --git a/include/fas/lehrform.class.php b/include/fas/lehrform.class.php index e33a8502d..d35c9287c 100644 --- a/include/fas/lehrform.class.php +++ b/include/fas/lehrform.class.php @@ -1,166 +1,131 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ - -class lehrform -{ - var $conn; // resource DB-Handle - var $errormsg; // string - var $new; // boolean - var $lehrform = array(); // lehrform Objekt - - //Tabellenspalten - var $lehrform_kurbz; // varchar(8) - var $bezeichnung; // varchar (256) - var $verplanen; // boolean - - // ************************************************************************* - // * Konstruktor - Uebergibt die Connection und laedt optional eine Lehrform - // * @param $conn Datenbank-Connection - // * $lehrform_kurbz Lehrform die geladen werden soll (default=null) - // * $unicode Gibt an ob die Daten mit UNICODE Codierung - // * oder LATIN9 Codierung verarbeitet werden sollen - // ************************************************************************* - function lehrform($conn, $lehrform_kurzbz=null, $unicode=false) - { - $this->conn = $conn; - - if($unicode) - $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; - else - $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; - - if(!pg_query($conn,$qry)) - { - $this->errormsg = 'Encoding konnte nicht gesetzt werden'; - return false; - } - - if($lehrform_kurzbz != null) - $this->load($lehrform_kurzbz); - } - - // ********************************************************* - // * Laedt Lehrform mit der uebergebenen ID - // * @param $lehrform_kurzbz Lehrform die geladen werden soll - // ********************************************************* - function load($lehrform_kurzbz) - { - $qry = "SELECT * FROM lehre.tbl_lehrform WHERE lehrform_kurzbz='".addslashes($lehrfach_nr)."'"; - if(!$result=pg_query($this->conn,$qry)) - { - $this->errormsg = 'Fehler beim lesen der Lehrform'; - return false; - } - - if($row = pg_fetch_object($result)) - { - $this->lehrform_kurbz = $row->lehrform_kurzbz; - $this->bezeichnung = $row->bezeichung; - $this->verplanen = ($row->verplanen?true:false); - } - else - { - $this->errormsg = 'Es ist keine Lehrform mit der Kurzbz '.$lehrform_kurzbz.' vorhanden'; - return false; - } - - return true; - - } - - // ******************************************* - // * Prueft die Variablen vor dem Speichern - // * auf Gueltigkeit. - // * @return true wenn ok, false im Fehlerfall - // ******************************************* - function validate() - { - if(strlen($this->lehrform_kurbz)>8) - { - $this->errormsg = 'Lehrform Kurzbezeichnung darf nicht laenger als 8 Zeichen sein.'; - return false; - } - if(strlen($this->bezeichnung)>256) - { - $this->errormsg = 'Bezeichnung darf nicht laenger als 256 Zeichen sein'; - return false; - } - if(!is_bool($this->verplanen)) - { - $this->errormsg = 'Verplanen muss ein boolscher Wert sein'; - return false; - } - - return true; - } - - // ************************************************ - // * wenn $var '' ist wird "null" zurueckgegeben - // * wenn $var !='' ist werden Datenbankkritische - // * zeichen mit backslash versehen und das ergbnis - // * unter hochkomma gesetzt. - // ************************************************ - function addslashes($var) - { - return ($var!=''?"'".addslashes($var)."'":'null'); - } - - // ************************************************************ - // * Speichert die Lehrform in die Datenbank - // * Wenn $new auf true gesetzt ist wird ein neuer Datensatz - // * angelegt, ansonsten der Datensatz mit $lehrfach_nr upgedated - // * @return true wenn erfolgreich, false im Fehlerfall - // ************************************************************ - function save() - { - //Variablen auf Gueltigkeit pruefen - if(!$this->validate()) - return false; - - if($this->new) - { - $qry = "INSERT INTO lehre.tbl_lehrform (lehrform_kurzbz, bezeichnung, verplanen) - VALUES('".addslashes($this->lehrform_kurzbz)."',". - $this->addslashes($this->bezeichnung).','. - ($this->verplanen?'true':'false').');'; - } - else - { - $qry = 'UPDATE lehre.tbl_lehrform SET'. - ' bezeichnung='.$this->addslashes($this->bezeichnung).','. - ' verplanen='.($this->verplanen?'true':'false'). - " WHERE lehrform_kurzbz='$this->lehrform_kurzbz'"; - } - - if(pg_query($this->conn,$qry)) - { - //Log schreiben - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern der Lehrform:'.$qry; - return false; - } - } -} +conn = $conn; + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + if(!pg_query($conn,$qry)) + { + $this->errormsg = "Encoding konnte nicht gesetzt werden"; + return false; + } + if($lehrform_id != null) + $this->load($lehrform_id); + } + + /** + * Laedt einen Datensatz + * @param $lform_id ID des zu ladenden Datensatzes + * @return true wenn ok, false im Fehlerfall + */ + function load($lform_id) + { + //pruefen ob lform_id eine gueltige Zahl ist + if(!is_numeric($lform_id) || $lform_id == '') + { + $this->errormsg = 'lehrform_id muss eine gueltige Zahl sein'; + return false; + } + + //Datensatz laden + $qry = "SELECT * FROM lehrform WHERE lehrform_pk = '$lform_id';"; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Der Datensatz konnte nicht geladen werden'; + return false; + } + + if($row = pg_fetch_object($res)) + { + $this->lehrform_id = $row->lehrform_pk; + $this->bezeichnung = $row->bezeichnung; + $this->kurzbezeichnung = $row->kurzbezeichnung; + $this->standardfaktor = $row->standardfaktor; + $this->updateamum = $row->creationdate; + $this->updatevon = $row->creationuser; + } + else + { + $this->errormsg = 'Der Datensatz konnte nicht geladen werden'; + return false; + } + + return true; + } + + /** + * Liefert alle lehrformen + * @return true wenn ok, false im Fehlerfall + */ + function getAll() + { + $qry = "SELECT * FROM lehrform;"; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Der Datensatz konnte nicht geladen werden'; + return false; + } + + while($row = pg_fetch_object($res)) + { + $form_obj = new lehrform($this->conn); + + $form_obj->lehrform_id = $row->lehrform_pk; + $form_obj->bezeichnung = $row->bezeichnung; + $form_obj->kurzbezeichnung = $row->kurzbezeichnung; + $form_obj->standardfaktor = $row->standardfaktor; + $form_obj->updateamum = $row->creationdate; + $form_obj->updatevon = $row->creationdate; + + $this->result[] = $form_obj; + } + + return true; + } + + /** + * Loescht einen Datensatz + * @param lehrform_id ID des zu loeschenden Datensatzes + * @return true wenn ok, false im Fehlerfall + */ + function delete($lehrform_id) + { + $this->errormsg = 'Noch nicht implementiert'; + return false; + } + + /** + * Speichert einen Datensatz + * @return true wenn ok, false im Fehlerfall + */ + function save() + { + $this->errormsg = 'Noch nicht implemeniert'; + return false; + } +} ?> \ No newline at end of file diff --git a/include/fas/lehrveranstaltung.class.php b/include/fas/lehrveranstaltung.class.php index d753a5921..8b145f5aa 100644 --- a/include/fas/lehrveranstaltung.class.php +++ b/include/fas/lehrveranstaltung.class.php @@ -1,56 +1,33 @@ , - * Andreas Oesterreicher and - * Rudolf Hangl . - */ /** * Klasse lehrveranstaltung (FAS-Online) - * @create 06-12-2006 + * @create 16-03-2006 */ class lehrveranstaltung { - var $conn; // @var resource DB-Handle - var $errormsg; // @var string - var $new; // @var boolean - var $lehrveranstaltungen = array(); // @var lehrveranstaltung Objekt - - var $lehrveranstaltung_id; // @var serial - var $studiengang_kz; //@var integer - var $bezeichnung; //@var string - var $kurzbz; //@var string - var $semester; //@var smallint - var $ects; //@var numeric(5,2) - var $semesterstunden; //@var smallint - - var $anmerkung; //@var string - var $lehre; //@var boolean - var $lehreverzeichnis; //@var string - var $aktiv; //@var boolean - var $ext_id; //@var bigint - var $insertamum; //@var timestamp - var $insertvon; //@var string - var $planfaktor; //@var numeric(3,2) - var $planlektoren; //@var integer - var $planpersonalkosten; //@var numeric(7,2) - var $updateamum; //@var timestamp - var $updatevon; //@var string + var $conn; // @var resource DB-Handle + var $errormsg; // @var string + var $new; // @var boolean + var $result = array(); // @var lehrveranstaltung Objekt + var $lehrveranstaltung_id; // @var integer + var $art; // @var integer + var $ausbildungssemester_id; // @var integer + var $beschreibung; // @var string + var $ectspunkte; // @var float + var $fachbereich_id; // @var integer + var $kategorie; // @var integer + var $kurzbezeichnung; // @var string + var $name; // @var string + var $notenlektor_id; // @var integer + var $nummer; // @var string + var $nummerintern; // @var integer + var $sortierung; // @var integer + var $studentenwochenstunden; // @var float + var $studiengang_id; // @var integer + var $studiensemester_id; // @var integer + var $updateamum=0; // @var timestamp + var $updatevon; // @var string /** * Konstruktor @@ -60,13 +37,19 @@ class lehrveranstaltung function lehrveranstaltung($conn, $lehrveranstaltung_id=null) { $this->conn = $conn; + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + if(!pg_query($conn,$qry)) + { + $this->errormsg = "Encoding konnte nicht gesetzt werden"; + return false; + } if($lehrveranstaltung_id != null) $this->load($lehrveranstaltung_id); } /** * Laedt einen Datensatz - * @param $lehrveranstaltung_id ID des zu ladenden Datensatzes + * @param $lehrveranstaltung_id ID des zu ladenden Datensatzes * @return true wenn ok, false im Fehlerfall */ function load($lehrveranstaltung_id) @@ -78,7 +61,7 @@ class lehrveranstaltung return false; } - $qry = "SELECT * FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_pk = '$lehrveranstaltung_id';"; + $qry = "SELECT * FROM lehrveranstaltung WHERE lehrveranstaltung_pk = '$lehrveranstaltung_id';"; if(!$res = pg_query($this->conn, $qry)) { @@ -88,24 +71,24 @@ class lehrveranstaltung if($row = pg_fetch_object($res)) { - $this->lehrveranstaltung_id = $row->lehrveranstaltung_pk; - $this->art = $row->art; - $this->ausbildungssemester_id = $row->ausbildungssemester_fk; - $this->beschreibung = $row->beschreibung; - $this->ectspunkte = $row->ectspunkte; - $this->fachbereich_id = $row->fachbereich_fk; - $this->kategorie = $row->kategorie; - $this->kurzbezeichnung = $row->kurzbezeichnung; - $this->name = $row->name; - $this->notenlektor_id = $row->notenlektor_fk; - $this->nummer = $row->nummer; - $this->nummerintern = $row->nummerintern; - $this->sortierung = $row->sortierung; - $this->studentenwochenstunden = $row->studentenwochenstunden; - $this->studiengang_id = $row->studiengang_fk; - $this->studiensemester_id = $row->studiensemester_fk; - $this->updateamum = $row->creationdate; - $this->updatevon = $row->creationuser; + $this->lehrveranstaltung_id = $row->lehrveranstaltung_pk; + $this->art = $row->art; + $this->ausbildungssemester_id = $row->ausbildungssemester_fk; + $this->beschreibung = $row->beschreibung; + $this->ectspunkte = $row->ectspunkte; + $this->fachbereich_id = $row->fachbereich_fk; + $this->kategorie = $row->kategorie; + $this->kurzbezeichnung = $row->kurzbezeichnung; + $this->name = $row->name; + $this->notenlektor_id = $row->notenlektor_fk; + $this->nummer = $row->nummer; + $this->nummerintern = $row->nummerintern; + $this->sortierung = $row->sortierung; + $this->studentenwochenstunden = $row->studentenwochenstunden; + $this->studiengang_id = $row->studiengang_fk; + $this->studiensemester_id = $row->studiensemester_fk; + $this->updateamum = $row->creationdate; + $this->updatevon = $row->creationuser; } else { @@ -122,7 +105,7 @@ class lehrveranstaltung */ function getAll() { - $qry = "SELECT * FROM lehre.tbl_lehrveranstaltung;"; + $qry = "SELECT * FROM lehrveranstaltung;"; if(!$res = pg_query($this->conn, $qry)) { @@ -134,24 +117,24 @@ class lehrveranstaltung { $lv_obj = new lehrveranstaltung($this->conn); - $lv_obj->lehrveranstaltung_id = $row->lehrveranstaltung_pk; - $lv_obj->art = $row->art; - $lv_obj->ausbildungssemester_id = $row->ausbildungssemester_fk; - $lv_obj->beschreibung = $row->beschreibung; - $lv_obj->ectspunkte = $row->ectspunkte; - $lv_obj->fachbereich_id = $row->fachbereich_fk; - $lv_obj->kategorie = $row->kategorie; - $lv_obj->kurzbezeichnung = $row->kurzbezeichnung; - $lv_obj->name = $row->name; - $lv_obj->notenlektor_id = $row->notenlektor_fk; - $lv_obj->nummer = $row->nummer; - $lv_obj->nummerintern = $row->nummerintern; - $lv_obj->sortierung = $row->sortierung; - $lv_obj->studentenwochenstunden = $row->studentenwochenstunden; - $lv_obj->studiengang_id = $row->studiengang_fk; - $lv_obj->studiensemester_id = $row->studiensemester_fk; - $lv_obj->updateamum = $row->creationdate; - $lv_obj->updatevon = $row->creationuser; + $lv_obj->lehrveranstaltung_id = $row->lehrveranstaltung_pk; + $lv_obj->art = $row->art; + $lv_obj->ausbildungssemester_id = $row->ausbildungssemester_fk; + $lv_obj->beschreibung = $row->beschreibung; + $lv_obj->ectspunkte = $row->ectspunkte; + $lv_obj->fachbereich_id = $row->fachbereich_fk; + $lv_obj->kategorie = $row->kategorie; + $lv_obj->kurzbezeichnung = $row->kurzbezeichnung; + $lv_obj->name = $row->name; + $lv_obj->notenlektor_id = $row->notenlektor_fk; + $lv_obj->nummer = $row->nummer; + $lv_obj->nummerintern = $row->nummerintern; + $lv_obj->sortierung = $row->sortierung; + $lv_obj->studentenwochenstunden = $row->studentenwochenstunden; + $lv_obj->studiengang_id = $row->studiengang_fk; + $lv_obj->studiensemester_id = $row->studiensemester_fk; + $lv_obj->updateamum = $row->creationdate; + $lv_obj->updatevon = $row->creationuser; $this->result[] = $lv_obj; } @@ -186,7 +169,7 @@ class lehrveranstaltung } //Select Befehl zusammenbauen - $qry = "SELECT * FROM lehre.tbl_lehrveranstaltung WHERE studiengang_fk = '$studiengang_id'"; + $qry = "SELECT * FROM lehrveranstaltung WHERE studiengang_fk = '$studiengang_id'"; if($studiensemester_id != null) $qry .= " AND studiensemester_fk = '$studiensemester_id'"; @@ -205,34 +188,30 @@ class lehrveranstaltung { $lv_obj = new lehrveranstaltung($this->conn); - $lv_obj->lehrveranstaltung_id = $row->lehrveranstaltung_pk; - $lv_obj->art = $row->art; - $lv_obj->ausbildungssemester_id = $row->ausbildungssemester_fk; - $lv_obj->beschreibung = $row->beschreibung; - $lv_obj->ectspunkte = $row->ectspunkte; - $lv_obj->fachbereich_id = $row->fachbereich_fk; - $lv_obj->kategorie = $row->kategorie; - $lv_obj->kurzbezeichnung = $row->kurzbezeichnung; - $lv_obj->name = $row->name; - $lv_obj->notenlektor_id = $row->notenlektor_fk; - $lv_obj->nummer = $row->nummer; - $lv_obj->nummerintern = $row->nummerintern; - $lv_obj->sortierung = $row->sortierung; - $lv_obj->studentenwochenstunden = $row->studentenwochenstunden; - $lv_obj->studiengang_id = $row->studiengang_fk; - $lv_obj->studiensemester_id = $row->studiensemester_fk; - $lv_obj->updateamum = $row->creationdate; - $lv_obj->updatevon = $row->creationuser; + $lv_obj->lehrveranstaltung_id = $row->lehrveranstaltung_pk; + $lv_obj->art = $row->art; + $lv_obj->ausbildungssemester_id = $row->ausbildungssemester_fk; + $lv_obj->beschreibung = $row->beschreibung; + $lv_obj->ectspunkte = $row->ectspunkte; + $lv_obj->fachbereich_id = $row->fachbereich_fk; + $lv_obj->kategorie = $row->kategorie; + $lv_obj->kurzbezeichnung = $row->kurzbezeichnung; + $lv_obj->name = $row->name; + $lv_obj->notenlektor_id = $row->notenlektor_fk; + $lv_obj->nummer = $row->nummer; + $lv_obj->nummerintern = $row->nummerintern; + $lv_obj->sortierung = $row->sortierung; + $lv_obj->studentenwochenstunden = $row->studentenwochenstunden; + $lv_obj->studiengang_id = $row->studiengang_fk; + $lv_obj->studiensemester_id = $row->studiensemester_fk; + $lv_obj->updateamum = $row->creationdate; + $lv_obj->updatevon = $row->creationuser; $this->result[] = $lv_obj; } return true; } - function addslashes($var) - { - return ($var!=''?"'".addslashes($var)."'":'null'); - } /** * Prueft die Gueltigkeit der Variablen @@ -240,67 +219,85 @@ class lehrveranstaltung */ function checkvars() { - //$this->name = str_replace("'",'´',$this->name); - $this->bezeichnung = str_replace("'",'´',$this->bezeichnung); - $this->kurzbz = str_replace("'",'´',$this->kurzbz); - $this->anmerkung = str_replace("'",'´',$this->anmerkung); + $this->name = str_replace("'",'´',$this->name); + $this->nummer = str_replace("'",'´',$this->nummer); + $this->kurzbezeichnung = str_replace("'",'´',$this->kurzbezeichnung); //Laenge Pruefen - if(strlen($this->bezeichnung)>128) + $this->errormsg = 'Eine der Gesamtlaengen wurde ueberschritten'; + if(strlen($this->name)>255) { - $this->errormsg = "Bezeichnung darf nicht laenger als 128 Zeichen sein bei $this->ext_id - $this->bezeichnung"; + $this->errormsg = 'Name darf nicht laenger als 255 Zeichen sein'; return false; } - if(strlen($this->kurzbz)>16) + if(strlen($this->nummer)>20) { - $this->errormsg = "Kurzbez darf nicht laenger als 16 Zeichen sein bei $this->ext_id - $this->kurzbz"; + $this->errormsg = 'Nummer darf nicht laenger als 20 Zeichen sein'; return false; } - if(strlen($this->anmerkung)>64) + if(strlen($this->kurzbezeichnung)>20) { - $this->errormsg = "Anmerkung darf nicht laenger als 64 Zeichen sein bei $this->ext_id - $this->anmerkung"; + $this->errormsg = 'kurzbezeichnung darf nicht laenger als 20 Zeichen sein'; return false; } - if(strlen($this->lehreverzeichnis)>16) + + if(!is_numeric($this->fachbereich_id)) { - $this->errormsg = "Lehreverzeichnis darf nicht laenger als 16 Zeichen sein bei $this->ext_id - $this->lehreverzeichnis"; + $this->errormsg = 'Fachbereich_id ist ungueltig'; return false; } - if(!is_numeric($this->studiengang_kz)) + if(!is_numeric($this->studiengang_id)) { - $this->errormsg = "Studiengang_kz ist ungueltig bei $this->ext_id - $this->studiengang_kz"; + $this->errormsg = 'Studiengang_id ist ungueltig'; return false; } - if($this->semester!='' && !is_numeric($this->semester)) + if(!is_numeric($this->ausbildungssemester_id)) { - $this->errormsg = "Semester ist ungueltig bei $this->ext_id - $this->semester"; + $this->errormsg = 'Ausbildungssemester_id ist ungueltig'; return false; } - if($this->planfaktor!='' && !is_numeric($this->planfaktor)) + if($this->art!='' && !is_numeric($this->art)) { - $this->errormsg = "Planfaktor ist ungueltig bei $this->ext_id - $this->planfaktor"; + $this->errormsg = 'Art ist ungueltig'; return false; } - if($this->semesterstunden!='' && !is_numeric($this->semesterstunden)) + if($this->studentenwochenstunden!='' && !is_numeric($this->studentenwochenstunden)) { - $this->errormsg = "Semesterstunden ist ungueltig bei $this->ext_id - $this->semesterstunden"; + $this->errormsg = 'Studentenwochenstunden ist ungueltig'; return false; } - if($this->planlektoren!='' && !is_numeric($this->planlektoren)) + if($this->kategorie!='' && !is_numeric($this->kategorie)) { - $this->errormsg = "Planlektoren ist ungueltig bei $this->ext_id - $this->planlektoren"; + $this->errormsg = "Kategorie ist ungueltig"; return false; } - if($this->ects!='' && !is_numeric($this->ects)) + if($this->ectspunkte!='' && !is_numeric($this->ectspunkte)) { - $this->errormsg = "ECTS sind ungueltig bei $this->ext_id - $this->ects"; + $this->errormsg = 'ECTSPunkte sind ungueltig'; return false; - } - if($this->ects>40) + } + if($this->notentlektor_id!='' && !is_numeric($this->notenlektor_id)) { - $this->errormsg = "ECTS größer als 40 bei $this->ext_id - $this->ects"; + $this->errormsg = 'Notenlektor ist ungueltig'; return false; - } + } + if($this->sortierung!='' && !is_numeric($this->sortierung)) + { + $this->errormsg = 'Sortierung ist ungueltig'; + return false; + } + if($this->nummerintern!='' && !is_numeric($this->nummerintern)) + { + $this->errormsg = 'NummerIntern ist ungueltig'; + return false; + } + + if(!is_numeric($this->studiensemester_id)) + { + $this->errormsg = 'Studiensemester_id ist ungueltig'; + return false; + } + $this->errormsg = ''; return true; } @@ -318,27 +315,23 @@ class lehrveranstaltung if($this->new) { //Neuen Datensatz anlegen - $qry = 'INSERT INTO lehre.tbl_lehrveranstaltung (studiengang_kz, bezeichnung, kurzbz, - semester, ects, semesterstunden, anmerkung, lehre, lehreverzeichnis, aktiv, ext_id, insertamum, - insertvon, planfaktor, planlektoren, planpersonalkosten, updateamum, updatevon) VALUES ('. - $this->addslashes($this->studiengang_kz).', '. - $this->addslashes($this->bezeichnung).', '. - $this->addslashes($this->kurzbz).', '. - $this->addslashes($this->semester).', '. - $this->addslashes($this->ects).', '. - $this->addslashes($this->semesterstunden).', '. - $this->addslashes($this->anmerkung).', '. - ($this->lehre?'true':'false').','. - $this->addslashes($this->lehreverzeichnis).', '. - ($this->aktiv?'true':'false').', '. - $this->addslashes($this->ext_id).', '. - $this->addslashes($this->insertamum).', '. - $this->addslashes($this->insertvon).', '. - $this->addslashes($this->planfaktor).', '. - $this->addslashes($this->planlektoren).', '. - $this->addslashes($this->planpersonalkosten).', '. - $this->addslashes($this->updateamum).', '. - $this->addslashes($this->updatevon).');'; + + //naechste ID aus der Sequence holen + $qry = "SELECT nextval('lehrveranstaltung_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Sequence konnte nicht ausgelesen werden'; + return false; + } + $this->lehrveranstaltung_id = $row->id; + + $qry = "INSERT INTO lehrveranstaltung(lehrveranstaltung_pk, fachbereich_fk, studiengang_fk, ausbildungssemester_fk,". + " name, nummer, kurzbezeichnung, beschreibung, art, studentenwochenstunden, creationdate, creationuser,". + " kategorie, ectspunkte, studiensemester_fk, notenlektor_fk, sortierung, nummerintern) VALUES(". + " '$this->lehrveranstaltung_id', '$this->fachbereich_id', '$this->studiengang_id', '$this->ausbildungssemester_id',". + " '$this->name', '$this->nummer', '$this->kurzbezeichnung', '$this->beschreibung', '$this->art',". + " '$this->studentenwochenstunden', now(), $this->updatevon, '$this->kategorie', '$this->ectspunkte', '$this->studiensemester_id',". + " '$this->notenlektor_id', '$this->sortierung', '$this->nummerintern');"; } else { @@ -350,33 +343,20 @@ class lehrveranstaltung $this->errormsg = 'lehrveranstaltung_id muss eine gueltige Zahl sein'; return false; } - $qry = 'UPDATE lehre.tbl_lehrveranstaltung SET '. - //'lehrveranstaltung_id= '.$this->addslashes($this->lehrveranstaltung_id) .', '. - 'studiengang_kz='.$this->addslashes($this->studiengang_kz) .', '. - 'bezeichnung='.$this->addslashes($this->bezeichnung) .', '. - 'kurzbz='.$this->addslashes($this->kurzbz) .', '. - 'semester='.$this->addslashes($this->semester) .', '. - 'ects='.$this->addslashes($this->ects) .', '. - 'semesterstunden='.$this->addslashes($this->semesterstunden) .', '. - 'anmerkung='.$this->addslashes($this->anmerkung) .', '. - 'lehre='.$this->addslashes($this->lehre) .', '. - 'lehreverzeichnis='.$this->addslashes($this->lehreverzeichnis) .', '. - 'aktiv='.($this->aktiv?'true':'false') .', '. - 'ext_id='.$this->addslashes($this->ext_id) .', '. - 'insertamum='.$this->addslashes($this->insertamum) .', '. - 'insertvon='.$this->addslashes($this->insertvon) .', '. - 'planfaktor='.$this->addslashes($this->planfaktor) .', '. - 'planlektoren='.$this->addslashes($this->planlektoren) .', '. - 'planpersonalkosten='.$this->addslashes($this->planpersonalkosten) .', '. - 'updateamum='.$this->addslashes($this->updateamum) .','. - 'updatevon='.$this->addslashes($this->updatevon) .' '. - 'WHERE ext_id = '.$this->addslashes($this->lehrveranstaltung_id).';'; + + $qry = "UPDATE lehrveranstaltung SET fachbereich_fk = '$this->fachbereich_id', studiengang_fk = '$this->studiengang_id',". + " ausbildungssemester_fk = '$this->ausbildungssemester_id', name = '$this->name', nummer = '$this->nummer',". + " kurzbezeichnung = '$this->kurzbezeichnung', beschreibung = '$this->beschreibung', art = '$this->art',". + " studentenwochenstunden = '$this->studentenwochenstunden', kategorie = '$this->kategorie', ". + " ectspunkte = '$this->ectspunkte', studiensemester_fk = '$this->studiensemester_id',". + " notenlektor_fk = '$this->notenlektor_id', sortierung = '$this->sortierung', nummerintern = '$this->nummerintern'". + " WHERE lehrveranstaltung_pk = '$this->lehrveranstaltung_id';"; } if(pg_query($this->conn, $qry)) { //Log schreiben - /*$sql = $qry; + $sql = $qry; $qry = "SELECT nextval('log_seq') as id;"; if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) { @@ -384,19 +364,18 @@ class lehrveranstaltung return false; } - $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".$this->addslashes($sql)."')"; + $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')"; if(pg_query($this->conn, $qry)) return true; else { $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; return false; - }*/ - return true; + } } else { - $this->errormsg = 'Fehler beim Speichern des Datensatzes'; + $this->errormsg = 'Fehler beim speichern des Datensatzes'; return false; } } @@ -416,7 +395,7 @@ class lehrveranstaltung } //Loeschen des Datensatzes - $qry = "DELETE FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_pk = '$lehrveranstaltung_id';"; + $qry = "DELETE FROM lehrveranstaltung WHERE lehrveranstaltung_pk = '$lehrveranstaltung_id';"; if(pg_query($this->conn, $qry)) { @@ -429,7 +408,7 @@ class lehrveranstaltung return false; } - $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".$this->addslashes($sql)."')"; + $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')"; if(pg_query($this->conn, $qry)) return true; else diff --git a/include/fas/mitarbeiter.class.php b/include/fas/mitarbeiter.class.php index 35caa9ee0..a53bdfcdb 100644 --- a/include/fas/mitarbeiter.class.php +++ b/include/fas/mitarbeiter.class.php @@ -1,179 +1,742 @@ , - * Andreas Oesterreicher and - * Rudolf Hangl . +/** + * Klasse Mitarbeiter abgeleitet von Person (FAS-Online) + * @create 06-03-2006 */ -class mitarbeiter extends benutzer +class mitarbeiter extends person { //Tabellenspalten - var $ausbildungcode; //integer - var $personalnummer; //serial - var $kurzbz; //varchar(8) - var $lektor; //boolean - var $fixangestellt; //boolean - var $telefonklappe; //varchar(25) - - // ************************************************************************* - // * Konstruktor - Uebergibt die Connection und laedt optional einen Mitarbeiter - // * @param $conn Datenbank-Connection - // * $uid Mitarbeiter der geladen werden soll (default=null) - // * $unicode Gibt an ob die Daten mit UNICODE Codierung - // * oder LATIN9 Codierung verarbeitet werden sollen - // ************************************************************************* - function mitarbeiter($conn, $uid=null, $unicode=false) + var $mitarbeiter_id; // @var bigint + var $beginndatum; // @var timestamp + var $akadgrad; // @var boolean + var $akadgrad_bezeichnung; // @var boolean + var $habilitation; // @var boolean + var $mitgliedentwicklungsteam; // @var boolean + var $qualifikation; // @var integer + var $hauptberuflich; // @var boolean + var $hauptberuf; // @var integer + var $semesterwochenstunden; // @var float + var $persnr; // @var string + var $beendigungsdatum; // @var timestamp + var $ausgeschieden; // @var boolean + var $ausgeschieden_bezeichnung; // @var string + var $kurzbez; // @var string + var $stundensatz; // @var float + var $ausbildung; // @var integer + var $ausbildung_bezeichnung; // @var string + var $aktiv; // @var boolean + var $aktiv_bezeichnung; // @var boolean + var $zustelladresse_plz; + var $zustelladresse_strasse; + var $zustelladresse_ort; + + /** + * Konstruktor + */ + function mitarbeiter($conn, $person_id=null) { $this->conn = $conn; - - if($unicode) - $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; - else - $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; - + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; if(!pg_query($conn,$qry)) { - $this->errormsg = 'Encoding konnte nicht gesetzt werden'; + $this->errormsg = "Encoding konnte nicht gesetzt werden"; + return false; + } + //Mitarbeiter laden + if($person_id!=null) + $this->load($person_id); + } + + /** + * ueberprueft die Variablen auf Gueltigkeit + * @return true wenn gueltig, false im Fehlerfall + */ + function checkvars() + { + //Hochkomma herausfiltern + $this->persnr = str_replace("'","`", $this->persnr); + $this->kurzbez = str_replace("'","`", $this->kurzbez); + + //Maximallaenge pruefen + $this->errormsg='Die Maximallaenge eines Feldes wurde ueberschritten'; + if(strlen($this->persnr)>20) + { + $this->errormsg='PersonalNr darf nicht länger als 20 Zeichen sein'; + return false; + } + if(strlen($this->kurzbez)>10) + { + $this->errormsg="Kurzbezeichnung darf nicht länger als 10 Zeichen sein:".strlen($this->kurzbez); + return false; + } + + //Zahlenwerte ueberpruefen + $this->errormsg='Ein Zahlenfeld enthaelt ungueltige Zeichen'; + //if(!is_numeric($this->qualifikation)) return false; + //if(!is_numeric($this->hauptberuf)) return false; + if(!is_numeric($this->stundensatz) && $this->stundensatz!='') + { + $this->errormsg='Stundensatz muss eine gueltige Zahl sein'; + return false; + } + if(!is_numeric($this->ausbildung) && $this->ausbildung!='') + { + $this->errormsg='ausbildung muss eine gueltige Zahl sein'; + return false; + } + /*if(!is_numeric($this->semesterwochenstunden)) + { + $this->errormsg='SWS muss eine gueltige Zahl sein'; + return false; + }*/ + + if($this->kurzbz_exists($this->kurzbez, $this->mitarbeiter_id)) + { + $this->errormsg = 'Diese Kurzbezeichnung wird bereits verwendet'; return false; } - //Mitarbeiter laden - //if($uid!=null) - // $this->load($uid); - } - - // ************************************************ - // * ueberprueft die Variablen auf Gueltigkeit - // * @return true wenn gueltig, false im Fehlerfall - // ************************************************ - function validate() - { - if(strlen($this->uid)>16) - { - $this->errormsg = 'UID darf nicht laenger als 16 Zeichen sein'; - return false; - } - if($this->uid=='') - { - $this->errormsg = 'UID muss eingegeben werden'; - return false; - } - if($this->ausbildungcode!='' && !is_numeric($this->ausbildungcode)) - { - $this->errormsg = 'Ausbildungscode ist ungueltig'; - return false; - } - if($this->personalnummer!='' && !is_numeric($this->personalnummer)) - { - $this->errormsg = 'Personalnummer muss eine gueltige Zahl sein'; - return false; - } - if(strlen($this->kurzbz)>8) - { - $this->errormsg = 'kurzbz darf nicht laenger als 8 Zeichen sein'; - return false; - } - if(!is_bool($this->lektor)) - { - $this->errormsg = 'lektor muss boolean sein'.$this->lektor; - return false; - } - if(!is_bool($this->fixangestellt)) - { - $this->errormsg = 'fixangestellt muss boolean sein'; - return false; - } - if(strlen($this->telefonklappe)>25) - { - $this->errormsg = 'telefonklappe darf nicht laenger als 25 Zeichen sein'; - return false; - } - if(strlen($this->updatevon)>32) - { - $this->errormsg = 'updatevon darf nicht laenger als 32 Zeichen sein'; - return false; - } - + $this->errormsg = ''; return true; } - // ************************************************* - // * Speichert die Mitarbeiterdaten in die Datenbank - // * @return true wenn ok, false im Fehlerfall - // ************************************************* + /** + * Speichert die Mitarbeiterdaten in die Datenbank + * @return true wenn ok, false im Fehlerfall + */ function save() { //Variablen checken - if(!$this->validate()) + if(!$this->checkvars()) return false; - pg_query($this->conn,'BEGIN;'); + pg_query($this->conn,"Begin;"); //Basisdaten speichern - if(!benutzer::save()) + if(!person::save()) { - pg_query($this->conn,'ROLLBACK;'); + pg_query($this->conn,"Rollback;"); return false; } if($this->new) { - //Neuen Datensatz anlegen - $qry = "INSERT INTO tbl_mitarbeiter(mitarbeiter_uid, ausbildungcode, personalnummer, kurzbz, lektor, - fixangestellt, telefonklappe, updateamum, updatevon) - VALUES('".addslashes($this->uid)."',". - $this->addslashes($this->ausbildungcode).",". - $this->addslashes($this->personalnummer).",". //TODO: in Produktivversion nicht angeben - $this->addslashes($this->kurzbz).','. - ($this->lektor?'true':'false').','. - ($this->fixangestellt?'true':'false').','. - $this->addslashes($this->telefonklappe).','. - $this->addslashes($this->updateamum).','. - $this->addslashes($this->updatevon).');'; + //Neuen Datensatz einfuegen + + //naechste ID aus Sequence auslesen + $qry = "SELECT nextval('mitarbeiter_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn,$qry))) + { + $this->errormsg = 'Fehler beim auslesen der Sequence'; + return false; + } + $this->mitarbeiter_id = $row->id; + + $qry = "INSERT INTO mitarbeiter (mitarbeiter_pk, beginndatum, akadgrad, habilitation,". + //" mitgliedentwicklungsteam,". + //" qualifikation, hauptberuflich, hauptberuf, semesterwochenstunden,". + " creationdate, creationuser, persnr,". + " person_fk, beendigungsdatum, ausgeschieden, kurzbez, stundensatz, ausbildung, aktiv) VALUES (". + " '$this->mitarbeiter_id',". + (strlen($this->beginndatum)>0?"'$this->beginndatum'":"NULL") .", '".($this->akadgrad?'J':'N')."',". + " '".($this->habilitation?'J':'N')."', ". + //"'".($this->mitgliedentwicklungsteam?'J':'N')."',". + //" '$this->qualifikation', '".($this->hauptberuflich?'J':'N')."', '$this->hauptberuf', '$this->semesterwochenstunden',". + " now(),". + " '$this->updatevon', '$this->persnr', '$this->person_id',". + (strlen($this->beendigungsdatum)>0?"'$this->beendigungsdatum'":"null").",". + " '".($this->ausgeschieden?'J':'N')."',". + (strlen($this->kurzbez)>0?"'$this->kurzbez'":"null").", '$this->stundensatz',". + ($this->ausbildung!=''?"'$this->ausbildung'":'null').",'$this->aktiv');"; } else { - //Bestehenden Datensatz updaten - $qry = 'UPDATE tbl_mitarbeiter SET'. - ' ausbildungcode='.$this->addslashes($this->ausbildungcode).','. - " personalnummer=".$this->addslashes($this->personalnummer).",". //TODO: in Produktivversion nicht angeben - ' kurzbz='.$this->addslashes($this->kurzbz).','. - ' lektor='.($this->lektor?'true':'false').','. - ' fixangestellt='.($this->fixangestellt?'true':'false').','. - ' telefonklappe='.$this->addslashes($this->telefonklappe).','. - ' updateamum='.$this->addslashes($this->updateamum).','. - ' updatevon='.$this->addslashes($this->updatevon). - " WHERE mitarbeiter_uid='".addslashes($this->uid)."';"; + //Bestehenden Datensatz ueberschreiben + + //mitarbeiter_id auf Gueltigkeit pruefen + if(!is_numeric($this->mitarbeiter_id)) + { + $this->errormsg = 'mitarbeiter_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "UPDATE mitarbeiter SET". + " beginndatum=".($this->beginndatum!=''?"'$this->beginndatum'":'null').",". + " akadgrad='".($this->akadgrad?'J':'N')."',". + " habilitation='".($this->habilitation?'J':'N')."',". + //" mitgliedentwicklungsteam='".($this->mitgliedentwicklungsteam?'J':'N')."',". + //" qualifikation='$this->qualifikation', hauptberuflich='".($this->hauptberuflich?'J':'N')."',". + //" hauptberuf='$this->hauptberuf', semesterwochenstunden='$this->semesterwochenstunden',". + " persnr=".($this->persnr!=''?"'$this->persnr'":'null').",". + " person_fk='$this->person_id',". + " beendigungsdatum=".($this->beendigungsdatum!=''?"'$this->beendigungsdatum'":'null').",". + " ausgeschieden='".($this->ausgeschieden?'J':'N')."',". + " kurzbez=".($this->kurzbez!=''?"'$this->kurzbez'":'null').",". + " stundensatz=".($this->stundensatz!=''?"'$this->stundensatz'":'null').",". + " ausbildung=".($this->ausbildung!=''?"'$this->ausbildung'":'null').",". + " aktiv='$this->aktiv'". + " WHERE mitarbeiter_pk=$this->mitarbeiter_id;"; } if(pg_query($this->conn,$qry)) { - pg_query($this->conn,'COMMIT;'); + //Wenn nicht ausgeschieden dann den Status neu setzen + //Da sonst beim ruecksetzen des Hakerls ausgeschieden der status bleibt + if(!$this->ausgeschieden) + { + if(!person::updateaktstatus($this->person_id)) + { + pg_query($this->conn,"Rollback;"); + return false; + } + } + else + { + if(!person::setaktstatus(150,$this->person_id)) + { + pg_query($this->conn,"Rollback;"); + return false; + } + } + pg_query($this->conn,"Commit;"); //Log schreiben - return true; + $sql = $qry; + $qry = "SELECT nextval('log_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim Auslesen der Log-Sequence'; + return false; + } + + $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')"; + if(pg_query($this->conn, $qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; + return false; + } } else { - pg_query($this->conn,'ROLLBACK;'); - $this->errormsg = 'Fehler beim Speichern des Mitarbeiter-Datensatzes'.$qry; + pg_query($this->conn,"Rollback;"); + $this->errormsg = 'Fehler beim Speichern des Mitarbeiter-Datensatzes'; return false; } } + + /** + * Ladet die Daten aus der Datenbank + * @param $fix wenn 'true' Fixangestellte laden + * wenn 'false' Freie MA laden + * $stgl wenn 'true' Studiengangsleiter laden + * $fbl wenn 'true' Fachbereichsleiter laden + * $aktiv wenn 'true' Aktive MA laden + * $karrenziert wenn 'true' Karenzierte laden + * $ausgesch wenn 'true' Ausgeschiedene laden + * @return true wenn ok, false im Fehlerfall + */ + function getMitarbeiter($mitarbeiter_id='', $fix='', $stgl='', $fbl='', $aktiv='', $karenziert='', $ausgesch='', $adresse=false, $studiensemester_id='') + { + $qry = "SELECT * FROM (mitarbeiter JOIN person ON (person_pk=mitarbeiter.person_fk))"; + if($adresse) + $qry .= " LEFT JOIN adresse on(person_pk=adresse.person_fk)"; + $qry .= " WHERE true"; + + if($mitarbeiter_id!='') + if(is_numeric($mitarbeiter_id)) + $qry .= " AND mitarbeiter_pk = $mitarbeiter_id"; + else + { + $this->errormsg = "mitarbeiter_id muss eine gueltige Zahl sein"; + return false; + } + + if($studiensemester_id=='') + { + $query = "Select studiensemester_pk FROM studiensemester WHERE aktuell='J'"; + if($row = pg_fetch_object(pg_query($this->conn, $query))) + $studiensemester_id = $row->studiensemester_pk; + } + + if($fix=='true') // Alle Fixangestellten + $qry .= " AND mitarbeiter_pk IN(SELECT distinct funktion.mitarbeiter_fk FROM funktion WHERE funktion.beschart1=3 AND funktion.studiensemester_fk='$studiensemester_id')"; + + if($fix=='false') // Freie Mitarbeiter + $qry .= " AND mitarbeiter_pk IN(SELECT distinct funktion.mitarbeiter_fk FROM funktion WHERE funktion.beschart1=4 AND funktion.studiensemester_fk='$studiensemester_id')"; + + if($stgl=='true') //Alle Studiengangsleiter + $qry .= " AND mitarbeiter_pk IN(SELECT distinct funktion.mitarbeiter_fk FROM funktion WHERE funktion.funktion=5 AND funktion.studiensemester_fk='$studiensemester_id')"; + + + if($fbl=='true') //Alle Fachbereichsleiter + $qry .= " AND mitarbeiter_pk IN(SELECT distinct funktion.mitarbeiter_fk FROM funktion WHERE funktion.funktion=6 AND funktion.studiensemester_fk='$studiensemester_id')"; + + if($aktiv=='true') //Alle aktiven + $qry .= " AND aktiv=true"; + + if($karenziert=='true') //Alle Karenzierten + $qry .= " AND mitarbeiter_pk IN(SELECT distinct funktion.mitarbeiter_fk FROM funktion WHERE funktion.ausmass=5 AND funktion.studiensemester_fk='$studiensemester_id')"; + + if($ausgesch=='true') // Alle Ausgeschiedenen + $qry .= " AND beendigungsdatum is not null"; + + $qry .= " ORDER BY familienname"; + if(!$res = pg_query($this->conn,$qry)) + { + $this->errormsg = 'Fehler bei einer Datenbankabfrage'; + return false; + } + + while($row = pg_fetch_object($res)) + { + $mitarb = new mitarbeiter($this->conn); + //Personendaten + $mitarb->person_id = $row->person_pk; + $mitarb->familienname = $row->familienname; + $mitarb->angelegtam = $row->angelegtam; + $mitarb->vorname = $row->vorname; + $mitarb->anrede = $row->anrede; + $mitarb->vornamen = $row->vornamen; + $mitarb->geschlecht = $row->geschlecht; + $mitarb->gebdat = $row->gebdat; + $mitarb->gebort = $row->gebort; + $mitarb->staatsbuergerschaft = $row->staatsbuergerschaft; + $mitarb->familienstand = $row->familienstand; + $mitarb->familienstand_bezeichnung = $this->getFamilienstandBezeichnung($row->familienstand); + $mitarb->svnr = $row->svnr; + $mitarb->anzahlderkinder = $row->anzahlderkinder; + $mitarb->ersatzkennzeichen = $row->ersatzkennzeichen; + $mitarb->bemerkung = $row->bemerkung; + $mitarb->aktstatus = $row->aktstatus; + $mitarb->aktstatus_bezeichnung = $this->getAktstatusBezeichnung($row->aktstatus); + $mitarb->bismelden = ($row->bismelden=='J'?true:false); + $mitarb->bismelden_bezeichnung = ($row->bismelden=='J'?'Ja':'Nein'); + $mitarb->titelpre = $row->titel; + $mitarb->titelpost = $row->postnomentitel; + $mitarb->uid = $row->uid; + $mitarb->gebnation = $row->gebnation; + + //Mitarbeiterdaten + $mitarb->mitarbeiter_id = $row->mitarbeiter_pk; + $mitarb->beginndatum = $row->beginndatum; + $mitarb->akadgrad = ($row->akadgrad=='J'?true:false); + $mitarb->akadgrad_bezeichnung = ($row->akadgrad=='J'?'Ja':'Nein'); + $mitarb->habilitation = ($row->habilitation=='J'?true:false); + $mitarb->habilitation_bezeichnung = ($row->habilitation=='J'?'Ja':'Nein'); + $mitarb->mitgliedentwicklungsteam = ($row->mitgliedentwicklungsteam=='J'?true:false); + $mitarb->qualifikation = $row->qualifikation; + $mitarb->hauptberuflich = ($row->hauptberuflich=='J'?true:false); + $mitarb->hauptberuf = $row->hauptberuf; + $mitarb->updateamum = $row->creationdate; + $mitarb->updatevon = $row->creationuser; + $mitarb->semesterwochenstunden = $row->semesterwochenstunden; + $mitarb->persnr = $row->persnr; + $mitarb->beendigungsdatum = $row->beendigungsdatum; + $mitarb->ausgeschieden = ($row->ausgeschieden=='J'?true:false); + $mitarb->ausgeschieden_bezeichnung = ($row->ausgeschieden=='J'?'Ja':'Nein'); + $mitarb->kurzbez = $row->kurzbez; + $mitarb->stundensatz = $row->stundensatz; + $mitarb->ausbildung = $row->ausbildung; + $mitarb->ausbildung_bezeichnung = $this->getAusbildungBezeichnung($row->ausbildung); + $mitarb->aktiv = ($row->aktiv=='t'?true:false); + $mitarb->aktiv_bezeichnung = ($row->aktiv=='t'?'Ja':'Nein'); + + if($adresse) + { + $mitarb->zustelladresse_plz = $row->plz; + $mitarb->zustelladresse_strasse = $row->strasse; + $mitarb->zustelladresse_ort = $row->ort; + } + $this->result[] = $mitarb; + } + return true; + } + + /** + * Liefert alle Mitarbeiter + * @return true wenn ok, false im Fehlerfall + */ + function getAll() + { + + $qry = "Select person_pk, familienname, angelegtam, vorname, anrede, vornamen, geschlecht, gebdat, gebort, staatsbuergerschaft, ". + "familienstand, svnr, anzahlderkinder, ersatzkennzeichen, bemerkung, aktstatus, bismelden, titel, postnomentitel, uid, gebnation, ". + "mitarbeiter_pk, beginndatum, akadgrad, habilitation, mitgliedentwicklungsteam, qualifikation, hauptberuflich, hauptberuf, ". + "mitarbeiter.creationdate, mitarbeiter.creationuser, semesterwochenstunden, persnr, beendigungsdatum, ausgeschieden, ". + "kurzbez, stundensatz, ausbildung, aktiv FROM mitarbeiter JOIN person ON(person_pk=person_fk)"; + if(!$res = pg_query($this->conn,$qry)) + { + $this->errormsg = 'Fehler bei einer Datenbankabfrage'; + return false; + } + + while($row = pg_fetch_object($res)) + { + $mitarb = new mitarbeiter($this->conn); + //Personendaten + $mitarb->person_id = $row->person_pk; + $mitarb->familienname = $row->familienname; + $mitarb->angelegtam = $row->angelegtam; + $mitarb->vorname = $row->vorname; + $mitarb->anrede = $row->anrede; + $mitarb->vornamen = $row->vornamen; + $mitarb->geschlecht = $row->geschlecht; + $mitarb->gebdat = $row->gebdat; + $mitarb->gebort = $row->gebort; + $mitarb->staatsbuergerschaft = $row->staatsbuergerschaft; + $mitarb->familienstand = $row->familienstand; + $mitarb->svnr = $row->svnr; + $mitarb->anzahlderkinder = $row->anzahlderkinder; + $mitarb->ersatzkennzeichen = $row->ersatzkennzeichen; + $mitarb->bemerkung = $row->bemerkung; + $mitarb->aktstatus = $row->aktstatus; + $mitarb->bismelden = ($row->bismelden=='J'?true:false); + $mitarb->titelpre = $row->titel; + $mitarb->titelpost = $row->postnomentitel; + $mitarb->uid = $row->uid; + $mitarb->gebnation = $row->gebnation; + //Mitarbeiterdaten + $mitarb->mitarbeiter_id = $row->mitarbeiter_pk; + $mitarb->beginndatum = $row->beginndatum; + $mitarb->akadgrad = ($row->akadgrad=='J'?true:false); + $mitarb->habilitation = ($row->habilitation=='J'?true:false); + $mitarb->mitgliedentwicklungsteam = ($row->mitgliedentwicklungsteam=='J'?true:false); + $mitarb->qualifikation = $row->qualifikation; + $mitarb->hauptberuflich = ($row->hauptberuflich=='J'?true:false); + $mitarb->hauptberuf = $row->hauptberuf; + $mitarb->updateamum = $row->creationdate; + $mitarb->updatevon = $row->creationuser; + $mitarb->semesterwochenstunden = $row->semesterwochenstunden; + $mitarb->persnr = $row->persnr; + $mitarb->beendigungsdatum = $row->beendigungsdatum; + $mitarb->ausgeschieden = ($row->ausgeschieden=='J'?true:false); + $mitarb->kurzbez = $row->kurzbez; + $mitarb->stundensatz = $row->stundensatz; + $mitarb->ausbildung = $row->ausbildung; + $mitarb->aktiv = ($row->aktiv=='t'?true:false); + + $this->result[] = $mitarb; + } + return true; + + } + + /** + * Laedt die Mitarbeiterdaten der uebergebenen ID + * @param $person_id ID der Person die geladen werden soll + * @return true wenn ok, false im Fehlerfall + */ + function load($person_id) + { + //person_id auf Gueltigkeit pruefen + if(!is_numeric($person_id) || $person_id=='') + { + $this->errormsg = 'Person_id muss eine Zahl sein'; + return false; + } + + $qry = "SELECT person_pk, familienname, angelegtam, vorname, anrede, vornamen, geschlecht, gebdat, gebort, staatsbuergerschaft, ". + "familienstand, svnr, anzahlderkinder, ersatzkennzeichen, bemerkung, aktstatus, bismelden, titel, postnomentitel, uid, gebnation, ". + "mitarbeiter_pk, beginndatum, akadgrad, habilitation, mitgliedentwicklungsteam, qualifikation, hauptberuflich, hauptberuf, ". + "mitarbeiter.creationdate, mitarbeiter.creationuser, semesterwochenstunden, persnr, beendigungsdatum, ausgeschieden, ". + "kurzbez, stundensatz, ausbildung, aktiv FROM mitarbeiter JOIN person ON(person_pk=person_fk) where person_pk=$person_id"; + if(!$res = pg_query($this->conn,$qry)) + { + $this->errormsg = 'Fehler bei einer Datenbankabfrage'; + return false; + } + + if($row = pg_fetch_object($res)) + { + //Personendaten + $this->person_id = $row->person_pk; + $this->familienname = $row->familienname; + $this->angelegtam = $row->angelegtam; + $this->vorname = $row->vorname; + $this->anrede = $row->anrede; + $this->vornamen = $row->vornamen; + $this->geschlecht = $row->geschlecht; + $this->gebdat = $row->gebdat; + $this->gebort = $row->gebort; + $this->staatsbuergerschaft = $row->staatsbuergerschaft; + $this->familienstand = $row->familienstand; + $this->svnr = $row->svnr; + $this->anzahlderkinder = $row->anzahlderkinder; + $this->ersatzkennzeichen = $row->ersatzkennzeichen; + $this->bemerkung = $row->bemerkung; + $this->aktstatus = $row->aktstatus; + $this->bismelden = ($row->bismelden=='J'?true:false); + $this->titelpre = $row->titel; + $this->titelpost = $row->postnomentitel; + $this->uid = $row->uid; + $this->gebnation = $row->gebnation; + //Mitarbeiterdaten + $this->mitarbeiter_id = $row->mitarbeiter_pk; + $this->beginndatum = $row->beginndatum; + $this->akadgrad = ($row->akadgrad=='J'?true:false); + $this->habilitation = ($row->habilitation=='J'?true:false); + $this->mitgliedentwicklungsteam = ($row->mitgliedentwicklungsteam=='J'?true:false); + $this->qualifikation = $row->qualifikation; + $this->hauptberuflich = ($row->hauptberuflich=='J'?true:false); + $this->hauptberuf = $row->hauptberuf; + $this->updateamum = $row->creationdate; + $this->updatevon = $row->creationuser; + $this->semesterwochenstunden = $row->semesterwochenstunden; + $this->persnr = $row->persnr; + $this->beendigungsdatum = $row->beendigungsdatum; + $this->ausgeschieden = ($row->ausgeschieden=='J'?true:false); + $this->kurzbez = $row->kurzbez; + $this->stundensatz = $row->stundensatz; + $this->ausbildung = $row->ausbildung; + $this->aktiv = ($row->aktiv=='t'?true:false); + } + else + { + $this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden'; + return false; + } + + return true; + } + + /** + * Laedt die Mitarbeiterdaten der uebergebenen ID + * @param $mitarbeiter_id ID der Person die geladen werden soll + * @return true wenn ok, false im Fehlerfall + */ + function load_mitarbeiter($mitarbeiter_id) + { + //person_id auf Gueltigkeit pruefen + if(!is_numeric($mitarbeiter_id) || $mitarbeiter_id=='') + { + $this->errormsg = 'Person_id muss eine Zahl sein'; + return false; + } + + $qry = "SELECT person_pk, familienname, angelegtam, vorname, anrede, vornamen, geschlecht, gebdat, gebort, staatsbuergerschaft, ". + "familienstand, svnr, anzahlderkinder, ersatzkennzeichen, bemerkung, aktstatus, bismelden, titel, postnomentitel, uid, gebnation, ". + "mitarbeiter_pk, beginndatum, akadgrad, habilitation, mitgliedentwicklungsteam, qualifikation, hauptberuflich, hauptberuf, ". + "mitarbeiter.creationdate, mitarbeiter.creationuser, semesterwochenstunden, persnr, beendigungsdatum, ausgeschieden, ". + "kurzbez, stundensatz, ausbildung, aktiv FROM mitarbeiter JOIN person ON(person_pk=person_fk) where mitarbeiter_pk=$mitarbeiter_id"; + if(!$res = pg_query($this->conn,$qry)) + { + $this->errormsg = 'Fehler bei einer Datenbankabfrage'; + return false; + } + + if($row = pg_fetch_object($res)) + { + //Personendaten + $this->person_id = $row->person_pk; + $this->familienname = $row->familienname; + $this->angelegtam = $row->angelegtam; + $this->vorname = $row->vorname; + $this->anrede = $row->anrede; + $this->vornamen = $row->vornamen; + $this->geschlecht = $row->geschlecht; + $this->gebdat = $row->gebdat; + $this->gebort = $row->gebort; + $this->staatsbuergerschaft = $row->staatsbuergerschaft; + $this->familienstand = $row->familienstand; + $this->svnr = $row->svnr; + $this->anzahlderkinder = $row->anzahlderkinder; + $this->ersatzkennzeichen = $row->ersatzkennzeichen; + $this->bemerkung = $row->bemerkung; + $this->aktstatus = $row->aktstatus; + $this->bismelden = ($row->bismelden=='J'?true:false); + $this->titelpre = $row->titel; + $this->titelpost = $row->postnomentitel; + $this->uid = $row->uid; + $this->gebnation = $row->gebnation; + //Mitarbeiterdaten + $this->mitarbeiter_id = $row->mitarbeiter_pk; + $this->beginndatum = $row->beginndatum; + $this->akadgrad = ($row->akadgrad=='J'?true:false); + $this->habilitation = ($row->habilitation=='J'?true:false); + $this->mitgliedentwicklungsteam = ($row->mitgliedentwicklungsteam=='J'?true:false); + $this->qualifikation = $row->qualifikation; + $this->hauptberuflich = ($row->hauptberuflich=='J'?true:false); + $this->hauptberuf = $row->hauptberuf; + $this->updateamum = $row->creationdate; + $this->updatevon = $row->creationuser; + $this->semesterwochenstunden = $row->semesterwochenstunden; + $this->persnr = $row->persnr; + $this->beendigungsdatum = $row->beendigungsdatum; + $this->ausgeschieden = ($row->ausgeschieden=='J'?true:false); + $this->kurzbez = $row->kurzbez; + $this->stundensatz = $row->stundensatz; + $this->ausbildung = $row->ausbildung; + $this->aktiv = ($row->aktiv=='t'?true:false); + } + else + { + $this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden'; + return false; + } + + return true; + } + + /** + * loescht den Mitarbeiter mit der uebergebenen ID + * @param ma_id Mitarbeiter_id + * @return true wenn ok, false im Fehlerfall + */ + function delete($person_id) + { + //person_id auf Gueltigkeit pruefen + if(!is_numeric($person_id) || $person_id=='') + { + $this->errormsg = 'Person_id muss eine Zahl sein'; + return false; + } + + $qry = "DELETE FROM funktion where mitarbeiter_fk=(Select mitarbeiter_pk from mitarbeiter where person_fk=$person_id);". + " DELETE FROM adresse where person_fk=$person_id;". + " DELETE FROM telefonnummer where person_fk=$person_id;". + " DELETE FROM email where person_fk=$person_id;". + " DELETE FROM mitarbeiter where person_fk=$person_id"; + + if(!pg_query($this->conn,$qry)) + { + $this->errormsg = 'Fehler beim Loeschen'; + return false; + } + else + { + if(!person::delete($person_id)) + return false; + else + { + //Log schreiben + $sql = $qry; + $qry = "SELECT nextval('log_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim Auslesen der Log-Sequence'; + return false; + } + + $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')"; + if(pg_query($this->conn, $qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; + return false; + } + } + } + return true; + } + + /** + * Liefert die passende Bezeichnung des Familienstandes + * @param $id ID des Familienstandes + */ + function getFamilienstandBezeichnung($id) + { + switch($id) + { + case 1: return 'ledig'; + case 2: return 'verheiratet'; + case 3: return 'geschieden'; + case 4: return 'verwitwet'; + default: return ''; + } + } + + /** + * Liefert die passende Bezeichnung der Ausbildung + * @param $id ID der Ausbildung + */ + function getAusbildungBezeichnung($id) + { + switch($id) + { + case 1: return 'Universitätsabschluss mit Doktorat als Zweit- oder Dritt- oder PhD-Abschluss'; + case 2: return 'Universitäts- oder Hochschulabschluss auf Diplom oder Magisterebene, Doktor als Erstabschluss'; + case 3: return 'Fachhochschulabschluss auf Diplom- oder Magisterebene'; + case 4: return 'Universitätsabschluss auf Bakkalaureatsebene'; + case 5: return 'Fachhochschulabschluss auf Bakkalaureatsebene'; + case 6: return 'Diplom einer Akademie'; + case 7: return 'Anderer tertiärer Bildungsabschluss'; + case 8: return 'Reifeprüfung einer allgemeinbildenden höheren Schule'; + case 9: return 'Reifeprüfung einer berufsbildenden höheren Schule'; + case 10: return 'Lehrabschlussprüfung'; + case 11: return 'Pflichtschule'; + default: return ''; + } + } + + /** + * Liefert die passende Bezeichnung des Aktuellen Status + * @param $id ID des Status + */ + function getAktstatusBezeichnung($id) + { + switch($id) + { + case 100: return 'Mitarbeiter'; + case 101: return 'Lektor'; + case 102: return 'Koordinator'; + case 103: return 'Fachbereichsleiter'; + case 104: return 'Studiengangsleiter'; + case 150: return 'Ausgeschieden'; + default: return ''; + } + } + + /** + * Prüft ob eine Kurzbezeichnung schon existiert. Falls eine mitarbeiter_id + * angegeben wird, dann wird dieser Datensatz von der ueberpruefung ausgeschlossen + * ( fuer Update eines Datensatzes) + */ + function kurzbz_exists($kurzbz, $mitarbeiter_id='') + { + if($kurzbz!='') + { + $this->errormsg = ''; + $qry = "SELECT count(*) as anz from mitarbeiter where kurzbez='$kurzbz'"; + if($mitarbeiter_id!='') + $qry .= " AND mitarbeiter_pk<>".$mitarbeiter_id; + + if($result = pg_query($this->conn,$qry)) + { + while ($row=pg_fetch_object($result)) + { + if($row->anz == 0) + { + return false; + } + else + { + return true; + } + } + } + else + { + $this->errormsg = 'Fehler beim pruefen der Kurzbezeichnung'; + return false; + } + } + return false; + } + + /** + * Liefert die naechste Personalnummer + */ + function getNextPersonalnr() + { + $qry = "SELECT max(persnr) AS persnr FROM mitarbeiter WHERE length(persnr)=(SELECT max(length(persnr)) FROM mitarbeiter)"; + if($row = pg_fetch_object(pg_query($this->conn,$qry))) + return $row->persnr+1; + else + return false; + } } ?> \ No newline at end of file diff --git a/include/fas/person.class.php b/include/fas/person.class.php index 11642a1d2..2d353c7e3 100644 --- a/include/fas/person.class.php +++ b/include/fas/person.class.php @@ -1,372 +1,615 @@ , - * Andreas Oesterreicher and - * Rudolf Hangl . +/** + * Basisklasse Person (FAS-Online) + * @create 06-03-2006 */ class person { - var $conn; // resource DB-Handle - var $errormsg; // string - var $new; // boolean - var $personen = array(); // person Objekt + var $conn; // @var resource DB-Handle + var $errormsg; // @var string + var $new; // @var boolean + var $result = array(); // @var person Objekt //Tabellenspalten - var $person_id; // integer - var $sprache; // varchar(16) - var $anrede; // varchar(16) - var $titelpost; // varchar(32) - var $titelpre; // varchar(64) - var $nachname; // varchar(64) - var $vorname; // varchar(32) - var $vornamen; // varchar(128) - var $gebdatum; // date - var $gebort; // varchar(128) - var $gebzeit; // time - var $foto; // oid - var $anmerkungen; // varchar(256) - var $homepage; // varchar(256) - var $svnr; // char(10) - var $ersatzkennzeichen; // char(10) - var $familienstand; // char(1) - var $anzahlkinder; // smalint - var $aktiv; // boolean - var $insertamum; // timestamp - var $insertvon; // varchar(16) - var $updateamum; // timestamp - var $updatevon; // varchar(16) - var $ext_id; // bigint + var $person_id; // @var integer + var $aktstatus; // @var integer + var $aktstatus_bezeichnung; // @var integer + var $angelegtam; // @var timestamp + var $anrede; // @var string + var $anzahlderkinder; // @var integer + var $bemerkung; // @var string + var $bismelden; // @var boolean + var $bismelden_bezeichnung; // @var boolean + var $ersatzkennzeichen; // @var string + var $familienname; // @var string + var $familienstand; // @var integer ( 1=ledig, 2=verheiratet, 3=?, 4=?, 5=? ) + var $familienstand_bezeichnung; // @var integer ( 1=ledig, 2=verheiratet, 3=?, 4=?, 5=? ) + var $gebdat; // @var date + var $gebnation; // @var string + var $gebort; // @var string + var $geschlecht; // @var string + var $staatsbuergerschaft; // @var string + var $svnr; // @var string + var $titelpost; // @var string Titel nach dem Namen (BA, MA, etc) + var $titelpre; // @var string Titel vor dem Namen (Dr, Mag, Dipl.Ing, etc) + var $uid; // @var string + var $vorname; // @var string + var $vornamen; // @var string + var $updateamum; // @var timestamp + var $updatevon=0; // @var string - // ************************************************************************* - // * Konstruktor - Uebergibt die Connection und laedt optional eine Person - // * @param $conn Datenbank-Connection - // * $person_id Person die geladen werden soll (default=null) - // * $unicode Gibt an ob die Daten mit UNICODE Codierung - // * oder LATIN9 Codierung verarbeitet werden sollen - // ************************************************************************* - function person($conn, $person_id=null, $unicode=false) + /** + * Konstruktor - Uebergibt die Connection und Laedt optional eine Person + * @param $conn Datenbank-Connection + * $pers_id Person die geladen werden soll (default=null) + */ + function person($conn, $pers_id=null) { $this->conn = $conn; - - if($unicode) - $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; - else - $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; - + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; if(!pg_query($conn,$qry)) { - $this->errormsg = 'Encoding konnte nicht gesetzt werden'; + $this->errormsg = "Encoding konnte nicht gesetzt werden"; return false; } - - if($person_id != null) - $this->load($person_id); + if($pers_id != null) + $this->load($pers_id); } - // ********************************************************* - // * Laedt Person mit der uebergebenen ID - // * @param $person_id ID der Person die geladen werden soll - // ********************************************************* + /** + * Laden einen Datensatz mit der Personal_id die uebergeben wird + * @param $person_id ID der Person die geladen werden soll + */ function load($person_id) { //person_id auf gueltigkeit pruefen if(is_numeric($person_id) && $person_id!='') { - $qry = "SELECT person_id, sprache, anrede, titelpost, titelpre, nachname, vorname, vornamen, - gebdatum, gebort, gebzeit, foto, anmerkungen, homepage, svnr, ersatzkennzeichen, - familienstand, anzahlkinder, aktiv, insertamum, insertvon, updateamum, updatevon, ext_id - FROM tbl_person WHERE person_id='$person_id'"; - - if(!$result=pg_query($this->conn,$qry)) + $qry = "SELECT * FROM person WHERE person_pk=$person_id"; + if(!$res=pg_query($this->conn,$qry)) { - $this->errormsg = 'Fehler beim lesen der Personendaten'; + $this->errormsg = 'Fehler beim auslesen der Daten'; return false; } - if($row = pg_fetch_object($result)) - { - $this->person_id = $row->person_id; - $this->sprache = $row->sprache; - $this->anrede = $row->anrede; - $this->titelpost = $row->titelpost; - $this->titelpre = $row->titelpre; - $this->nachname = $row->nachname; - $this->vorname = $row->vorname; - $this->vornamen = $row->vornamen; - $this->gebdatum = $row->gebdatum; - $this->gebort = $row->gebort; - $this->gebzeit = $row->gebzeit; - $this->foto = $row->foto; - $this->anmerkungen = $row->anmerkungen; - $this->homepage = $row->homepage; - $this->svnr = $row->svnr; - $this->ersatzkennzeichen = $row->ersatzkennzeichen; - $this->familienstand = $row->familienstand; - $this->anzahlkinder = $row->anzahlkinder; - $this->aktiv = ($row->aktiv=='t'?true:false); - $this->insertamum = $row->insertamum; - $this->insertvon = $row->insertvon; - $this->updateamum = $row->updateamum; - $this->updatevon = $row->updatevon; - $this->ext_id = $row->ext_id; + if($row = pg_fetch_object($res)) + { + $this->person_id = $row->person_pk; + $this->aktstatus = $row->aktstatus; + $this->angelegtam = $row->angelegtam; + $this->anrede = $row->anrede; + $this->anzahlderkinder = $row->anzahlderkinder; + $this->bemerkung = $row->bemerkung; + $this->bismelden = ($row->bismelden=='J'?true:false); + $this->ersatzkennzeichen = $row->ersatzkennzeichen; + $this->familienname = $row->familienname; + $this->familienstand = $row->familienstand; + $this->gebdat = $row->gebdat; + $this->gebnation = $row->gebnation; + $this->gebort = $row->gebort; + $this->geschlecht = $row->geschlecht; + $this->staatsbuergerschaft = $row->staatsbuergerschaft; + $this->svnr = $row->svnr; + $this->titelpre = $row->titel; + $this->titlepost = $row->postnomentitel; + $this->uid = $row->uid; + $this->vorname = $row->vorname; + $this->vornamen = $row->vornamen; + $this->updateamum = $row->creationdate; + $this->updatevon = $row->creationuser; } - else + else { - $this->errormsg = 'Es ist kein Personendatensatz mit der ID '.$person_id.' vorhanden'; + $this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden'; return false; } return true; } - else + else { - $this->errormsg = 'Die person_id muss eine gueltige Zahl sein'; + $this->errormsg = "Die person_id muss eine Zahl sein"; return false; } } - // ******************************************* - // * Prueft die Variablen vor dem Speichern - // * auf Gueltigkeit. - // * @return true wenn ok, false im Fehlerfall - // ******************************************* - function validate() + // Clean stuff from a string + function clean_string1($string) + { + $trans = array("ä" => "ae", + "Ä" => "Ae", + "ö" => "oe", + "Ö" => "Oe", + "ü" => "ue", + "Ü" => "Ue", + "á" => "a", + "à" => "a", + "é" => "e", + "è" => "e", + "ó" => "o", + "ò" => "o", + "í" => "i", + "ì" => "i", + "ú" => "u", + "ù" => "u", + "ß" => "ss"); + $string = strtr($string, $trans); + return ereg_replace("[^a-zA-Z0-9]", "", $string); + //[:space:] + } + + /** + * Prueft die Variablen auf Gueltigkeit + * @return true wenn ok, false wenn Variablen ungueltig sind + */ + function checkvars1() { - if(strlen($this->sprache)>16) + //Hochkomma herausfiltern + $this->familienname = str_replace("'","`", $this->familienname); + $this->vorname = str_replace("'","`", $this->vorname); + $this->anrede = str_replace("'","`", $this->anrede); + $this->vornamen = str_replace("'","`", $this->vornamen); + $this->gebort = str_replace("'","`", $this->gebort); + $this->svnr = str_replace("'","`", $this->svnr); + $this->titelpre = str_replace("'","`", $this->titelpre); + $this->titelpost = str_replace("'","`", $this->titelpost); + $this->gebnation = str_replace("'","`", $this->gebnation); + $this->ersatzkennzeichen = str_replace("'","`", $this->ersatzkennzeichen); + $this->bemerkung = str_replace("'","`", $this->bemerkung); + if(ereg("[^a-zA-Z0-9]", $this->uid)) { - $this->errormsg = 'Sprache darf nicht laenger als 16 Zeichen sein'; - return false; - } - if(strlen($this->anrede)>16) - { - $this->errormsg = 'Anrede darf nicht laenger als 16 Zeichen sein'; - return false; - } - if(strlen($this->titelpost)>32) - { - $this->errormsg = 'Titelpost darf nicht laenger als 32 Zeichen sein'; - return false; - } - if(strlen($this->titelpre)>64) - { - $this->errormsg = 'Titelpre darf nicht laenger als 64 Zeichen sein'; - return false; - } - if(strlen($this->nachname)>64) - { - $this->errormsg = 'Nachname darf nicht laenger als 64 Zeichen sein'; - return false; - } - if($this->nachname=='' || is_null($this->nachname)) - { - $this->errormsg = 'Nachname muss eingegeben werden'; - return false; - } - - if(strlen($this->vorname)>32) - { - $this->errormsg = 'Vorname darf nicht laenger als 32 Zeichen sein'; - return false; - } - if(strlen($this->vornamen)>128) - { - $this->errormsg = 'Vornamen darf nicht laenger als 128 Zeichen sein'; - return false; - } - //ToDo Gebdatum pruefen -> laut bis muss er aelter als 10 Jahre sein - if(strlen($this->gebdatum)==0 || is_null($this->gebdatum)) - { - $this->errormsg = 'Geburtsdatum muss eingegeben werden'; - return false; - } - if(strlen($this->gebort)>128) - { - $this->errormsg = 'Geburtsort darf nicht laenger als 128 Zeichen sein'; - return false; - } - if($this->foto!='' && !is_numeric($this->foto)) - { - $this->errormsg = 'FotoOID ist ungueltig'; - return false; - } - if(strlen($this->anmerkungen)>256) - { - $this->errormsg = 'Anmerkungen darf nicht laenger als 256 Zeichen sein'; - return false; - } - if(strlen($this->homepage)>256) - { - $this->errormsg = 'Homepage darf nicht laenger als 256 Zeichen sein'; - return false; - } - if(strlen($this->svnr)>10) - { - $this->errormsg = 'SVNR darf nicht laenger als 10 Zeichen sein'; - return false; - } - if(strlen($this->ersatzkennzeichen)>10) - { - $this->errormsg = 'Ersatzkennzeichen darf nicht laenger als 10 Zeichen sein'; - return false; - } - if(strlen($this->familienstand)>1) - { - $this->errormsg = 'Familienstand ist ungueltig'; - return false; - } - if($this->anzahlkinder!='' && !is_numeric($this->anzahlkinder)) - { - $this->errormsg = 'Anzahl der Kinder ist ungueltig'; - return false; - } - if(!is_bool($this->aktiv)) - { - $this->errormsg = 'Aktiv ist ungueltig'; - return false; - } - if(strlen($this->insertvon)>16) - { - $this->errormsg = 'Insertvon darf nicht laenger als 16 Zeichen sien'; - return false; - } - if(strlen($this->updatevon)>16) - { - $this->errormsg = 'Updatevon darf nicht laenger als 16 Zeichen sein'; - return false; - } - if($this->ext_id!='' && !is_numeric($this->ext_id)) - { - $this->errormsg = 'Ext_ID ist keine gueltige Zahl'; + $this->errormsg = "UID darf keine Umlaute oder Sonderzeichen enthalten"; return false; } - return true; + //Maximallaenge pruefen + if(strlen($this->familienname)>255) + { + $this->errormsg = 'Familienname darf nicht laenger als 255 Zeichen sein'; + return false; + } + if(strlen($this->vorname)>255) + { + $this->errormsg = 'Vorname darf nicht laenger als 255 Zeichen sein'; + return false; + } + if(strlen($this->anrede)>20) + { + $this->errormsg = 'Anrede darf nicht laenger als 20 Zeichen sein'; + return false; + } + if(strlen($this->vornamen)>255) + { + $this->errormsg = 'Vornamen darf nicht laenger als 255 Zeichen sein'; + return false; + } + if(strlen($this->geschlecht)>1) + { + $this->errormsg = 'Geschlecht darf nicht laenger als 1 Zeichen sein'; + return false; + } + if(strlen($this->gebort)>255) + { + $this->errormsg = 'Geburtsort darf nicht laenger als 255 Zeichen sein'; + return false; + } + if(strlen($this->svnr)!=10) + { + $this->errormsg = 'SVNR muss 10 Zeichen lang sein'; + return false; + } + if(!is_numeric($this->svnr)) + { + $this->errormsg = 'SVNR muss eine gueltige Zahl sein'; + return false; + } + + if($this->svnr=='0000000000') //Leere SVNR wird zum anlegen des neuen Leerdatensatzes benoetigt + $this->svnr=''; + else + { + //SVNR mit Pruefziffer pruefen + //Die 4. Stelle in der SVNR ist die Pruefziffer + //(Summe von (gewichtung[i]*svnr[i])) modulo 11 ergibt diese Pruefziffer + //Falls nicht, ist die SVNR ungueltig + $gewichtung = array(3,7,9,0,5,8,4,2,1,6); + $erg=0; + //Quersumme bilden + for($i=0;$i<10;$i++) + $erg += $gewichtung[$i] * $this->svnr{$i}; + + if($this->svnr{3}!=($erg%11)) //Vergleichen der Pruefziffer mit Quersumme Modulo 11 + { + $this->errormsg = 'SVNR ist ungueltig'; + return false; + } + } + if(strlen($this->bismelden)>1) + { + $this->errormsg = 'bismelden darf nicht laenger als 1 Zeichen sein'; + return false; + } + if(strlen($this->titelpre)>30) + { + $this->errormsg = 'titelpre darf nicht laenger als 30 Zeichen sein'; + return false; + } + if(strlen($this->titelpost)>30) + { + $this->errormsg = 'titelpost darf nicht laenger als 30 Zeichen sein'; + return false; + } + if(strlen($this->uid)>20) + { + $this->errormsg = 'uid darf nicht laenger als 20 Zeichen sein'; + return false; + } + if(strlen($this->gebnation)>3) + { + $this->errormsg = 'Geburtsnation darf nicht laenger als 3 Zeichen sein'; + return false; + } + if(strlen($this->staatsbuergerschaft)>3) + { + $this->errormsg = 'Staatsbürgerschaft darf nicht laenger als 3 Zeichen sein'; + return false; + } + if(strlen($this->ersatzkennzeichen)>10) + { + $this->errormsg = 'ersatzkennzeichen darf nicht laenger als 10 Zeichen sein'; + return false; + } + + //Zahlenwerte ueberpruefen + $this->errormsg = 'Ein Zahlenfeld enthaelt ungueltige Zeichen'; + if(!is_numeric($this->familienstand) && $this->familienstand!='') return false; + if(!is_numeric($this->anzahlderkinder) && $this->anzahlderkinder!='') return false; + if(!is_numeric($this->aktstatus) && $this->aktstatus!='') return false; + + if($this->gebdat!='' && (time() - strtotime($this->gebdat))<315360000) // Wenn nicht aelter als 10 Jahre = 315360000 Sekunden + { + $this->errormsg = 'Geburtsdatum ist falsch: Person muss älter als 10 Jahre sein'; + return false; + } + + if($this->uid_exists($this->uid, $this->person_id)) + { + $this->errormsg = 'Diese UID existiert bereits'; + return false; + } + + $this->errormsg=''; + return true; } - // ************************************************ - // * wenn $var '' ist wird "null" zurueckgegeben - // * wenn $var !='' ist werden Datenbankkritische - // * zeichen mit backslash versehen und das ergbnis - // * unter hochkomma gesetzt. - // ************************************************ - function addslashes($var) - { - return ($var!=''?"'".addslashes($var)."'":'null'); - } - - // ************************************************************ - // * Speichert die Personendaten in die Datenbank - // * Wenn $new auf true gesetzt ist wird ein neuer Datensatz - // * angelegt, ansonsten der Datensatz mit $person_id upgedated - // * @return true wenn erfolgreich, false im Fehlerfall - // ************************************************************ + /** + * Speichert die Daten in die Datenbank + * Wenn $new auf true gesetzt ist wird eingefuegt + * ansonsten der datensatz $person_id upgedated + * @return true wenn erfolgreich, false im Fehlerfall + */ function save() - { + { //Variablen auf Gueltigkeit pruefen - if(!person::validate()) + if(!$this->checkvars1()) return false; if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE - { - $qry = 'INSERT INTO tbl_person (sprache, anrede, titelpost, titelpre, nachname, vorname, vornamen, - gebdatum, gebort, gebzeit, foto, anmerkungen, homepage, svnr, ersatzkennzeichen, - familienstand, anzahlkinder, aktiv, insertamum, insertvon, updateamum, updatevon , ext_id) - VALUES('.$this->addslashes($this->sprache).','. - $this->addslashes($this->anrede).','. - $this->addslashes($this->titelpost).','. - $this->addslashes($this->titelpre).','. - $this->addslashes($this->nachname).','. - $this->addslashes($this->vorname).','. - $this->addslashes($this->vornamen).','. - $this->addslashes($this->gebdatum).','. - $this->addslashes($this->gebort).','. - $this->addslashes($this->gebzeit).','. - $this->addslashes($this->foto).','. - $this->addslashes($this->anmerkungen).','. - $this->addslashes($this->homepage).','. - $this->addslashes($this->svnr).','. - $this->addslashes($this->ersatzkennzeichen).','. - $this->addslashes($this->familienstand).','. - $this->addslashes($this->anzahlkinder).','. - ($this->aktiv?'true':'false').','. - $this->addslashes($this->insertamum).','. - $this->addslashes($this->insertvon).','. - $this->addslashes($this->updateamum).','. - $this->addslashes($this->updatevon).','. - $this->addslashes($this->ext_id).');'; + { + //Naechste ID aus Sequence holen + $qry = "SELECT nextval('person_seq') as id;"; + if(!$row=pg_fetch_object(pg_query($this->conn,$qry))) + { + $this->errormsg = "Fehler beim Auslesen der Sequence"; + return false; + } + $this->person_id = $row->id; + + $qry = "INSERT INTO person (person_pk, familienname, angelegtam, vorname, anrede, vornamen,". + " geschlecht, gebdat, gebort, staatsbuergerschaft, familienstand, svnr, anzahlderkinder,". + " ersatzkennzeichen, bemerkung, creationdate,creationuser, aktstatus, bismelden, titel, postnomentitel,". + " uid, gebnation) VALUES( $this->person_id,". + " '$this->familienname', now(), '$this->vorname', '$this->anrede', '$this->vornamen',". + ($this->geschlecht!=''?"'$this->geschlecht'":"'M'").", ". + ($this->gebdat!=''?"'$this->gebdat'":'null').", '$this->gebort', '$this->staatsbuergerschaft',". + ($this->familienstand!=''?"'$this->familienstand'":'null').",". + " '$this->svnr', ". + ($this->anzahlderkinder!=''?"'$this->anzahlderkinder'":'null').",". + " '$this->ersatzkennzeichen', '$this->bemerkung', now(),". + " '$this->updatevon', '".($this->aktstatus>0?$this->aktstatus:100)."', '".($this->bismelden?'J':'N')."', '$this->titelpre', '$this->titelpost',". + (strlen($this->uid)>0?" '$this->uid'":'null').",". + " '$this->gebnation');"; + } else { - //person_id auf gueltigkeit pruefen + //peson_id auf gueltigkeit pruefen if(!is_numeric($this->person_id)) - { + { $this->errormsg = 'person_id muss eine gueltige Zahl sein'; return false; } - - $qry = 'UPDATE tbl_person SET'. - ' sprache='.$this->addslashes($this->sprache).','. - ' anrede='.$this->addslashes($this->anrede).','. - ' titelpost='.$this->addslashes($this->titelpost).','. - ' titelpre='.$this->addslashes($this->titelpre).','. - ' nachname='.$this->addslashes($this->nachname).','. - ' vorname='.$this->addslashes($this->vorname).','. - ' vornamen='.$this->addslashes($this->vornamen).','. - ' gebdatum='.$this->addslashes($this->gebdatum).','. - ' gebort='.$this->addslashes($this->gebort).','. - ' gebzeit='.$this->addslashes($this->gebzeit).','. - ' foto='.$this->addslashes($this->foto).','. - ' anmerkungen='.$this->addslashes($this->anmerkungen).','. - ' homepage='.$this->addslashes($this->homepage).','. - ' svnr='.$this->addslashes($this->svnr).','. - ' ersatzkennzeichen='.$this->addslashes($this->ersatzkennzeichen).','. - ' familienstand='.$this->addslashes($this->familienstand).','. - ' anzahlkinder='.$this->addslashes($this->anzahlkinder).','. - ' aktiv='.($this->aktiv?'true':'false').','. - ' updateamum='.$this->addslashes($this->updateamum).','. - ' updatevon='.$this->addslashes($this->updatevon).','. - ' ext_id='.$this->addslashes($this->ext_id). - " WHERE person_id='$this->person_id'"; + + $qry = "UPDATE person SET ". + " familienname='$this->familienname',". + " vorname='$this->vorname',". + " anrede='$this->anrede',". + " vornamen='$this->vornamen',". + " geschlecht=".($this->geschlecht!=''?"'$this->geschlecht'":"'M'").",". + " gebdat=".($this->gebdat!=''?"'$this->gebdat'":'null').",". + " gebort='$this->gebort',". + " staatsbuergerschaft='$this->staatsbuergerschaft',". + " familienstand=".($this->familienstand!=''?"'$this->familienstand'":'0').",". + " svnr=".($this->svnr!=''?"'$this->svnr'":'null').",". + " anzahlderkinder=".($this->anzahlderkinder!=''?"'$this->anzahlderkinder'":'0').",". + " ersatzkennzeichen='$this->ersatzkennzeichen',". + " bemerkung='$this->bemerkung',". + " aktstatus='$this->aktstatus',". + " bismelden='".($this->bismelden?'J':'N')."',". + " titel='$this->titelpre',". + " postnomentitel='$this->titelpost',". + " uid='$this->uid',". + " gebnation='$this->gebnation'". + " WHERE person_pk='$this->person_id'"; } - + if(pg_query($this->conn,$qry)) { - if($this->new) - { - $qry = "SELECT currval('tbl_person_person_id_seq') AS id;"; - if($row=pg_fetch_object(pg_query($this->conn,$qry))) - $this->person_id=$row->id; - else - { - $this->errormsg = 'Sequence konnte nicht ausgelesen werden'; - return false; - } - } //Log schreiben - return true; - + $sql = $qry; + $qry = "SELECT nextval('log_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim Auslesen der Log-Sequence'; + return false; + } + + $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')"; + if(pg_query($this->conn, $qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; + return false; + } } - else - { - $this->errormsg = 'Fehler beim Speichern des Person-Datensatzes:'.$this->nachname.' '.$qry; + else + { + $this->errormsg = "Fehler beim Speichern des Person-Datensatzes:".$qry; return false; } } + + /** + * Loescht einen Datensatz + * @param $person_id ID des zu loeschenden Datensatzes + * @return true wenn OK false im Fehlerfall + */ + function delete($person_id) + { + //person_id auf Gueltigkeit pruefen + if(!is_numeric($person_id) || $person_id=='') + { + $this->errormsg = 'Person_id muss eine Zahl sein'; + return false; + } + + $qry = "Delete from person where person_pk=$person_id"; + + if(!pg_query($this->conn,$qry)) + { + $this->errormsg = 'Fehler beim Loeschen'; + return false; + } + else + { + //Log schreiben + $sql = $qry; + $qry = "SELECT nextval('log_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim Auslesen der Log-Sequence'; + return false; + } + + $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')"; + if(pg_query($this->conn, $qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; + return false; + } + } + + } + + /** + * Holt alle Personen aus der Datenbank + * @return true wenn OK, false im Fehlerfall + */ + function getAll() + { + /** Braucht zuviel Speicher + + $qry = "SELECT * FROM person"; + if(!$res = pg_query($this->conn,$qry)) + { + $this->errormsg = 'Fehler beim auslesen der Datensaetze'; + return false; + } + + while($row = pg_fetch_object($res)) + { + $pers=new person($this->conn); + + $pers->person_id = $row->person_pk; + $pers->aktstatus = $row->aktstatus; + $pers->angelegtam = $row->angelegtam; + $pers->anrede = $row->anrede; + $pers->anzahlderkinder = $row->anzahlderkinder; + $pers->bemerkung = $row->bemerkung; + $pers->bismelden = ($row->bismelden=='J'?true:false); + $pers->ersatzkennzeichen = $row->ersatzkennzeichen; + $pers->familienname = $row->familienname; + $pers->familienstand = $row->familienstand; + $pers->gebdat = $row->gebdat; + $pers->gebnation = $row->gebnation; + $pers->gebort = $row->gebort; + $pers->geschlecht = $row->geschlecht; + $pers->staatsbuergerschaft = $row->staatsbuergerschaft; + $pers->svnr = $row->svnr; + $pers->titelpre = $row->titel; + $pers->titelpost = $row->postnomentitel; + $pers->uid = $row->uid; + $pers->vorname = $row->vorname; + $pers->vornamen = $row->vornamen; + $pers->updateamum = $row->creationdate; + $pers->updatevon = $row->creationuser; + + $this->result[] = $pers; + } + return true; + */ + return false; + } + + /** + * Prueft ob die UID schon vergeben ist. Wenn ein zweiter + * Parameter angegeben wird, wird diese ID von der ueberpruefung + * ausgeschlossen ( fuer Update eines Datensatzes ) + */ + function uid_exists($uid, $person_id='') + { + if($uid!='') + { + $this->errormsg = ''; + //Datenbank Check + $qry = "SELECT count(*) as anz from person where uid='$uid'"; + if($person_id!='') + $qry .= " AND person_pk<>".$person_id; + + if($result = pg_query($this->conn,$qry)) + { + while ($row=pg_fetch_object($result)) + { + if($row->anz == 0) + { + //Wurde deaktiviert weil der Zugriff vom auf den LDAP Server + //vom der Calva aus nicht funktioniert + //Ldap Check + //$ds = ldap_connect(LDAP_SERVER); + //$dn = "ou=People, dc=technikum-wien, dc=at"; + //$sr = ldap_search($ds,$dn,"uid=$uid"); + + //if(ldap_count_entries($ds,$sr)>0) + // return true; + //else + return false; + } + else + return true; + } + } + else + { + $this->errormsg = 'Fehler beim checken der uid'; + return false; + } + } + return false; + } + + /** + * Aktualisiert den AktStatus + */ + function updateaktstatus($person_id) + { + $mitarbeiter_id = ''; + $qry = "Select mitarbeiter_pk from mitarbeiter where person_fk='$person_id'"; + if($result = pg_query($this->conn, $qry)) + { + if($row = pg_fetch_object($result)) + $mitarbeiter_id = $row->mitarbeiter_pk; + else + { + $this->errormsg = 'Fehler beim ermitteln der Mitarbeiter_id'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim ermitteln der mitarbeiter_id'; + return false; + } + + //Funktionen holen + $qry = "Select funktion from funktion where ". + "studiensemester_fk = (Select studiensemester_pk from studiensemester where aktuell='J')". + " AND mitarbeiter_fk = '$mitarbeiter_id'"; + if($result = pg_query($this->conn, $qry)) + { + $fkt=array(); + $i=0; + while($row=pg_fetch_object($result)) + { + $fkt[$i]=$row->funktion; + $i++; + } + + //Aktstatus ermitteln + if(in_array(5,$fkt)) //STGL + $aktstatus = 104; + elseif(in_array(6,$fkt)) //FBL + $aktstatus = 103; + elseif(in_array(2,$fkt)) //FBK + $aktstatus = 102; + elseif(in_array(1,$fkt)) //LKT + $aktstatus = 101; + else + $aktstatus = 100; //Mitarbeiter + + $this->status = $aktstatus; + //neuen akstatus setzen + $qry = "Update person set aktstatus = $aktstatus where person_pk = $person_id"; + if(pg_query($qry)) + { + //Log schreiben + $sql .= $qry; + $qry = "SELECT nextval('log_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim Auslesen der Log-Sequence'; + return false; + } + + $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')"; + if(pg_query($this->conn, $qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim setzen des Aktstatus'; + return false; + } + } + } + + function setaktstatus($status, $person_id) + { + $qry = "Update person set aktstatus = '$status' where person_pk='$person_id'"; + if(!pg_query($this->conn, $qry)) + { + $this->errormsg = 'Fehler beim Setzen des aktuellen Status'.$qry; + return false; + } + return true; + } } ?> \ No newline at end of file diff --git a/include/fas/raumtyp.class.php b/include/fas/raumtyp.class.php index 2df07572e..f162e27a7 100644 --- a/include/fas/raumtyp.class.php +++ b/include/fas/raumtyp.class.php @@ -1,220 +1,126 @@ , - * Andreas Oesterreicher and - * Rudolf Hangl . +/** + * Klasse raumtyp (FAS-Online) + * @create 14-03-2006 */ -/** - * Klasse ortraumtyp (FAS-Online) - * @create 04-12-2006 - */ - class raumtyp { - var $conn; // @var resource DB-Handle - var $new; // @var boolean - var $errormsg; // @var string - var $result = array(); // @var fachbereich Objekt - - //Tabellenspalten - var $beschreibung; // @var string - var $raumtyp_kurzbz; // @var string + var $conn; // @var resource DB-Handle + var $new; // @var boolean + var $errormsg; // @var string + var $result = array(); // @var raumtyp Objekt + var $raumtyp_id; // @var integer + var $bezeichnung; // @var string + var $kurzbezeichnung; // @var string + var $plaetze; // @var integer + var $updateamum; // @var timestamp + var $updatevon; // @var string /** * Konstruktor - * @param $conn Connection zur DB - * $ort_kurzbz und hierarchie ID des zu ladenden OrtRaumtyps + * @param conn Connection zur Datenbank + * raum_id ID des zu ladenden Raumes (default=null) */ - function raumtyp($conn, $raumtyp_kurzbz=null) + function raumtyp($conn, $raum_id=null) { $this->conn = $conn; - if($raumtyp_kurzbz != null) - $this->load($raumtyp_kurzbz); + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + if(!pg_query($conn,$qry)) + { + $this->errormsg = "Encoding konnte nicht gesetzt werden"; + return false; + } + if($raum_id != null) + $this->load($raum_id); } - /** - * Laedt alle verfuegbaren OrtRaumtypen + /** + * Laedt einen Datensatz + * @param $raum_id ID des zu ladenden Datensatzes * @return true wenn ok, false im Fehlerfall */ - function getAll() + function load($raum_id) { - $qry = 'SELECT * FROM tbl_raumtyp order by raumtyp_kurzbz;'; + if(!is_numeric($raum_id) || $raum_id == '') + { + $this->errormsg = 'raum_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "SELECT * FROM raumtyp WHERE raumtyp_pk = '$raum_id';"; if(!$res = pg_query($this->conn, $qry)) { - $this->errormsg = 'Fehler beim Laden der Datensaetze'; + $this->errormsg = 'Fehler beim laden des Datenstatzes'; return false; } - while($row = pg_fetch_object($res)) + if($row = pg_fetch_object($res)) { - $raumtyp_obj = new ort($this->conn); - - $raumtyp_obj->beschreibung = $row->beschreibung; - $raumtyp_obj->raumtyp_kurzbz = $row->raumtyp_kurzbz; - - - $this->result[] = $raumtyp_obj; - } - return true; - } - - /** - * Laedt einen Raumtyp - * @param $raumtyp ID des zu ladenden Raumtyps - * @return true wenn ok, false im Fehlerfall - */ - function load($raumtyp_kurzbz) - { - if($raum_kurzbz == '') - { - $this->errormsg = 'Kein gültiger Schlüssel vorhanden'; - return false; - } - - $qry = "SELECT * FROM tbl_raumtyp WHERE raumtyp_kurzbz = '$raumtyp_kurzbz';"; - - if(!$res = pg_query($this->conn, $qry)) - { - $this->errormsg = 'Fehler beim Laden des Datensatzes'; - return false; - } - - if($row=pg_fetch_object($res)) - { - $this->beschreibung = $row->beschreibung; - $this->raumtyp_kurzbz = $row->kurzbz; - + $this->raumtyp_id = $row->raumtyp_pk; + $this->bezeichnung = $row->bezeichnung; + $this->kurzbezeichnung = $row->kurzbezeichnung; + $this->plaetze = $row->plaetze; + $this->updateamum = $row->creationdate; + $this->updatevon = $row->creationuser; } else { $this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden'; return false; } - return true; } /** - * Loescht einen Datensatz - * @param $raumtyp_kurzbz ID des Datensatzes der geloescht werden soll - * @return true wenn ok, false im Fehlerfall + * Laedt alle Datensaetze + * @return ture wenn ok, false im Fehlerfall */ - function delete($raumtyp_kurzbz) + function getAll() { - $this->errormsg = 'Noch nicht implementiert'; - return false; - } - function addslashes($var) - { - return ($var!=''?"'".addslashes($var)."'":'null'); - } - /** - * Prueft die Gueltigkeit der Variablen - * @return true wenn ok, false im Fehlerfall - */ - function checkvars() - { - $this->beschreibung = str_replace("'",'´',$this->beschreibung); - $this->raumtyp_kurzbz = str_replace("'",'´',$this->raumtyp_kurzbz); - + $qry = "SELECT * FROM raumtyp;"; - //Laenge Pruefen - if(strlen($this->beschreibung)>256) + if(!$res = pg_query($this->conn, $qry)) { - $this->errormsg = "Beschreibung darf nicht laenger als 256 Zeichen sein bei $this->raumtyp_kurzbz - ".$this->beschreibung; + $this->errormsg = 'Fehler beim laden der Datensaetze'; return false; - } - if(strlen($this->raumtyp_kurzbz)>8) + } + + while($row = pg_fetch_object($res)) { - $this->errormsg = "Raumtyp_kurzbz darf nicht laenger als 8 Zeichen sein bei $this->raumtyp_kurzbz"; - return false; - } - $this->errormsg = ''; - return true; + $raum_obj = new raumtyp($this->conn); + + $raum_obj->raumtyp_id = $row->raumtyp_pk; + $raum_obj->bezeichnung = $row->bezeichnung; + $raum_obj->kurzbezeichnung = $row->kurzbezeichnung; + $raum_obj->plaetze = $row->plaetze; + $raum_obj->updateamum = $row->creationdate; + $raum_obj->updatevon = $row->creationuser; + + $this->result[] = $raum_obj; + } + return true; } + /** * Speichert den aktuellen Datensatz * @return true wenn ok, false im Fehlerfall */ - function save() + function save() { - //Gueltigkeit der Variablen pruefen - if(!$this->checkvars()) - return false; - - if($this->new) - { - //Pruefen ob id gültig ist - if($this->raumtyp_kurzbz == '') - { - $this->errormsg = 'Keine gültige ID'; - return false; - } - //Neuen Datensatz anlegen - $qry = 'INSERT INTO tbl_raumtyp (beschreibung, raumtyp_kurzbz) VALUES ('. - $this->addslashes($this->beschreibung).', '. - $this->addslashes($this->raumtyp_kurzbz).');'; - - } - else - { - //bestehenden Datensatz akualisieren - - //Pruefen ob id gueltig ist - if($this->raumtyp_kurzbz == '') - { - $this->errormsg = 'Keine gültige ID'; - return false; - } - - $qry = 'UPDATE tbl_raumtyp SET '. - 'beschreibung='.$this->addslashes($this->beschreibung).' '. - 'WHERE raumtyp_kurzbz = '.$this->addslashes($this->ort_kurzbz).';'; - } - - if(pg_query($this->conn, $qry)) - { - /*//Log schreiben - $sql = $qry; - $qry = "SELECT nextval('log_seq') as id;"; - if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) - { - $this->errormsg = 'Fehler beim Auslesen der Log-Sequence'; - return false; - } - - $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')"; - if(pg_query($this->conn, $qry)) - return true; - else - { - $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; - return false; - }*/ - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern des Datensatzes'; - return false; - } + $this->errormsg = 'Noch nicht Implementiert'; + return false; + } + + /** + * Loescht einen Datensatz + * @return true wenn ok, false im Fehlerfall + */ + function delete($raum_id) + { + $this->errormsg = 'Noch nicht Implementiert'; + return false; } } ?> \ No newline at end of file diff --git a/include/fas/student.class.php b/include/fas/student.class.php deleted file mode 100644 index 2789845c1..000000000 --- a/include/fas/student.class.php +++ /dev/null @@ -1,182 +0,0 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ - -class student extends benutzer -{ - - //Tabellenspalten - var $matrikelnr; - var $prestudent_id; - var $studiengang_kz; - var $semester; - var $verband; - var $gruppe; - - // ************************************************************************* - // * Konstruktor - Uebergibt die Connection und laedt optional einen Studenten - // * @param $conn Datenbank-Connection - // * $student_id Student der geladen werden soll (default=null) - // * $unicode Gibt an ob die Daten mit UNICODE Codierung - // * oder LATIN9 Codierung verarbeitet werden sollen - // ************************************************************************* - function student($conn, $student_id=null, $unicode=false) - { - $this->conn = $conn; - - if($unicode) - $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; - else - $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; - - if(!pg_query($conn,$qry)) - { - $this->errormsg = 'Encoding konnte nicht gesetzt werden'; - return false; - } - - //Student laden - if($student_id!=null) - $this->load($student_id); - } - - // ******************************************* - // * Prueft die Variablen vor dem Speichern - // * auf Gueltigkeit. - // * @return true wenn ok, false im Fehlerfall - // ******************************************* - function validate() - { - if(strlen($this->uid)>16) - { - $this->errormsg = 'UID darf nicht laenger als 16 Zeichen sein'; - return false; - } - if($this->uid=='') - { - $this->errormsg = 'UID muss eingegeben werden'; - return false; - } - if(strlen($this->matrikelnr)>15) - { - $this->errormsg = 'Matrikelnummer darf nicht laenger als 15 Zeichen sein'; - return false; - } - if(strlen($this->updatevon)>32) - { - $this->errormsg = 'Updatevon darf nicht laenger als 32 Zeichen sein'; - return false; - } - if($this->prestudent_id!='' && !is_numeric($this->prestudent_id)) - { - $this->errormsg = 'Prestudent_id muss eine gueltige Zahl sein'; - return false; - } - if(!is_numeric($this->studiengang_kz)) - { - $this->errormsg = 'Studiengang_id muss eine gueltige Zahl sein'; - return false; - } - if(!is_numeric($this->semester)) - { - $this->errormsg = 'Semester muss ein gueltige Zahl sein'; - return false; - } - if(strlen($this->verband)>1) - { - $this->errormsg = 'Verband darf nicht laenger als 1 Zeichen sein'; - return false; - } - if(strlen($this->gruppe)>1) - { - $this->errormsg = 'Gruppe darf nicht laenger als 1 Zeichen sein'; - return false; - } - - return true; - } - - - // ************************************************************ - // * Speichert die Studentendaten in die Datenbank - // * Wenn $new auf true gesetzt ist wird ein neuer Datensatz - // * angelegt, ansonsten der Datensatz mit $person_id upgedated - // * @return true wenn erfolgreich, false im Fehlerfall - // ************************************************************ - function save() - { - //Variablen checken - if(!$this->validate()) - return false; - - pg_query($this->conn,'BEGIN;'); - //Basisdaten speichern - if(!benutzer::save()) - { - pg_query($this->conn,'ROLLBACK;'); - return false; - } - - if($this->new) - { - //Neuen Datensatz anlegen - $qry = "INSERT INTO tbl_student(student_uid, matrikelnr, updateamum, updatevon, prestudent_id, - studiengang_kz, semester, verband, gruppe) - VALUES('".addslashes($this->uid)."',". - $this->addslashes($this->matrikelnr).",". - $this->addslashes($this->updateamum).','. - $this->addslashes($this->updatevon).','. - $this->addslashes($this->prestudent_id).','. - $this->studiengang_kz.','. - $this->semester.','. - ($this->verband!=''?"'".addslashes($this->verband)."'":' ').','. - ($this->gruppe!=''?"'".addslashes($this->gruppe)."'":' ').');'; - } - else - { - //Bestehenden Datensatz updaten - $qry = 'UPDATE tbl_student SET'. - ' matrikelnr='.$this->addslashes($this->matrikelnr).','. - ' updateamum='.$this->addslashes($this->updateamum).','. - ' updatevon='.$this->addslashes($this->updatevon).','. - ' prestudent_id='.$this->addslashes($this->prestudent_id).','. - ' studiengang_kz='.$this->studiengang_kz.','. - ' semester='.$this->semester.','. - ' verband='.$this->addslashes($this->verband).','. - ' gruppe='.$this->addslashes($this->gruppe). - " WHERE student_uid='".addslashes($this->uid)."';"; - } - - if(pg_query($this->conn,$qry)) - { - pg_query($this->conn,'COMMIT;'); - //Log schreiben - return true; - } - else - { - pg_query($this->conn,'ROLLBACK;'); - $this->errormsg = 'Fehler beim Speichern des Studenten-Datensatzes'.$qry; - return false; - } - } -} -?> \ No newline at end of file diff --git a/include/fas/studiengang.class.php b/include/fas/studiengang.class.php index e4cf2fb46..7f9958f3a 100644 --- a/include/fas/studiengang.class.php +++ b/include/fas/studiengang.class.php @@ -22,10 +22,12 @@ class studiengang var $betreuerstunden; // @var float var $emailkuerzel; // @var string var $endedatum; // @var date + var $erhalter_id; // @var integer var $kennzahl; // @var integer var $kennzahl_neu; // @var integer var $kuerzel; // @var string var $name; // @var string + var $nummerintern; // @var integer var $organisationsform; // @var integer var $regelstudiendauer; // @var integer var $regelwochenstunden; // @var integer @@ -36,8 +38,6 @@ class studiengang var $telefonnummer; // @var string var $updateamum; // @var timestamp var $updatevon; // @var string - var $insertamum; // @var timestamp - var $insertvon; // @var string /** * Konstruktor diff --git a/include/fas/studiensemester.class.php b/include/fas/studiensemester.class.php index 4a86a3f7a..f22a474c0 100644 --- a/include/fas/studiensemester.class.php +++ b/include/fas/studiensemester.class.php @@ -1,160 +1,163 @@ , - * Andreas Oesterreicher and - * Rudolf Hangl . +/** + * Klasse studiensemester (FAS-Online) + * @create 15-03-2006 */ - class studiensemester { - var $conn; // resource DB-Handle - var $errormsg; // string - var $new; // boolean - var $studiensemester = array(); // studiensemester Objekt + var $conn; // @var resource DB-Handle + var $new; // @var boolean + var $errormsg; // @var string + var $result = array(); // @var studiensemester Objekt - //Tabellenspalten - var $studiensemester_kurzbz; // varchar(16) - var $start; // date - var $ende; // date + var $studiensemester_id; // @var integer + var $aktuell; // @var boolean + var $art; // @var integer ( 1 = Wintersemester, 2 = Sommersemester ) + var $jahr; // @var integer + var $updateamum; // @var timestamp + var $updatevon; // @var string - // *********************************************************************** - // * Konstruktor - Uebergibt die Connection und laedt optional ein LF - // * @param $conn Datenbank-Connection - // * $studiensemester_kurzbz StSem das geladen werden soll (default=null) - // * $unicode Gibt an ob die Daten mit UNICODE Codierung - // * oder LATIN9 Codierung verarbeitet werden sollen - // *********************************************************************** - function studiensemester($conn, $studiensemester_kurzbz=null, $unicode=false) + /** + * Konstruktor + * @param $conn Connection zur Datenbank + * $stsem_id ID des Studiensemesters das geladen werden soll + */ + function studiensemester($conn, $stsem_id=null) { $this->conn = $conn; - - if($unicode) - $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; - else - $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; - + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; if(!pg_query($conn,$qry)) { - $this->errormsg = 'Encoding konnte nicht gesetzt werden'; + $this->errormsg = "Encoding konnte nicht gesetzt werden"; return false; } - - if($studiensemester_kurzbz != null) - $this->load($studiensemester_kurzbz); + if($stsem_id != null) + $this->load($stsem_id); } - - // ************************************************************** - // * Laedt das Studiensemester mit der uebergebenen ID - // * @param $studiensemester_kurzbz Stsem das geladen werden soll - // ************************************************************** - function load($studiensemester_kurzbz) + + /** + * Laedt den Datensatz mit der ID die uebergeben wird + * @param stsem_id ID des zu ladenden Datensatzes + * @return true wenn ok, false im fehlerfall; + */ + function load($stsem_id) { - $qry = "SELECT * FROM tbl_studiensemester WHERE studiensemester_kurzbz='".addslashes($studiensemester_kurzbz)."'"; - - if(!$result=pg_query($this->conn,$qry)) + //Pruefen ob stsem_id eine gueltige Zahl ist + if(!is_numeric($stsem_id) || $stsem_id == '') { - $this->errormsg = 'Fehler beim lesen des Studiensemesters'; + $this->errormsg = 'stsem_id muss eine gueltige Zahl sein'; return false; } - - if($row = pg_fetch_object($result)) + + //Laden eines Datensatzes + $qry = "SELECT * FROM studiensemester WHERE studiensemester_pk = '$stsem_id';"; + + if(!$res = pg_query($this->conn, $qry)) { - $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; - $this->start = $row->start; - $this->ende = $row->ende; - } - else - { - $this->errormsg = "Es ist kein Studiensemester mit der Kurzbezeichung $studiensemester_kurzbz vorhanden"; + $this->errormsg = 'Fehler beim laden des Datensatzes'; return false; } - + + if($row = pg_fetch_object($res)) + { + $this->studiensemester_id = $row->studiensemester_pk; + $this->aktuell = ($row->aktuell=='J'?true:false); + $this->art = $row->art; + $this->jahr = $row->jahr; + $this->updateamum = $row->creationdate; + $this->updatevon = $row->creationuser; + } + else + { + $this->errormsg = 'Fehler beim laden des Datensatzes'; + return false; + } + return true; } - - // ******************************************* - // * Prueft die Variablen vor dem Speichern - // * auf Gueltigkeit. - // * @return true wenn ok, false im Fehlerfall - // ******************************************* - function validate() + + + /** + * Laedt das aktuelle Studiensemester + * @return true wenn ok, false im Fehlerfall + */ + function load_akt() { - if(strlen($this->studiensemester_kurzbz)>16) + $qry = "SELECT * FROM studiensemester WHERE aktuell='J'"; + + if(!$res = pg_query($this->conn, $qry)) { - $this->errormsg = 'Studiensemester Kurzbezeichnung darf nicht laenger als 16 Zeichen sein'; + $this->errormsg = 'Fehler beim laden des Datensatzes'; return false; } - if($this->studiensemester_kurzbz=='') + + if($row = pg_fetch_object($res)) { - $this->errormsg = 'Es muss eine Kurzbezeichnung eingegeben werden'; + $this->studiensemester_id = $row->studiensemester_pk; + $this->aktuell = ($row->aktuell=='J'?true:false); + $this->art = $row->art; + $this->jahr = $row->jahr; + $this->updateamum = $row->creationdate; + $this->updatevon = $row->creationuser; + } + else + { + $this->errormsg = 'Fehler beim laden des Datensatzes'; return false; } + + return true; + } + + /** + * Laedt alle studiensemester + * @return true wenn ok, false im Fehlerfall + */ + function getAll() + { + $qry = "SELECT * FROM studiensemester order by jahr, art desc;"; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Fehler beim laden des Datensatzes'; + return false; + } + + while($row = pg_fetch_object($res)) + { + $stsem_obj = new studiensemester($this->conn); + + $stsem_obj->studiensemester_id = $row->studiensemester_pk; + $stsem_obj->aktuell = ($row->aktuell=='J'?true:false); + $stsem_obj->art = $row->art; + $stsem_obj->jahr = $row->jahr; + $stsem_obj->updateamum = $row->creationdate; + $stsem_obj->updatevon = $row->creationuser; + + $this->result[] = $stsem_obj; + } return true; } - - // ************************************************ - // * wenn $var '' ist wird "null" zurueckgegeben - // * wenn $var !='' ist werden Datenbankkritische - // * zeichen mit backslash versehen und das ergbnis - // * unter hochkomma gesetzt. - // ************************************************ - function addslashes($var) + + /** + * Loescht einen Datensatz + * @param $stsem_id ID des zu loeschenden Datensatzes + * @return true wenn ok, false im Fehlerfall + */ + function delete($stsem_id) { - return ($var!=''?"'".addslashes($var)."'":'null'); + $this->errormsg = 'Noch nicht implementiert'; + return false; } - - // ************************************************************ - // * Speichert das Studiensemester in die Datenbank - // * Wenn $new auf true gesetzt ist wird ein neuer Datensatz - // * angelegt, ansonsten der Datensatz upgedated - // * @return true wenn erfolgreich, false im Fehlerfall - // ************************************************************ + + /** + * Speichert den aktuellen Datensatz + * @return true wenn ok, false im Fehlerfall + */ function save() { - //Variablen auf Gueltigkeit pruefen - if(!$this->validate()) - return false; - - if($this->new) - { - $qry = "INSERT INTO tbl_studiensemester (studiensemester_kurzbz, start, ende) - VALUES('".addslashes($this->studiensemester_kurzbz)."',". - $this->addslashes($this->start).','. - $this->addslashes($this->ende).');'; - } - else - { - $qry = 'UPDATE tbl_studiensemester SET'. - ' start='.$this->addslashes($this->start).','. - ' ende='.$this->addslashes($this->ende). - " WHERE studiensemester_kurzbz='$this->studiensemester_kurzbz'"; - } - - if(pg_query($this->conn,$qry)) - { - //Log schreiben - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern des Studiensemesters:'.$qry; - return false; - } + $this->errormsg = 'Noch nicht implementiert'; + return false; } } ?> \ No newline at end of file diff --git a/include/fas/feedback.class.php b/include/feedback.class.php similarity index 100% rename from include/fas/feedback.class.php rename to include/feedback.class.php diff --git a/include/ferien.class.php b/include/ferien.class.php index f22e6844b..ddae3748b 100644 --- a/include/ferien.class.php +++ b/include/ferien.class.php @@ -1,88 +1,217 @@ -, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ +/** + * Klasse ferien (FAS-Online) + * @create 07-12-2006 + */ class ferien { - - // @var string - var $bezeichnung; - // @var int - var $studiengang_kz; - // @var string - var $vondatum; - // @var string - var $bisdatum; - // @var timestamp - var $vontimestamp; - // @var timestamp - var $bistimestamp; + var $conn; // @var resource DB-Handle + var $new; // @var boolean + var $errormsg; // @var string + var $result = array(); // @var ferien Objekt - // @var string - var $errormsg; - // @var conn - var $conn; - // @var ferien - var $ferien=array(); - - function ferien($conn) - { - $this->conn=$conn; - } - + //Tabellenspalten + var $bezeichnung; // @var varchar(64) + var $studiengang_kz; // @var integer + var $vondatum; // @var date + var $bisdatum; // @var date /** - * Alle Fachbereiche zurueckgeben - * @return array mit Fachbereichen oder false=fehler + * Konstruktor + * @param $conn Connection zur DB + * $bezeichnung und studiengang_kz ID der zu ladenden Ferien */ - function getAll($stg_kz) + function ferien($conn, $bezeichnung=null, $studiengang_kz=null) { - $sql_query="SELECT * FROM tbl_ferien WHERE studiengang_kz=0 OR studiengang_kz=$stg_kz ORDER BY vondatum"; - if (!$result=@pg_query($this->conn, $sql_query)) + $this->conn = $conn; + if($bezeichnung != null && $studiengang_kz != null && !is_numeric($studiengang_kz)) + $this->load($bezeichnung, studiengang_kz); + } + + /** + * Laedt alle verfuegbaren Feriendaten + * @return true wenn ok, false im Fehlerfall + */ + function getAll() + { + $qry = 'SELECT * FROM lehre.tbl_ferien order by bezeichnung, studiengang_kz;'; + + if(!$res = pg_query($this->conn, $qry)) { - $this->errormsg = pg_errormessage($this->conn); + $this->errormsg = 'Fehler beim Laden der Datensaetze'; return false; } - //$num_rows=pg_numrows($result); - //for ($i=0; $i<$num_rows; $i++) - while ($row=@pg_fetch_object($result)) + + while($row = pg_fetch_object($res)) { - // Record holen - // Instanz erzeugen - $f = new ferien($this->conn); - $f->bezeichnung=$row->bezeichnung; - $f->studiengang_kz = $row->studiengang_kz; - $f->vondatum=$row->vondatum; - $f->bisdatum=$row->bisdatum; - $f->vontimestamp=mktime(0,0,0,substr($row->vondatum,5,2),substr($row->vondatum,8),substr($row->vondatum,0,4));; - $f->bistimestamp=mktime(23,59,59,substr($row->bisdatum,5,2),substr($row->bisdatum,8),substr($row->bisdatum,0,4));; - // in array speichern - $this->ferien[]=$f; + $ferien_obj = new ferien($this->conn); + $ferien_obj->bezeichnung = $row->bezeichnung; + $ferien_obj->studiengang_kz = $row->studiengang_kz; + $ferien_obj->vondatum = $row->vondatum; + $ferien_obj->bisdatum = $row->bisdatum; + + $this->result[] = $ferien_obj; } return true; } - function isferien($timestamp) + /** + * Laedt einen Feriendatensatz + * @param $bezeichnung, studiengang_kz ID der zu ladenden Ferien + * @return true wenn ok, false im Fehlerfall + */ + function load($bezeichnung, $studiengang_kz) { - foreach ($this->ferien AS $f) - if ($timestamp>=$f->vontimestamp && $timestamp<=$f->bistimestamp) - return true; + if($studiengang_kz == '' || !is_numeric($studiengang_kz) || $bezeichnung=='') + { + $this->errormsg = 'ID ungültig'; + return false; + } + + $qry = "SELECT * FROM lehre.tbl_ferien WHERE bezeichnung = '$this->bezeichnung' AND studiengang_kz = '$this->studiengang_kz';"; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Fehler beim Laden des Datensatzes'; + return false; + } + + if($row=pg_fetch_object($res)) + { + $this->bezeichnung = $row->bezeichnung; + $this->studiengang_kz = $row->studiengang_kz; + $this->vondatum = $row->vondatum; + $this->bisdatum = $row->bisdatum; + } + else + { + $this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden'; + return false; + } + + return true; + } + + /** + * Loescht einen Datensatz + * @param $bezeichnung, studiengang_kz id des Datensatzes der geloescht werden soll + * @return true wenn ok, false im Fehlerfall + */ + function delete($bezeichnung, $studiengang_kz) + { + $this->errormsg = 'Noch nicht implementiert'; return false; } + function addslashes($var) + { + return ($var!=''?"'".addslashes($var)."'":'null'); + } + /** + * Prueft die Gueltigkeit der Variablen + * @return true wenn ok, false im Fehlerfall + */ + function checkvars() + { + $this->bezeichnung = str_replace("'",'´',$this->bezeichnung); + + //Laenge Pruefen + if(strlen($this->bezeichnung)>64) + { + $this->errormsg = "Bezeichnung darf nicht laenger als 64 Zeichen sein bei $this->studiengang_kz - $this->bezeichnung"; + return false; + } + $this->errormsg = ''; + return true; + } + /** + * Speichert den aktuellen Datensatz + * @return true wenn ok, false im Fehlerfall + */ + function save() + { + //Gueltigkeit der Variablen pruefen + if(!$this->checkvars()) + return false; + + if($this->new) + { + //Neuen Datensatz anlegen + + if($this->studiengang_kz == '' || !is_numeric($this->studiengang_kz) || $this->bezeichnung=='') + { + $this->errormsg = 'ID ungültig'; + return false; + } + $qry = 'INSERT INTO lehre.tbl_ferien (bezeichnung, studiengang_kz, vondatum, bisdatum) VALUES ('. + $this->addslashes($this->bezeichnung).', '. + $this->addslashes($this->studiengang_kz).', '. + $this->addslashes($this->vondatum).', '. + $this->addslashes($this->bisdatum).'); '; + } + else + { + //bestehenden Datensatz akualisieren + + if($this->studiengang_kz == '' || !is_numeric($this->studiengang_kz) || $this->bezeichnung=='') + { + $this->errormsg = 'ID der Ferien ungültig'; + return false; + } + + $qry = 'UPDATE lehre.tbl_ferien SET '. + 'bezeichnung='.$this->addslashes($this->bezeichnung).', '. + 'studiengang_kz='.$this->addslashes($this->studiengang_kz).', '. + 'vondatum='.$this->addslashes($this->vondatum).', '. + 'bisdatum='.$this->addslashes($this->bisdatum).';'; + } + + if(pg_query($this->conn, $qry)) + { + /*//Log schreiben + $sql = $qry; + $qry = "SELECT nextval('log_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim Auslesen der Log-Sequence'; + return false; + } + + $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')"; + if(pg_query($this->conn, $qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; + return false; + }*/ + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern des Datensatzes - '.$this->uid; + return false; + } + } } ?> \ No newline at end of file diff --git a/include/functions.inc.php b/include/functions.inc.php index 8ee93e955..74525509f 100644 --- a/include/functions.inc.php +++ b/include/functions.inc.php @@ -15,7 +15,7 @@ function get_uid() function check_lektor($uid, $conn) { // uid von View 'Lektor' holen - $sql_query="SELECT uid FROM vw_lektor WHERE uid='$uid'"; + $sql_query="SELECT mitarbeiter_uid FROM tbl_mitarbeiter WHERE mitarbeiter_uid='$uid'"; //echo $sql_query; $result=pg_query($conn, $sql_query) or die(pg_last_error($conn)); $num_rows=pg_numrows($result); @@ -23,7 +23,7 @@ function check_lektor($uid, $conn) if ($num_rows>0) { $row=pg_fetch_object($result); - return $row->uid; + return $row->mitarbeiter_uid; } else return 0; diff --git a/include/funktion.class.php b/include/funktion.class.php index 08dd03f75..2cab6f0be 100644 --- a/include/funktion.class.php +++ b/include/funktion.class.php @@ -1,279 +1,217 @@ -, + * Andreas Oesterreicher and + * Rudolf Hangl . */ +/** + * Klasse funktion (FAS-Online) + * @create 14-03-2006 + */ + class funktion { - + var $conn; // @var resource DB-Handle + var $new; // @var boolean + var $errormsg; // @var string + var $result = array(); // @var fachbereich Objekt + + //Tabellenspalten + var $funktion_kurzbz; // @var integer + var $bezeichnung; // @var string + var $aktiv; // @var boolean + var $ext_id; // @var bigint + + /** - * @var string + * Konstruktor + * @param $conn Connection zur DB + * $funktion_kurzbz ID der zu ladenden Funktion */ - var $kurzbz; - /** - * @var string - */ - var $bezeichnung; - /** - * @var boolean - */ - var $aktiv; - /** - * @var string - */ - var $errormsg; - /** - * @var boolean - */ - var $new=true; - - /** - * @var resource - */ - var $conn; - - function funktion($conn) + function funktion($conn, $funktion_kurzbz=null) { $this->conn = $conn; + if($funktion_kurzbz != null) + $this->load($funktion_kurzbz); } - - + /** - * Ladet die Attribute der Funktion aus der Datenbank. Bei Fehler ist der - * Rueckgabewert 'false' und die Fehlermeldung steht in 'errormsg'. - * @return boolean true=ok, false=fehler + * Laedt alle verfuegbaren Funktionen + * @return true wenn ok, false im Fehlerfall */ - function load($kurzbz) + function getAll() { - $this->kurzbz=$kurzbz; - $qry="select * from tbl_funktion where funktion_kurzbz='$kurzbz'"; - if (is_null($this->conn)) { - return false; - } - if(!($erg=@pg_exec($this->conn, $qry))) + $qry = 'SELECT * FROM tbl_funktion order by funktion_kurzbz;'; + + if(!$res = pg_query($this->conn, $qry)) { - $this->errormsg=pg_errormessage($this->conn); + $this->errormsg = 'Fehler beim laden der Datensaetze'; return false; } - $num_rows=pg_numrows($erg); - if($num_rows!=1) { - $this->errormsg="Zuwenige oder zuviele Ergebnisse (Anzahl: $num_rows)!"; - return false; + + while($row = pg_fetch_object($res)) + { + $funktion_obj = new funktion($this->conn); + + $funktion_obj->funktion_kurzbz = $row->funktion_kurzbz; + $funktion_obj->bezeichnung = $row->bezeichnung; + $funktion_obj->aktiv = $row->aktiv; + + $this->result[] = $funktion_obj; } - $row=pg_fetch_object($erg,0); - $this->bezeichnung=$row->bezeichnung; - $this->aktiv=$row->aktiv=='t'?true:false; - $this->new=false; return true; } - + /** - * Speichert die Funktion in die Datenbank. Bei Fehler ist der Rueckgabewert - * 'false' und die Fehlermeldung steht in 'errormsg'. INSERT oder DELETE wird - * durch 'new' bestimmt. - * @return boolean true=ok, false=fehler + * Laedt eine Funktion + * @param $funktion_kurzbz ID der zu ladenden Funktion + * @return true wenn ok, false im Fehlerfall */ + function load($funktion_kurzbz) + { + if($funktion_kurzbz == '') + { + $this->errormsg = 'funktion_bz darf nicht leer sein'; + return false; + } + + $qry = "SELECT * FROM tbl_funktion WHERE funktion_kurzbz = '$funktion_kurzbz';"; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Fehler beim laden des Datensatzes'; + return false; + } + + if($row=pg_fetch_object($res)) + { + $this->funktion_kurzbz = $row->funktion_kurzbz; + $this->bezeichnung = $row->bezeichnung; + $this->aktiv = $row->aktiv; + } + else + { + $this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden'; + return false; + } + + return true; + } + + /** + * Loescht einen Datensatz + * @param $funktion_id id des Datensatzes der geloescht werden soll + * @return true wenn ok, false im Fehlerfall + */ + function delete($funktion_kurzbz) + { + $this->errormsg = 'Noch nicht implementiert'; + return false; + } + function addslashes($var) + { + return ($var!=''?"'".addslashes($var)."'":'null'); + } + /** + * Speichert den aktuellen Datensatz + * @return true wenn ok, false im Fehlerfall + */ + /** + * Prueft die Gueltigkeit der Variablen + * @return true wenn ok, false im Fehlerfall + */ + function checkvars() + { + $this->bezeichnung = str_replace("'",'´',$this->bezeichnung); + + //Laenge Pruefen + if(strlen($this->bezeichnung)>64) + { + $this->errormsg = "Bezeichnung darf nicht laenger als 128 Zeichen sein bei $this->funktion_kurzbz - $this->bezeichnung"; + return false; + } + + $this->errormsg = ''; + return true; + } function save() { - if (is_null($this->conn)) { - return false; - } - if (strlen($this->kurzbz)==0) - { - $this->errormsg="kurzbz nicht gesetzt"; + //Gueltigkeit der Variablen pruefen + if(!$this->checkvars()) return false; - } - if ($this->new) + + if($this->new) { - $qry="insert into tbl_funktion(funktion_kurzbz,bezeichnung,aktiv) ". - "values('".$this->kurzbz."','".$this->bezeichnung."',".($this->aktiv?'t':'f').")"; - } else - { - $qry="update tbl_funktion set bezeichnung='".$this->bezeichnung."',". - "aktiv=".($this->aktiv?'t':'f')." where funktion_kurzbzb='$this->kurzbz'"; - } - if(!($erg=@pg_exec($this->conn, $qry))) - { - $this->errormsg=pg_errormessage($this->conn); - return false; - } - return true; - } - - /** - * Loescht die Funktion aus der Datenbank. Bei Fehler ist der Rueckgabewert - * 'false' und die Fehlermeldung steht in 'errormsg'. - * @return boolean true=ok, false=fehler - */ - function delete() - { - if (is_null($this->conn)) { - return false; - } - if (strlen($this->kurzbz)==0) - { - $this->errormsg="kurzbz nicht gesetzt"; - return false; - } - $qry="delete from tbl_funktion where funktion_kurzbz='".$this->kurzbz."'"; - if(!($erg=@pg_exec($this->conn, $qry))) - { - $this->errormsg=pg_errormessage($this->conn); - return false; - } - return true; - } - - /** - * alle Personen mit dieser Funktion holen - * @param string $kurzbz Kurzbezeichnung der Funktion (wenn nicht angegeben - * wird lokale $kurzbz verwendet) - * @return array key=personfunktion_id, value=array('person','studiengang_kz'', - * 'studiengang_kurzbz','fachbereich_id', 'fachbereich_kurzbz') oder false, wenn Fehler - */ - function getPersonen($kurzbz='') - { - // Array für Suchergebnis - $result=array(); - - if (strlen($kurzbz)==0) - { - $search_kurzbz=$this->kurzbz; - } else - { - $search_kurzbz=$kurzbz; - } - $qry="select tbl_personfunktion.*,tbl_studiengang.kurzbz as studiengang_kurzbz,tbl_fachbereich.kurzbz as fachbereich_kurzbz from tbl_personfunktion join tbl_person using(uid) ". - "left join tbl_studiengang using(studiengang_kz) ". - "left join tbl_fachbereich using(fachbereich_id) ". - "where funktion_kurzbz='$search_kurzbz' ". - "order by upper(tbl_person.nachname)"; - if (is_null($this->conn)) { - return false; - } - //echo "'".$qry."'"; - if(!($erg=@pg_exec($this->conn, $qry))) - { - $this->errormsg=pg_errormessage($this->conn); - return false; - } - $num_rows=pg_numrows($erg); - for ($i=0;$i<$num_rows;$i++) - { - // Person laden (nicht für große Anzahl von Personen geeignet) - $temp_person=new person($this->conn); - $temp_person->load(pg_result($erg,$i,'uid')); - // und in Array speichern - $result[pg_result($erg,$i,'personfunktion_id')]=array( - 'person'=>$temp_person, - 'studiengang_kz'=>@pg_result($erg,$i,'studiengang_kz'), - 'studiengang_kurzbz'=>@pg_result($erg,$i,'studiengang_kurzbz'), - 'fachbereich_kurzbz'=>@pg_result($erg,$i,'fachbereich_kurzbz'), - 'fachbereich_id'=>@pg_result($erg,$i,'fachbereich_id') - ); - } - return $result; - } - - /** - * Person Funktion dazugeben - * @param string $uid User-ID - * @param string $studiengang_kz Studiengang-Kennzahl (optional) - * @param integer $fachbereich_id optional - * @return boolean true=ok, false=fehler - */ - function addPerson($uid,$studiengang_kz=null,$fachbereich_id=null) - { - if (is_null($this->conn)) { - return false; - } - $targetlist="uid,funktion_kurzbz"; - if (strlen($studiengang_kz)>0) $targetlist.=",studiengang_kz"; - if (strlen($fachbereich_id)>0) $targetlist.=",fachbereich_id"; - $values="'$uid','".$this->kurzbz."'"; - if (strlen($studiengang_kz)>0) $values.=",$studiengang_kz"; - if (strlen($fachbereich_id)>0) $values.=",$fachbereich_id"; - $qry="insert into tbl_personfunktion($targetlist) ". - "values($values)"; - //echo $qry; - if(!($erg=@pg_exec($this->conn, $qry))) - { - $this->errormsg=pg_errormessage($this->conn); - return false; - } - return true; - } - - /** - * Person Funktion wegnehmen - * @param string $uid User-ID - * @param string $studiengang_kz Studiengang-Kennzahl (optional) - * @param integer $fachbereich_id optional - * @return boolean true=ok, false=fehler - */ - function removePerson($personfunktion_id) - { - if (is_null($this->conn)) { - return false; - } - if (strlen($personfunktion_id)==0) { - $this->errormsg="personfunktion_id darf nicht NULL sein"; - return false; - } - $qry="delete from tbl_personfunktion where personfunktion_id=$personfunktion_id"; - if(!($erg=@pg_exec($this->conn, $qry))) - { - $this->errormsg=pg_errormessage($this->conn); - return false; - } - return true; - } - - /** - * Personfunktion aktualisieren - * @param integer $personfunktion ID aus der Zuordnungstabelle - * @param string $uid User-ID - * @param string $studiengang_kz Studiengang-Kennzahl (optional) - * @param integer $fachbereich_id optional - * @return boolean true=ok, false=fehler - */ - function updatePerson($personfunktion_id,$uid,$studiengang_kz=null, - $fachbereich_id=null) { - if (is_null($this->conn)) { - return false; - } - if (strlen($studiengang_kz)>0) - { - $values.=",studiengang_kz=$studiengang_kz "; - } else - { - $values.=",studiengang_kz=NULL "; - } - if (strlen($fachbereich_id)>0) - { - $values.=",fachbereich_id=$fachbereich_id"; - } else - { - if (strlen($studiengang_kz)==0) { - $this->errormsg="Studiengang oder Fachbereich fehlt."; - return false; + //Pruefen ob funktion_kurzbz befüllt ist + if($this->funktion_kurzbz == '') + { + $this->errormsg = 'funktion_kurzbz darf nicht leer sein'; + return false; } - $values.=",fachbereich_id=NULL"; + //Neuen Datensatz anlegen + $qry = 'INSERT INTO tbl_funktion (funktion_kurzbz, bezeichnung, aktiv) VALUES ('. + $this->addslashes($this->funktion_kurzbz).', '. + $this->addslashes($this->bezeichnung).', '. + ($this->aktiv?'true':'false').'); '; } - $qry="update tbl_personfunktion set ". - "uid='$uid'$values ". - "where personfunktion_id=$personfunktion_id"; - //echo $qry; - if(!($erg=@pg_exec($this->conn, $qry))) + else { - $this->errormsg=pg_errormessage($this->conn); + //bestehenden Datensatz akualisieren + + //Pruefen ob fachbereich_id eine gueltige Zahl ist + if( $this->funktion_kurzbz == '') + { + $this->errormsg = 'funktion_kurzbz darf nicht leer sein'; + return false; + } + + $qry = 'UPDATE tbl_funktion SET '. + 'bezeichnung='.$this->addslashes($this->bezeichnung).', '. + 'aktiv='.($this->aktiv?'true':'false') .' '. + 'WHERE funktion_kurzbz = '.$this->addslashes($this->funktion_kurzbz).';'; + } + + if(pg_query($this->conn, $qry)) + { + /*//Log schreiben + $sql = $qry; + $qry = "SELECT nextval('log_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim Auslesen der Log-Sequence'; + return false; + } + + $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')"; + if(pg_query($this->conn, $qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; + return false; + }*/ + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern des Datensatzes'; return false; - } - return true; + } } } ?> \ No newline at end of file diff --git a/include/globals.inc.php b/include/globals.inc.php deleted file mode 100644 index 1d8b54a85..000000000 --- a/include/globals.inc.php +++ /dev/null @@ -1,22 +0,0 @@ - \ No newline at end of file diff --git a/include/fas/reservierung.class.php b/include/gruppe.class.php similarity index 50% rename from include/fas/reservierung.class.php rename to include/gruppe.class.php index 4b4fe00bf..7cccadbb8 100644 --- a/include/fas/reservierung.class.php +++ b/include/gruppe.class.php @@ -20,35 +20,36 @@ * Rudolf Hangl . */ -class reservierung +class gruppe { var $conn; // resource DB-Handle var $errormsg; // string var $new; // boolean - var $reservierungen = array(); // reservierung Objekt + var $gruppen = array(); // gruppen Objekt //Tabellenspalten - var $reservierung_id; // int - var $ort_kurzbz; // varchar(8) - var $studiengang_kz; // int - var $uid; // varchar(16) - var $stunde; // smalint - var $datum; // date - var $titel; // varchar(10) - var $beschreibung; // varchar(32) - var $semester; // smalint - var $verband; // char(1) - var $gruppe; // char(1) - var $gruppe_kurzbz; // varchar(10) - + var $gruppe_kurzbz; // varchar(16) + var $studiengang_kz; // integer + var $bezeichnung; // varchar(32) + var $semester; // smallint + var $sort; // smallint + var $mailgrp; // boolean + var $beschreibung; // varchar(128) + var $sichtbar; // boolean + var $aktiv; // boolean + var $updateamum; // timestamp + var $updatevon; // varchar(16) + var $insertamum; // timestamp + var $insertvon; // varchar(16) + // ************************************************************************* - // * Konstruktor - Uebergibt die Connection und laedt optional eine Reservierung + // * Konstruktor - Uebergibt die Connection und laedt optional eine Gruppe // * @param $conn Datenbank-Connection - // * $reservierung_id + // * $gruppe_kurzbz // * $unicode Gibt an ob die Daten mit UNICODE Codierung // * oder LATIN9 Codierung verarbeitet werden sollen // ************************************************************************* - function reservierung($conn, $reservierung_id=null, $unicode=false) + function gruppe($conn, $gruppe_kurzbz=null, $unicode=false) { $this->conn = $conn; @@ -62,20 +63,40 @@ class reservierung $this->errormsg = 'Encoding konnte nicht gesetzt werden'; return false; } - else - $this->new = true; - if($reservierung_id!=null) - $this->load($reservierung_id); + if($gruppe_kurzbz!=null) + $this->load($gruppe_kurzbz); + } + + // **************************************** + // * Prueft ob bereits eine Gruppe mit der + // * uebergebenen Kurzbezeichnung existiert + // * @param gruppe_kurzbz + // **************************************** + function exists($gruppe_kurzbz) + { + $qry = "SELECT count(*) as anzahl FROM tbl_gruppe WHERE gruppe_kurzbz='".addslashes($gruppe_kurzbz)."'"; + + if($row = pg_fetch_object(pg_query($this->conn,$qry))) + { + if($row->anzahl>0) + return true; + else + return false; + } + else + { + $this->errormsg = 'Fehler bei einer Abfrage: '.$qry; + return false; + } } // ********************************************************* - // * Laedt eine Reservierung - // * @param reservierung_id + // * Laedt die Gruppe + // * @param gruppe_kurzbz // ********************************************************* - function load($reservierung_id) + function load($gruppe_kurzbz) { - $this->errormsg = 'Not implemented'; return false; } @@ -86,9 +107,14 @@ class reservierung // ******************************************* function validate() { - if(strlen($this->ort_kurzbz)>8) + if(strlen($this->gruppe_kurzbz)>16) { - $this->errormsg = 'Ort_Kurzbz darf nicht laenger als 8 Zeichen sein'; + $this->errormsg = 'Gruppe_kurzbz darf nicht laenger als 16 Zeichen sein'; + return false; + } + if($this->gruppe_kurzbz=='') + { + $this->errormsg = 'Gruppe muss angegeben werden'; return false; } if(!is_numeric($this->studiengang_kz)) @@ -96,44 +122,49 @@ class reservierung $this->errormsg = 'Studiengang_kz muss eine gueltige Zahl sein'; return false; } - if(strlen($this->uid)>16) + if(strlen($this->bezeichnung)>32) { - $this->errormsg = 'UID darf nicht laenger als 16 Zeichen sein'; - return false; - } - if(!is_numeric($this->stunde)) - { - $this->errormsg = 'Stunde ist ungueltig'; - return false; - } - if(strlen($this->titel)>10) - { - $this->errormsg = 'Titel darf nicht laenger als 10 Zeichen sein'; - return false; - } - if(strlen($this->beschreibung)>32) - { - $this->beschreibung = 'Beschreibung darf nicht laenger als 32 Zeichen sein'; + $this->errormsg = 'Bezeichnung darf nicht laenger als 32 Zeichen sein'; return false; } if($this->semester!='' && !is_numeric($this->semester)) { - $this->errormsg = 'Semester ist ungueltig'; + $this->errormsg = 'Semester muss eine gueltige Zahl sein'; return false; } - if(strlen($this->verband)>1) + if($this->sort!='' && !is_numeric($this->sort)) { - $this->errormsg = 'Verband darf nicht laenger als 1 Zeichen sein'; + $this->errormsg = 'Typ muss eine gueltige Zahl sein'; return false; } - if(strlen($this->gruppe)>1) + if(!is_bool($this->mailgrp)) { - $this->errormsg = 'Gruppe darf nicht laenger als 1 Zeichen sein'; + $this->errormsg = 'Mailgrp muss ein boolscher wert sein'; return false; } - if(strlen($this->gruppe_kurzbz)>10) + if(strlen($this->beschreibung)>128) { - $this->gruppe_kurzbz = 'Gruppe_kurzbz darf nicht laenger als 10 Zeichen sein'; + $this->errormsg = 'Beschreibung darf nicht laenger als 128 Zeichen sein'; + return false; + } + if(!is_bool($this->sichtbar)) + { + $this->errormsg = 'Sichtbar muss ein boolscher Wert sein'; + return false; + } + if(!is_bool($this->aktiv)) + { + $this->errormsg = 'Aktiv muss ein boolscher Wert sein'; + return false; + } + if(strlen($this->updatevon)>16) + { + $this->errormsg = 'Updatevon darf nicht laenger als 16 Zeichen sein'; + return false; + } + if(strlen($this->insertvon)>16) + { + $this->errormsg = 'Insertvon darf nicht laenger als 16 Zeichen sein'; return false; } @@ -152,63 +183,63 @@ class reservierung } // ************************************************************ - // * Speichert Reservierung in die Datenbank + // * Speichert Gruppe in die Datenbank // * Wenn $new auf true gesetzt ist wird ein neuer Datensatz // * angelegt, ansonsten der Datensatz upgedated // * @return true wenn erfolgreich, false im Fehlerfall // ************************************************************ function save($new=null) { - if(!is_null($new)) - $this->new = $new; - + if(is_null($new)) + $new = $this->new; + //Variablen auf Gueltigkeit pruefen if(!$this->validate()) return false; - if($this->new) - { - $qry = 'INSERT INTO campus.tbl_reservierung (reservierung_id, ort_kurzbz, studiengang_kz, uid, stunde, datum, titel, - beschreibung, semester, verband, gruppe, gruppe_kurzbz) - VALUES('.$this->addslashes($this->reservierung_id).','. - $this->addslashes($this->ort_kurzbz).','. + if($new) + { + $qry = 'INSERT INTO tbl_gruppe (gruppe_kurzbz, studiengang_kz, bezeichnung, semester, sort, + mailgrp, beschreibung, sichtbar, aktiv, + updateamum, updatevon, insertamum, insertvon) + VALUES('.$this->addslashes($this->gruppe_kurzbz).','. $this->addslashes($this->studiengang_kz).','. - $this->addslashes($this->uid).','. - $this->addslashes($this->stunde).','. - $this->addslashes($this->datum).','. - $this->addslashes($this->titel).','. - $this->addslashes($this->beschreibung).','. + $this->addslashes($this->bezeichnung).','. $this->addslashes($this->semester).','. - $this->addslashes($this->verband).','. - $this->addslashes($this->gruppe).','. - $this->addslashes($this->gruppe_kurzbz).');'; + $this->addslashes($this->sort).','. + ($this->mailgrp?'true':'false').','. + $this->addslashes($this->beschreibung).','. + ($this->sichtbar?'true':'false').','. + ($this->aktiv?'true':'false').','. + $this->addslashes($this->updateamum).','. + $this->addslashes($this->updatevon).','. + $this->addslashes($this->insertamum).','. + $this->addslashes($this->insertvon).');'; } else { - $qry = 'UPDATE campus.tbl_reservierung SET'. - ' ort_kurzbz='.$this->addslashes($this->ort_kurzbz).','. + $qry = 'UPDATE tbl_gruppe SET'. ' studiengang_kz='.$this->addslashes($this->studiengang_kz).','. - ' uid='.$this->addslashes($this->uid).','. - ' stunde='.$this->addslashes($this->stunde).','. - ' datum='.$this->addslashes($this->datum).','. - ' titel='.$this->addslashes($this->titel).','. - ' beschreibung='.$this->addslashes($this->beschreibung).','. + ' bezeichnung='.$this->addslashes($this->bezeichnung).','. ' semester='.$this->addslashes($this->semester).','. - ' verband='.$this->addslashes($this->verband).','. - ' gruppe='.$this->addslashes($this->gruppe).','. - ' gruppe_kurzbz='.$this->addslashes($this->gruppe_kurzbz). - " WHERE reservierung_id='".addslashes($this->reservierung_id)."'"; + ' sort='.$this->addslashes($this->sort).','. + ' mailgrp='.($this->mailgrp?'true':'false').','. + ' beschreibung='.$this->addslashes($this->beschreibung).','. + ' sichtbar='.($this->sichtbar?'true':'false').','. + ' aktiv='.($this->aktiv?'true':'false').','. + ' updateamum='.$this->addslashes($this->updateamum).','. + ' updatevon='.$this->addslashes($this->updatevon). + " WHERE gruppe_kurzbz=".$this->addslashes($this->gruppe_kurzbz).";"; } if(pg_query($this->conn,$qry)) { //Log schreiben - $this->new = false; return true; } else { - $this->errormsg = 'Fehler beim Speichern der Reservierung:'.$qry; + $this->errormsg = 'Fehler beim Speichern der Gruppe:'.$qry; return false; } } diff --git a/include/fas/stundenplan.class.php b/include/lehreinheit.class.php similarity index 93% rename from include/fas/stundenplan.class.php rename to include/lehreinheit.class.php index e45338d66..810eeb158 100644 --- a/include/fas/stundenplan.class.php +++ b/include/lehreinheit.class.php @@ -20,18 +20,18 @@ * Rudolf Hangl . */ -class stundenplan +class lehreinheit { var $conn; // resource DB-Handle var $errormsg; // string var $new; // boolean - var $stundenplan = array(); // stundenplan Objekt + var $lehreinheiten = array(); // lehreinheit Objekt //Tabellenspalten var $lehreinheit_id; // integer - var $lehrveranstaltung_nr; // integer + var $lehrveranstaltung_id; // integer var $studiensemester_kurzbz; // varchar(16) - var $lehrfach_nr; // integer + var $lehrfach_id; // integer var $lehrform_kurzbz; // varchar(8) var $stundenblockung; // smalint var $wochenrythmus; // smalint @@ -90,7 +90,7 @@ class stundenplan $this->errormsg = 'Lehreinheit_id muss eine gueltige Zahl sein'; return false; } - if(!is_numeric($this->lehrveranstaltung_nr)) + if(!is_numeric($this->lehrveranstaltung_id)) { $this->errormsg = 'LehrveranstaltungsNr muss eine gueltige Zahl sein'; return false; @@ -105,9 +105,9 @@ class stundenplan $this->errormsg = 'Studiensemester muss angegeben werden'; return false; } - if(!is_numeric($this->lehrfach_nr)) + if(!is_numeric($this->lehrfach_id)) { - $this->errormsg = 'Lehrfach_nr muss eine gueltige Zahl sein'; + $this->errormsg = 'Lehrfach_id muss eine gueltige Zahl sein'; return false; } if(strlen($this->lehrform_kurzbz)>8) @@ -210,12 +210,12 @@ class stundenplan if($new) { //ToDo ID entfernen - $qry = 'INSERT INTO lehre.tbl_lehreinheit (lehrveranstaltung_nr, studiensemester_kurzbz, - lehrfach_nr, lehrform_kurzbz, stundenblockung, wochenrythmus, + $qry = 'INSERT INTO lehre.tbl_lehreinheit (lehrveranstaltung_id, studiensemester_kurzbz, + lehrfach_id, lehrform_kurzbz, stundenblockung, wochenrythmus, start_kw, raumtyp, raumtypalternativ, lehre, anmerkung, unr, ext_id) - VALUES('.$this->addslashes($this->lehrveranstaltung_nr).','. + VALUES('.$this->addslashes($this->lehrveranstaltung_id).','. $this->addslashes($this->studiensemester_kurzbz).','. - $this->addslashes($this->lehrfach_nr).','. + $this->addslashes($this->lehrfach_id).','. $this->addslashes($this->lehrform_kurzbz).','. $this->addslashes($this->stundenblockung).','. $this->addslashes($this->wochenrythmus).','. @@ -230,9 +230,9 @@ class stundenplan else { $qry = 'UPDATE lehre.tbl_lehreinheit SET'. - ' lehrveranstaltung_nr='.$this->addslashes($this->lehrveranstaltung_nr).','. + ' lehrveranstaltung_nr='.$this->addslashes($this->lehrveranstaltung_id).','. ' studiensemester_kurzbz='.$this->addslashes($this->studiensemester_kurzbz).','. - ' lehrfach_nr='.$this->addslashes($this->lehrfach_nr).','. + ' lehrfach_id='.$this->addslashes($this->lehrfach_id).','. ' lehrform_kurzbz='.$this->addslashes($this->lehrform_kurzbz).','. ' stundenblockung='.$this->addslashes($this->stundenblockung).','. ' wochenrythmus='.$this->addslashes($this->wochenrythmus).','. diff --git a/include/fas/lehreinheitgruppe.class.php b/include/lehreinheitgruppe.class.php similarity index 100% rename from include/fas/lehreinheitgruppe.class.php rename to include/lehreinheitgruppe.class.php diff --git a/include/fas/lehreinheitmitarbeiter.class.php b/include/lehreinheitmitarbeiter.class.php similarity index 100% rename from include/fas/lehreinheitmitarbeiter.class.php rename to include/lehreinheitmitarbeiter.class.php diff --git a/include/lehrfach.class.php b/include/lehrfach.class.php index 86ca6065e..bd7930e64 100644 --- a/include/lehrfach.class.php +++ b/include/lehrfach.class.php @@ -1,206 +1,232 @@ -conn=$conn; - } - - /** - * Ladet einen Datensatz mit der id $id - * @param $id lehrfach_nr - * @return true wenn erfolgreich sonst false - */ - function load($id) - { - $sql_query = "Select * from tbl_lehrfach where lehrfach_nr=$id"; - if($result=pg_exec($sql_query)) - { - if($row=pg_fetch_object($result)) - { - $this->lehrfach_nr = $id; - $this->studiengang_kz = $row->studiengang_kz; - $this->fachbereich_id = $row->fachbereich_id; - $this->kurzbz = $row->kurzbz; - $this->bezeichnung = $row->bezeichnung; - $this->lehrevz = $row->lehrevz; - $this->farbe = $row->farbe; - //$this->lehrform = $row->lehrform; - $this->aktiv = $row->aktiv; - $this->ects = $row->ects; - $this->semester = $row->semester; - $this->sprache = $row->sprache; - return true; - } - } - return false; - } - - /** - * Liefert die Tabellenelemente die den Kriterien der Parameter entsprechen - * @param $stg Studiengangs_kz - * $sem Semester - * $order Sortierkriterium - * $fachb fachbereichs_id - * @return array mit Fachbereichen oder false=fehler - */ - function getTab($stg='-1',$sem='-1', $order='lehrfach_nr', $fachb='-1',$lehre='') - { - - $sql_query = "SELECT * FROM tbl_lehrfach"; - - if($stg!=-1 || $sem!=-1 || $fachb!=-1) - $sql_query .= " WHERE true"; - - if($stg!=-1) - { - $sql_query .= " AND studiengang_kz=$stg"; - } - - if($sem!=-1) - { - $sql_query .= " AND semester=$sem"; - } - - if($fachb!=-1) - { - $sql_query .= " AND fachbereich_id=$fachb"; - } - - if($lehre!='') - { - $sql_query .= " AND lehre=$lehre"; - } - - $sql_query .= " ORDER BY $order"; - - if($result=pg_exec($this->conn,$sql_query)) - { - while($row=pg_fetch_object($result)) - { - $l = new lehrfach($this->conn); - $l->lehrfach_nr = $row->lehrfach_nr; - $l->fachbereich_id = $row->fachbereich_id; - $l->kurzbz = $row->kurzbz; - $l->bezeichnung = $row->bezeichnung; - $l->lehrevz = $row->lehrevz; - $l->farbe = $row->farbe; - //$l->lehrform_kurzbz = $row->lehrform_kurzbz; - $l->aktiv = $row->aktiv; - $l->ects = $row->ects; - $l->studiengang_kz = $row->studiengang_kz; - $l->semester = $row->semester; - $this->fkterg[]=$l; - } - } - else - { - $this->errormsg = pg_errormessage($this->conn); - return false; - } - return true; - } - - /** - * Alle Fachbereiche zurückgeben - * @return array mit Fachbereichen oder false=fehler - */ - function getAll() - { - if (is_null($this->conn)) - { - return false; - } - $qry = "select * from tbl_lehrfach ". - "order by kurzbz"; - //echo $qry; - if (!($erg = pg_exec($this->conn, $qry))) - { - $this->errormsg = pg_errormessage($this->conn); - return false; - } - $result = array(); - $num_rows = pg_numrows($erg); - for ($i = 0; $i < $num_rows; $i ++) - { - // Record holen - $row = pg_fetch_object($erg, $i); - // Instanz erzeugen - $lf = new lehrfach($this->conn); - $lf->lehrfach_nr = $row->lehrfach_nr; - $lf->fachbereich_id = $row->fachbereich_id; - $lf->kurzbz = $row->kurzbz; - $lf->bezeichnung = $row->bezeichnung; - $lf->lehrelink = $row->lehrelink; - $lf->farbe = $row->farbe; - //$lf->lehrform_kurzbz = $row->lehrform_kurzbz; - $lf->aktiv = $row->aktiv; - $lf->ects = $row->ects; - $lf->studiengang_kz = $row->studiengang_kz; - // in array speichern - $result[] = $lf; - } - return $result; - } -} +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ + +class lehrfach +{ + var $conn; // resource DB-Handle + var $errormsg; // string + var $new; // boolean + var $lehrfaecher = array(); // lehrfach Objekt + + //Tabellenspalten + var $lehrfach_id; // integer + var $studiengang_kz; // integer + var $fachbereich_kurzbz;// integer + var $kurzbz; // varchar(12) + var $bezeichnung; // varchar(255) + var $farbe; // char(6) + var $aktiv; // boolean + var $semester; // smallint + var $sprache; // varchar(16) + + // *********************************************************************** + // * Konstruktor - Uebergibt die Connection und laedt optional ein LF + // * @param $conn Datenbank-Connection + // * $lehrfach_nr Lehrfach das geladen werden soll (default=null) + // * $unicode Gibt an ob die Daten mit UNICODE Codierung + // * oder LATIN9 Codierung verarbeitet werden sollen + // *********************************************************************** + function lehrfach($conn, $lehrfach_id=null, $unicode=false) + { + $this->conn = $conn; + + if($unicode) + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + else + $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; + + if(!pg_query($conn,$qry)) + { + $this->errormsg = 'Encoding konnte nicht gesetzt werden'; + return false; + } + + if($lehrfach_id != null) + $this->load($lehrfach_id); + } + + // ********************************************************* + // * Laedt Lehrfach mit der uebergebenen ID + // * @param $lehrfach_nr Nr des LF das geladen werden soll + // ********************************************************* + function load($lehrfach_id) + { + //lehrfach_nr auf Gueltigkeit pruefen + if(is_numeric($lehrfach_id) && $lehrfach_id!='') + { + $qry = "SELECT * FROM lehre.tbl_lehrfach WHERE lehrfach_id='$lehrfach_id'"; + + if(!$result=pg_query($this->conn,$qry)) + { + $this->errormsg = 'Fehler beim lesen des Lehrfaches'; + return false; + } + + if($row = pg_fetch_object($result)) + { + $this->lehrfach_id = $row->lehrfach_id; + $this->studiengang_kz = $row->studiengang_kz; + $this->fachbereich_kurzbz = $row->fachbereich_kurzbz; + $this->kurzbz = $row->kurzbz; + $this->bezeichnung = $row->bezeichnung; + $this->farbe = $row->farbe; + $this->aktiv = ($row->aktiv=='t'?true:false); + $this->semester = $row->semester; + $this->sprache = $row->sprache; + } + else + { + $this->errormsg = 'Es ist kein Lehrfach mit der ID '.$lehrfach_id.' vorhanden'; + return false; + } + + return true; + } + else + { + $this->errormsg = 'Die lehrfach_nr muss eine gueltige Zahl sein'; + return false; + } + } + + // ******************************************* + // * Prueft die Variablen vor dem Speichern + // * auf Gueltigkeit. + // * @return true wenn ok, false im Fehlerfall + // ******************************************* + function validate() + { + if(!is_numeric($this->studiengang_kz)) + { + $this->errormsg = 'Studiengang_kz muss eine gueltige Zahl sein'; + return false; + } + if(strlen($this->fachbereich_kurzbz)>16) + { + $this->errormsg = 'Fachbereich_kurzbz darf nicht laenger als 16 Zeichen sein'; + return false; + } + if(strlen($this->kurzbz)>12) + { + $this->errormsg = 'Kurzbezeichnung darf nicht laenger als 12 Zeichen sein'; + return false; + } + if(strlen($this->bezeichnung)>255) + { + $this->errormsg = 'Bezeichnung darf nicht laenger als 255 Zeichen sein'; + return false; + } + if(strlen($this->farbe)>6) + { + $this->errormsg = 'Farbe darf nicht laenger als 6 Zeichen sein'; + return false; + } + if(!is_bool($this->aktiv)) + { + $this->errormsg = 'Aktiv muss ein boolscher Wert sein'; + return false; + } + if($this->semester!='' && !is_numeric($this->semester)) + { + $this->errormsg = 'Semester muss eine Zahl sein'; + return false; + } + if(strlen($this->sprache)>16) + { + $this->errormsg = 'Sprache darf nicht laenger als 16 Zeichen sein'; + return false; + } + + return true; + } + + // ************************************************ + // * wenn $var '' ist wird "null" zurueckgegeben + // * wenn $var !='' ist werden Datenbankkritische + // * zeichen mit backslash versehen und das ergbnis + // * unter hochkomma gesetzt. + // ************************************************ + function addslashes($var) + { + return ($var!=''?"'".addslashes($var)."'":'null'); + } + + // ************************************************************ + // * Speichert das Lehrfach in die Datenbank + // * Wenn $new auf true gesetzt ist wird ein neuer Datensatz + // * angelegt, ansonsten der Datensatz mit $lehrfach_nr upgedated + // * @return true wenn erfolgreich, false im Fehlerfall + // ************************************************************ + function save() + { + //Variablen auf Gueltigkeit pruefen + if(!$this->validate()) + return false; + + if($this->new) + { + $qry = 'INSERT INTO lehre.tbl_lehrfach (lehrfach_id, studiengang_kz, fachbereich_kurzbz, kurzbz, + bezeichnung, farbe, aktiv, semester, sprache) + VALUES('.$this->addslashes($this->lehrfach_id).','. + $this->addslashes($this->studiengang_kz).','. + $this->addslashes($this->fachbereich_kurzbz).','. + $this->addslashes($this->kurzbz).','. + $this->addslashes($this->bezeichnung).','. + $this->addslashes($this->farbe).','. + ($this->aktiv?'true':'false').','. + $this->addslashes($this->semester).','. + $this->addslashes($this->sprache).');'; + } + else + { + //lehrfach_nr auf Gueltigkeit pruefen + if(!is_numeric($this->lehrfach_nr)) + { + $this->errormsg = 'Lehrfach_nr muss eine gueltige Zahl sein'; + return false; + } + + $qry = 'UPDATE lehre.tbl_lehrfach SET'. + ' studiengang_kz='.$this->addslashes($this->studiengang_kz).','. + ' fachbereich_kurzbz='.$this->addslashes($this->fachbereich_kurzbz).','. + ' kurzbz='.$this->addslashes($this->kurzbz).','. + ' bezeichnung='.$this->addslashes($this->bezeichnung).','. + ' farbe='.$this->addslashes($this->farbe).','. + ' aktiv='.($this->aktiv?'true':'false').','. + ' semester='.$this->semester.','. + ' sprache='.$this->addslashes($this->sprache). + " WHERE lehrfach_id='$this->lehrfach_id'"; + } + + if(pg_query($this->conn,$qry)) + { + //Log schreiben + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern des Lehrfaches:'.$qry; + return false; + } + } +} ?> \ No newline at end of file diff --git a/include/lehrform.class.php b/include/lehrform.class.php index 094822551..e33a8502d 100644 --- a/include/lehrform.class.php +++ b/include/lehrform.class.php @@ -1,62 +1,166 @@ -conn = $conn; - } - - /** - * Alle Fachbereiche zurückgeben - * @return array mit Fachbereichen oder false=fehler - */ - function getAll() - { - if (is_null($this->conn)) - { - return false; - } - $qry = "select lehrform_kurzbz, bezeichnung from tbl_lehrform ". - "order by lehrform_kurzbz"; - //echo $qry; - if (!($erg = pg_exec($this->conn, $qry))) - { - $this->errormsg = pg_errormessage($this->conn); - return false; - } - $result = array(); - $num_rows = pg_numrows($erg); - for ($i = 0; $i < $num_rows; $i ++) - { - // Record holen - $row = pg_fetch_object($erg, $i); - // Instanz erzeugen - $lf = new lehrform($this->conn); - $lf->kurzbz = $row->lehrform_kurzbz; - $lf->bezeichnung = $row->bezeichnung; - // in array speichern - $result[] = $lf; - } - return $result; - } -} +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ + +class lehrform +{ + var $conn; // resource DB-Handle + var $errormsg; // string + var $new; // boolean + var $lehrform = array(); // lehrform Objekt + + //Tabellenspalten + var $lehrform_kurbz; // varchar(8) + var $bezeichnung; // varchar (256) + var $verplanen; // boolean + + // ************************************************************************* + // * Konstruktor - Uebergibt die Connection und laedt optional eine Lehrform + // * @param $conn Datenbank-Connection + // * $lehrform_kurbz Lehrform die geladen werden soll (default=null) + // * $unicode Gibt an ob die Daten mit UNICODE Codierung + // * oder LATIN9 Codierung verarbeitet werden sollen + // ************************************************************************* + function lehrform($conn, $lehrform_kurzbz=null, $unicode=false) + { + $this->conn = $conn; + + if($unicode) + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + else + $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; + + if(!pg_query($conn,$qry)) + { + $this->errormsg = 'Encoding konnte nicht gesetzt werden'; + return false; + } + + if($lehrform_kurzbz != null) + $this->load($lehrform_kurzbz); + } + + // ********************************************************* + // * Laedt Lehrform mit der uebergebenen ID + // * @param $lehrform_kurzbz Lehrform die geladen werden soll + // ********************************************************* + function load($lehrform_kurzbz) + { + $qry = "SELECT * FROM lehre.tbl_lehrform WHERE lehrform_kurzbz='".addslashes($lehrfach_nr)."'"; + if(!$result=pg_query($this->conn,$qry)) + { + $this->errormsg = 'Fehler beim lesen der Lehrform'; + return false; + } + + if($row = pg_fetch_object($result)) + { + $this->lehrform_kurbz = $row->lehrform_kurzbz; + $this->bezeichnung = $row->bezeichung; + $this->verplanen = ($row->verplanen?true:false); + } + else + { + $this->errormsg = 'Es ist keine Lehrform mit der Kurzbz '.$lehrform_kurzbz.' vorhanden'; + return false; + } + + return true; + + } + + // ******************************************* + // * Prueft die Variablen vor dem Speichern + // * auf Gueltigkeit. + // * @return true wenn ok, false im Fehlerfall + // ******************************************* + function validate() + { + if(strlen($this->lehrform_kurbz)>8) + { + $this->errormsg = 'Lehrform Kurzbezeichnung darf nicht laenger als 8 Zeichen sein.'; + return false; + } + if(strlen($this->bezeichnung)>256) + { + $this->errormsg = 'Bezeichnung darf nicht laenger als 256 Zeichen sein'; + return false; + } + if(!is_bool($this->verplanen)) + { + $this->errormsg = 'Verplanen muss ein boolscher Wert sein'; + return false; + } + + return true; + } + + // ************************************************ + // * wenn $var '' ist wird "null" zurueckgegeben + // * wenn $var !='' ist werden Datenbankkritische + // * zeichen mit backslash versehen und das ergbnis + // * unter hochkomma gesetzt. + // ************************************************ + function addslashes($var) + { + return ($var!=''?"'".addslashes($var)."'":'null'); + } + + // ************************************************************ + // * Speichert die Lehrform in die Datenbank + // * Wenn $new auf true gesetzt ist wird ein neuer Datensatz + // * angelegt, ansonsten der Datensatz mit $lehrfach_nr upgedated + // * @return true wenn erfolgreich, false im Fehlerfall + // ************************************************************ + function save() + { + //Variablen auf Gueltigkeit pruefen + if(!$this->validate()) + return false; + + if($this->new) + { + $qry = "INSERT INTO lehre.tbl_lehrform (lehrform_kurzbz, bezeichnung, verplanen) + VALUES('".addslashes($this->lehrform_kurzbz)."',". + $this->addslashes($this->bezeichnung).','. + ($this->verplanen?'true':'false').');'; + } + else + { + $qry = 'UPDATE lehre.tbl_lehrform SET'. + ' bezeichnung='.$this->addslashes($this->bezeichnung).','. + ' verplanen='.($this->verplanen?'true':'false'). + " WHERE lehrform_kurzbz='$this->lehrform_kurzbz'"; + } + + if(pg_query($this->conn,$qry)) + { + //Log schreiben + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern der Lehrform:'.$qry; + return false; + } + } +} ?> \ No newline at end of file diff --git a/include/lehrfunktion.class.php b/include/lehrfunktion.class.php new file mode 100644 index 000000000..a2bd65a33 --- /dev/null +++ b/include/lehrfunktion.class.php @@ -0,0 +1,124 @@ +conn = $conn; + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + if(!pg_query($conn,$qry)) + { + $this->errormsg = "Encoding konnte nicht gesetzt werden"; + return false; + } + if($lehrfkt_id != null) + $this->load($lehrfkt_id); + } + + /** + * Laedt eine Lehrfunktion + * @param lehrfkt_id ID des Datensatzes der zu laden ist + * @return true wenn ok, false im Fehlerfall + */ + function load($lehrfkt_id) + { + if(!is_numeric($lehrfkt_id) || $lehrfkt_id == '') + { + $this->errormsg = 'lehrfunktion_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "SELECT * FROM lehrfunktion WHERE lehrfunktion_pk = '$lehrfkt_id';"; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Fehler beim laden des Datensatzes'; + return false; + } + + if($row = pg_fetch_object($res)) + { + $this->lehrfunktion_id = $row->lehrfunktion_pk; + $this->bezeichnung = $row->bezeichnung; + $this->standardfaktor = $row->standardfaktor; + $this->updateamum = $row->creationdate; + $this->updatevon = $row->creationuser; + } + else + { + $this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden'; + return false; + } + return true; + } + + /** + * Laedt alle Lehrfunktionen + * @return true wenn ok, false im Fehlerfall + */ + function getAll() + { + $qry = "SELECT * FROM lehrfunktion;"; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Fehler beim laden der Datensaetze'; + return false; + } + + while($row = pg_fetch_object($res)) + { + $lehrfkt_obj = new lehrfunktion($this->conn); + + $lehrfkt_obj->lehrfunktion_id = $row->lehrfunktion_id; + $lehrfkt_obj->bezeichnung = $row->bezeichnung; + $lehrfkt_obj->standardfaktor = $row->standardfaktor; + $lehrfkt_obj->updateamum = $row->creationdate; + $lehrfkt_obj->updatevon = $row->creationuser; + + $this->result[] = $lehrfkt_obj; + } + return true; + } + + /** + * Speichert den aktuellen Datensatz in die Datenbank + * @return true wenn ok, false im Fehlerfall + */ + function save() + { + $this->errormsg = 'Noch nicht implementiert'; + return false; + } + + /** + * Loescht den Datensatz mit der ID die uebergeben wird + * @param lehrfkt_id ID des zu loeschenden Datensatzes + * @return true wenn ok, false im Fehlerfall + */ + function delete($lehrfkt_id) + { + $this->errormsg = 'Noch nicht implementiert'; + return false; + } +} +?> \ No newline at end of file diff --git a/include/lehrstunde.class.php b/include/lehrstunde.class.php deleted file mode 100644 index 9e5a19376..000000000 --- a/include/lehrstunde.class.php +++ /dev/null @@ -1,457 +0,0 @@ -conn=$conn; - $this->new=TRUE; - } - - - /** - * Einen Datensatz laden - * - */ - function load($stundenplan_id,$stpl_table='stundenplandev') - { - /////////////////////////////////////////////////////////////////////// - // Parameter Checken - // Bezeichnung der Stundenplan-Tabelle und des Keys - $stpl_id=$stpl_table.TABLE_ID; - $stpl_view=VIEW_BEGIN.$stpl_table; - $stpl_table=TABLE_BEGIN.$stpl_table; - - $sql_query="SELECT * FROM $stpl_view WHERE $stpl_id=$stundenplan_id;"; - //echo $sql_query.'
    '; - - - //Datenbankabfrage - if (! $stpl_tbl=pg_query($this->conn, $sql_query)) - { - $this->errormsg=pg_last_error($this->conn); - //echo $this->errormsg; - return false; - } - $this->anzahl=pg_numrows($stpl_tbl); - //Daten uebernehmen - if ($this->anzahl!=1) - { - $this->errormsg='Keinen Datensatz gefunden'; - return false; - } - else - { - $row=pg_fetch_object ($stpl_tbl); - $this->stundenplan_id=$row->{$stpl_id}; - $this->unr=$row->unr; - $this->lektor_uid=$row->uid; - $this->lektor_kurzbz=$row->lektor; - $this->datum=$row->datum; - $this->stunde=$row->stunde; - $this->ort_kurzbz=$row->ort_kurzbz; - $this->lehrfach=$row->lehrfach; - $this->lehrfach_bez=$row->lehrfach_bez; - $this->lehrfach_nr=$row->lehrfach_nr; - $this->lehrform=$row->lehrform; - $this->studiengang_kz=$row->studiengang_kz; - $this->studiengang=$row->stg_kurzbz; - $this->sem=$row->semester; - $this->ver=$row->verband; - $this->grp=$row->gruppe; - $this->einheit_kurzbz=$row->einheit_kurzbz; - $this->titel=$row->titel; - $this->anmerkung=$row->anmerkung; - $this->updateamum=$row->updateamum; - $this->updatevon=$row->updatevon; - $this->new=false; - } - return true; - } - - /** - * Datensatz in DB speichern - * - */ - function save($uid, $stpl_table='stundenplandev') - { - // Parameter Checken - // Bezeichnung der Stundenplan-Tabelle und des Keys - $stpl_id=$stpl_table.TABLE_ID; - $stpl_table=TABLE_BEGIN.$stpl_table; - if ($this->new) - { - // insert - } - else - { - // update - $sql_query='UPDATE '.$stpl_table; - $sql_query.=" SET datum='$this->datum', stunde=$this->stunde"; - $sql_query.=", ort_kurzbz='$this->ort_kurzbz', uid='$this->lektor_uid'"; - $sql_query.=", updateamum=now(), updatevon='$uid'"; - $sql_query.=" WHERE $stpl_id=$this->stundenplan_id"; - //echo $sql_query."
    "; - - //Datenbankabfrage - if (! @pg_query($this->conn, $sql_query)) - { - $this->errormsg=$sql_query.pg_last_error($this->conn); - //echo $this->errormsg; - return false; - } - //$this->errormsg.=$sql_query; - } - - return true; - } - - /** - * Datensatz aus DB entfernen - * @param id ID des Datensatzes in der Tabelle - * @param stpl_table Name der Tabelle - * - */ - function delete($id, $stpl_table='stundenplandev') - { - // Parameter Checken - // Bezeichnung der Stundenplan-Tabelle und des Keys - $stpl_id=$stpl_table.TABLE_ID; - $stpl_table=TABLE_BEGIN.$stpl_table; - // Delete SQL vorbereiten - $sql_query='DELETE FROM '.$stpl_table; - $sql_query.=" WHERE $stpl_id=$id"; - //echo $sql_query."
    "; - - //Datenbankrequest - if (! pg_query($this->conn, $sql_query)) - { - $this->errormsg=$sql_query.pg_last_error($this->conn); - //echo $this->errormsg; - return false; - } - else - return true; - } - - /** - * @param type (student, lektor, lehrverband, einheit, ort, ....) - * @param datum_von (inklusive) Startdatum der Abfrage - * @param datum_bis (exklusive) Enddatum der Abfrage - * @param uid (des Lektors oder Studenten) kann auch NULL sein - * @param ort_kurzbz (Kurzbezeichnung des Orts) kann auch NULL sein - * @param studiengang_kz - * @param sem - * @param ver - * @param grp - * @param einheit_kurzbz - * - */ - function load_lehrstunden($type, $datum_von, $datum_bis, $uid, $ort_kurzbz=NULL, $studiengang_kz=NULL, $sem=NULL, $ver=NULL, $grp=NULL, $einheit_kurzbz=NULL, $stpl_view='stundenplan') - { - /////////////////////////////////////////////////////////////////////// - // Parameter Checken - // Bezeichnung der Stundenplan-Tabelle und des Keys - $stpl_id=$stpl_view.TABLE_ID; - $stpl_view=VIEW_BEGIN.$stpl_view; - // Datum im Format YYYY-MM-TT ? - if (!ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})",$datum_von) ) - { - $this->errormsg='Fehler: Startdatum hat falsches Format!'; - return -1; - } - if (!ereg("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})",$datum_bis) ) - { - $this->errormsg='Fehler: Enddatum hat falsches Format!'; - return -1; - } - // Person - if (($type=='student' || $type=='lektor') && $uid==NULL) - { - $this->errormsg='Fehler: uid der Person ist nicht gesetzt'; - return -1; - } - // Ort - if ($type=='ort' && $ort_kurzbz==NULL) - { - $this->errormsg='Fehler: Kurzbezeichnung des Orts ist nicht gesetzt'; - return -1; - } - // Einheit - if ($type=='einheit' && $einheit_kurzbz==NULL) - { - $this->errormsg='Fehler: Kurzbezeichnung der Einheit ist nicht gesetzt'; - return -1; - } - - /////////////////////////////////////////////////////////////////////// - // Zusaetzliche Daten ermitteln - // Personendaten - if ($type=='student') - { - // Lehrverband ermitteln - $sql_query="SELECT studiengang_kz, semester, verband, gruppe FROM tbl_student WHERE uid='$uid'"; - //echo $sql_query; - if (! $result=@pg_query($this->conn, $sql_query) ) - { - $this->errormsg=pg_last_error($this->conn); - return -2; - } - $num_rows=pg_num_rows($result); - if ($num_rows>0) - $row=pg_fetch_object($result); - else - { - $this->errormsg='Fehler: Student ('.$uid.') wurde nicht gefunden!'; - return -2; - } - $studiengang_kz=$row->studiengang_kz; - $sem=$row->semester; - $ver=$row->verband; - $grp=$row->gruppe; - - // Einheiten ermitteln - $sql_query="SELECT einheit_kurzbz FROM tbl_einheitstudent WHERE uid='$uid'"; - //echo $sql_query; - if (! $result_einheit=@pg_query($this->conn, $sql_query) ) - { - $this->errormsg=pg_last_error($this->conn); - return -2; - } - $num_rows_einheit=pg_num_rows($result_einheit); - } - - /////////////////////////////////////////////////////////////////////// - // Stundenplandaten ermitteln - // Abfrage generieren - $sql_query_stdplan='SELECT * FROM '.$stpl_view; - $sql_query=" WHERE datum>='$datum_von' AND datum<'$datum_bis'"; - if ($type=='lektor') - $sql_query.=" AND uid='$uid'"; - elseif ($type=='ort') - $sql_query.=" AND ort_kurzbz='$ort_kurzbz'"; - elseif ($type=='einheit') - $sql_query.=" AND einheit_kurzbz='$einheit_kurzbz'"; - else - { - $sql_query.=' AND ( (studiengang_kz='.$studiengang_kz; - if ($sem!='0' && $sem!=null && $sem!=0 && $sem!='') - { - $sql_query.=" AND (semester=$sem OR semester IS NULL"; - if ($type=='student') - $sql_query.=' OR semester='.($sem+1); - $sql_query.=')'; - } - if ($ver!='0' && $ver!=null && $ver!='') - $sql_query.=" AND (verband='$ver' OR verband IS NULL OR verband='0' OR verband='')"; - if ($grp!='0' && $grp!=null && $grp!='') - $sql_query.=" AND (gruppe='$grp' OR gruppe IS NULL OR gruppe='0' OR gruppe='')"; - if ($type=='student') - $sql_query.=' AND einheit_kurzbz IS NULL'; - $sql_query.=' )'; - for ($i=0;$i<$num_rows_einheit;$i++) - { - $row=pg_fetch_object($result_einheit,$i); - $sql_query.=" OR einheit_kurzbz='$row->einheit_kurzbz'"; - } - $sql_query.=')'; - } - $sql_query.=' ORDER BY datum, stunde, studiengang_kz, semester, verband, gruppe, einheit_kurzbz, uid'; - $sql_query_stdplan.=$sql_query; - //echo ''; - - //Datenbankabfrage - if (! $stpl_tbl=pg_query($this->conn, $sql_query_stdplan)) - { - $this->errormsg=pg_last_error($this->conn); - //echo $this->errormsg; - return -2; - } - $num_rows=pg_numrows($stpl_tbl); - $this->anzahl=$num_rows; - //Daten uebernehmen - for ($i=0;$i<$num_rows;$i++) - { - $row=pg_fetch_object ($stpl_tbl, $i); - $stunde=new lehrstunde($this->conn); - $stunde->stundenplan_id=$row->{$stpl_id}; - $stunde->unr=$row->unr; - $stunde->lektor_uid=$row->uid; - $stunde->lektor_kurzbz=$row->lektor; - $stunde->datum=$row->datum; - $stunde->stunde=$row->stunde; - $stunde->ort_kurzbz=$row->ort_kurzbz; - $stunde->lehrfach=$row->lehrfach; - $stunde->lehrfach_bez=$row->lehrfach_bez; - $stunde->lehrfach_nr=$row->lehrfach_nr; - $stunde->lehrform=$row->lehrform; - if ($row->farbe!=' ' && $row->farbe!=null) - $stunde->farbe=$row->farbe; - else - $stunde->farbe='FFFFFF'; - $stunde->studiengang_kz=$row->studiengang_kz; - $stunde->studiengang=$row->stg_kurzbz; - $stunde->sem=$row->semester; - $stunde->ver=$row->verband; - $stunde->grp=$row->gruppe; - $stunde->einheit_kurzbz=$row->einheit_kurzbz; - $stunde->titel=$row->titel; - $stunde->anmerkung=$row->anmerkung; - $stunde->updateamum=$row->updateamum; - $stunde->updatevon=$row->updatevon; - $stunde->reservierung=false; - $this->lehrstunden[$i]=$stunde; - } - - /////////////////////////////////////////////////////////////////////// - // Reservierungsdaten ermitteln - // Datenbankabfrage generieren - $sql_query_reservierung='SELECT * FROM vw_reservierung'; - $sql_query_reservierung.=$sql_query; - //echo $sql_query_reservierung; - //Datenbankabfrage - if (! $stpl_tbl=pg_query($this->conn, $sql_query_reservierung)) - { - $this->errormsg=pg_last_error($this->conn); - return -2; - } - $num_rows=pg_numrows($stpl_tbl); - $this->anzahl+=$num_rows; - - //Daten uebernehmen - for ($i=0;$i<$num_rows;$i++) - { - $row=pg_fetch_object ($stpl_tbl, $i); - $stunde=new lehrstunde($this->conn); - $stunde->reservierung=true; - $stunde->stundenplan_id=$row->reservierung_id; - $stunde->unr=0; - $stunde->lektor_uid=$row->uid; - $stunde->lektor_kurzbz=$row->uid; - $stunde->datum=$row->datum; - $stunde->stunde=$row->stunde; - $stunde->ort_kurzbz=$row->ort_kurzbz; - //$stunde->lehrfach_nr=$row->lehrfach_nr; - $stunde->lehrfach=$row->titel; - $stunde->lehrfach_bez=$row->beschreibung; - $stunde->studiengang_kz=$row->studiengang_kz; - $stunde->studiengang=$row->stg_kurzbz; - $stunde->sem=$row->semester; - $stunde->ver=$row->verband; - $stunde->grp=$row->gruppe; - $stunde->einheit_kurzbz=$row->einheit_kurzbz; - $stunde->titel=$row->titel; - $stunde->anmerkung=$row->beschreibung; - $this->lehrstunden[]=$stunde; - //var_dump($stunde); - } - //echo $this->anzahl; - return $this->anzahl; - } - - /************************************************************************* - * Prueft die geladene Lehrveranstaltung auf Kollisionen im Stundenplan. - * Rueckgabewert 'false' und die Fehlermeldung steht in '$this->errormsg'. - * @param string datum gewuenschtes Datum YYYY-MM-TT - * @param integer stunde gewuenschte Stunde - * @param string ort gewuenschter Ort - * @param string db_stpl_table Tabllenname des Stundenplans im DBMS - * @return boolean true=ok, false=fehler - *************************************************************************/ - function kollision($stpl_table='stundenplandev') - { - // Parameter Checken - // Bezeichnung der Stundenplan-Tabelle und des Keys - $stpl_id=$stpl_table.TABLE_ID; - $stpl_table=VIEW_BEGIN.$stpl_table; - - // Datenbank abfragen - $sql_query="SELECT $stpl_id AS id, lektor, stg_kurzbz, ort_kurzbz, semester, verband, gruppe, einheit_kurzbz, datum, stunde FROM $stpl_table - WHERE datum='$this->datum' AND stunde=$this->stunde AND (ort_kurzbz='$this->ort_kurzbz' OR "; - if ($this->lektor_uid!='_DummyLektor') - $sql_query.="(uid='$this->lektor_uid') AND uid!='_DummyLektor' OR "; - $sql_query.="(studiengang_kz=$this->studiengang_kz AND semester=$this->sem"; - if ($this->ver!=null && $this->ver!='' && $this->ver!=' ') - $sql_query.=" AND (verband='$this->ver' OR verband IS NULL OR verband='' OR verband=' ')"; - if ($this->grp!=null && $this->grp!='' && $this->grp!=' ') - $sql_query.=" AND (gruppe='$this->grp' OR gruppe IS NULL OR gruppe='' OR gruppe=' ')"; - if ($this->einheit_kurzbz!=null && $this->einheit_kurzbz!='' && $this->einheit_kurzbz!=' ') - $sql_query.=" AND (einheit_kurzbz='$this->einheit_kurzbz')"; - $sql_query.=")) AND unr!=$this->unr"; - - //echo $sql_query.'
    '; - if (! $erg_stpl=pg_query($this->conn, $sql_query)) - { - $this->errormsg=pg_last_error($this->conn); - return true; - } - $anz=pg_numrows($erg_stpl); - //Check - if ($anz==0) - return false; - else - { - $row=pg_fetch_object($erg_stpl); - $this->errormsg="Kollision ($stpl_table): $row->id|$row->lektor|$row->ort_kurzbz|$row->stg_kurzbz-$row->semester$row->verband$row->gruppe$row->einheit_kurzbz - $row->datum/$row->stunde"; - return true; - } - } -} - -?> \ No newline at end of file diff --git a/include/lehrveranstaltung.class.php b/include/lehrveranstaltung.class.php index 265d5477b..d753a5921 100644 --- a/include/lehrveranstaltung.class.php +++ b/include/lehrveranstaltung.class.php @@ -1,392 +1,448 @@ , + * Andreas Oesterreicher and + * Rudolf Hangl . + */ +/** + * Klasse lehrveranstaltung (FAS-Online) + * @create 06-12-2006 + */ class lehrveranstaltung { - // @var integer interne Lehrveranstaltungs-ID (Zaehler aus DB) - var $lehrveranstaltung_id; - // @var string Lehrveranstaltungsnummer - var $lvnr; - // @var string Unterrichtsnummer; zum patizipieren verwendet - var $unr; - // @var string - var $einheit_kurzbz; - // @var string - var $lektor; - // @var integer - var $lehrfach_nr; - // @var string Kurzbz vom Lehrfach - var $lehrfach; - // @var string Kurzbz der Lehrform - var $lehrform; - // @var string lange Beschreibung vom Lehrfach - var $lehrfach_bez; - // @var string Farbe vom Lehrfach - var $lehrfach_farbe; - // @var integer - var $studiengang_kz; - // @var integer - var $fachbereich_id; - // @var string beschreibung von foreign key - var $fachbereich; - // @var integer - var $semester; - // @var string - var $verband; - // @var string - var $gruppe; - // @var string - var $raumtyp; - // @var string - var $raumtypalternativ; - // @var integer - var $semesterstunden; - // @var integer - var $stundenblockung; - // @var integer - var $wochenrythmus; - // @var integer - var $start_kw; - // @var string - var $anmerkung; - // @var string - var $studiensemester_kurzbz; - // @var string - var $fas_id; - - // @var boolean; - var $new=true; - // @var DB-Handle; - var $conn; - // @var string - var $errormsg; - - function lehrveranstaltung($conn, $id='') - { - $this->conn=$conn; - $this->errormsg=''; - if (strlen($id)>0) - { - $this->lehrveranstaltung_id=$id; - $this->load($id); - } - } - - - /************************************************************************* - * Prueft die geladene Lehrveranstaltung auf Kollisionen im Stundenplan. - * Rueckgabewert 'false' und die Fehlermeldung steht in '$this->errormsg'. - * @param string datum gewuenschtes Datum YYYY-MM-TT - * @param integer stunde gewuenschte Stunde - * @param string ort gewuenschter Ort - * @param string db_stpl_table Tabllenname des Stundenplans im DBMS - * @return boolean true=ok, false=fehler - *************************************************************************/ - function check_lva($datum,$stunde,$ort,$stpl_table) - { - // Parameter Checken - // Bezeichnung der Stundenplan-Tabelle und des Keys - $stpl_id=$stpl_table.TABLE_ID; - $stpl_table=TABLE_BEGIN.$stpl_table; - - /*// Connection holen - if (is_null($conn=$this->getConnection())) - { - return false; - }*/ - - // Datenbank abfragen - $sql_query="SELECT $stpl_id FROM $stpl_table - WHERE datum='$datum' AND stunde=$stunde - AND ((ort_kurzbz='$ort' OR (uid='$this->lektor' AND uid!='_DummyLektor')) - AND unr!=$this->unr)"; //AND lehrveranstaltung_id!=$this->lehrveranstaltung_id - //$this->errormsg=$sql_query; - if (! $erg_stpl=pg_query($this->conn, $sql_query)) - { - $this->errormsg=pg_last_error($this->conn); - //echo $this->errormsg; - return false; - } - $anzahl=pg_numrows($erg_stpl); - //Check - if ($anzahl==0) - return true; - else - { - $row=pg_fetch_row($erg_stpl); - $this->errormsg="Kollision mit StundenplanID($stpl_table.$stpl_id): $row[0]"; - return false; - } - } - - /************************************************************************* - * Speichert die geladene Lehrveranstaltung im Stundenplan. - * Rueckgabewert 'false' und die Fehlermeldung steht in '$this->errormsg'. - * @param string datum gewuenschtes Datum YYYY-MM-TT - * @param integer stunde gewuenschte Stunde - * @param string ort gewuenschter Ort - * @param string db_stpl_table Tabllenname des Stundenplans im DBMS - * @param string user UID des aktuellen Bentzers - * @return boolean true=ok, false=fehler - *************************************************************************/ - function save_stpl($datum,$stunde,$ort,$stpl_table, $user) - { - // Parameter Checken - // Bezeichnung der Stundenplan-Tabelle und des Keys - $stpl_id=$stpl_table.TABLE_ID; - $stpl_table=TABLE_BEGIN.$stpl_table; - - // Datenbank abfragen - $sql_query="INSERT INTO $stpl_table - (unr,uid,datum, stunde, ort_kurzbz,lehrfach_nr,lehrform_kurzbz,studiengang_kz,semester,verband, - gruppe, einheit_kurzbz, titel, anmerkung, updatevon, lehrveranstaltung_id) - VALUES ($this->unr,'$this->lektor','$datum',$stunde, - '$ort',$this->lehrfach_nr, '$this->lehrform', $this->studiengang_kz,$this->semester, - '$this->verband','$this->gruppe'"; - if ($this->einheit_kurzbz==null) - $sql_query.=',NULL'; - else - $sql_query.=",'$this->einheit_kurzbz'"; - $sql_query.=",'$this->titel','$this->anmerkung','$user',$this->lehrveranstaltung_id)"; - //$this->errormsg=$sql_query.'
    '; - //return false; - if (! $erg_stpl=pg_query($this->conn, $sql_query)) - { - $this->errormsg=pg_last_error($this->conn); - //echo $this->errormsg; - return false; - } - return true; - } + var $conn; // @var resource DB-Handle + var $errormsg; // @var string + var $new; // @var boolean + var $lehrveranstaltungen = array(); // @var lehrveranstaltung Objekt + + var $lehrveranstaltung_id; // @var serial + var $studiengang_kz; //@var integer + var $bezeichnung; //@var string + var $kurzbz; //@var string + var $semester; //@var smallint + var $ects; //@var numeric(5,2) + var $semesterstunden; //@var smallint + var $anmerkung; //@var string + var $lehre; //@var boolean + var $lehreverzeichnis; //@var string + var $aktiv; //@var boolean + var $ext_id; //@var bigint + var $insertamum; //@var timestamp + var $insertvon; //@var string + var $planfaktor; //@var numeric(3,2) + var $planlektoren; //@var integer + var $planpersonalkosten; //@var numeric(7,2) + var $updateamum; //@var timestamp + var $updatevon; //@var string + + /** - * Ladet die Attribute der LVA aus der Datenbank. Bei Fehler ist der - * Rueckgabewert 'false' und die Fehlermeldung steht in 'errormsg'. - * @return boolean true=ok, false=fehler + * Konstruktor + * @param $conn Connection zur Datenbank + * $lehrveranstaltung_id ID der zu ladenden Lehrveranstaltung */ - function load($id='') + function lehrveranstaltung($conn, $lehrveranstaltung_id=null) { - // optional: id setzen - if ($id!='') - $this->lehrveranstaltung_id=$id; - // id vorhanden? - if (strlen($this->lehrveranstaltung_id)==0) - { - $this->errormsg='lehrveranstaltung_id nicht gesetzt.'; - return false; - } - - // LVA-Daten holen - $sql_query='SELECT * FROM tbl_lehrveranstaltung WHERE lehrveranstaltung_id='.$this->lehrveranstaltung_id; - //$this->errormsg.=$sql_query; - //return false; - if(!($erg=pg_exec($this->conn, $sql_query))) - { - $this->errormsg.=pg_errormessage($this->conn); - return false; - } - $num_rows=pg_numrows($erg); - if($num_rows!=1) - { - $this->errormsg.="Zuwenige oder zuviele Ergebnisse (Anzahl: $num_rows)!"; - return false; - } - $row=pg_fetch_object($erg,0); - - $this->lvnr=$row->lvnr; - $this->unr=$row->unr; - $this->einheit_kurzbz=$row->einheit_kurzbz; - $this->lektor=$row->lektor; - $this->lehrfach_nr=$row->lehrfach_nr; - $this->lehrform=$row->lehrform_kurzbz; - $this->studiengang_kz=$row->studiengang_kz; - $this->fachbereich_id=$row->fachbereich_id; - $this->semester=$row->semester; - $this->verband=$row->verband; - $this->gruppe=$row->gruppe; - $this->raumtyp=$row->raumtyp; - $this->raumtypalternativ=$row->raumtypalternativ; - $this->semesterstunden=$row->semesterstunden; - $this->stundenblockung=$row->stundenblockung; - $this->wochenrythmus=$row->wochenrythmus; - $this->start_kw=$row->start_kw; - $this->anmerkung=$row->anmerkung; - $this->studiensemester_kurzbz=$row->studiensemester_kurzbz; - //$this->fas_id=$row->fas_id; - $this->new=false; - return true; + $this->conn = $conn; + if($lehrveranstaltung_id != null) + $this->load($lehrveranstaltung_id); } - + /** - * @return boolean true=ok, false=fehler + * Laedt einen Datensatz + * @param $lehrveranstaltung_id ID des zu ladenden Datensatzes + * @return true wenn ok, false im Fehlerfall + */ + function load($lehrveranstaltung_id) + { + //gueltigkeit von lehrveranstaltung_id pruefen + if(!is_numeric($lehrveranstaltung_id) || $lehrveranstaltung_id == '') + { + $this->errormsg = 'lehrveranstaltung_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "SELECT * FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_pk = '$lehrveranstaltung_id';"; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Datensatz konnte nicht geladen werden'; + return false; + } + + if($row = pg_fetch_object($res)) + { + $this->lehrveranstaltung_id = $row->lehrveranstaltung_pk; + $this->art = $row->art; + $this->ausbildungssemester_id = $row->ausbildungssemester_fk; + $this->beschreibung = $row->beschreibung; + $this->ectspunkte = $row->ectspunkte; + $this->fachbereich_id = $row->fachbereich_fk; + $this->kategorie = $row->kategorie; + $this->kurzbezeichnung = $row->kurzbezeichnung; + $this->name = $row->name; + $this->notenlektor_id = $row->notenlektor_fk; + $this->nummer = $row->nummer; + $this->nummerintern = $row->nummerintern; + $this->sortierung = $row->sortierung; + $this->studentenwochenstunden = $row->studentenwochenstunden; + $this->studiengang_id = $row->studiengang_fk; + $this->studiensemester_id = $row->studiensemester_fk; + $this->updateamum = $row->creationdate; + $this->updatevon = $row->creationuser; + } + else + { + $this->errormsg = 'Datensatz konnte nicht geladen werden'; + return false; + } + + return true; + } + + /** + * Liefert alle Lehrveranstaltungen + * @return true wenn ok, false im Fehlerfall + */ + function getAll() + { + $qry = "SELECT * FROM lehre.tbl_lehrveranstaltung;"; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Datensatz konnte nicht geladen werden'; + return false; + } + + while($row = pg_fetch_object($res)) + { + $lv_obj = new lehrveranstaltung($this->conn); + + $lv_obj->lehrveranstaltung_id = $row->lehrveranstaltung_pk; + $lv_obj->art = $row->art; + $lv_obj->ausbildungssemester_id = $row->ausbildungssemester_fk; + $lv_obj->beschreibung = $row->beschreibung; + $lv_obj->ectspunkte = $row->ectspunkte; + $lv_obj->fachbereich_id = $row->fachbereich_fk; + $lv_obj->kategorie = $row->kategorie; + $lv_obj->kurzbezeichnung = $row->kurzbezeichnung; + $lv_obj->name = $row->name; + $lv_obj->notenlektor_id = $row->notenlektor_fk; + $lv_obj->nummer = $row->nummer; + $lv_obj->nummerintern = $row->nummerintern; + $lv_obj->sortierung = $row->sortierung; + $lv_obj->studentenwochenstunden = $row->studentenwochenstunden; + $lv_obj->studiengang_id = $row->studiengang_fk; + $lv_obj->studiensemester_id = $row->studiensemester_fk; + $lv_obj->updateamum = $row->creationdate; + $lv_obj->updatevon = $row->creationuser; + + $this->result[] = $lv_obj; + } + + return true; + } + + /** + * Liefert alle Lehrveranstaltungen zu einem Studiengang/Studiensemester/Ausbildungssemester + * @param $studiengang_id ID des Studienganges + * $studiensemester_id ID des Studiensemesters (optional) + * $ausbildungssemester_id ID des ausbildungssemesters (optional) + * @return true wenn ok, false im Fehlerfall + */ + function load_lva($studiengang_id, $studiensemester_id=null, $ausbildungssemester_id=null) + { + //Variablen pruefen + if(!is_numeric($studiengang_id) || $studiengang_id =='') + { + $this->errormsg = 'studiengang_id muss eine gueltige Zahl sein'; + return false; + } + if($studiensemester_id != null && (!is_numeric($studiensemester_id) || $studiensemester_id == '')) + { + $this->errormsg = 'studiensemester_id muss eine gueltige Zahl sein'; + return false; + } + if($ausbildungssemester_id != null && (!is_numeric($ausbildungssemester_id) || $ausbildungssemester_id == '')) + { + $this->errormsg = 'ausbildungssemester_id muss eine gueltige Zahl sein'; + return false; + } + + //Select Befehl zusammenbauen + $qry = "SELECT * FROM lehre.tbl_lehrveranstaltung WHERE studiengang_fk = '$studiengang_id'"; + + if($studiensemester_id != null) + $qry .= " AND studiensemester_fk = '$studiensemester_id'"; + + if($ausbildungssemester_id != null) + $qry .= " AND ausbildungssemester_fk = '$ausbildungssemester_id'"; + $qry .= " ORDER BY name"; + //Datensaetze laden + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Datensatz konnte nicht geladen werden'; + return false; + } + + while($row = pg_fetch_object($res)) + { + $lv_obj = new lehrveranstaltung($this->conn); + + $lv_obj->lehrveranstaltung_id = $row->lehrveranstaltung_pk; + $lv_obj->art = $row->art; + $lv_obj->ausbildungssemester_id = $row->ausbildungssemester_fk; + $lv_obj->beschreibung = $row->beschreibung; + $lv_obj->ectspunkte = $row->ectspunkte; + $lv_obj->fachbereich_id = $row->fachbereich_fk; + $lv_obj->kategorie = $row->kategorie; + $lv_obj->kurzbezeichnung = $row->kurzbezeichnung; + $lv_obj->name = $row->name; + $lv_obj->notenlektor_id = $row->notenlektor_fk; + $lv_obj->nummer = $row->nummer; + $lv_obj->nummerintern = $row->nummerintern; + $lv_obj->sortierung = $row->sortierung; + $lv_obj->studentenwochenstunden = $row->studentenwochenstunden; + $lv_obj->studiengang_id = $row->studiengang_fk; + $lv_obj->studiensemester_id = $row->studiensemester_fk; + $lv_obj->updateamum = $row->creationdate; + $lv_obj->updatevon = $row->creationuser; + + $this->result[] = $lv_obj; + } + + return true; + } + function addslashes($var) + { + return ($var!=''?"'".addslashes($var)."'":'null'); + } + + /** + * Prueft die Gueltigkeit der Variablen + * @return true wenn ok, false im Fehlerfall + */ + function checkvars() + { + //$this->name = str_replace("'",'´',$this->name); + $this->bezeichnung = str_replace("'",'´',$this->bezeichnung); + $this->kurzbz = str_replace("'",'´',$this->kurzbz); + $this->anmerkung = str_replace("'",'´',$this->anmerkung); + + //Laenge Pruefen + if(strlen($this->bezeichnung)>128) + { + $this->errormsg = "Bezeichnung darf nicht laenger als 128 Zeichen sein bei $this->ext_id - $this->bezeichnung"; + return false; + } + if(strlen($this->kurzbz)>16) + { + $this->errormsg = "Kurzbez darf nicht laenger als 16 Zeichen sein bei $this->ext_id - $this->kurzbz"; + return false; + } + if(strlen($this->anmerkung)>64) + { + $this->errormsg = "Anmerkung darf nicht laenger als 64 Zeichen sein bei $this->ext_id - $this->anmerkung"; + return false; + } + if(strlen($this->lehreverzeichnis)>16) + { + $this->errormsg = "Lehreverzeichnis darf nicht laenger als 16 Zeichen sein bei $this->ext_id - $this->lehreverzeichnis"; + return false; + } + if(!is_numeric($this->studiengang_kz)) + { + $this->errormsg = "Studiengang_kz ist ungueltig bei $this->ext_id - $this->studiengang_kz"; + return false; + } + if($this->semester!='' && !is_numeric($this->semester)) + { + $this->errormsg = "Semester ist ungueltig bei $this->ext_id - $this->semester"; + return false; + } + if($this->planfaktor!='' && !is_numeric($this->planfaktor)) + { + $this->errormsg = "Planfaktor ist ungueltig bei $this->ext_id - $this->planfaktor"; + return false; + } + if($this->semesterstunden!='' && !is_numeric($this->semesterstunden)) + { + $this->errormsg = "Semesterstunden ist ungueltig bei $this->ext_id - $this->semesterstunden"; + return false; + } + if($this->planlektoren!='' && !is_numeric($this->planlektoren)) + { + $this->errormsg = "Planlektoren ist ungueltig bei $this->ext_id - $this->planlektoren"; + return false; + } + if($this->ects!='' && !is_numeric($this->ects)) + { + $this->errormsg = "ECTS sind ungueltig bei $this->ext_id - $this->ects"; + return false; + } + if($this->ects>40) + { + $this->errormsg = "ECTS größer als 40 bei $this->ext_id - $this->ects"; + return false; + } + $this->errormsg = ''; + return true; + } + + /** + * Speichert den aktuellen Datensatz + * @return true wenn ok, false im Fehlerfall */ function save() { - global $auth; - - // Daten zur Person speichern - - if (!person::save()) { - $this->errormsg.="Daten zur LVA konnten nicht gespeichert werden."; + //Gueltigkeit der Variablen pruefen + if(!$this->checkvars()) return false; - } - if ($this->new) { - $sql_query="INSERT INTO tbl_lehrveranstaltung(lvnr,unr,einheit_kurzbz,". - "lektor,lehrfach_nr,lehrform_kurzbz,studiengang_kz,fachbereich_id,semester,verband,". - "gruppe,raumtyp,raumtypalternativ,semesterstunden,stundenblockung,". - "wochenrythmus,start_kw,anmerkung)". - "values(". - "'".$this->lvnr."',". - "'".$this->unr."',". - "'".$this->einheit_kurzbz."',". - "'".$this->lektor."',". - (strlen($this->lehrfach_nr)>0?$this->lehrfach_nr:NULL).",". - "'".$this->lehrform."',". - (strlen($this->studiengang_kz)>0?$this->studiengang_kz:NULL).",". - (strlen($this->fachbereich_id)>0?$this->fachbereich_id:NULL).",". - (strlen($this->semester)>0?$this->semester:NULL).",". - "'".$this->verband."',". - "'".$this->gruppe."',". - (strlen($this->raumtyp)>0?"'".$this->raumtyp."'":NULL).",". - (strlen($this->raumtypalternativ)>0?"'".$this->raumtypalternativ."'":NULL).",". - (strlen($this->semesterstunden)>0?$this->semesterstunden:NULL).",". - (strlen($this->stundenblockung)>0?$this->stundenblockung:NULL).",". - (strlen($this->wochenrythmus)>0?$this->wochenrythmus:NULL).",". - (strlen($this->start_kw)>0?$this->start_kw:NULL).",". - (strlen($this->anmerkung)>0?"'".$this->anmerkung."'":NULL).",". - ")"; - } else + + if($this->new) { - $sql_query="UPDATE tbl_lehrveranstaltung ". - "SET lvnr='".$this->lvnr."',". - "unr='".$this->unr."',". - "einheit_kurzbz='".$this->einheit_kurzbz."',". - "lektor='".$this->lektor."',". - "lehrfach_nr=".(strlen($this->lehrfach_nr)>0?$this->lehrfach_nr:NULL).",". - "lehrform_kurzbz=".(strlen($this->lehrform)>0?$this->lehrform:NULL).",". - "studiengang_kz=".(strlen($this->studiengang_kz)>0?$this->studiengang_kz:NULL).",". - "fachbereich_id=".(strlen($this->fachbereich_id)>0?$this->fachbereich_id:NULL).",". - "semester=".(strlen($this->semester)>0?$this->semester:NULL).",". - "verband='".$this->verband."',". - "gruppe='".$this->gruppe."',". - "raumtyp=".(strlen($this->raumtyp)>0?"'".$this->raumtyp."'":NULL).",". - "raumtypalternativ=".(strlen($this->raumtypalternativ)>0?"'".$this->raumtypalternativ."'":NULL).",". - "semesterstunden=".(strlen($this->semesterstunden)>0?$this->semesterstunden:NULL).",". - "stundenblockung=".(strlen($this->stundenblockung)>0?$this->stundenblockung:NULL).",". - "wochenrythmus=".(strlen($this->wochenrythmus)>0?$this->wochenrythmus:NULL).",". - "start_kw=".(strlen($this->start_kw)>0?$this->start_kw:NULL).",". - "anmerkung=".(strlen($this->anmerkung)>0?"'".$this->anmerkung."'":NULL). - " WHERE lehrveranstaltung_id='".$this->lehrveranstaltung_id."'"; + //Neuen Datensatz anlegen + $qry = 'INSERT INTO lehre.tbl_lehrveranstaltung (studiengang_kz, bezeichnung, kurzbz, + semester, ects, semesterstunden, anmerkung, lehre, lehreverzeichnis, aktiv, ext_id, insertamum, + insertvon, planfaktor, planlektoren, planpersonalkosten, updateamum, updatevon) VALUES ('. + $this->addslashes($this->studiengang_kz).', '. + $this->addslashes($this->bezeichnung).', '. + $this->addslashes($this->kurzbz).', '. + $this->addslashes($this->semester).', '. + $this->addslashes($this->ects).', '. + $this->addslashes($this->semesterstunden).', '. + $this->addslashes($this->anmerkung).', '. + ($this->lehre?'true':'false').','. + $this->addslashes($this->lehreverzeichnis).', '. + ($this->aktiv?'true':'false').', '. + $this->addslashes($this->ext_id).', '. + $this->addslashes($this->insertamum).', '. + $this->addslashes($this->insertvon).', '. + $this->addslashes($this->planfaktor).', '. + $this->addslashes($this->planlektoren).', '. + $this->addslashes($this->planpersonalkosten).', '. + $this->addslashes($this->updateamum).', '. + $this->addslashes($this->updatevon).');'; } - //echo "
    ".$sql_query; - if(!($erg=pg_exec($this->conn, $sql_query))) + else { - $this->errormsg=pg_errormessage($this->conn); + //bestehenden Datensatz akualisieren + + //Pruefen ob lehrveranstaltung_id eine gueltige Zahl ist + if(!is_numeric($this->lehrveranstaltung_id) || $this->lehrveranstaltung_id == '') + { + $this->errormsg = 'lehrveranstaltung_id muss eine gueltige Zahl sein'; + return false; + } + $qry = 'UPDATE lehre.tbl_lehrveranstaltung SET '. + //'lehrveranstaltung_id= '.$this->addslashes($this->lehrveranstaltung_id) .', '. + 'studiengang_kz='.$this->addslashes($this->studiengang_kz) .', '. + 'bezeichnung='.$this->addslashes($this->bezeichnung) .', '. + 'kurzbz='.$this->addslashes($this->kurzbz) .', '. + 'semester='.$this->addslashes($this->semester) .', '. + 'ects='.$this->addslashes($this->ects) .', '. + 'semesterstunden='.$this->addslashes($this->semesterstunden) .', '. + 'anmerkung='.$this->addslashes($this->anmerkung) .', '. + 'lehre='.$this->addslashes($this->lehre) .', '. + 'lehreverzeichnis='.$this->addslashes($this->lehreverzeichnis) .', '. + 'aktiv='.($this->aktiv?'true':'false') .', '. + 'ext_id='.$this->addslashes($this->ext_id) .', '. + 'insertamum='.$this->addslashes($this->insertamum) .', '. + 'insertvon='.$this->addslashes($this->insertvon) .', '. + 'planfaktor='.$this->addslashes($this->planfaktor) .', '. + 'planlektoren='.$this->addslashes($this->planlektoren) .', '. + 'planpersonalkosten='.$this->addslashes($this->planpersonalkosten) .', '. + 'updateamum='.$this->addslashes($this->updateamum) .','. + 'updatevon='.$this->addslashes($this->updatevon) .' '. + 'WHERE ext_id = '.$this->addslashes($this->lehrveranstaltung_id).';'; + } + + if(pg_query($this->conn, $qry)) + { + //Log schreiben + /*$sql = $qry; + $qry = "SELECT nextval('log_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim Auslesen der Log-Sequence'; + return false; + } + + $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".$this->addslashes($sql)."')"; + if(pg_query($this->conn, $qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; + return false; + }*/ + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern des Datensatzes'; return false; - } - return true; + } } - - + /** - * Rueckgabewert ist ein Array mit den Ergebnissen. Bei Fehler false und die - * Fehlermeldung liegt in errormsg. - * Wenn der Parameter stg_kz NULL ist tritt einheit_kurzbzb in Kraft. - * @param string $einheit_kurzbz Einheit - * @param string grp Gruppe - * @param string ver Verband - * @param integer sem Semester - * @param integer stg_kz Kennzahl des Studiengangs - * @return variabel Array mit LVA; false bei Fehler + * Loescht einen Datensatz + * @param $lehrveranstaltung_id ID des zu loeeschenden Datensatzes + * @return true wenn ok, false im Fehlerfall */ - function getLehrveranstaltungSTPL($db_stpl_table,$studiensemester, $type, $stg_kz, $sem, $lektor, $ver=null, $grp=null, $einheit=null) + function delete($lehrveranstaltung_id) { - $lva_stpl_view=VIEW_BEGIN.'lva_'.$db_stpl_table; - - if (strlen($studiensemester)<=0) + //lehrveranstaltung_id auf gueltigkeit pruefen + if(!is_numeric($lehrveranstaltung_id) || $lehrveranstaltung_id == '') { - $this->errormsg='Ausbildungssemester ist nicht gesetzt!'; + $this->errormsg = 'lehrveranstaltung_id muss eine gueltige Zahl sein'; return false; } - else $where=" studiensemester_kurzbz='$studiensemester'"; - - if ($type=='lektor') - $where.=" AND lektor_uid='$lektor'"; - elseif ($type=='einheit') - $where.=" AND einheit='$einheit'"; - elseif ($type=='verband') + + //Loeschen des Datensatzes + $qry = "DELETE FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_pk = '$lehrveranstaltung_id';"; + + if(pg_query($this->conn, $qry)) { - $where.=" AND studiengang_kz='$stg_kz'"; - if ($sem>0) - $where.=" AND semester=$sem"; - if (strlen($ver)>0 && $ver!=' ') - $where.=" AND verband='$ver'"; - if (strlen($grp)>0 && $grp!=' ') - $where.=" AND gruppe='$grp' "; + //Log schreiben + $sql = $qry; + $qry = "SELECT nextval('log_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim Auslesen der Log-Sequence'; + return false; + } + + $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".$this->addslashes($sql)."')"; + if(pg_query($this->conn, $qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; + return false; + } } - $sql_query='SELECT *, semesterstunden-verplant::smallint AS offenestunden - FROM '.$lva_stpl_view.' JOIN tbl_lehrform ON '.$lva_stpl_view.'.lehrform=tbl_lehrform.lehrform_kurzbz - WHERE '.$where.' AND verplanen ORDER BY offenestunden DESC, lehrfach, lehrform, semester, verband, gruppe, einheit;'; - //$this->errormsg=$sql_query; - //return false; - if(!($erg=@pg_exec($this->conn, $sql_query))) + else { - $this->errormsg=pg_errormessage($this->conn); + $this->errormsg = 'Fehler beim loeschen des Datensatzes'; return false; } - $num_rows=pg_numrows($erg); - $l=array(); - for($i=0;$i<$num_rows;$i++) - { - $row=pg_fetch_object($erg,$i); - //$l[$row->unr]=new lehrveranstaltung(); - $l[$row->unr]->lehrveranstaltung_id[]=$row->lehrveranstaltung_id; - $l[$row->unr]->lvnr[]=$row->lvnr; - $l[$row->unr]->unr=$row->unr; - $l[$row->unr]->fachbereich_id=$row->fachbereich_id; - $l[$row->unr]->fachbereich=$row->fachbereich_kurzbz; - $l[$row->unr]->lehrfach_nr=$row->lehrfach_nr; - $l[$row->unr]->lehrfach[]=$row->lehrfach; - $l[$row->unr]->lehrfach_bez[]=$row->lehrfach_bez; - $l[$row->unr]->lehrfach_farbe[]=$row->lehrfach_farbe; - $l[$row->unr]->lehrform[]=$row->lehrform; - $l[$row->unr]->lektor_uid[]=$row->lektor_uid; - $l[$row->unr]->lektor[]=trim($row->lektor); - $l[$row->unr]->stg_kz[]=$row->studiengang_kz; - $l[$row->unr]->stg[]=$row->studiengang; - $l[$row->unr]->einheit[]=$row->einheit; - $l[$row->unr]->semester[]=$row->semester; - $l[$row->unr]->verband[]=$row->verband; - $l[$row->unr]->gruppe[]=$row->gruppe; - $l[$row->unr]->raumtyp=$row->raumtyp; - $l[$row->unr]->raumtypalternativ=$row->raumtypalternativ; - $l[$row->unr]->stundenblockung[]=$row->stundenblockung; - $l[$row->unr]->wochenrythmus[]=$row->wochenrythmus; - $l[$row->unr]->semesterstunden[]=$row->semesterstunden; - $l[$row->unr]->start_kw[]=$row->start_kw; - $l[$row->unr]->anmerkung[]=$row->anmerkung; - $l[$row->unr]->studiensemester_kurzbz=$row->studiensemester_kurzbz; - $l[$row->unr]->verplant[]=$row->verplant; - $l[$row->unr]->offenestunden[]=$row->offenestunden; - if (isset($l[$row->unr]->verplant_gesamt)) - $l[$row->unr]->verplant_gesamt+=$row->verplant; - else - $l[$row->unr]->verplant_gesamt=$row->verplant; - $lvb=$row->studiengang.'-'.$row->semester; - if ($row->verband!='' && $row->verband!=' ' && $row->verband!='0' && $row->verband!=null) - $lvb.=$row->verband; - if ($row->gruppe!='' && $row->gruppe!=' ' && $row->gruppe!='0' && $row->gruppe!=null) - $lvb.=$row->gruppe; - if ($row->einheit!='' && $row->einheit!=null) - $l[$row->unr]->lehrverband[]=$row->einheit; - else - $l[$row->unr]->lehrverband[]=$lvb; - } - return $l; } -} \ No newline at end of file +} +?> \ No newline at end of file diff --git a/include/fas/lehrverband.class.php b/include/lehrverband.class.php similarity index 100% rename from include/fas/lehrverband.class.php rename to include/lehrverband.class.php diff --git a/include/lfvt.class.php b/include/lfvt.class.php deleted file mode 100644 index 8430b7b88..000000000 --- a/include/lfvt.class.php +++ /dev/null @@ -1,423 +0,0 @@ -conn=$conn; - if (strlen($id)>0) { - $this->$lehrveranstaltung_id=$id; - $this->load(); - } - } - - /** - * Ladet die Attribute der LVA aus der Datenbank. Bei Fehler ist der - * Rueckgabewert 'false' und die Fehlermeldung steht in 'errormsg'. - * @return boolean true=ok, false=fehler - */ - function load($id='') - { - // optional: id setzen - if (strlen($id)>0) - $this->$lehrveranstaltung_id=$id; - // id vorhanden? - if (strlen($this->$this->$lehrveranstaltung_id)==0) { - $this->errormsg='lehrveranstaltung_id nicht gesetzt.'; - return false; - } - // LVA-Daten holen - $sql_query="SELECT lva.* ". - "FROM tbl_lehrveranstaltung as lva ". - "WHERE lehrveranstaltung_id='".$this->lehrveranstaltung_id."'"; - if(!($erg=pg_exec($this->conn, $sql_query))) - die(pg_errormessage($this->conn)); - $num_rows=pg_numrows($erg); - if($num_rows!=1) { - $this->errormsg="Zuwenige oder zuviele Ergebnisse (Anzahl: $num_rows)!"; - return false; - } - $row=pg_fetch_object($erg,0); - - $this->lvnr=$row->lvnr; - $this->unr=$row->unr; - $this->einheit_kurzbz=$row->einheit_kurzbz; - $this->lektor=$row->lektor; - $this->lehrfach_nr=$row->lehrfach_nr; - $this->lehrform=$row->lehrform_kurzbz; - $this->studiengang_kz=$row->studiengang_kz; - $this->fachbereich_id=$row->fachbereich_id; - $this->semester=$row->semester; - $this->verband=$row->verband; - $this->gruppe=$row->gruppe; - $this->raumtyp=$row->raumtyp; - $this->raumtypalternativ=$row->raumtypalternativ; - $this->semesterstunden=$row->semesterstunden; - $this->stundenblockung=$row->stundenblockung; - $this->wochenrythmus=$row->wochenrythmus; - $this->start_kw=$row->start_kw; - $this->anmerkung=$row->anmerkung; - $this->studiensemester_kurzbz=$row->studiensemester_kurzbz; - //$this->fas_id=$row->fas_id; - $this->new=false; - return true; - } - - - - /** - * @return boolean true=ok, false=fehler - */ - function save() - { - global $auth; - if (!isset($this->unr)) { - $this->errormsg='unr fehlt'; - return false; - } - if (!isset($this->lvnr)) { - $this->errormsg='lvnr fehlt'; - return false; - } - if (!isset($this->lektor)) { - $this->errormsg='lektor fehlt'; - return false; - } - if (!isset($this->lehrfach_nr)) { - $this->errormsg='lehrfach_nr fehlt'; - return false; - } - if (!isset($this->lehrform)) - { - $this->errormsg='lehrform fehlt'; - return false; - } - if (!isset($this->studiengang_kz)) { - $this->errormsg='studiengang_kz fehlt'; - return false; - } - if (!isset($this->fachbereich_id)) { - $this->errormsg='fachbereich_id fehlt'; - return false; - } - if (!isset($this->raumtyp)) { - $this->errormsg='raumtyp fehlt'; - return false; - } - if (!isset($this->semesterstunden)) { - $this->errormsg='semesterstunden fehlt'; - return false; - } - if (!isset($this->stundenblockung)) { - $this->errormsg='stundenblockung fehlt'; - return false; - } - if (!isset($this->wochenrythmus)) { - $this->errormsg='wochenrythmus fehlt'; - return false; - } - if (!isset($this->studiensemester_kurzbz)) { - $this->errormsg='studiensemester_kurzbz fehlt'; - return false; - } - - if ($this->new) { - $qry="INSERT INTO tbl_lehrveranstaltung(lvnr,unr,einheit_kurzbz,". - "lektor,lehrfach_nr,lehrform_kurzbz,studiengang_kz,fachbereich_id,semester,verband,". - "gruppe,raumtyp,raumtypalternativ,semesterstunden,stundenblockung,". - "wochenrythmus,start_kw,anmerkung,studiensemester_kurzbz)\n". - "values(". - "'".$this->lvnr."',". - "'".$this->unr."',". - (strlen($this->einheit_kurzbz)>0?"'".$this->einheit_kurzbz."'":'NULL').",". - "'".$this->lektor."',". - (strlen($this->lehrfach_nr)>0?$this->lehrfach_nr:'NULL').",". - "'".$this->lehrform."',". - (strlen($this->studiengang_kz)>0?$this->studiengang_kz:'NULL').",". - (strlen($this->fachbereich_id)>0?$this->fachbereich_id:'NULL').",". - (strlen($this->semester)>0?$this->semester:'NULL').",". - "'".$this->verband."',". - "'".$this->gruppe."',". - (strlen($this->raumtyp)>0?"'".$this->raumtyp."'":'NULL').",". - (strlen($this->raumtypalternativ)>0?"'".$this->raumtypalternativ."'":'NULL').",". - (strlen($this->semesterstunden)>0?$this->semesterstunden:'NULL').",". - (strlen($this->stundenblockung)>0?$this->stundenblockung:'NULL').",". - (strlen($this->wochenrythmus)>0?$this->wochenrythmus:'NULL').",". - (strlen($this->start_kw)>0?$this->start_kw:'NULL').",". - (strlen($this->anmerkung)>0?"'".$this->anmerkung."'":'NULL').','. - (strlen($this->studiensemester_kurzbz)>0?"'".$this->studiensemester_kurzbz."'":'NULL'). - ")"; - } else - { - $qry="UPDATE tbl_lehrveranstaltung ". - "SET lvnr='".$this->lvnr."',". - "unr='".$this->unr."',". - "einheit_kurzbz=".(strlen($this->einheit_kurzbz)>0?"'".$this->einheit_kurzbz."'":'NULL').",". - "lektor='".$this->lektor."',\n". - "lehrfach_nr=".(strlen($this->lehrfach_nr)>0?$this->lehrfach_nr:'NULL').",". - "lehrform_kurzbz='".$this->lehrform."',\n". - "studiengang_kz=".(strlen($this->studiengang_kz)>0?$this->studiengang_kz:'NULL').",". - "fachbereich_id=".(strlen($this->fachbereich_id)>0?$this->fachbereich_id:'NULL').",". - "semester=".(strlen($this->semester)>0?$this->semester:'NULL').",\n". - "verband='".$this->verband."',". - "gruppe='".$this->gruppe."',". - "raumtyp='".$this->raumtyp."',". - "raumtypalternativ=".(strlen($this->raumtypalternativ)>0?"'".$this->raumtypalternativ."'":'NULL').",\n". - "semesterstunden=".(strlen($this->semesterstunden)>0?$this->semesterstunden:'NULL').",". - "stundenblockung=".(strlen($this->stundenblockung)>0?$this->stundenblockung:'NULL').",". - "wochenrythmus=".(strlen($this->wochenrythmus)>0?$this->wochenrythmus:'NULL').",\n". - "start_kw=".($this->start_kw>0?$this->start_kw:'NULL').",". - "anmerkung=".(strlen($this->anmerkung)>0?"'".$this->anmerkung."'":'NULL'). - " WHERE lehrveranstaltung_id=".$this->lehrveranstaltung_id; - } - //echo "
    ".$qry.'start_kw: <'.$this->start_kw.'>'; - if(!($erg=pg_exec($this->conn, $qry))) - { - $this->errormsg=pg_errormessage($this->conn).' sql: '.$qry; - return false; - } - if ($this->new) { - // neue Lehrveranstaltungs-ID herausfinden und speichern - $lastoid=pg_getlastoid($erg); - $qry="select lehrveranstaltung_id from tbl_lehrveranstaltung where oid=$lastoid"; - if(!($erg=pg_exec($this->conn, $qry))) - { - $this->errormsg=pg_errormessage($this->conn).' sql: '.$qry;; - return false; - } - $row=pg_fetch_object($erg,0); - $this->lehrveranstaltung_id=$row->lehrveranstaltung_id; - $this->new=false; - } - return true; - } - - function delete() { - global $auth; - if ($this->new) { - $this->errormsg='Datensatz mit new=true kann nicht gel?scht werden.'; - return false; - } - $qry="delete from tbl_lehrveranstaltung where lehrveranstaltung_id=".addslashes($this->lehrveranstaltung_id); - if(!($erg=pg_exec($this->conn, $qry))) - { - $this->errormsg=pg_errormessage($this->conn)." \nSQL: ".$qry; - return false; - } - return true; - } - - - /** - * Rueckgabewert ist ein Array mit den Ergebnissen. Bei Fehler false und die - * Fehlermeldung liegt in errormsg. - * Wenn der Parameter stg_kz NULL ist tritt einheit_kurzbzb in Kraft. - * @param string $einheit_kurzbz Einheit - * @param string grp Gruppe - * @param string ver Verband - * @param integer sem Semester - * @param integer stg_kz Kennzahl des Studiengangs - * @return variabel Array mit LVA; false bei Fehler - */ - function getLVAs($einheit_kurzbz, $grp, $ver, $sem, $stg_kz,$lektor, $stsem='') - { - if (strlen($einheit_kurzbz)>0) - { - // einheit? - //$join=" join tbl_einheitstudent on (m.uid=tbl_einheitstudent.uid) "; - $where=" lva.einheit_kurzbz='".$einheit_kurzbz."'"; - } - if (strlen($grp)>0) - { - // Gruppe - $where.=(strlen($where)>0?' and ':'')." lva.gruppe='".$grp."' "; - } - if (strlen($ver)>0) - { - // Verband - $where.=(strlen($where)>0?' and ':'')." lva.verband='".$ver."' "; - } - if (strlen($sem)>0) - { - // Semester - $where.=(strlen($where)>0?' and ':'')." lva.semester=".$sem." "; - } - if (strlen($stg_kz)>0) - { - // Studiengang - $where.=(strlen($where)>0?' and ':'')." lva.studiengang_kz='".$stg_kz."' "; - } - if (strlen($lektor)>0) - { - // Lektor - $where.=(strlen($where)>0?' and ':'')." lva.lektor='".$lektor."' "; - } - if (strlen($stsem)>0) - { - // Studiensemester - $where.=(strlen($where)>0?' and ':'')." lva.studiensemester_kurzbz='".$stsem."' "; - } - $sql_query="set datestyle to german;SELECT lva.*,tbl_lehrfach.bezeichnung as lehrfach_bezeichnung, ". - " tbl_person.nachname || ', ' || tbl_person.titel || ' ' || tbl_person.vornamen as lektorName ". - "FROM tbl_lehrveranstaltung as lva join tbl_lehrfach using(lehrfach_nr) ". - " left join tbl_person on(lva.lektor=tbl_person.uid) ". - (strlen($where)>1?'WHERE '.$where:''). - "ORDER by upper(lva.unr),upper(lva.lvnr)"; - //echo $sql_query; - if(!($erg=pg_exec($this->conn, $sql_query))) { - $this->errormsg=pg_errormessage($this->conn); - return false; - } - $num_rows=pg_numrows($erg); - $result=array(); - for($i=0;$i<$num_rows;$i++) - { - $row=pg_fetch_object($erg,$i); - $l=new lfvt($this->conn); - $l->lehrveranstaltung_id=$row->lehrveranstaltung_id; - $l->lvnr=$row->lvnr; - $l->unr=$row->unr; - $l->einheit_kurzbz=$row->einheit_kurzbz; - $l->lektor=$row->lektor; - $l->lektorPrettyPrint=$row->lektorname; - $l->lehrfach_nr=$row->lehrfach_nr; - $l->lehrform=$row->lehrform_kurzbz; - $l->studiengang_kz=$row->studiengang_kz; - $l->fachbereich_id=$row->fachbereich_id; - $l->semester=$row->semester; - $l->verband=strlen($row->verband)>0?$row->verband:null; - $l->gruppe=$row->gruppe; - $l->raumtyp=$row->raumtyp; - $l->raumtypalternativ=$row->raumtypalternativ; - $l->semesterstunden=$row->semesterstunden; - $l->stundenblockung=$row->stundenblockung; - $l->wochenrythmus=$row->wochenrythmus; - $l->start_kw=$row->start_kw; - $l->anmerkung=$row->anmerkung; - $l->studiensemester_kurzbz=$row->studiensemester_kurzbz; - $l->lehrfach=$row->lehrfach_bezeichnung; - // lva in Array speichern - $result[]=$l; - } - return $result; - } - -} diff --git a/include/lv_info.class.php b/include/lv_info.class.php deleted file mode 100644 index c161767df..000000000 --- a/include/lv_info.class.php +++ /dev/null @@ -1,324 +0,0 @@ -conn = $conn; - } - - /******************************************************************** - * @brief Speichert die Daten in der Datenbank ab. Wenn new auf true - * gesetzt ist wird INSERT ausgefuehrt sonst UPDATE - * @param keine - * - * @return true=Ok false=Fehler - ********************************************************************/ - function save() - { - - if (is_null($this->conn)) - { - $this->errormsg = "Fehler: Keine Datenbank connection vorhanden"; - return false; - } - - //Variablen ueberpruefen - //$this->checkvars(); - - if($this->neu) - { - $sql_query = "INSERT INTO tbl_lvinfo (studiensemester_kurzbz,lehrziele,lehrinhalte,voraussetzungen,basiert_auf,". - "kooperiert_mit, liefert_fuer, unterlagen, pruefungsordnung, anmerkungen, niveau,". - "lehrformen, genehmigt, aktiv,updatevon,lehrfach_nr, sprache, lehrende, lehrfach, semstunden)". - " VALUES('$this->studiensemester_kurzbz',". - (strlen($this->lehrziele)>0?"'".$this->lehrziele."'":'NULL').",". - (strlen($this->lehrinhalte)>0?"'".$this->lehrinhalte."'":'NULL').",". - (strlen($this->voraussetzungen)>0?"'".$this->voraussetzungen."'":'NULL').",". - (strlen($this->basiert_auf)>0?"'".$this->basiert_auf."'":'NULL').",". - (strlen($this->kooperiert_mit)>0?"'".$this->kooperiert_mit."'":'NULL').",". - (strlen($this->liefert_fuer)>0?"'".$this->liefert_fuer."'":'NULL').",". - (strlen($this->unterlagen)>0?"'".$this->unterlagen."'":'NULL').",". - (strlen($this->pruefungsordnung)>0?"'".$this->pruefungsordnung."'":'NULL').",". - (strlen($this->anmerkungen)>0?"'".$this->anmerkungen."'":'NULL').",". - (strlen($this->niveau)>0?"'".$this->niveau."'":'NULL').",". - (strlen($this->lehrformen)>0?"'".$this->lehrformen."'":'NULL').",". - ($this->genehmigt=="'true'"?'true':'false').",".($this->aktiv=='true'?'true':'false').",'$this->updatevon',$this->lehrfach_nr,'$this->sprache',". - (strlen($this->lehrende)>0?"'".$this->lehrende."'":'NULL').",". - (strlen($this->lehrfach)>0?"'".$this->lehrfach."'":'NULL').",". - ($this->semstunden!=''?"'".$this->semstunden."'":'NULL') .");"; - - } - else - { - $sql_query = "UPDATE tbl_lvinfo SET". - " studiensemester_kurzbz='$this->studiensemester_kurzbz'". - ", lehrziele=".(strlen($this->lehrziele)>0?"'".$this->lehrziele."'":'NULL') . - ", lehrinhalte=".(strlen($this->lehrinhalte)>0?"'".$this->lehrinhalte."'":'NULL') . - ", voraussetzungen=".(strlen($this->voraussetzungen)>0?"'".$this->voraussetzungen."'":'NULL') . - ", basiert_auf=".(strlen($this->basiert_auf)>0?"'".$this->basiert_auf."'":'NULL') . - ", kooperiert_mit=".(strlen($this->kooperiert_mit)>0?"'".$this->kooperiert_mit."'":'NULL') . - ", liefert_fuer=".(strlen($this->liefert_fuer)>0?"'".$this->liefert_fuer."'":'NULL') . - ", unterlagen=".(strlen($this->unterlagen)>0?"'".$this->unterlagen."'":'NULL') . - ", pruefungsordnung=".(strlen($this->pruefungsordnung)>0?"'".$this->pruefungsordnung."'":'NULL') . - ", anmerkungen=".(strlen($this->anmerkungen)>0?"'".$this->anmerkungen."'":'NULL') . - ", niveau=".(strlen($this->niveau)>0?"'".$this->niveau."'":'NULL') . - ", lehrformen=".(strlen($this->lehrformen)>0?"'".$this->lehrformen."'":'NULL') . - ", lehrende=".(strlen($this->lehrende)>0?"'".$this->lehrende."'":'NULL') . - ($this->genehmigt==''?'':", genehmigt=$this->genehmigt"). - ($this->aktiv==''?'':", aktiv=$this->aktiv"). - ", updateamum=now()". - ", updatevon='".$_SERVER["REMOTE_USER"]."'". - ", lehrfach_nr=$this->lehrfach_nr". - ", lehrfach='$this->lehrfach'". - ($this->semstunden!=''?", semstunden=$this->semstunden ":''). - ", sprache='$this->sprache' WHERE lvinfo_id=$this->lvinfo_id"; - - } - - $this->lastqry=$sql_query."--$this->genehmigt--"; - //echo $sql_query; - if(pg_exec($this->conn,$sql_query)) - { - return true; - } - else - { - $this->errormsg=pg_errormessage($this->conn); - return false; - } - } - - /******************************************************************** - * @brief Fuehrt einen Selectbefehl aus und Schreibt das Ergebnis in - * $result - * - * @param $sql_query - Select befehl - * - * @return true=Ok, Erg in $Result false=Fehler, Meldung in $errormsg - * Anzahl der Datensaetze steht in $anz - ********************************************************************/ - function getData($sql_query) - { - if (is_null($this->conn)) - { - $this->errormsg = "Fehler: Keine Datenbank connection vorhanden"; - return false; - } - - if($res=pg_exec($this->conn,$sql_query)) - { - while($row=pg_fetch_object($res)) - { - $elem = new lv_info($this->conn); - $elem->lvinfo_id = $row->lvinfo_id; - $elem->studiensemester_kurzbz = $row->studiensemester_kurzbz; - $elem->lehrziele = $row->lehrziele; - $elem->lehrinhalte = $row->lehrinhalte; - $elem->voraussetzungen = $row->voraussetzungen; - $elem->basiert_auf = $row->basiert_auf; - $elem->kooperiert_mit = $row->kooperiert_mit; - $elem->liefert_fuer = $row->liefert_fuer; - $elem->unterlagen = $row->unterlagen; - $elem->pruefungsordnung = $row->pruefungsordnung; - $elem->anmerkungen = $row->anmerkungen; - $elem->niveau = $row->niveau; - $elem->lehrformen = $row->lehrformen; - $elem->genehmigt = $row->genehmigt; - $elem->aktiv = $row->aktiv; - $elem->updateamum = $row->updateamum; - $elem->updatevon = $row->updatevon; - $elem->lehrfach_nr = $row->lehrfach_nr; - $elem->lehrfach = $row->lehrfach; - $elem->sprache = $row->sprache; - $elem->lehrende = $row->lehrende; - $elem->semstunden = $row->semstunden; - $this->result[] = $elem; - } - $this->anz = pg_num_rows($res); - } - else - { - $this->errormsg = pg_errormessage($this->conn); - return false; - } - return true; - } - - /******************************************************************** - * @brief Liefert alle Datensaetze der Tabelle tbl_lvinfo - * - * @param keine - * - * @return true=Ok, Erg in $Result false=Fehler, Meldung in $errormsg - ********************************************************************/ - function getAll() - { - $sql_query = "Select * from tbl_lvinfo"; - return $this->getData($sql_query); - } - - /******************************************************************** - * @brief Liefert alle Datensaetze der Tabelle tbl_lvinfo mit der - * lvinfo_id $id - * @param $id lvinfo_id - * - * @return true=Ok, Erg in $Result false=Fehler, Meldung in $errormsg - ********************************************************************/ - function getByID($id) - { - $sql_query = "SELECT * from tbl_lvinfo WHERE lvinfo_id=$id"; - return $this->getData($sql_query); - } - - /******************************************************************** - * @brief Liefert alle Datensaetze mit den Kriterien die ueberg. wurden - * - * @param $lf Lehrfach - * $stg Studiengang - * $sem Semester - * $sprache Sprache - * $studiensemester_kurzbz Studiensemester - * - * @return true=Ok, Erg in $Result false=Fehler, Meldung in $errormsg - ********************************************************************/ - function getByElem($lf,$stg,$sem,$sprache='',$studiensemester_kurzbz='',$order='version DESC') - { - if($sprache=='') - { - if($studiensemester_kurzbz=='') - { - $sql_query = "SELECT * from tbl_lvinfo, tbl_lehrfach WHERE tbl_lvinfo.lehrfach_nr=tbl_lehrfach.lehrfach_nr ". - "AND tbl_lvinfo.lehrfach_nr=$lf AND studiengang_kz = $stg AND semester = $sem AND tbl_lvinfo.aktiv=true ORDER BY $order"; - } - else - { - $sql_query = "SELECT * from tbl_lvinfo, tbl_lehrfach WHERE tbl_lvinfo.lehrfach_nr=tbl_lehrfach.lehrfach_nr ". - "AND tbl_lvinfo.lehrfach_nr=$lf AND studiengang_kz = $stg AND semester = $sem AND studiensemester_kurzbz='$studiensemester_kurzbz' AND tbl_lvinfo.aktiv=true ORDER BY $order"; - } - } - else - { - if($studiensemester_kurzbz=='') - { - $sql_query = "SELECT * from tbl_lvinfo, tbl_lehrfach WHERE tbl_lvinfo.lehrfach_nr=tbl_lehrfach.lehrfach_nr ". - "AND tbl_lvinfo.sprache='$sprache' AND tbl_lvinfo.lehrfach_nr=$lf AND studiengang_kz = $stg AND semester = $sem AND tbl_lvinfo.aktiv=true ORDER BY $order"; - } - else - { - $sql_query = "SELECT * from tbl_lvinfo, tbl_lehrfach WHERE tbl_lvinfo.lehrfach_nr=tbl_lehrfach.lehrfach_nr ". - "AND tbl_lvinfo.sprache='$sprache' AND tbl_lvinfo.lehrfach_nr=$lf AND studiengang_kz = $stg AND semester = $sem AND studiensemester_kurzbz='$studiensemester_kurzbz' AND tbl_lvinfo.aktiv=true ORDER BY $order"; - } - } - return $this->getData($sql_query); - } - - /******************************************************************** - * @brief Sieht in der DB nach ob ein Eintrag mit den Kriterien - * vorhanden ist. - * @param $studiensemester_kurzbz Studiensemester - * $lf Lehrfach - * - * @return true=Vorhanden, id des DS in $lvinfo_id false=Nicht vorhanden - ********************************************************************/ - function vorhanden($lf, $studiensemester_kurzbz, $sprache) - { - $sql_query = "SELECT * from tbl_lvinfo WHERE ". - "lehrfach_nr=$lf AND studiensemester_kurzbz='$studiensemester_kurzbz' AND sprache='$sprache' AND aktiv=true"; - $res=pg_exec($this->conn, $sql_query); - if(pg_numrows($res)>0) - { - $row=pg_fetch_object($res); - $this->lvinfo_id=$row->lvinfo_id; - return true; - } - else - { - return false; - } - } -} -?> \ No newline at end of file diff --git a/include/lv_verteilung.class.php b/include/lv_verteilung.class.php deleted file mode 100644 index 6d2f82b2a..000000000 --- a/include/lv_verteilung.class.php +++ /dev/null @@ -1,359 +0,0 @@ -connection = $conn; - } - - function load($lv_id) - { - $sql_query = "SELECT * FROM tbl_lehrveranstaltung where lehrveranstaltung_id='$lv_id'"; - - $result = pg_exec($this->connection,$sql_query); - - if($row=pg_fetch_object($result)) - { - $this->lehrveranstaltung_id = $row->lehrveranstaltung_id; - $this->lvnr = $row->lvnr; - $this->einheit_kurzbz = $row->einheit_kurzbz; - $this->lektor = $row->lektor; - $this->lehrfach_nr = $row->lehrfach_nr; - $this->lehrform = $row->lehrform_kurzbz; - $this->studiengang_kz = $row->studiengang_kz; - $this->fachbereich_id = $row->fachbereich_id; - $this->semester = $row->semester; - $this->verband = $row->verband; - $this->gruppe = $row->gruppe; - $this->raumtyp = $row->raumtyp; - $this->raumtypalternativ = $row->raumtypalernativ; - $this->semesterstunden = $row->semesterstunden; - $this->stundenblockung = $row->stundenblockung; - $this->wochenrythmus = $row->wochenrythmus; - $this->start_kw = $row->start_kw; - $this->anmerkung = $row->anmerkung; - $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; - $this->fas_id = $row->fas_id; - $this->unr = $row->unr; - $this->lehre = $row->lehre; - } - else - { - $this->errormsg = "Kein Datensatz mit dieser ID vorhanden"; - return false; - } - - return true; - } - - /******************************************************************** - * @brief Prüft ob die Variablen gültige Werte enthalten - * - * @return true=OK false=Fehler - ********************************************************************/ - function checkvars() - { - if(!is_numeric($this->semesterstunden)) - { - $this->errormsg = "Fehler: Semesterstunden muss eine Zahl sein"; - return false; - } - - if(!is_numeric($this->stundenblockung)) - { - $this->errormsg = "Fehler: Stundenblockung muss eine Zahl sein"; - return false; - } - - if(!is_numeric($this->wochenrythmus)) - { - $this->errormsg = "Fehler: Wochenrythmus muss eine Zahl sein"; - return false; - } - - if(strlen($this->lvnr)==0) - { - $this->errormsg = "Fehler: LVNR muss eingegeben werden"; - return false; - } - - if(!is_numeric($this->start_kw) AND strlen($this->start_kw)>0) - { - $this->errormsg = "Fehler: Start-KW muss eine Zahl sein"; - return false; - } - - return true; - } - - /******************************************************************** - * @brief Speichert die Daten in der Datenbank ab. Wenn new auf true - * gesetzt ist wird INSERT ausgeführt sonst UPDATE - * @param keine - * - * @return true=Ok false=Fehler - ********************************************************************/ - function save() - { - // Connection überprüfen - if (is_null($this->connection)) - { - $this->errormsg = "Fehler: Keine Datenbank connection vorhanden"; - return false; - } - - if ($this->new) { - $qry="INSERT INTO tbl_lehrveranstaltung(lvnr,unr,einheit_kurzbz,". - "lektor,lehrfach_nr,lehrform_kurzbz,studiengang_kz,fachbereich_id,semester,verband,". - "gruppe,raumtyp,raumtypalternativ,semesterstunden,stundenblockung,". - "wochenrythmus,start_kw,anmerkung,studiensemester_kurzbz,lehre)". - "values(". - "'".$this->lvnr."',". - (strlen($this->unr)>0?"'".$this->unr."'":'NULL').",". - (strlen($this->einheit_kurzbz)>0?"'".$this->einheit_kurzbz."'":'NULL').",". - "'".$this->lektor."',". - (strlen($this->lehrfach_nr)>0?$this->lehrfach_nr:'0').",". - "'".$this->lehrform."',". - (strlen($this->studiengang_kz)>0?$this->studiengang_kz:'0').",". - (strlen($this->fachbereich_id)>0?$this->fachbereich_id:'NULL').",". - (strlen($this->semester)>0?$this->semester:'NULL').",". - (strlen($this->verband)>0?"'".$this->verband."'":'NULL').",". - (strlen($this->gruppe)>0?"'".$this->gruppe."'":'NULL').",". - (strlen($this->raumtyp)>0?"'".$this->raumtyp."'":'0').",". - (strlen($this->raumtypalternativ)>0?"'".$this->raumtypalternativ."'":'NULL').",". - (strlen($this->semesterstunden)>0?$this->semesterstunden:'1').",". - (strlen($this->stundenblockung)>0?$this->stundenblockung:'1').",". - (strlen($this->wochenrythmus)>0?$this->wochenrythmus:'1').",". - (strlen($this->start_kw)>0?$this->start_kw:'NULL').",". - (strlen($this->anmerkung)>0?"'".$this->anmerkung."'":'NULL').",". - (strlen($this->studiensemester_kurzbz)>0?"'".$this->studiensemester_kurzbz."'":'0').",". - (($this->lehre=='on')?'true':'false'). - ")"; - } - else - { - $qry="UPDATE tbl_lehrveranstaltung ". - "SET lvnr='".$this->lvnr."',". - "unr=".(strlen($this->unr)>0?"'".$this->unr."'":'NULL').",". - "einheit_kurzbz=".(strlen($this->einheit_kurzbz)>0?"'".$this->einheit_kurzbz."'":'NULL').",". - "lektor='".$this->lektor."',". - "lehrfach_nr=".(strlen($this->lehrfach_nr)>0?$this->lehrfach_nr:'0').",". - "lehrform_kurzbz='".$this->lehrform."',". - "studiengang_kz=".(strlen($this->studiengang_kz)>0?$this->studiengang_kz:'0').",". - "fachbereich_id=".(strlen($this->fachbereich_id)>0?$this->fachbereich_id:'NULL').",". - "semester=".(strlen($this->semester)>0?$this->semester:'NULL').",". - "verband=".(strlen($this->verband)>0?"'".$this->verband."'":'NULL').",". - "gruppe=".(strlen($this->gruppe)>0?"'".$this->gruppe."'":'NULL').",". - "raumtyp=".(strlen($this->raumtyp)>0?"'".$this->raumtyp."'":'0').",". - "raumtypalternativ=".(strlen($this->raumtypalternativ)>0?"'".$this->raumtypalternativ."'":'NULL').",". - "semesterstunden=".(strlen($this->semesterstunden)>0?$this->semesterstunden:'1').",". - "stundenblockung=".(strlen($this->stundenblockung)>0?$this->stundenblockung:'1').",". - "wochenrythmus=".(strlen($this->wochenrythmus)>0?$this->wochenrythmus:'1').",". - "start_kw=".(strlen($this->start_kw)>0?$this->start_kw:'NULL').",". - "anmerkung=".(strlen($this->anmerkung)>0?"'".$this->anmerkung."'":'NULL').",". - "studiensemester_kurzbz=".(strlen($this->studiensemester_kurzbz)>0?"'".$this->studiensemester_kurzbz."'":'0').",". - "lehre=".(($this->lehre=='on')?'true':'false'). - " WHERE lehrveranstaltung_id='".$this->lehrveranstaltung_id."'"; - } - //echo $qry.':'.$this->lehre; - if($this->checkvars()) - { - if(!($erg=pg_exec($this->connection, $qry))) - { - $this->errormsg=pg_errormessage($this->connection); - return false; - } - } - else - { - return false; - } - return true; - } - - - - /******************************************************************** - * @brief Liefert die Datensätze aus der Tabelle tbl_lehrveranstaltung - * die zu diesen Kriterien passen - * @param $stsem Studiensemester / -1 wenn keines gewählt - * $sem Semester / -1 wenn keines gewählt - * $stg Studiengang / -1 wenn keiner gewählt - * $lektor Lektor / -1 wenn keiner gewählt - * @return $result=Array mit den Elementen false=Fehler - ********************************************************************/ - function getTab($stsem, $sem, $stg, $lektor, $order) - { - $sql_query="SELECT a.semester As sem,a.lehre as lvlehre, * FROM (SELECT * FROM public.tbl_lehrveranstaltung"; - $and = false; - - //Zusammenstöpseln des SQL Strings - if($lektor!=-1 OR $stsem!=-1 OR $stg!=-1) - { - $sql_query = $sql_query." WHERE"; - } - - //Zusammenstöpseln des SQL Strings - if($lektor!=-1) - { - $sql_query = $sql_query." lektor='$lektor'"; - $and=true; - } - - if($stsem!=-1) - { - if($and) - $sql_query = $sql_query." AND studiensemester_kurzbz='$stsem'"; - else - $sql_query = $sql_query." studiensemester_kurzbz='$stsem'"; - $and=true; - } - - if($stg!=-1) - { - if($sem!=-1) - { - if($and) - $sql_query = $sql_query." AND studiengang_kz='$stg' AND semester='$sem'"; - else - $sql_query = $sql_query." studiengang_kz='$stg' AND semester='$sem'"; - } - else - { - if($and) - $sql_query = $sql_query." AND studiengang_kz='$stg'"; - else - $sql_query = $sql_query." studiengang_kz='$stg'"; - } - } - - $sql_query = $sql_query.") AS a, tbl_lehrfach b WHERE a.lehrfach_nr=b.lehrfach_nr ORDER BY $order"; - //echo $sql_query; - - $result = pg_exec($this->connection,$sql_query); - $this->anz = pg_numrows($result); - while($row=pg_fetch_object($result)) - { - $lv = new lv_verteilung($connection); - $lv->lehrveranstaltung_id=$row->lehrveranstaltung_id; - $lv->lvnr = $row->lvnr; - $lv->einheit_kurzbz = $row->einheit_kurzbz; - $lv->lektor = $row->lektor; - $lv->lehrfach_nr = $row->lehrfach_nr; - $lv->lehrform = $row->lehrform_kurzbz; - $lv->studiengang_kz = $row->studiengang_kz; - $lv->fachbereich_id = $row->fachbereich_id; - $lv->semester = $row->sem; - $lv->verband = $row->verband; - $lv->gruppe = $row->gruppe; - $lv->raumtyp = $row->raumtyp; - $lv->raumtypalternativ = $row->raumtypalternativ; - $lv->semesterstunden = $row->semesterstunden; - $lv->stundenblockung = $row->stundenblockung; - $lv->wochenrythmus = $row->wochenrythmus; - $lv->start_kw = $row->start_kw; - $lv->anmerkung = $row->anmerkung; - $lv->studiensemester_kurzbz = $row->studiensemester_kurzbz; - $lv->fas_id = $row->fas_id; - $lv->unr = $row->unr; - $lv->lehrfach_kurzbz = $row->kurzbz; - $lv->lehrevz = $row->lehrevz; - $lv->lehre = $row->lvlehre; - $lv->lehrfach_bz = $row->bezeichnung; - $this->retwert[] = $lv; - } - - if($this->anz>0) - return true; - else - return false; - } -} \ No newline at end of file diff --git a/include/fas/lvinfo.class.php b/include/lvinfo.class.php similarity index 100% rename from include/fas/lvinfo.class.php rename to include/lvinfo.class.php diff --git a/include/mailgrp.class.php b/include/mailgrp.class.php deleted file mode 100644 index 5e7c1d284..000000000 --- a/include/mailgrp.class.php +++ /dev/null @@ -1,84 +0,0 @@ -conn=$conn; - - } - - /** - * Verbindung zur Datenbank herstellen - * @return PostgreSQL-Connection oder NULL - - function getConnection() { - if (!$conn = @pg_pconnect(CONN_STRING)) { - $this->errormsg="Es konnte keine Verbindung zum Server ". - "aufgebaut werden."; - return null; - } - return $conn; - }*/ - - /** - * Liefert alle Elemente der tbl_mailgrp - * @param studiengang_kz - * @return true wenn OK false wenn Fehler - */ - function getAll($studiengang_kz='') - { - if (is_null($this->conn)) { - $this->errormsg = "Keine Connection vorhanden"; - return false; - } - if (strlen($this->studiengang_kz)>0) - { - $where=" where studiengang_kz='".$studiengang_kz."' "; - } else - { - $where=""; - } - $qry="select * FROM tbl_mailgrp". - "$where order by mailgrp_kurzbz"; - if(!($erg=pg_exec($this->conn, $qry))) { - $this->errormsg=pg_errormessage($this->conn); - return false; - } - - - while($row=pg_fetch_object($erg)) - { - $l=new mailgrp($this->conn); - $l->mailgrp_kurzbz = $row->mailgrp_kurzbz; - $l->studiengang_kz = $row->studiengang_kz; - $l->beschreibung = $row->beschreibung; - $l->aktiv = $row->aktiv; - $l->generiert = $row->generiert; - $l->sichtbar = $row->sichtbar; - $result[]=$l; - } - return $result; - } -} -?> \ No newline at end of file diff --git a/include/mitarbeiter.class.php b/include/mitarbeiter.class.php index 66bc84b5c..35caa9ee0 100644 --- a/include/mitarbeiter.class.php +++ b/include/mitarbeiter.class.php @@ -1,362 +1,179 @@ -, + * Andreas Oesterreicher and + * Rudolf Hangl . */ -class mitarbeiter extends person + +class mitarbeiter extends benutzer { - /** - * @var boolean - */ - var $personalnr; - /** - * @var string - */ - var $kurzbz; - /** - * @var boolean true=lektor, false=sonstiger MA - */ - var $lektor; - /** - * @var boolean - */ - var $fixangestellt; - /** - * @var string - */ - var $telefonklappe; - /** - * @var funktion - */ - var $funktion; - /** - * @var mitarbeiter - */ - var $mitarbeiter; - /** - * @var string - */ - var $errormsg; - /** - * @var string? - */ - var $updateamum; - /** - * @var string - */ - var $updatevon; - /** - * @var string - */ - var $ort_kurzbz='0'; - + + //Tabellenspalten + var $ausbildungcode; //integer + var $personalnummer; //serial + var $kurzbz; //varchar(8) + var $lektor; //boolean + var $fixangestellt; //boolean + var $telefonklappe; //varchar(25) - function mitarbeiter($conn,$uid='') + // ************************************************************************* + // * Konstruktor - Uebergibt die Connection und laedt optional einen Mitarbeiter + // * @param $conn Datenbank-Connection + // * $uid Mitarbeiter der geladen werden soll (default=null) + // * $unicode Gibt an ob die Daten mit UNICODE Codierung + // * oder LATIN9 Codierung verarbeitet werden sollen + // ************************************************************************* + function mitarbeiter($conn, $uid=null, $unicode=false) { - $this->conn=$conn; - if (strlen($uid)>0) { - $this->uid=$uid; - $this->load(); + $this->conn = $conn; + + if($unicode) + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + else + $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; + + if(!pg_query($conn,$qry)) + { + $this->errormsg = 'Encoding konnte nicht gesetzt werden'; + return false; } + + //Mitarbeiter laden + //if($uid!=null) + // $this->load($uid); } - - /** - * @return boolean true=ok, false=fehler - */ + + // ************************************************ + // * ueberprueft die Variablen auf Gueltigkeit + // * @return true wenn gueltig, false im Fehlerfall + // ************************************************ + function validate() + { + if(strlen($this->uid)>16) + { + $this->errormsg = 'UID darf nicht laenger als 16 Zeichen sein'; + return false; + } + if($this->uid=='') + { + $this->errormsg = 'UID muss eingegeben werden'; + return false; + } + if($this->ausbildungcode!='' && !is_numeric($this->ausbildungcode)) + { + $this->errormsg = 'Ausbildungscode ist ungueltig'; + return false; + } + if($this->personalnummer!='' && !is_numeric($this->personalnummer)) + { + $this->errormsg = 'Personalnummer muss eine gueltige Zahl sein'; + return false; + } + if(strlen($this->kurzbz)>8) + { + $this->errormsg = 'kurzbz darf nicht laenger als 8 Zeichen sein'; + return false; + } + if(!is_bool($this->lektor)) + { + $this->errormsg = 'lektor muss boolean sein'.$this->lektor; + return false; + } + if(!is_bool($this->fixangestellt)) + { + $this->errormsg = 'fixangestellt muss boolean sein'; + return false; + } + if(strlen($this->telefonklappe)>25) + { + $this->errormsg = 'telefonklappe darf nicht laenger als 25 Zeichen sein'; + return false; + } + if(strlen($this->updatevon)>32) + { + $this->errormsg = 'updatevon darf nicht laenger als 32 Zeichen sein'; + return false; + } + + return true; + } + + + // ************************************************* + // * Speichert die Mitarbeiterdaten in die Datenbank + // * @return true wenn ok, false im Fehlerfall + // ************************************************* function save() { - global $auth; - // uid vorhanden? - if (strlen($this->uid)==0) { - $this->errormsg='uid nicht gesetzt.'; - return false; + //Variablen checken + if(!$this->validate()) + return false; + + pg_query($this->conn,'BEGIN;'); + //Basisdaten speichern + if(!benutzer::save()) + { + pg_query($this->conn,'ROLLBACK;'); + return false; } - // Connection holen - if (is_null($conn=person::getConnection())) { - return false; - } - // Daten zur Person speichern - if (!person::save()) { - $this->errormsg.="
    Daten zur Person konnten nicht gespeichert werden."; - return false; - } - if ($this->new) { - $qry="INSERT INTO tbl_mitarbeiter(uid,personalnummer,kurzbz,". - "lektor,fixangestellt,telefonklappe,updateamum,updatevon, ort_kurzbz)". - "values(". - "'".$this->uid."',". - "'".$this->personalnummer."',". - "'".$this->kurzbz."','". - ($this->lektor?'t':'f')."','". - ($this->fixangestellt?'t':'f')."',". - "'".$this->telefonklappe."',". - "now(),'".$_SERVER['PHP_AUTH_USER']."', ".($this->ort_kurzbz!='0'?"'$this->ort_kurzbz'":'NULL'). - ")"; - } else + if($this->new) { - $qry="UPDATE tbl_mitarbeiter ". - "SET personalnummer='".$this->personalnummer."',". - "kurzbz='".$this->kurzbz."',". - "lektor='".($this->lektor?'t':'f')."',". - "fixangestellt='".($this->fixangestellt?'t':'f')."',". - "telefonklappe='".$this->telefonklappe."',". - "updateamum=now(),updatevon='".$_SERVER['PHP_AUTH_USER']."', ort_kurzbz=".($this->ort_kurzbz!='0'?"'$this->ort_kurzbz'":'NULL'). - " WHERE uid='".$this->uid."'"; - } - //echo "
    ".$qry; - if(!($erg=pg_exec($conn, $qry))) + //Neuen Datensatz anlegen + $qry = "INSERT INTO tbl_mitarbeiter(mitarbeiter_uid, ausbildungcode, personalnummer, kurzbz, lektor, + fixangestellt, telefonklappe, updateamum, updatevon) + VALUES('".addslashes($this->uid)."',". + $this->addslashes($this->ausbildungcode).",". + $this->addslashes($this->personalnummer).",". //TODO: in Produktivversion nicht angeben + $this->addslashes($this->kurzbz).','. + ($this->lektor?'true':'false').','. + ($this->fixangestellt?'true':'false').','. + $this->addslashes($this->telefonklappe).','. + $this->addslashes($this->updateamum).','. + $this->addslashes($this->updatevon).');'; + } + else { - $this->errormsg=pg_errormessage($conn); - return false; + //Bestehenden Datensatz updaten + $qry = 'UPDATE tbl_mitarbeiter SET'. + ' ausbildungcode='.$this->addslashes($this->ausbildungcode).','. + " personalnummer=".$this->addslashes($this->personalnummer).",". //TODO: in Produktivversion nicht angeben + ' kurzbz='.$this->addslashes($this->kurzbz).','. + ' lektor='.($this->lektor?'true':'false').','. + ' fixangestellt='.($this->fixangestellt?'true':'false').','. + ' telefonklappe='.$this->addslashes($this->telefonklappe).','. + ' updateamum='.$this->addslashes($this->updateamum).','. + ' updatevon='.$this->addslashes($this->updatevon). + " WHERE mitarbeiter_uid='".addslashes($this->uid)."';"; } - return true; - } - - /** - * Ladet die Attribute des Studenten aus der Datenbank. Bei Fehler ist der - * Rueckgabewert 'false' und die Fehlermeldung steht in 'errormsg'. - * @return boolean true=ok, false=fehler - */ - function load($uid='') - { - // optional: uid setzen - if (strlen($uid)>0) - $this->uid=$uid; - // uid vorhanden? - if (strlen($this->uid)==0) { - $this->errormsg='uid nicht gesetzt.'; - return false; - } - // Connection holen - if (is_null($conn=person::getConnection())) { - return false; - } - // Daten zur Person laden - if (!person::load()) { - $this->errormsg.="
    Daten zur Person konnten nicht geladen werden."; - return false; - } - // MA-Daten holen - $sql_query="SELECT m.personalnummer,m.kurzbz,m.lektor,m.fixangestellt,m.telefonklappe,m.updateamum,m.updatevon, m.ort_kurzbz ". - "FROM tbl_mitarbeiter as m ". - "WHERE uid='".$this->uid."'"; - if(!($erg=pg_exec($conn, $sql_query))) - die(pg_errormessage($conn)); - $num_rows=pg_numrows($erg); - if($num_rows!=1) { - $this->errormsg="Zuwenige oder zuviele Ergebnisse (Anzahl: $num_rows)!"; - return false; - } - $row=pg_fetch_object($erg,0); - - $this->personalnummer=$row->personalnummer; - $this->kurzbz=$row->kurzbz; - $this->lektor=$row->lektor=='t'?true:false; - $this->fixangestellt=$row->fixangestellt=='t'?true:false; - $this->telefonklappe=$row->telefonklappe; - $this->updateamum=$row->updateamum; - $this->updatevon=$row->updatevon; - $this->ort_kurzbz=$row->ort_kurzbz; - - return true; - } - - /** - * Loescht den Mitarbeiter aus der Datenbank. Bei Fehler ist der Rueckgabewert - * 'false' und die Fehlermeldung steht in 'errormsg'. - * @return boolean true=ok, false=fehler - * vererbt, wenn Person gelöscht wird, sollte wahrscheinlich auch - * automatisch der Eintrag in den anderen Tabellen gelöscht werden - */ - /* - function delete() - { - if (is_null($conn=$this->getConnection())) { - return false; - } - - - return true; - }*/ - - /** - * gibt array mit allen Lektoren zurück - * @return array mit Lektoren - */ - function getLektoren() - { - if (is_null($conn=$this->getConnection())) + if(pg_query($this->conn,$qry)) { - return false; - } - $sql_query="set datestyle to german;SELECT tbl_person.*,". - "m.personalnummer,m.kurzbz,m.lektor,m.fixangestellt,m.telefonklappe, m.ort_kurzbz ". - "FROM tbl_person join tbl_mitarbeiter as m using(uid) ". - "WHERE m.lektor=true ". - "ORDER by upper(tbl_person.nachname),upper(tbl_person.vornamen)"; - if(!($erg=@pg_exec($conn, $sql_query))) { - $this->errormsg=pg_errormessage($conn); + pg_query($this->conn,'COMMIT;'); + //Log schreiben + return true; + } + else + { + pg_query($this->conn,'ROLLBACK;'); + $this->errormsg = 'Fehler beim Speichern des Mitarbeiter-Datensatzes'.$qry; return false; } - $num_rows=pg_numrows($erg); - $result=array(); - for($i=0;$i<$num_rows;$i++) - { - $row=pg_fetch_object($erg,$i); - $l=new mitarbeiter($this->conn); - // Personendaten - $l->uid=$row->uid; - $l->titel=$row->titel; - $l->vornamen=$row->vornamen; - $l->nachname=$row->nachname; - $l->gebdatum=$row->gebdatum; - $l->gebort=$row->gebort; - $l->gebzeit=$row->gebzeit; - $l->foto=$row->foto; - $l->anmerkungen=$row->anmerkungen; - $l->aktiv=$row->aktiv=='t'?true:false; - $l->email=$row->email; - $l->homepage=$row->homepage; - $l->updateamum=$row->updateamum; - $l->updatevon=$row->updatevon; - // Lektorendaten - $l->personalnummer=$row->personalnummer; - $l->kurzbz=$row->kurzbz; - $l->lektor=$row->lektor=='t'?true:false; - $l->fixangestellt=$row->fixangestellt=='t'?true:false; - $l->telefonklappe=$row->telefonklappe; - $l->ort_kurzbz=$row->ort_kurzbz; - // Lektor in Array speichern - $result[]=$l; - } - return $result; - } - - /** - * gibt array mit allen Mitarbeitern zurück - * @param $order gibt die spalte an nach der Sortiert werden soll - * @return array mit MA - */ - function getAll($order='upper(tbl_person.nachname),upper(tbl_person.vornamen)') - { - if (is_null($conn=$this->getConnection())) - { - return false; - } - $sql_query="set datestyle to german;SELECT tbl_person.*,". - "m.personalnummer,m.kurzbz,m.lektor,m.fixangestellt,m.telefonklappe, m.ort_kurzbz ". - "FROM tbl_person join tbl_mitarbeiter as m using(uid) ". - "ORDER by $order"; - if(!($erg=@pg_exec($conn, $sql_query))) - { - $this->errormsg=pg_errormessage($conn); - return false; - } - $num_rows=pg_numrows($erg); - $result=array(); - for($i=0;$i<$num_rows;$i++) - { - $row=pg_fetch_object($erg,$i); - $l=new mitarbeiter($this->conn); - // Personendaten - $l->uid=$row->uid; - $l->titel=$row->titel; - $l->vornamen=$row->vornamen; - $l->nachname=$row->nachname; - $l->gebdatum=$row->gebdatum; - $l->gebort=$row->gebort; - $l->gebzeit=$row->gebzeit; - $l->foto=$row->foto; - $l->anmerkungen=$row->anmerkungen; - $l->aktiv=$row->aktiv=='t'?true:false; - $l->email=$row->email; - $l->homepage=$row->homepage; - $l->updateamum=$row->updateamum; - $l->updatevon=$row->updatevon; - // Lektorendaten - $l->personalnummer=$row->personalnummer; - $l->kurzbz=$row->kurzbz; - $l->lektor=($row->lektor=='t'?'true':'false'); - $l->fixangestellt=($row->fixangestellt=='t'?'true':'false'); - $l->telefonklappe=$row->telefonklappe; - $l->ort_kurzbz=$row->ort_kurzbz; - // MA in Array speichern - $result[]=$l; - } - return $result; - - } - - /** - * gibt array mit allen Mitarbeitern zurueck - * @return array mit Mitarbeitern - */ - function getMitarbeiter($lektor=true,$fixangestellt=null,$stg_kz=null,$fachbereich_id=null) - { - if (is_null($conn=$this->getConnection())) - { - return false; - } - $sql_query='SELECT DISTINCT vw_mitarbeiter.* FROM vw_mitarbeiter - LEFT OUTER JOIN tbl_personfunktion USING(uid) - WHERE'; - if (!$lektor) - $sql_query.=' NOT'; - $sql_query.=' lektor'; - if ($fixangestellt!=null) - { - $sql_query.=' AND'; - if (!$fixangestellt) - $sql_query.=' NOT'; - $sql_query.=' fixangestellt'; - } - if ($stg_kz!=null) - $sql_query.=' AND studiengang_kz='.$stg_kz; - if ($fachbereich_id!=null) - $sql_query.=' AND fachbereich_id='.$fachbereich_id; - $sql_query.=' ORDER BY nachname, vornamen, kurzbz'; - //echo $sql_query; - if(!($erg=@pg_query($conn, $sql_query))) - { - $this->errormsg=pg_errormessage($conn); - return false; - } - $num_rows=pg_numrows($erg); - $result=array(); - for($i=0;$i<$num_rows;$i++) - { - $row=pg_fetch_object($erg,$i); - $l=new mitarbeiter($this->conn); - // Personendaten - $l->uid=$row->uid; - $l->titel=$row->titel; - $l->vornamen=$row->vornamen; - $l->nachname=$row->nachname; - $l->gebdatum=$row->gebdatum; - $l->gebort=$row->gebort; - $l->gebzeit=$row->gebzeit; - $l->foto=$row->foto; - $l->anmerkungen=$row->anmerkungen; - $l->aktiv=$row->aktiv=='t'?true:false; - $l->email=$row->email; - $l->homepage=$row->homepage; - $l->updateamum=$row->updateamum; - $l->updatevon=$row->updatevon; - // Lektorendaten - $l->personalnummer=$row->personalnummer; - $l->kurzbz=$row->kurzbz; - $l->lektor=$row->lektor=='t'?true:false; - $l->fixangestellt=$row->fixangestellt=='t'?true:false; - $l->telefonklappe=$row->telefonklappe; - //$l->ort_kurzbz=$row->ort_kurzbz; - // Lektor in Array speichern - $result[]=$l; - } - return $result; } } ?> \ No newline at end of file diff --git a/include/nation.class.php b/include/nation.class.php new file mode 100644 index 000000000..5e9e240e0 --- /dev/null +++ b/include/nation.class.php @@ -0,0 +1,92 @@ +conn = $conn; + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + if(!pg_query($conn,$qry)) + { + $this->errormsg = "Encoding konnte nicht gesetzt werden"; + return false; + } + if($code != null) + $this->load($code); + } + + /** + * Laedt die Funktion mit der ID $adress_id + * @param $code code der zu ladenden Nation + * @return true wenn ok, false im Fehlerfall + */ + function load($code) + { + $this->errormsg = 'Noch nicht implementiert'; + return false; + } + + /** + * Laedt alle Nationen + * @param ohnesperre wenn dieser Parameter auf true gesetzt ist werden + * nur die nationen geliefert dessen Buerger bei uns studieren duerfen + */ + function getAll($ohnesperre=false) + { + //Lesen der Daten aus der Datenbank + $qry = "SELECT * FROM nation"; + if($ohnesperre) + $qry .= " where sperre='N'"; + + $qry .=" order by kurztext"; + + if(!$res = pg_query($this->conn,$qry)) + { + $this->errormsg = 'Fehler bei einer Datenbankabfrage'; + return false; + } + + while($row = pg_fetch_object($res)) + { + $nation_obj = new nation($this->conn); + + $nation_obj->code = $row->code; + $nation_obj->sperre = $row->sperre; + $nation_obj->kontinent = $row->sperre; + $nation_obj->entwland = $row->entwland; + $nation_obj->euflag = $row->euflag; + $nation_obj->ewrflag = $row->ewrflag; + $nation_obj->kurztext = $row->kurztext; + $nation_obj->langtext = $row->langtext; + $nation_obj->engltext = $row->engltext; + + $this->result[] = $nation_obj; + } + return true; + } +} +?> \ No newline at end of file diff --git a/include/fas/news.class.php b/include/news.class.php similarity index 82% rename from include/fas/news.class.php rename to include/news.class.php index d4b0822c8..2695a770f 100644 --- a/include/fas/news.class.php +++ b/include/news.class.php @@ -19,26 +19,22 @@ * Andreas Oesterreicher and * Rudolf Hangl . */ -/** - * Klasse news (FAS-Online) - * @create 04-12-2006 - */ class news { var $conn; // @var resource DB-Handle var $new; // @var boolean - var $errormsg; // @var string + var $errormsg; // @var string var $result = array(); // @var news Objekt //Tabellenspalten var $news_id; // @var serial var $betreff; // @var varchar(128) - var $text; // @var string - var $semester; // @var smallint - var $uid; // @var varchar(16) + var $text; // @var string + var $semester; // @var smallint + var $uid; // @var varchar(16) var $studiengang_kz; // @var integer - var $verfasser; // @var varchar(64) + var $verfasser; // @var varchar(64) var $updateamum; // @var timestamp var $updatevon=0; // @var string var $insertamum; // @var timestamp @@ -91,6 +87,43 @@ class news return true; } + // ********************************** + // * Laedt alle News die nicht aelter + // * als $maxalter Tage sind + // * @param $maxalter + // ********************************** + function getnews($maxalter) + { + $qry = "SELECT * FROM campus.tbl_news WHERE now()-updateamum>$maxalter order by updateamum DESC;"; + + if($result = pg_query($this->conn, $qry)) + { + while($row = pg_fetch_object($result)) + { + $newsobj = new news($this->conn); + $newsobj->news_id = $row->news_id; + $newsobj->uid = $row->uid; + $newsobj->studiengang_kz = $row->studiengang_kz; + $newsobj->semester = $row->semester; + $newsobj->betreff = $row->betreff; + $newsobj->text = $row->text; + $newsobj->verfasser = $row->verfasser; + $newsobj->updateamum = $row->updateamum; + $newsobj->updatevon = $row->updatevon; + $newsobj->insertamum = $row->insertamum; + $newsobj->insertvon = $row->insertvon; + + $this->result = $newsobj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der News'; + return false; + } + } + /** * Laedt eine News * @param $news_id ID der zu ladenden Funktion @@ -145,10 +178,12 @@ class news $this->errormsg = 'Noch nicht implementiert'; return false; } + function addslashes($var) { return ($var!=''?"'".addslashes($var)."'":'null'); } + /** * Prueft die Gueltigkeit der Variablen * @return true wenn ok, false im Fehlerfall @@ -174,6 +209,7 @@ class news $this->errormsg = ''; return true; } + /** * Speichert den aktuellen Datensatz * @return true wenn ok, false im Fehlerfall @@ -219,7 +255,6 @@ class news } $qry = 'UPDATE campus.tbl_news SET '. - 'news_id='.$this->addslashes($this->news_id).', '. 'betreff='.$this->addslashes($this->betreff).', '. 'text='.$this->addslashes($this->text).', '. 'semester='.$this->addslashes($this->semester).', '. diff --git a/include/fas/ort.class.php b/include/ort.class.php similarity index 100% rename from include/fas/ort.class.php rename to include/ort.class.php diff --git a/include/fas/ortraumtyp.class.php b/include/ortraumtyp.class.php similarity index 100% rename from include/fas/ortraumtyp.class.php rename to include/ortraumtyp.class.php diff --git a/include/pdf.inc.php b/include/pdf.inc.php deleted file mode 100644 index 04608593b..000000000 --- a/include/pdf.inc.php +++ /dev/null @@ -1,191 +0,0 @@ -FPDF($orientation,$unit,$format); - //Initialization - $this->B=0; - $this->I=0; - $this->U=0; - $this->HREF=''; - } - - /** - * gibt eine Fusszeile aus - * - */ - function Footer() - { - // Check if Footer for this page already exists (do the same for Header()) - if(!$this->footerset[$this->page]) { - $this->SetY(-30); - //Page number - $this->Cell(0,10,'Seite '.$this->PageNo().'/{nb}',0,0,'C'); - // set footerset - $this->footerset[$this->page] = 1; - } - } - - /** - * gibt eine Kopfzeile aus - * - */ - function Header() - { - // Check if Header for this page already exists (do the same for Footer()) - if(!$this->headerset[$this->page]) { - $this->SetFont('Arial','B',10); - $this->SetY(25); - //Page number - $this->Cell(0,10,'',0,0,'C'); - // set headerset - $this->SetY(100); - $this->headerset[$this->page] = 1; - } - } - - /** - * Erzeugt eine Tabelle - * @param $datas Array - 1. Zeile = Spaltenueberschrift - * x. Zeile = Eintraege - * $lineheight Zeilenhoehe - * $aligns Array - enthaelt die ausrichtung der Spalten (L=Left,R=Right,C=Center) - */ - function morepagestable($datas,$lineheight=12,$aligns) - { - // some things to set and 'remember' - $l = $this->lMargin; - $startheight = $h = $this->GetY(); - $startpage = $currpage = $this->page; - - // calculate the whole width - foreach($this->tablewidths AS $width) - { - $fullwidth += $width; - } - - // Now let's start to write the table - $r=0; - $markline=false; - foreach($datas AS $row => $data) - { - $this->page = $currpage; - // write the horizontal borders - if($r<=1) - { - $this->SetLineWidth(1.5); - $this->Line($l,$h,$fullwidth+$l,$h); - } - else - { - //$this->SetLineWidth(0.001); - //$this->Line($l,$h,$fullwidth+$l,$h); NO-Line - } - - //Farben fuer die zeilenmarkierung setzen - if($markline) - $this->SetFillColor(230,230,230); - else - $this->SetFillColor(255,255,255); - - $markline=!$markline; - - // write the content and remember the height of the highest col - foreach($data AS $col => $txt) - { - $this->page = $currpage; - $this->SetXY($l,$h); - $align=($r==0)?'C':$aligns[$col]; - if($r==0) $this->SetFont('Arial','B',$lineheight-2); - else $this->SetFont('Arial','',$lineheight-2); - - //erste und zweite zeile nicht fuellen da sonst der rahmen verloren geht - if($row==0) - $this->MultiCell($this->tablewidths[$col],$lineheight,$txt,0,$align,0); - else - $this->MultiCell($this->tablewidths[$col],$lineheight,$txt,0,$align,1); - - $l += $this->tablewidths[$col]; - - if($tmpheight[$row.'-'.$this->page] < $this->GetY()) - { - $tmpheight[$row.'-'.$this->page] = $this->GetY(); - } - if($this->page > $maxpage) - $maxpage = $this->page; - } - - // get the height we were in the last used page - $h = $tmpheight[$row.'-'.$maxpage]; - // set the "pointer" to the left margin - $l = $this->lMargin; - // set the $currpage to the last page - $currpage = $maxpage; - $r++; - } - // draw the borders - // we start adding a horizontal line on the last page - $this->page = $maxpage; - $this->SetLineWidth(1.5); - //Immer gleich - if($h<=660) - $h=660; - else - $h=810; - - $this->Line($l,$h,$fullwidth+$l,$h); - // now we start at the top of the document and walk down - for($i = $startpage; $i <= $maxpage; $i++) - { - $this->page = $i; - $l = $this->lMargin; - $t = ($i == $startpage) ? $startheight : $this->tMargin; - $lh = ($i == $maxpage) ? $h : $this->h-$this->bMargin; - $this->SetLineWidth(1.5); - $this->Line($l,$t,$l,$lh); - $n=0; - $maxcol=count($this->tablewidths)-1; - foreach($this->tablewidths AS $width) - { - $l += $width; - if($n==$maxcol) $this->SetLineWidth(1.5); - else $this->SetLineWidth(0.5); - $this->Line($l,$t,$l,$lh); - $n++; - } - } - // set it to the last page, if not it'll cause some problems - $this->page = $maxpage; - $this->SetY($h); - } - -} -?> \ No newline at end of file diff --git a/include/person.class.php b/include/person.class.php index 3440df800..11642a1d2 100644 --- a/include/person.class.php +++ b/include/person.class.php @@ -1,194 +1,372 @@ -false wenn Fehler auftritt und schreiben - * die Fehlermeldung in diese Variable - * @var string enthält Fehlermeldung - */ - var $errormsg; - /** - * @var boolean true=Person neu anlegen (INSERT), false=UPDATE - */ - var $new=true; - /** - * @var person Person (todo: wozu?) - */ - var $person; - /** - * @var resource - */ - var $conn; - var $updateamum; - var $updatevon; - - function person($conn) - { - $this->conn = $conn; - } - - - /** - * Verbindung zur Datenbank herstellen - * @return PostgreSQL-Connection oder NULL - */ - function getConnection() { - return $this->conn; - } - - /** - * Speichert die Person in die Datenbank. INSERT oder DELETE wird durch 'new' - * bestimmt. - * @return boolean false, wenn's nicht funtkioniert hat (Fehlermeldung steht - * in errormsg) - */ - function save() - { - if (is_null($conn=$this->getConnection())) { - return false; - } - if (strlen($this->uid)==0) - { - $this->errormsg="uid nicht gesetzt"; - return false; - } - if ($this->new) - { - $qry="insert into tbl_person(uid,titel,vornamen,nachname,gebdatum,". - "gebort,gebzeit,anmerkungen,aktiv,". - "email,alias,homepage) ". - "values('".$this->uid."','".$this->titel."',". - "'".$this->vornamen."','".$this->nachname."',". - (strlen($this->gebdatum)>0?"'".$this->gebdatum."'":'NULL'). - ",'".$this->gebort."',". - (strlen($this->gebzeit)>0?"'".$this->gebzeit."'":'NULL'). - ",'".$this->anmerkungen."',".($this->aktiv?'true':'false').",". - "'".$this->email."',".($this->alias==''?'null':"'$this->alias'").",'".$this->homepage."'". - ")"; - } - else - { - $qry="update tbl_person set ". - "titel='".$this->titel."',". - "vornamen='".$this->vornamen."',". - "nachname='".$this->nachname."',". - "gebdatum=".(strlen($this->gebdatum)>0?"'".$this->gebdatum."'":'NULL').",". - "gebort='".$this->gebort."',". - "gebzeit=".(strlen($this->gebzeit)>0?"'".$this->gebzeit."'":'NULL').",". - "anmerkungen='".$this->anmerkungen."',". - "aktiv=".($this->aktiv?'true':'false').",". - "email='".$this->email."',alias=".($this->alias==''?'null':"'$this->alias'").",". - "homepage='".$this->homepage."' ". - "where uid='".$this->uid."'"; - } - $qry="set datestyle to german;".$qry; - //echo $qry; - if(!($erg=pg_exec($conn, $qry))) - { - $this->errormsg=pg_errormessage($conn); - return false; - } - return true; - } - - /** - * Ladet die Attribute der Person aus der Datenbank. Bei Fehler ist der - * Rueckgabewert 'false' und die Fehlermeldung steht in 'errormsg'. - * @return boolean true, wenn's funktioniert hat; false bei Fehler - */ - function load($uid='') - { - // optional: uid setzen - if (strlen($uid)>0) - $this->uid=$uid; - // uid vorhanden? - if (strlen($this->uid)==0) { - $this->errormsg='uid nicht gesetzt'; - return false; - } - if (is_null($conn=$this->getConnection())) { - return false; - } - $sql_query="set datestyle to german;SELECT tbl_person.* ". - "FROM tbl_person ". - "WHERE uid='".addslashes($this->uid)."'"; - if(!($erg=pg_exec($conn, $sql_query))) { - $this->errormsg=pg_errormessage($conn); - return false; - } - $num_rows=pg_numrows($erg); - if($num_rows!=1) - { - $this->errormsg="Zuwenige oder zuviele Ergebnisse (Anzahl: $num_rows)!"; - return false; - } - $row=pg_fetch_object($erg,0); - - $this->titel=$row->titel; - $this->vornamen=$row->vornamen; - $this->nachname=$row->nachname; - $this->gebdatum=$row->gebdatum; - $this->gebort=$row->gebort; - $this->gebzeit=$row->gebzeit; - $this->foto=$row->foto; - $this->anmerkungen=$row->anmerkungen; - $this->aktiv=$row->aktiv=='t'?true:false; - $this->email=$row->email; - $this->alias=$row->alias; - $this->homepage=$row->homepage; - $this->updateamum=$row->updateamum; - $this->updatevon=$row->updatevon; - $this->new=false; - return true; - } - - /** - * Löscht die Person aus der Datenbank. Bei Fehler ist der Rueckgabewert 'false' - * und die Fehlermeldung steht in 'errormsg'. - * @return boolean true bei Erfolg, false bei Fehler - */ - function delete() - { - if (is_null($conn=$this->getConnection())) - { - return false; - } - $qry="delete from tbl_person where uid='".$this->uid."'"; - if(!($erg=pg_exec($conn, $sql_query))) - { - $this->errormsg=pg_errormessage($conn); - return false; - } - return true; - } - - - -} +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ + +class person +{ + var $conn; // resource DB-Handle + var $errormsg; // string + var $new; // boolean + var $personen = array(); // person Objekt + + //Tabellenspalten + var $person_id; // integer + var $sprache; // varchar(16) + var $anrede; // varchar(16) + var $titelpost; // varchar(32) + var $titelpre; // varchar(64) + var $nachname; // varchar(64) + var $vorname; // varchar(32) + var $vornamen; // varchar(128) + var $gebdatum; // date + var $gebort; // varchar(128) + var $gebzeit; // time + var $foto; // oid + var $anmerkungen; // varchar(256) + var $homepage; // varchar(256) + var $svnr; // char(10) + var $ersatzkennzeichen; // char(10) + var $familienstand; // char(1) + var $anzahlkinder; // smalint + var $aktiv; // boolean + var $insertamum; // timestamp + var $insertvon; // varchar(16) + var $updateamum; // timestamp + var $updatevon; // varchar(16) + var $ext_id; // bigint + + // ************************************************************************* + // * Konstruktor - Uebergibt die Connection und laedt optional eine Person + // * @param $conn Datenbank-Connection + // * $person_id Person die geladen werden soll (default=null) + // * $unicode Gibt an ob die Daten mit UNICODE Codierung + // * oder LATIN9 Codierung verarbeitet werden sollen + // ************************************************************************* + function person($conn, $person_id=null, $unicode=false) + { + $this->conn = $conn; + + if($unicode) + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + else + $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; + + if(!pg_query($conn,$qry)) + { + $this->errormsg = 'Encoding konnte nicht gesetzt werden'; + return false; + } + + if($person_id != null) + $this->load($person_id); + } + + // ********************************************************* + // * Laedt Person mit der uebergebenen ID + // * @param $person_id ID der Person die geladen werden soll + // ********************************************************* + function load($person_id) + { + //person_id auf gueltigkeit pruefen + if(is_numeric($person_id) && $person_id!='') + { + $qry = "SELECT person_id, sprache, anrede, titelpost, titelpre, nachname, vorname, vornamen, + gebdatum, gebort, gebzeit, foto, anmerkungen, homepage, svnr, ersatzkennzeichen, + familienstand, anzahlkinder, aktiv, insertamum, insertvon, updateamum, updatevon, ext_id + FROM tbl_person WHERE person_id='$person_id'"; + + if(!$result=pg_query($this->conn,$qry)) + { + $this->errormsg = 'Fehler beim lesen der Personendaten'; + return false; + } + + if($row = pg_fetch_object($result)) + { + $this->person_id = $row->person_id; + $this->sprache = $row->sprache; + $this->anrede = $row->anrede; + $this->titelpost = $row->titelpost; + $this->titelpre = $row->titelpre; + $this->nachname = $row->nachname; + $this->vorname = $row->vorname; + $this->vornamen = $row->vornamen; + $this->gebdatum = $row->gebdatum; + $this->gebort = $row->gebort; + $this->gebzeit = $row->gebzeit; + $this->foto = $row->foto; + $this->anmerkungen = $row->anmerkungen; + $this->homepage = $row->homepage; + $this->svnr = $row->svnr; + $this->ersatzkennzeichen = $row->ersatzkennzeichen; + $this->familienstand = $row->familienstand; + $this->anzahlkinder = $row->anzahlkinder; + $this->aktiv = ($row->aktiv=='t'?true:false); + $this->insertamum = $row->insertamum; + $this->insertvon = $row->insertvon; + $this->updateamum = $row->updateamum; + $this->updatevon = $row->updatevon; + $this->ext_id = $row->ext_id; + } + else + { + $this->errormsg = 'Es ist kein Personendatensatz mit der ID '.$person_id.' vorhanden'; + return false; + } + + return true; + } + else + { + $this->errormsg = 'Die person_id muss eine gueltige Zahl sein'; + return false; + } + } + + // ******************************************* + // * Prueft die Variablen vor dem Speichern + // * auf Gueltigkeit. + // * @return true wenn ok, false im Fehlerfall + // ******************************************* + function validate() + { + if(strlen($this->sprache)>16) + { + $this->errormsg = 'Sprache darf nicht laenger als 16 Zeichen sein'; + return false; + } + if(strlen($this->anrede)>16) + { + $this->errormsg = 'Anrede darf nicht laenger als 16 Zeichen sein'; + return false; + } + if(strlen($this->titelpost)>32) + { + $this->errormsg = 'Titelpost darf nicht laenger als 32 Zeichen sein'; + return false; + } + if(strlen($this->titelpre)>64) + { + $this->errormsg = 'Titelpre darf nicht laenger als 64 Zeichen sein'; + return false; + } + if(strlen($this->nachname)>64) + { + $this->errormsg = 'Nachname darf nicht laenger als 64 Zeichen sein'; + return false; + } + if($this->nachname=='' || is_null($this->nachname)) + { + $this->errormsg = 'Nachname muss eingegeben werden'; + return false; + } + + if(strlen($this->vorname)>32) + { + $this->errormsg = 'Vorname darf nicht laenger als 32 Zeichen sein'; + return false; + } + if(strlen($this->vornamen)>128) + { + $this->errormsg = 'Vornamen darf nicht laenger als 128 Zeichen sein'; + return false; + } + //ToDo Gebdatum pruefen -> laut bis muss er aelter als 10 Jahre sein + if(strlen($this->gebdatum)==0 || is_null($this->gebdatum)) + { + $this->errormsg = 'Geburtsdatum muss eingegeben werden'; + return false; + } + if(strlen($this->gebort)>128) + { + $this->errormsg = 'Geburtsort darf nicht laenger als 128 Zeichen sein'; + return false; + } + if($this->foto!='' && !is_numeric($this->foto)) + { + $this->errormsg = 'FotoOID ist ungueltig'; + return false; + } + if(strlen($this->anmerkungen)>256) + { + $this->errormsg = 'Anmerkungen darf nicht laenger als 256 Zeichen sein'; + return false; + } + if(strlen($this->homepage)>256) + { + $this->errormsg = 'Homepage darf nicht laenger als 256 Zeichen sein'; + return false; + } + if(strlen($this->svnr)>10) + { + $this->errormsg = 'SVNR darf nicht laenger als 10 Zeichen sein'; + return false; + } + if(strlen($this->ersatzkennzeichen)>10) + { + $this->errormsg = 'Ersatzkennzeichen darf nicht laenger als 10 Zeichen sein'; + return false; + } + if(strlen($this->familienstand)>1) + { + $this->errormsg = 'Familienstand ist ungueltig'; + return false; + } + if($this->anzahlkinder!='' && !is_numeric($this->anzahlkinder)) + { + $this->errormsg = 'Anzahl der Kinder ist ungueltig'; + return false; + } + if(!is_bool($this->aktiv)) + { + $this->errormsg = 'Aktiv ist ungueltig'; + return false; + } + if(strlen($this->insertvon)>16) + { + $this->errormsg = 'Insertvon darf nicht laenger als 16 Zeichen sien'; + return false; + } + if(strlen($this->updatevon)>16) + { + $this->errormsg = 'Updatevon darf nicht laenger als 16 Zeichen sein'; + return false; + } + if($this->ext_id!='' && !is_numeric($this->ext_id)) + { + $this->errormsg = 'Ext_ID ist keine gueltige Zahl'; + return false; + } + + return true; + } + + // ************************************************ + // * wenn $var '' ist wird "null" zurueckgegeben + // * wenn $var !='' ist werden Datenbankkritische + // * zeichen mit backslash versehen und das ergbnis + // * unter hochkomma gesetzt. + // ************************************************ + function addslashes($var) + { + return ($var!=''?"'".addslashes($var)."'":'null'); + } + + // ************************************************************ + // * Speichert die Personendaten in die Datenbank + // * Wenn $new auf true gesetzt ist wird ein neuer Datensatz + // * angelegt, ansonsten der Datensatz mit $person_id upgedated + // * @return true wenn erfolgreich, false im Fehlerfall + // ************************************************************ + function save() + { + //Variablen auf Gueltigkeit pruefen + if(!person::validate()) + return false; + + if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE + { + $qry = 'INSERT INTO tbl_person (sprache, anrede, titelpost, titelpre, nachname, vorname, vornamen, + gebdatum, gebort, gebzeit, foto, anmerkungen, homepage, svnr, ersatzkennzeichen, + familienstand, anzahlkinder, aktiv, insertamum, insertvon, updateamum, updatevon , ext_id) + VALUES('.$this->addslashes($this->sprache).','. + $this->addslashes($this->anrede).','. + $this->addslashes($this->titelpost).','. + $this->addslashes($this->titelpre).','. + $this->addslashes($this->nachname).','. + $this->addslashes($this->vorname).','. + $this->addslashes($this->vornamen).','. + $this->addslashes($this->gebdatum).','. + $this->addslashes($this->gebort).','. + $this->addslashes($this->gebzeit).','. + $this->addslashes($this->foto).','. + $this->addslashes($this->anmerkungen).','. + $this->addslashes($this->homepage).','. + $this->addslashes($this->svnr).','. + $this->addslashes($this->ersatzkennzeichen).','. + $this->addslashes($this->familienstand).','. + $this->addslashes($this->anzahlkinder).','. + ($this->aktiv?'true':'false').','. + $this->addslashes($this->insertamum).','. + $this->addslashes($this->insertvon).','. + $this->addslashes($this->updateamum).','. + $this->addslashes($this->updatevon).','. + $this->addslashes($this->ext_id).');'; + } + else + { + //person_id auf gueltigkeit pruefen + if(!is_numeric($this->person_id)) + { + $this->errormsg = 'person_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = 'UPDATE tbl_person SET'. + ' sprache='.$this->addslashes($this->sprache).','. + ' anrede='.$this->addslashes($this->anrede).','. + ' titelpost='.$this->addslashes($this->titelpost).','. + ' titelpre='.$this->addslashes($this->titelpre).','. + ' nachname='.$this->addslashes($this->nachname).','. + ' vorname='.$this->addslashes($this->vorname).','. + ' vornamen='.$this->addslashes($this->vornamen).','. + ' gebdatum='.$this->addslashes($this->gebdatum).','. + ' gebort='.$this->addslashes($this->gebort).','. + ' gebzeit='.$this->addslashes($this->gebzeit).','. + ' foto='.$this->addslashes($this->foto).','. + ' anmerkungen='.$this->addslashes($this->anmerkungen).','. + ' homepage='.$this->addslashes($this->homepage).','. + ' svnr='.$this->addslashes($this->svnr).','. + ' ersatzkennzeichen='.$this->addslashes($this->ersatzkennzeichen).','. + ' familienstand='.$this->addslashes($this->familienstand).','. + ' anzahlkinder='.$this->addslashes($this->anzahlkinder).','. + ' aktiv='.($this->aktiv?'true':'false').','. + ' updateamum='.$this->addslashes($this->updateamum).','. + ' updatevon='.$this->addslashes($this->updatevon).','. + ' ext_id='.$this->addslashes($this->ext_id). + " WHERE person_id='$this->person_id'"; + } + + if(pg_query($this->conn,$qry)) + { + if($this->new) + { + $qry = "SELECT currval('tbl_person_person_id_seq') AS id;"; + if($row=pg_fetch_object(pg_query($this->conn,$qry))) + $this->person_id=$row->id; + else + { + $this->errormsg = 'Sequence konnte nicht ausgelesen werden'; + return false; + } + } + //Log schreiben + return true; + + } + else + { + $this->errormsg = 'Fehler beim Speichern des Person-Datensatzes:'.$this->nachname.' '.$qry; + return false; + } + } +} ?> \ No newline at end of file diff --git a/include/pgRS.class.php b/include/pgRS.class.php deleted file mode 100644 index f8adfffea..000000000 --- a/include/pgRS.class.php +++ /dev/null @@ -1,62 +0,0 @@ - - * date: 2004-06-26 - * date-modified: 2004-10-28 - * title: pgRS.class.php -*/ - -class pgRS -{ - var $arr = array(); - var $num = 0; - var $CONN = 0; - var $iid = 0; - - function pgRS($conn,$sql) - { - //echo $sql; - $this->CONN=$conn; - return $this->query($sql); - } - -/* function pgRS($sql, $dbname = "vilesci") { - if (!$this->CONN) - $this->CONN = ConnectDB($dbname); - return $this->query($sql); - } - - function pgRS($sql, $dbname = "vilesci", $user = "", $pw = "") - { - if (!$this->CONN) - $this->CONN = ConnectDB($dbname, $user, $pw); - return $this->query($sql); - } -*/ - function query($sql) - { - static $selects = 0; - //echo $sql; - $result = pg_exec($this->CONN, $sql); - if (strtolower(substr($sql,0,6))=="select") - { - $arr = array(); - ++$selects; - $row = 0; - if (($num = pg_numrows($result)) > 0) - $this->num = $num; - - while ($row < $this->num) - $arr[] = pg_fetch_array($result,$row++, - PGSQL_ASSOC); - - $this->arr = $arr; - - } - //else if (strtolower(substr($sql,0,6))=="insert"){ - $this->iid = pg_last_oid($result); - //} - } -} - -?> diff --git a/include/raumtyp.class.php b/include/raumtyp.class.php index 4fcb26ebf..2df07572e 100644 --- a/include/raumtyp.class.php +++ b/include/raumtyp.class.php @@ -1,69 +1,220 @@ , + * Andreas Oesterreicher and + * Rudolf Hangl . + */ +/** + * Klasse ortraumtyp (FAS-Online) + * @create 04-12-2006 + */ class raumtyp { - + var $conn; // @var resource DB-Handle + var $new; // @var boolean + var $errormsg; // @var string + var $result = array(); // @var fachbereich Objekt + + //Tabellenspalten + var $beschreibung; // @var string + var $raumtyp_kurzbz; // @var string + + /** - * @var string + * Konstruktor + * @param $conn Connection zur DB + * $ort_kurzbz und hierarchie ID des zu ladenden OrtRaumtyps */ - var $kurzbz; - /** - * @var string - */ - var $beschreibung; - /** - * @var string - */ - var $errormsg; - /** - * @var resource - */ - var $conn; - - - - function raumtyp($conn) + function raumtyp($conn, $raumtyp_kurzbz=null) { - $this->conn = $conn; + $this->conn = $conn; + if($raumtyp_kurzbz != null) + $this->load($raumtyp_kurzbz); } - - + /** - * Alle Raumtypen zurückgeben - * @return array mit Raumtypen oder false=fehler + * Laedt alle verfuegbaren OrtRaumtypen + * @return true wenn ok, false im Fehlerfall */ function getAll() { - if (is_null($this->conn)) + $qry = 'SELECT * FROM tbl_raumtyp order by raumtyp_kurzbz;'; + + if(!$res = pg_query($this->conn, $qry)) { + $this->errormsg = 'Fehler beim Laden der Datensaetze'; return false; } - $qry = "select raumtyp_kurzbz,beschreibung from tbl_raumtyp order by raumtyp_kurzbz"; - //echo $qry; - if (!($erg = pg_exec($this->conn, $qry))) + + while($row = pg_fetch_object($res)) { - $this->errormsg = pg_errormessage($this->conn); - return false; - } - $result = array(); - $num_rows = pg_numrows($erg); - for ($i = 0; $i < $num_rows; $i ++) - { - // Record holen - $row = pg_fetch_object($erg, $i); - // Instanz erzeugen - $rt = new raumtyp($this->conn); - $rt->kurzbz = $row->raumtyp_kurzbz; - $rt->beschreibung = $row->beschreibung; - // in array speichern - $result[] = $rt; - } - return $result; - } + $raumtyp_obj = new ort($this->conn); + + $raumtyp_obj->beschreibung = $row->beschreibung; + $raumtyp_obj->raumtyp_kurzbz = $row->raumtyp_kurzbz; - function test() + + $this->result[] = $raumtyp_obj; + } + return true; + } + + /** + * Laedt einen Raumtyp + * @param $raumtyp ID des zu ladenden Raumtyps + * @return true wenn ok, false im Fehlerfall + */ + function load($raumtyp_kurzbz) { - $bla= new test(); + if($raum_kurzbz == '') + { + $this->errormsg = 'Kein gültiger Schlüssel vorhanden'; + return false; + } + + $qry = "SELECT * FROM tbl_raumtyp WHERE raumtyp_kurzbz = '$raumtyp_kurzbz';"; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Fehler beim Laden des Datensatzes'; + return false; + } + + if($row=pg_fetch_object($res)) + { + $this->beschreibung = $row->beschreibung; + $this->raumtyp_kurzbz = $row->kurzbz; + + } + else + { + $this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden'; + return false; + } + + return true; + } + + /** + * Loescht einen Datensatz + * @param $raumtyp_kurzbz ID des Datensatzes der geloescht werden soll + * @return true wenn ok, false im Fehlerfall + */ + function delete($raumtyp_kurzbz) + { + $this->errormsg = 'Noch nicht implementiert'; + return false; + } + function addslashes($var) + { + return ($var!=''?"'".addslashes($var)."'":'null'); + } + /** + * Prueft die Gueltigkeit der Variablen + * @return true wenn ok, false im Fehlerfall + */ + function checkvars() + { + $this->beschreibung = str_replace("'",'´',$this->beschreibung); + $this->raumtyp_kurzbz = str_replace("'",'´',$this->raumtyp_kurzbz); + + + //Laenge Pruefen + if(strlen($this->beschreibung)>256) + { + $this->errormsg = "Beschreibung darf nicht laenger als 256 Zeichen sein bei $this->raumtyp_kurzbz - ".$this->beschreibung; + return false; + } + if(strlen($this->raumtyp_kurzbz)>8) + { + $this->errormsg = "Raumtyp_kurzbz darf nicht laenger als 8 Zeichen sein bei $this->raumtyp_kurzbz"; + return false; + } + $this->errormsg = ''; + return true; + } + /** + * Speichert den aktuellen Datensatz + * @return true wenn ok, false im Fehlerfall + */ + function save() + { + //Gueltigkeit der Variablen pruefen + if(!$this->checkvars()) + return false; + + if($this->new) + { + //Pruefen ob id gültig ist + if($this->raumtyp_kurzbz == '') + { + $this->errormsg = 'Keine gültige ID'; + return false; + } + //Neuen Datensatz anlegen + $qry = 'INSERT INTO tbl_raumtyp (beschreibung, raumtyp_kurzbz) VALUES ('. + $this->addslashes($this->beschreibung).', '. + $this->addslashes($this->raumtyp_kurzbz).');'; + + } + else + { + //bestehenden Datensatz akualisieren + + //Pruefen ob id gueltig ist + if($this->raumtyp_kurzbz == '') + { + $this->errormsg = 'Keine gültige ID'; + return false; + } + + $qry = 'UPDATE tbl_raumtyp SET '. + 'beschreibung='.$this->addslashes($this->beschreibung).' '. + 'WHERE raumtyp_kurzbz = '.$this->addslashes($this->ort_kurzbz).';'; + } + + if(pg_query($this->conn, $qry)) + { + /*//Log schreiben + $sql = $qry; + $qry = "SELECT nextval('log_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim Auslesen der Log-Sequence'; + return false; + } + + $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')"; + if(pg_query($this->conn, $qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; + return false; + }*/ + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern des Datensatzes'; + return false; + } } } ?> \ No newline at end of file diff --git a/include/fas/raumtyp_old.class.php b/include/raumtyp_old.class.php similarity index 100% rename from include/fas/raumtyp_old.class.php rename to include/raumtyp_old.class.php diff --git a/include/reservierung.class.php b/include/reservierung.class.php index 0a4e96758..4b4fe00bf 100644 --- a/include/reservierung.class.php +++ b/include/reservierung.class.php @@ -1,354 +1,216 @@ -conn = $conn; - if (strlen($id)>0) { - $this->id=$id; - $this->load(); - } - } - - /** - * Verbindung zur Datenbank herstellen - * @return PostgreSQL-Connection oder NULL - - function getConnection() { - if (!$conn = @pg_pconnect(CONN_STRING)) { - $this->errormsg="Es konnte keine Verbindung zum Server ". - "aufgebaut werden."; - return null; - } - return $conn; - } */ - - function load($id='') - { - if (is_null($this->conn)) - { - return false; - } - $sql_query="select * from tbl_reservierung where reservierung_id=".$this->id; - if(!($erg=@pg_exec($this->conn, $sql_query))) { - $this->errormsg=pg_errormessage($this->conn); - return false; - } - $num_rows=pg_numrows($erg); - if($num_rows!=1) { - $this->errormsg="Zuwenige oder zuviele Ergebnisse (Anzahl: $num_rows)!"; - return false; - } - $row=pg_fetch_object($erg,0); - - $this->new=false; - $this->id=$row->reservierung_id; - $this->ort_kurzbz=$row->ort_kurzbz; - $this->studiengang_kz=$row->studiengang_kz; - $this->uid=$row->uid; - $this->stunde=$row->stunde; - $this->datum=$this->unixDate($row->datum); - $this->titel=$row->titel; - $this->beschreibung=$row->beschreibung; - $this->semester=$row->semester; - $this->verband=$row->verband; - $this->gruppe=$row->gruppe; - $this->einheit_kurzbz=$row->einheit_kurzbz; - return true; - } - - function save() - { - if (is_null($this->conn)) - { - return false; - } - if ($this->new) - { - // Kollision-Check - $r=$this->exists($this->datum,$this->stunde,$this->ort_kurzbz); - if ($r!==false) - { - $this->errormsg("Kollision mit bereits bestehender Reservierung: ".$r->titel." (".$r->uid.")"); - return false; - } - // Stundenplan-Kollision? - $kollisionen=$this->collisionStundenplan($this->datum,$this->stunde,$this->ort_kurzbz); - if ($kollisionen>0) - { - $this->errormsg="Kollisionen mit Stundenplan: $kollisionen"; - return false; - } - $qry="insert into tbl_reservierung(ort_kurzbz,studiengang_kz,uid,stunde,datum,titel,beschreibung,semester,verband,gruppe,einheit_kurzbz)". - "values('".$this->ort_kurzbz."',". - $this->studiengang_kz.",'". - $this->uid."',".$this->stunde.",'". - date("d.m.Y",$this->datum)."','". - $this->titel."','".$this->beschreibung."',". - (ctype_digit($this->semester)?$this->semester:'NULL').",". - (strlen($this->verband)>0?"'".$this->verband."'":'NULL').",". - (strlen($this->gruppe)>0?"'".$this->gruppe."'":'NULL').",". - (strlen($this->einheit_kurzbz)>0?"'".$this->einheit_kurzbz."'":'NULL'). - ")"; - } else - { - $qry="update tbl_reservierung set ". - "ort_kurzbz='".$this->ort_kurzbz."',". - "studiengang_kz='".$this->studiengang_kz."',". - "uid='".$this->uid."',". - "stunde=".$this->stunde.",". - "datum='".date("d.m.Y",$this->datum)."',". - "titel='".$this->titel."',". - "beschreibung='".$this->beschreibung."',". - "semester=".(ctype_digit($this->semester)?$this->semester:'NULL').",". - "verband=".(strlen($this->verband)>0?"'".$this->verband."'":'NULL').",". - "gruppe=".(strlen($this->gruppe)>0?"'".$this->gruppe."'":'NULL').",". - "einheit_kurzbz=".(strlen($this->einheit_kurzbz)>0?"'".$this->einheit_kurzbz."'":'NULL'). - "WHERE reservierung_id=".$this->reservierung_id; - - } - $qry="set datestyle to german;".$qry; - //echo $qry; - if(!($erg=pg_exec($this->conn, $qry))) - { - $this->errormsg=pg_errormessage($this->conn); - return false; - } - return true; - } - - /** - * Überprüfen ob eine Kollision mit dem Stundenplan besteht - * @param integer $datum datum im unix-format - * @param integer $stunde id der stunde - * @param string $ort_kurzbz ort-ID - * @return integer anzahl der Kollisionen, -1 bei fehler - */ - function collisionStundenplan($datum,$stunde,$ort_kurzbz) - { - if (is_null($this->conn)) { - return -1; - } - $qry="SELECT uid, lehrfach_nr, studiengang_kz, stundenplan_id, unr, datum, stunde, ort_kurzbz, semester, verband, gruppe, einheit_kurzbz, titel, anmerkung, fix, stg_kurzbz, stg_kurzbzlang, stg_bezeichnung, fachbereich_id, lehrfach, farbe, lehrform, aktiv, lektor, fixangestellt ". - "FROM vw_stundenplan ". - "WHERE datum='".date('d.m.Y',$datum)."' ". - "AND stunde=".$stunde." ". - "AND ort_kurzbz='".$ort_kurzbz."' ". - "order by semester,verband,gruppe"; - if(!($erg=pg_exec($this->conn, $qry))) - { - $this->errormsg=pg_errormessage($this->conn); - return -1; - } - $num_rows=pg_numrows($erg); - return $num_rows; - } - - /** - * Überprüfen, ob bereits eine Reservierung existiert - * @param integer $datum datum im unix-format - * @param integer $stunde id der stunde - * @param string $ort_kurzbz ort-ID - * @return reservierung reservierung die bereits existiert - */ - function exists($datum,$stunde,$ort_kurzbz) - { - if (is_null($this->conn)) { - return false; - } - $qry="SELECT reservierung_id from tbl_reservierung ". - "WHERE datum='".date('d.m.Y',$datum)."' ". - "AND stunde=".$stunde." ". - "AND ort_kurzbz='".$ort_kurzbz."' ". - "ORDER BY semester,verband,gruppe"; - if(!($erg=pg_exec($this->conn, $qry))) - { - $this->errormsg=pg_errormessage($this->conn); - return false; - } - $num_rows=pg_numrows($erg); - $row=pg_fetch_object($erg,0); - $id=$row->reservierung_id; - $r=new reservierung($id); - // bereits vorhandene reservierung zurückgeben - if ($r!==false) return $r; - // reservierung konnte nicht geladen werden - $this->errormsg='Reservierung konnte nicht geladen werden'; - return false; - } - - - - /** - * reservierung löschen - */ - function delete() - { - if (is_null($conn=$this->getConnection())) { - return false; - } - $sql_query="DELETE FROM tbl_reservierung WHERE reservierung_id=".$this->id; - $result=pg_exec($this->conn, $sql_query); - $num_rows=pg_numrows($result); - if ($result) - { - print_r($result); - return true; - } - $this->errormsg=pg_errormessage($this->conn); - return false; - } - - /** - * Alle mehrfach Reservierungen holen - * @return array(datum,stunde,ort) - */ - function getAllMehrfach() - { - if (is_null($this->conn)) - { - return false; - } - $sql_query="set datestyle to german;". - "SELECT count(reservierung_id), datum, stunde, ort_kurzbz ". - "FROM tbl_reservierung GROUP BY datum, stunde, ort_kurzbz ". - "HAVING (count(reservierung_id)>1) ". - "ORDER BY datum, stunde, ort_kurzbz"; - if(!($erg=@pg_exec($this->conn, $sql_query))) { - $this->errormsg=pg_errormessage($this->conn); - return false; - } - $num_rows=pg_numrows($erg); - $result=array(); - for($i=0;$i<$num_rows;$i++) - { - $row=pg_fetch_object($erg,$i); - $result[]=array('datum'=>$this->unixDate($row->datum), - 'stunde'=>$row->stunde, - 'ort'=>$row->ort_kurzbz); - - } - return $result; - } - - /** - * mehrfach vorkommende Reservierungen laden - * @param string $datum - * @param integer $stunde - * @return array - */ - function getMehrfach($datum,$stunde,$ort_kurzbz) { - if (is_null($this->conn)) { - return false; - } - $sql_query="set datestyle to german;". - "SELECT tbl_reservierung.*, tbl_ort.ort_kurzbz AS ortkurzbz, tbl_mitarbeiter.kurzbz AS lektorkurzbz ". - "FROM tbl_reservierung, tbl_ort, tbl_person,tbl_mitarbeiter ". - "WHERE datum='$datum' AND tbl_reservierung.stunde=$stunde ". - "AND tbl_reservierung.ort_kurzbz='$ort_kurzbz' AND ". - "tbl_reservierung.ort_kurzbz=tbl_ort.ort_kurzbz ". - "AND tbl_person.uid=tbl_mitarbeiter.uid ". - "and tbl_mitarbeiter.lektor=true;"; - if(!($erg=@pg_exec($this->conn, $sql_query))) { - $this->errormsg=pg_errormessage($this->conn); - return false; - } - $num_rows=pg_numrows($erg); - $result=array(); - for($i=0;$i<$num_rows;$i++) - { - $row=pg_fetch_object($erg,$i); - $l=new reservierung(); - $l->new=false; - $l->id=$row->reservierung_id; - $l->ort_kurzbz=$row->ort_kurzbz; - $l->studiengang_kz=$row->studiengang_kz; - $l->uid=$row->uid; - $l->stunde=$row->stunde; - $l->datum=$this->unixDate($row->datum); - $l->titel=$row->titel; - $l->beschreibung=$row->beschreibung; - $l->semester=$row->semester; - $l->verband=$row->verband; - $l->gruppe=$row->gruppe; - $l->einheit_kurzbz=$row->einheit_kurzbz; - $result[]=$l; - } - return $result; - } - - function unixDate($date) - { - if (strlen($date)>0) - { - $_d1 = explode(".", $date); - $d1 = $_d1[0]; - $m1 = $_d1[1]; - $y1 = $_d1[2]; - $unixDate=mktime(0,0,0,$d1,$m1,$y1); - } else - { - return null; - } - return $unixDate; - } - -} - +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ + +class reservierung +{ + var $conn; // resource DB-Handle + var $errormsg; // string + var $new; // boolean + var $reservierungen = array(); // reservierung Objekt + + //Tabellenspalten + var $reservierung_id; // int + var $ort_kurzbz; // varchar(8) + var $studiengang_kz; // int + var $uid; // varchar(16) + var $stunde; // smalint + var $datum; // date + var $titel; // varchar(10) + var $beschreibung; // varchar(32) + var $semester; // smalint + var $verband; // char(1) + var $gruppe; // char(1) + var $gruppe_kurzbz; // varchar(10) + + // ************************************************************************* + // * Konstruktor - Uebergibt die Connection und laedt optional eine Reservierung + // * @param $conn Datenbank-Connection + // * $reservierung_id + // * $unicode Gibt an ob die Daten mit UNICODE Codierung + // * oder LATIN9 Codierung verarbeitet werden sollen + // ************************************************************************* + function reservierung($conn, $reservierung_id=null, $unicode=false) + { + $this->conn = $conn; + + if($unicode) + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + else + $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; + + if(!pg_query($conn,$qry)) + { + $this->errormsg = 'Encoding konnte nicht gesetzt werden'; + return false; + } + else + $this->new = true; + + if($reservierung_id!=null) + $this->load($reservierung_id); + } + + // ********************************************************* + // * Laedt eine Reservierung + // * @param reservierung_id + // ********************************************************* + function load($reservierung_id) + { + $this->errormsg = 'Not implemented'; + return false; + } + + // ******************************************* + // * Prueft die Variablen vor dem Speichern + // * auf Gueltigkeit. + // * @return true wenn ok, false im Fehlerfall + // ******************************************* + function validate() + { + if(strlen($this->ort_kurzbz)>8) + { + $this->errormsg = 'Ort_Kurzbz darf nicht laenger als 8 Zeichen sein'; + return false; + } + if(!is_numeric($this->studiengang_kz)) + { + $this->errormsg = 'Studiengang_kz muss eine gueltige Zahl sein'; + return false; + } + if(strlen($this->uid)>16) + { + $this->errormsg = 'UID darf nicht laenger als 16 Zeichen sein'; + return false; + } + if(!is_numeric($this->stunde)) + { + $this->errormsg = 'Stunde ist ungueltig'; + return false; + } + if(strlen($this->titel)>10) + { + $this->errormsg = 'Titel darf nicht laenger als 10 Zeichen sein'; + return false; + } + if(strlen($this->beschreibung)>32) + { + $this->beschreibung = 'Beschreibung darf nicht laenger als 32 Zeichen sein'; + return false; + } + if($this->semester!='' && !is_numeric($this->semester)) + { + $this->errormsg = 'Semester ist ungueltig'; + return false; + } + if(strlen($this->verband)>1) + { + $this->errormsg = 'Verband darf nicht laenger als 1 Zeichen sein'; + return false; + } + if(strlen($this->gruppe)>1) + { + $this->errormsg = 'Gruppe darf nicht laenger als 1 Zeichen sein'; + return false; + } + if(strlen($this->gruppe_kurzbz)>10) + { + $this->gruppe_kurzbz = 'Gruppe_kurzbz darf nicht laenger als 10 Zeichen sein'; + return false; + } + + return true; + } + + // ************************************************ + // * wenn $var '' ist wird NULL zurueckgegeben + // * wenn $var !='' ist werden Datenbankkritische + // * Zeichen mit Backslash versehen und das Ergbnis + // * unter Hochkomma gesetzt. + // ************************************************ + function addslashes($var) + { + return ($var!=''?"'".addslashes($var)."'":'null'); + } + + // ************************************************************ + // * Speichert Reservierung in die Datenbank + // * Wenn $new auf true gesetzt ist wird ein neuer Datensatz + // * angelegt, ansonsten der Datensatz upgedated + // * @return true wenn erfolgreich, false im Fehlerfall + // ************************************************************ + function save($new=null) + { + if(!is_null($new)) + $this->new = $new; + + //Variablen auf Gueltigkeit pruefen + if(!$this->validate()) + return false; + + if($this->new) + { + $qry = 'INSERT INTO campus.tbl_reservierung (reservierung_id, ort_kurzbz, studiengang_kz, uid, stunde, datum, titel, + beschreibung, semester, verband, gruppe, gruppe_kurzbz) + VALUES('.$this->addslashes($this->reservierung_id).','. + $this->addslashes($this->ort_kurzbz).','. + $this->addslashes($this->studiengang_kz).','. + $this->addslashes($this->uid).','. + $this->addslashes($this->stunde).','. + $this->addslashes($this->datum).','. + $this->addslashes($this->titel).','. + $this->addslashes($this->beschreibung).','. + $this->addslashes($this->semester).','. + $this->addslashes($this->verband).','. + $this->addslashes($this->gruppe).','. + $this->addslashes($this->gruppe_kurzbz).');'; + } + else + { + $qry = 'UPDATE campus.tbl_reservierung SET'. + ' ort_kurzbz='.$this->addslashes($this->ort_kurzbz).','. + ' studiengang_kz='.$this->addslashes($this->studiengang_kz).','. + ' uid='.$this->addslashes($this->uid).','. + ' stunde='.$this->addslashes($this->stunde).','. + ' datum='.$this->addslashes($this->datum).','. + ' titel='.$this->addslashes($this->titel).','. + ' beschreibung='.$this->addslashes($this->beschreibung).','. + ' semester='.$this->addslashes($this->semester).','. + ' verband='.$this->addslashes($this->verband).','. + ' gruppe='.$this->addslashes($this->gruppe).','. + ' gruppe_kurzbz='.$this->addslashes($this->gruppe_kurzbz). + " WHERE reservierung_id='".addslashes($this->reservierung_id)."'"; + } + + if(pg_query($this->conn,$qry)) + { + //Log schreiben + $this->new = false; + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern der Reservierung:'.$qry; + return false; + } + } +} ?> \ No newline at end of file diff --git a/include/student.class.php b/include/student.class.php index 928d7b2c8..2789845c1 100644 --- a/include/student.class.php +++ b/include/student.class.php @@ -1,345 +1,182 @@ , + * Andreas Oesterreicher and + * Rudolf Hangl . */ -class student extends person -{ - /** - * @var integer - */ - var $studiengang_kz; - /** - * @var string - */ - var $matrikelnr; - /** - * @var integer - */ - var $semester; - /** - * @var $string - */ - var $verband; - /** - * @var string - */ - var $gruppe; - /** - * @var student - */ - var $student; - /** - * @var einheit - */ - var $einheit; - /** - * @var studiengangsbezeichnung (nur zum Anzeigen, wird nicht gespeichert) - */ - var $stg_bezeichnung; - /** - * @var string fehlermeldung - */ - var $errormsg; - function student($conn,$uid='') +class student extends benutzer +{ + + //Tabellenspalten + var $matrikelnr; + var $prestudent_id; + var $studiengang_kz; + var $semester; + var $verband; + var $gruppe; + + // ************************************************************************* + // * Konstruktor - Uebergibt die Connection und laedt optional einen Studenten + // * @param $conn Datenbank-Connection + // * $student_id Student der geladen werden soll (default=null) + // * $unicode Gibt an ob die Daten mit UNICODE Codierung + // * oder LATIN9 Codierung verarbeitet werden sollen + // ************************************************************************* + function student($conn, $student_id=null, $unicode=false) { $this->conn = $conn; - if (strlen($uid)>0) { - $this->uid=$uid; - $this->load(); + + if($unicode) + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + else + $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; + + if(!pg_query($conn,$qry)) + { + $this->errormsg = 'Encoding konnte nicht gesetzt werden'; + return false; } + + //Student laden + if($student_id!=null) + $this->load($student_id); } - - - /** - * Speichert den Studenten in die Datenbank. Bei Fehler ist der Rueckgabewert - * 'false' und die Fehlermeldung steht in 'errormsg'. INSERT oder DELETE wird - * durch 'new' bestimmt. - * @return boolean true=ok, false=fehler - */ - function save() - { - // uid vorhanden? - if (strlen($this->uid)==0) { - $this->errormsg='uid nicht gesetzt.'; - return false; - } - // Connection holen - if (is_null($conn=person::getConnection())) { - return false; - } - // Daten zur Person speichern - - if (!person::save()) { - $this->errormsg.="
    Daten zur Person konnten nicht gespeichert werden."; - return false; - } - if ($this->new) { - $qry="INSERT INTO tbl_student(uid,studiengang_kz,matrikelnr,". - "semester,verband,gruppe,updateamum,updatevon)". - "values(". - "'".$this->uid."',". - (ctype_digit($this->studiengang_kz)?$this->studiengang_kz:'NULL').",". - "'".$this->matrikelnr."',". - (ctype_digit($this->semester)?$this->semester:'NULL').",". - "'".$this->verband."','".$this->gruppe."',". - "now(),'".$_SERVER['PHP_AUTH_USER']."'". - ")"; - } else + + // ******************************************* + // * Prueft die Variablen vor dem Speichern + // * auf Gueltigkeit. + // * @return true wenn ok, false im Fehlerfall + // ******************************************* + function validate() + { + if(strlen($this->uid)>16) { - $qry="UPDATE tbl_student ". - "SET studiengang_kz=".$this->studiengang_kz.",". - "matrikelnr='".$this->matrikelnr."',". - "semester=".(ctype_digit($this->semester)?$this->semester:'NULL').",". - "verband='".$this->verband."',". - "gruppe='".$this->gruppe."',". - "updateamum=now(),updatevon='".$_SERVER['PHP_AUTH_USER']."' ". - "WHERE uid='".$this->uid."'"; - } - //echo "
    ".$qry; - if(!($erg=pg_exec($conn, $qry))) - { - $this->errormsg=pg_errormessage($conn); + $this->errormsg = 'UID darf nicht laenger als 16 Zeichen sein'; return false; } + if($this->uid=='') + { + $this->errormsg = 'UID muss eingegeben werden'; + return false; + } + if(strlen($this->matrikelnr)>15) + { + $this->errormsg = 'Matrikelnummer darf nicht laenger als 15 Zeichen sein'; + return false; + } + if(strlen($this->updatevon)>32) + { + $this->errormsg = 'Updatevon darf nicht laenger als 32 Zeichen sein'; + return false; + } + if($this->prestudent_id!='' && !is_numeric($this->prestudent_id)) + { + $this->errormsg = 'Prestudent_id muss eine gueltige Zahl sein'; + return false; + } + if(!is_numeric($this->studiengang_kz)) + { + $this->errormsg = 'Studiengang_id muss eine gueltige Zahl sein'; + return false; + } + if(!is_numeric($this->semester)) + { + $this->errormsg = 'Semester muss ein gueltige Zahl sein'; + return false; + } + if(strlen($this->verband)>1) + { + $this->errormsg = 'Verband darf nicht laenger als 1 Zeichen sein'; + return false; + } + if(strlen($this->gruppe)>1) + { + $this->errormsg = 'Gruppe darf nicht laenger als 1 Zeichen sein'; + return false; + } + return true; } - - /** - * Ladet die Attribute des Studenten aus der Datenbank. Bei Fehler ist der - * Rueckgabewert 'false' und die Fehlermeldung steht in 'errormsg'. - * @return boolean true=ok, false=fehler - */ - function load($uid='') + + + // ************************************************************ + // * Speichert die Studentendaten in die Datenbank + // * Wenn $new auf true gesetzt ist wird ein neuer Datensatz + // * angelegt, ansonsten der Datensatz mit $person_id upgedated + // * @return true wenn erfolgreich, false im Fehlerfall + // ************************************************************ + function save() { - // optional: uid setzen - if (strlen($uid)>0) - $this->uid=$uid; - // uid vorhanden? - if (strlen($this->uid)==0) { - $this->errormsg='uid nicht gesetzt.'; + //Variablen checken + if(!$this->validate()) return false; - } - // Connection holen - if (is_null($conn=person::getConnection())) { - return false; - } - // Daten zur Person laden - if (!person::load()) { - $this->errormsg.="
    Daten zur Person konnten nicht geladen werden."; - return false; - } - // Studentendaten holen - $sql_query="SELECT s.studiengang_kz,s.matrikelnr,s.semester,s.verband,s.gruppe ". - "FROM tbl_student as s ". - "WHERE uid='".$this->uid."'"; - $sql_query="set datestyle to german; - SELECT tbl_person.*, m.studiengang_kz,m.matrikelnr,m.semester,m.verband,m.gruppe, - tbl_studiengang.studiengang_kz,tbl_studiengang.bezeichnung - FROM tbl_person join tbl_student as m using(uid) join - tbl_studiengang on (m.studiengang_kz=tbl_studiengang.studiengang_kz) - WHERE uid='".$this->uid."'"; - if(!($erg=pg_exec($conn, $sql_query))) - die(pg_errormessage($conn)); - $num_rows=pg_numrows($erg); - if($num_rows!=1) + + pg_query($this->conn,'BEGIN;'); + //Basisdaten speichern + if(!benutzer::save()) { - $this->errormsg="Zuwenige oder zuviele Ergebnisse (Anzahl: $num_rows)!"; + pg_query($this->conn,'ROLLBACK;'); + return false; + } + + if($this->new) + { + //Neuen Datensatz anlegen + $qry = "INSERT INTO tbl_student(student_uid, matrikelnr, updateamum, updatevon, prestudent_id, + studiengang_kz, semester, verband, gruppe) + VALUES('".addslashes($this->uid)."',". + $this->addslashes($this->matrikelnr).",". + $this->addslashes($this->updateamum).','. + $this->addslashes($this->updatevon).','. + $this->addslashes($this->prestudent_id).','. + $this->studiengang_kz.','. + $this->semester.','. + ($this->verband!=''?"'".addslashes($this->verband)."'":' ').','. + ($this->gruppe!=''?"'".addslashes($this->gruppe)."'":' ').');'; + } + else + { + //Bestehenden Datensatz updaten + $qry = 'UPDATE tbl_student SET'. + ' matrikelnr='.$this->addslashes($this->matrikelnr).','. + ' updateamum='.$this->addslashes($this->updateamum).','. + ' updatevon='.$this->addslashes($this->updatevon).','. + ' prestudent_id='.$this->addslashes($this->prestudent_id).','. + ' studiengang_kz='.$this->studiengang_kz.','. + ' semester='.$this->semester.','. + ' verband='.$this->addslashes($this->verband).','. + ' gruppe='.$this->addslashes($this->gruppe). + " WHERE student_uid='".addslashes($this->uid)."';"; + } + + if(pg_query($this->conn,$qry)) + { + pg_query($this->conn,'COMMIT;'); + //Log schreiben + return true; + } + else + { + pg_query($this->conn,'ROLLBACK;'); + $this->errormsg = 'Fehler beim Speichern des Studenten-Datensatzes'.$qry; return false; } - $row=pg_fetch_object($erg,0); - - $this->studiengang_kz=$row->studiengang_kz; - $this->matrikelnr=$row->matrikelnr; - $this->semester=$row->semester; - $this->verband=$row->verband; - $this->gruppe=$row->gruppe; - $this->uid=$row->uid; - $this->titel=$row->titel; - $this->vornamen=$row->vornamen; - $this->nachname=$row->nachname; - $this->gebdatum=$row->gebdatum; - $this->gebort=$row->gebort; - $this->gebzeit=$row->gebzeit; - $this->foto=$row->foto; - $this->anmerkungen=$row->anmerkungen; - $this->aktiv=$row->aktiv=='t'?true:false; - $this->email=$row->email; - $this->homepage=$row->homepage; - $this->updateamum=$row->updateamum; - $this->updatevon=$row->updatevon; - $this->stg_bezeichnung=$row->bezeichnung; - - // todo: einheit - - $result[]=$this; - return $result; - //return true; } - - /** - * Loescht den Studenten aus der Datenbank. Bei Fehler ist der Rueckgabewert - * 'false' und die Fehlermeldung steht in 'errormsg'. - * @return boolean true=ok, false=fehler - */ - function delete() - { - return false; - } - - /** - * Rueckgabewert ist die Anzahl der Ergebnisse. Bei Fehler negativ und die - * Fehlermeldung liegt in errormsg. - * Wenn der Parameter stg_kz NULL ist tritt einheit_kurzbzb in Kraft. - * @param string $einheit_kurzbz Einheit - * @param string grp Gruppe - * @param string ver Verband - * @param integer sem Semester - * @param integer stg_kz Kennzahl des Studiengangs - * @return integer Anzahl der gefundenen Einträge; negativ bei Fehler - */ - function getStudents($einheit_kurzbz, $grp, $ver, $sem, $stg_kz) - { - if (is_null($conn=person::getConnection())) { - return false; - } - $join = ''; - $where = ''; - if (strlen($einheit_kurzbz)>0) - { - // einheit? - $join=" join tbl_einheitstudent on (m.uid=tbl_einheitstudent.uid) "; - $where=" tbl_einheitstudent.einheit_kurzbz='".$einheit_kurzbz."'"; - } else - { - if (strlen($grp)>0) - { - // Gruppe - $where.=(strlen($where)>0?' and ':'')." m.gruppe='".$grp."' "; - } - if (strlen($ver)>0) - { - // Verband - $where.=(strlen($where)>0?' and ':'')." m.verband='".$ver."' "; - } - if (strlen($sem)>0) - { - // Semester - $where.=(strlen($where)>0?' and ':'')." m.semester=".$sem." "; - } - if (strlen($stg_kz)>0) - { - // Studiengang - $where.=(strlen($where)>0?' and ':'')." m.studiengang_kz='".$stg_kz."' "; - } - } - - - $sql_query="set datestyle to german;SELECT tbl_person.*,". - "m.studiengang_kz,m.matrikelnr,m.semester,m.verband,m.gruppe, ". - "tbl_studiengang.studiengang_kz,tbl_studiengang.bezeichnung ". - "FROM tbl_person join tbl_student as m using(uid) join ". - "tbl_studiengang on (m.studiengang_kz=tbl_studiengang.studiengang_kz) $join ". - (strlen($where)>1?'WHERE '.$where:''). - "ORDER by upper(tbl_person.nachname),upper(tbl_person.vornamen)"; - //echo $sql_query; - if(!($erg=@pg_exec($conn, $sql_query))) { - $this->errormsg=pg_errormessage($conn); - return false; - } - $num_rows=pg_numrows($erg); - $result=array(); - for($i=0;$i<$num_rows;$i++) - { - $row=pg_fetch_object($erg,$i); - $l=new student($conn); - // Personendaten - $l->uid=$row->uid; - $l->titel=$row->titel; - $l->vornamen=$row->vornamen; - $l->nachname=$row->nachname; - $l->gebdatum=$row->gebdatum; - $l->gebort=$row->gebort; - $l->gebzeit=$row->gebzeit; - $l->foto=$row->foto; - $l->anmerkungen=$row->anmerkungen; - $l->aktiv=$row->aktiv=='t'?true:false; - $l->email=$row->email; - $l->homepage=$row->homepage; - $l->updateamum=(isset($row->updateamum)?$row->updateamum:''); - $l->updatevon=(isset($row->updatevon)?$row->updatevon:''); - // Studentendaten - $l->matrikelnr=$row->matrikelnr; - $l->gruppe=$row->gruppe; - $l->verband=$row->verband; - $l->semester=$row->semester; - $l->studiengang_kz=$row->studiengang_kz; - $l->stg_bezeichnung=$row->bezeichnung; - // student in Array speichern - $result[]=$l; - } - return $result; - } - - /** - * gibt array mit allen Studenten zurück - * @return array Studenten - */ - function getAll() { - if (is_null($conn=person::getConnection())) { - return false; - } - $sql_query="set datestyle to german;SELECT tbl_person.*,". - "m.matrikelnr,m.semester,m.verband,m.gruppe, ". - "tbl_studiengang.studiengang_kz,tbl_studiengang.bezeichnung ". - "FROM tbl_person join tbl_student as m using(uid) ". - " join tbl_studiengang on (m.studiengang_kz=tbl_studiengang.studiengang_kz) ". - "ORDER by upper(tbl_person.nachname),upper(tbl_person.vornamen)"; - //echo $sql_query; - if(!($erg=@pg_exec($conn, $sql_query))) { - $this->errormsg=pg_errormessage($conn); - return false; - } - $num_rows=pg_numrows($erg); - $result=array(); - for($i=0;$i<$num_rows;$i++) - { - $row=pg_fetch_object($erg,$i); - $l=new student($conn); - // Personendaten - $l->uid=$row->uid; - $l->titel=$row->titel; - $l->vornamen=$row->vornamen; - $l->nachname=$row->nachname; - $l->gebdatum=$row->gebdatum; - $l->gebort=$row->gebort; - $l->gebzeit=$row->gebzeit; - $l->foto=$row->foto; - $l->anmerkungen=$row->anmerkungen; - $l->aktiv=$row->aktiv=='t'?true:false; - $l->email=$row->email; - $l->homepage=$row->homepage; - $l->updateamum=$row->updateamum; - $l->updatevon=$row->updatevon; - // Studentendaten - $l->matrikelnummer=$row->matrikelnummer; - $l->gruppe=$row->gruppe; - $l->verband=$row->verband; - $l->semester=$row->semester; - $l->studiengang_kz=$row->studiengang_kz; - $l->stg_bezeichnung=$row->bezeichnung; - // student in Array speichern - $result[]=$l; - } - return $result; - } - - - - } - ?> \ No newline at end of file diff --git a/include/studiengang.class.php b/include/studiengang.class.php index e0b63b912..e4cf2fb46 100644 --- a/include/studiengang.class.php +++ b/include/studiengang.class.php @@ -1,152 +1,228 @@ conn = $conn; - } - - /** - * Verbindung zur Datenbank herstellen - * @return PostgreSQL-Connection oder NULL - - function getConnection() + function studiengang($conn, $studiengang_id=null) { - if (!$conn = @pg_pconnect(CONN_STRING)) { - $this->errormsg="Es konnte keine Verbindung zum Server ". - "aufgebaut werden."; - return null; - } - return $conn; - }*/ - - - /** - * @return array Array mit allen Studiengängen, oder false bei Fehler - */ - function getAll($order='kurzbz') - { - if (is_null($this->conn)) { - $this->errormsg = "Connection failed"; - return false; - } - $qry="select * from tbl_studiengang order by $order"; - if(!($erg=pg_exec($this->conn, $qry))) + $this->conn = $conn; + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + if(!pg_query($conn,$qry)) { - $this->errormsg=pg_errormessage($this->conn); + $this->errormsg = "Encoding konnte nicht gesetzt werden"; return false; } - $result=array(); - $num_rows=pg_numrows($erg); - for ($i=0;$i<$num_rows;$i++) + if($studiengang_id != null) + $this->load($studiengang_id); + } + + /** + * Laedt einen Studiengang + * @param stg_id ID des Studienganges der zu laden ist + * @return true wenn ok, false im Fehlerfall + */ + function load($stg_id) + { + //Pruefen ob stg_id eine gueltige Zahl ist + if(!is_numeric($stg_id) || $stg_id == '') { - $row=pg_fetch_object($erg,$i); - $p=new studiengang($this->conn); - $p->studiengang_kz=$row->studiengang_kz; - $p->kurzbz=$row->kurzbz; - $p->kurzbzlang=$row->kurzbzlang; - $p->bezeichnung=$row->bezeichnung; - $p->max_semester=$row->max_semester; - $p->typ=$row->typ; - $p->farbe=$row->farbe; - $p->email=$row->email; - $result[]=$p; - } - return $result; - } - - function load($stgkz) - { - if (is_null($this->conn)) { - $this->errormsg = "Connection failed"; + $this->errormsg = 'stg_id muss eine gueltige Zahl sein'; return false; } - $qry="select * from tbl_studiengang where studiengang_kz=$stgkz"; - if(!($erg=pg_exec($this->conn, $qry))) + + $qry = "SELECT * FROM studiengang WHERE studiengang_pk = '$stg_id'"; + + if(!$res=pg_query($this->conn, $qry)) { - $this->errormsg=pg_errormessage($this->conn); + $this->errormsg = 'Fehler beim laden des Datensatzes'; return false; } + + if($row = pg_fetch_object($res)) + { + $this->studiengang_id = $row->studiengang_pk; + $this->name = $row->name; + $this->erhalter_id = $row->erhalter_fk; + $this->kuerzel = $row->kuerzel; + $this->studiengangsart = $row->studiengangsart; + $this->organisationsform = $row->organisationsform; + $this->kennzahl = $row->kennzahl; + $this->updateamum = $row->creationdate; + $this->updatevon = $row->creationuser; + $this->standort = $row->standort; + $this->regelstudiendauer = $row->regelstudiendauer; + $this->emailkuerzel = $row->emailkuerzel; + $this->beschreibung = $row->beschreibung; + $this->telefonnummer = $row->telefonnummer; + $this->bescheid = $row->bescheid; + $this->bescheidvom = $row->bescheidvom; + $this->bescheidgz = $row->bescheidgz; + $this->bescheidbgbl1 = $row->bescheidbgbl1; + $this->bescheidbgbl2 = $row->bescheidbgbl2; + $this->kennzahl_neu = $row->kennzahl_neu; + $this->nummerintern = $row->nummerintern; + $this->bafirmaaufzeugnis = ($row->bafirmaaufzeugnis=='t'?true:false); + $this->batitelaufzeugnis = ($row->batitelaufzeugnis=='t'?true:false); + } else { - if(pg_num_rows($erg)>0) - { - $row=pg_fetch_object($erg); - $this->studiengang_kz = $row->studiengang_kz; - $this->kurzbz = $row->kurzbz; - $this->kurzbzlang = $row->kurzbzlang; - $this->bezeichnung = $row->bezeichnung; - $this->typ = $row->typ; - $this->farbe = $row->farbe; - $this->email = $row->email; - $this->max_semester = $row->max_semester; - $this->max_verband = $row->max_verband; - $this->max_gruppe = $row->max_gruppe; - return true; - } - else - { - $this->errormsg = "Studiengang konnte nicht aufgeloest werden"; - return false; - } + $this->errormsg = 'Kein Datensatz mit dieser Nummer vorhanden'; + return false; } - } - + return true; + } + + /** + * Laedt Studiengang und Studiensemester + * @param stg_id Studiengangs_id + * stsem_id Studiensemester_id + */ + function load_stsem($stg_id, $stsem_id) + { + //Studiengang laden + if(!$this->load($stg_id)) + return false; + + //pruefen ob stsem_id eine gueltige Zahl ist + if(!is_numeric($stsem_id) || $stsem_id == '') + { + $this->errormsg = 'studiensemester_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "SELECT * FROM studiengang_studiensemester WHERE studiengang_fk='$this->studiengang_id' ". + "AND studiensemester_fk='$stsem_id';"; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Datensatz konnte nicht geladen werden'; + return false; + } + + if($row = pg_fetch_object($res)) + { + $this->studiensemester_id = $row->studiensemester_fk; + $this->startdatum = $row->startdatum; + $this->endedatum = $row->endedatum; + $this->regelwochenstunden = $row->regelwochen; + $this->betreuerstunden = $row->rvar1; + } + else + { + $this->errormsg = 'Datensatz konnte nicht geladen werden'; + return false; + } + return true; + } + + /** + * Liefert alle Studiengaenge + * @return true wenn ok, false im Fehlerfall + */ + function getAll() + { + $qry = "SELECT * FROM studiengang order by name;"; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Datensatz konnte nicht geladen werden'; + return false; + } + + while($row = pg_fetch_object($res)) + { + $stg_obj = new studiengang($this->conn); + + $stg_obj->studiengang_id = $row->studiengang_pk; + $stg_obj->name = $row->name; + $stg_obj->erhalter_id = $row->erhalter_fk; + $stg_obj->kuerzel = $row->kuerzel; + $stg_obj->studiengangsart = $row->studiengangsart; + $stg_obj->organisationsform = $row->organisationsform; + $stg_obj->kennzahl = $row->kennzahl; + $stg_obj->updateamum = $row->creationdate; + $stg_obj->updatevon = $row->creationuser; + $stg_obj->standort = $row->standort; + $stg_obj->regelstudiendauer = $row->regelstudiendauer; + $stg_obj->emailkuerzel = $row->emailkuerzel; + $stg_obj->beschreibung = $row->beschreibung; + $stg_obj->telefonnummer = $row->telefonnummer; + $stg_obj->bescheid = $row->bescheid; + $stg_obj->bescheidvom = $row->bescheidvom; + $stg_obj->bescheidgz = $row->bescheidgz; + $stg_obj->bescheidbgbl1 = $row->bescheidbgbl1; + $stg_obj->bescheidbgbl2 = $row->bescheidbgbl2; + $stg_obj->kennzahl_neu = $row->kennzahl_neu; + $stg_obj->nummerintern = $row->nummerintern; + $stg_obj->bafirmaaufzeugnis = ($row->bafirmaaufzeugnis=='t'?true:false); + $stg_obj->batitelaufzeugnis = ($row->batitelaufzeugnis=='t'?true:false); + + $this->result[] = $stg_obj; + } + + return true; + } + + /** + * Loescht einen Studiengang + * @param $stg_id ID des zu loeschenden Studienganges + * @return true wenn ok, false im Fehlerfall + */ + function delete($stg_id) + { + $this->errormsg = 'Noch nicht implementiert'; + return false; + } + + /** + * Speichert den aktuellen Datensatz + * @return true wenn ok, false im Fehlerfall + */ + function save() + { + $this->errormsg = 'Noch nicht implementiert'; + return false; + } } ?> \ No newline at end of file diff --git a/include/studiensemester.class.php b/include/studiensemester.class.php index 38302fa80..4a86a3f7a 100644 --- a/include/studiensemester.class.php +++ b/include/studiensemester.class.php @@ -1,154 +1,160 @@ -, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ -class studiensemester +class studiensemester { - - /** - * @var string - */ - var $kurzbz; - /** - * @var string - */ - var $start; - /** - * @var string - */ - var $ende; - - /** - * @var string - */ - var $errormsg; - - /** - * @var conn - */ - var $conn; + var $conn; // resource DB-Handle + var $errormsg; // string + var $new; // boolean + var $studiensemester = array(); // studiensemester Objekt - function studiensemester($conn) - { - $this->conn=$conn; - } - - /** - * Verbindung zur Datenbank herstellen - * @return PostgreSQL-Connection oder NULL + //Tabellenspalten + var $studiensemester_kurzbz; // varchar(16) + var $start; // date + var $ende; // date - function getConnection() + // *********************************************************************** + // * Konstruktor - Uebergibt die Connection und laedt optional ein LF + // * @param $conn Datenbank-Connection + // * $studiensemester_kurzbz StSem das geladen werden soll (default=null) + // * $unicode Gibt an ob die Daten mit UNICODE Codierung + // * oder LATIN9 Codierung verarbeitet werden sollen + // *********************************************************************** + function studiensemester($conn, $studiensemester_kurzbz=null, $unicode=false) { - if (!$conn = @ pg_pconnect(CONN_STRING)) - { - $this->errormsg = "Es konnte keine Verbindung zum Server "."aufgebaut werden."; - return null; - } - return $conn; - }*/ - - function load() - { - - } - - /** - * Alle Studiensemester zurückgeben - * @return array mit Studiensemester oder false=fehler - */ - function getAll($order='studiensemester_kurzbz') - { - if (is_null($this->conn)) - { - return false; - } - $qry = "select * from tbl_studiensemester ". - "order by $order"; - //echo $qry; - if (!($erg = pg_exec($this->conn, $qry))) - { - $this->errormsg = pg_errormessage($this->conn); - return false; - } - $result = array(); - $num_rows = pg_numrows($erg); - for ($i = 0; $i < $num_rows; $i ++) - { - // Record holen - $row = pg_fetch_object($erg, $i); - // Instanz erzeugen - $lf = new studiensemester($this->conn); - $lf->kurzbz = $row->studiensemester_kurzbz; - $lf->start = $row->start; - $lf->ende = $row->ende; - // in array speichern - $result[] = $lf; - } - return $result; - } - - /** - * Liefert das Aktuelle Studiensemester - * @return aktuelles Studiensemester oder false wenn es keines gibt - */ - function getakt() - { - $qry = "Select studiensemester_kurzbz from tbl_studiensemester where start <= now() and ende >= now()"; - if(!$res=pg_exec($this->conn,$qry)) - { - $this->errormsg = pg_errormessage($this->conn); - return false; - } + $this->conn = $conn; - if(pg_num_rows($res)>0) - { - $erg = pg_fetch_object($res); - return $erg->studiensemester_kurzbz; - } + if($unicode) + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; else + $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; + + if(!pg_query($conn,$qry)) { - $this->errormsg = "Kein aktuelles Studiensemester vorhanden"; + $this->errormsg = 'Encoding konnte nicht gesetzt werden'; return false; } + + if($studiensemester_kurzbz != null) + $this->load($studiensemester_kurzbz); } - - /** - * Liefert das Aktuelle Studiensemester oder das darauffolgende - * @return Studiensemester oder false wenn es keines gibt - */ - function getaktorNext() + + // ************************************************************** + // * Laedt das Studiensemester mit der uebergebenen ID + // * @param $studiensemester_kurzbz Stsem das geladen werden soll + // ************************************************************** + function load($studiensemester_kurzbz) { - if($stsem=$this->getakt()) - return $stsem; - else + $qry = "SELECT * FROM tbl_studiensemester WHERE studiensemester_kurzbz='".addslashes($studiensemester_kurzbz)."'"; + + if(!$result=pg_query($this->conn,$qry)) { - $qry = "Select studiensemester_kurzbz from tbl_studiensemester where ende >= now() ORDER BY ende"; - if(!$res=pg_exec($this->conn,$qry)) - { - $this->errormsg = pg_errormessage($this->conn); - return false; - } - - if(pg_num_rows($res)>0) - { - $erg = pg_fetch_object($res); - return $erg->studiensemester_kurzbz; - } - else - { - $this->errormsg = "Kein aktuelles Studiensemester vorhanden"; - return false; - } + $this->errormsg = 'Fehler beim lesen des Studiensemesters'; + return false; } + + if($row = pg_fetch_object($result)) + { + $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $this->start = $row->start; + $this->ende = $row->ende; + } + else + { + $this->errormsg = "Es ist kein Studiensemester mit der Kurzbezeichung $studiensemester_kurzbz vorhanden"; + return false; + } + + return true; } - + + // ******************************************* + // * Prueft die Variablen vor dem Speichern + // * auf Gueltigkeit. + // * @return true wenn ok, false im Fehlerfall + // ******************************************* + function validate() + { + if(strlen($this->studiensemester_kurzbz)>16) + { + $this->errormsg = 'Studiensemester Kurzbezeichnung darf nicht laenger als 16 Zeichen sein'; + return false; + } + if($this->studiensemester_kurzbz=='') + { + $this->errormsg = 'Es muss eine Kurzbezeichnung eingegeben werden'; + return false; + } + return true; + } + + // ************************************************ + // * wenn $var '' ist wird "null" zurueckgegeben + // * wenn $var !='' ist werden Datenbankkritische + // * zeichen mit backslash versehen und das ergbnis + // * unter hochkomma gesetzt. + // ************************************************ + function addslashes($var) + { + return ($var!=''?"'".addslashes($var)."'":'null'); + } + + // ************************************************************ + // * Speichert das Studiensemester in die Datenbank + // * Wenn $new auf true gesetzt ist wird ein neuer Datensatz + // * angelegt, ansonsten der Datensatz upgedated + // * @return true wenn erfolgreich, false im Fehlerfall + // ************************************************************ function save() { + //Variablen auf Gueltigkeit pruefen + if(!$this->validate()) + return false; + if($this->new) + { + $qry = "INSERT INTO tbl_studiensemester (studiensemester_kurzbz, start, ende) + VALUES('".addslashes($this->studiensemester_kurzbz)."',". + $this->addslashes($this->start).','. + $this->addslashes($this->ende).');'; + } + else + { + $qry = 'UPDATE tbl_studiensemester SET'. + ' start='.$this->addslashes($this->start).','. + ' ende='.$this->addslashes($this->ende). + " WHERE studiensemester_kurzbz='$this->studiensemester_kurzbz'"; + } + + if(pg_query($this->conn,$qry)) + { + //Log schreiben + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern des Studiensemesters:'.$qry; + return false; + } } - - function delete() - { - - } - } ?> \ No newline at end of file diff --git a/include/fas/stunde.class.php b/include/stunde.class.php similarity index 100% rename from include/fas/stunde.class.php rename to include/stunde.class.php diff --git a/include/stundenplan.class.php b/include/stundenplan.class.php index 58973d83a..e45338d66 100644 --- a/include/stundenplan.class.php +++ b/include/stundenplan.class.php @@ -1,1567 +1,261 @@ -type=$type; - $this->conn=$conn; - $this->link='stpl_week.php?type='.$type; - $this->kal_link='stpl_kalender.php?type='.$type; - $this->datum=mktime(); - $this->init_stdplan(); - } - - function init_stdplan() - { - //Stundenplan Array initialisieren (Anzahl auf 0 setzten) - unset($this->std_plan); - for ($i=1; $i<7; $i++) - for ($j=0; $j<20; $j++) - { - $this->std_plan[$i][$j][0]->anz=0; - $this->std_plan[$i][$j][0]->unr=0; - } - } - - /************************************************************************** - * @brief Funktion load_data ladet alle Zusatzinformationen fuer die Darstellung - * und ueberprueft die Daten - * - * @param datum Datum eines Tages in der angeforderten Woche - * - * @return einheit_kurzbz - * - */ - function load_data($type, $uid, $ort_kurzbz=NULL, $studiengang_kz=NULL, $sem=NULL, $ver=NULL, $grp=NULL, $einheit_kurzbz=NULL) - { - /////////////////////////////////////////////////////////////////////// - // Parameter Checken - // Typ des Stundenplans - if ($type=='student' || $type=='lektor' || $type=='verband' || $type=='einheit' || $type=='ort') - $this->type=$type; - else - { - $this->errormsg='Error: type is not defined!'; - return false; - } - // Person - if (($type=='student' || $type=='lektor') && ($uid==NULL || $uid=='')) - { - $this->errormsg='Fehler: uid der Person ist nicht gesetzt'; - return false; - } - else - $this->pers_uid=$uid; - - // Ort - if ($type=='ort' && $ort_kurzbz==NULL) - { - $this->errormsg='Fehler: Kurzbezeichnung des Orts ist nicht gesetzt'; - return false; - } - elseif ($type=='ort') - $this->ort_kurzbz=$ort_kurzbz; - else - $this->ort_kurzbz=''; - - // Lehrverband - if ($type=='verband' && $studiengang_kz==NULL) - { - $this->errormsg='Fehler: Kennzahl des Studiengangs ist nicht gesetzt'; - return false; - } - elseif($type=='verband') - { - $this->stg_kz=$studiengang_kz; - $this->sem=$sem; - $this->ver=$ver; - $this->grp=$grp; - } - - // Einheit - if ($type=='einheit' && $einheit_kurzbz==NULL) - { - $this->errormsg='Fehler: Kurzbezeichnung der Einheit ist nicht gesetzt'; - return false; - } - elseif ($type=='einheit') - $this->einheit_kurzbz=$einheit_kurzbz; - - - /////////////////////////////////////////////////////////////////////// - // Zusaetzliche Daten ermitteln - //personendaten - if ($this->type=='student' || $this->type=='lektor') - { - $this->link.='&pers_uid='.$this->pers_uid; //Link erweitern - if ($this->type=='student') - $sql_query="SELECT uid, titel, nachname, vornamen, studiengang_kz, semester, verband, gruppe FROM vw_student WHERE uid='$this->pers_uid'"; - else - $sql_query="SELECT uid, titel, nachname, vornamen FROM vw_lektor WHERE uid='$this->pers_uid'"; - //echo $sql_query; - if (!($result=pg_exec($this->conn, $sql_query))) - { - $this->errormsg=pg_last_error($this->conn); - return false; - } - if (pg_num_rows($result)!=1) - { - $this->errormsg='Error: Cannot identify UID "'.$this->pers_uid.'"!'; - return false; - } - $this->pers_uid=pg_result($result,0,'"uid"'); - $this->pers_titel=pg_result($result,0,'"titel"'); - $this->pers_nachname=pg_result($result,0,'"nachname"'); - $this->pers_vornamen=pg_result($result,0,'"vornamen"'); - if ($this->type=='student') - { - $this->stg_kz=pg_result($result,0,'"studiengang_kz"'); - $this->sem=pg_result($result,0,'"semester"'); - $this->ver=pg_result($result,0,'"verband"'); - $this->grp=pg_result($result,0,'"gruppe"'); - } - } - - //ortdaten ermitteln - if ($this->type=='ort') - { - $sql_query="SELECT bezeichnung, ort_kurzbz FROM tbl_ort WHERE ort_kurzbz='$this->ort_kurzbz'"; - //echo $sql_query; - if (!$result=pg_query($this->conn, $sql_query)) - $this->errormsg=pg_last_error($this->conn); - $this->ort_bezeichnung=pg_result($result,0,'"bezeichnung"'); - $this->ort_kurzbz=pg_result($result,0,'"ort_kurzbz"'); - $this->link.='&ort_kurzbz='.$this->ort_kurzbz; //Link erweitern - } - - // Studiengangsdaten ermitteln - if ($this->type=='student' || $this->type=='verband') - { - $sql_query="SELECT bezeichnung, kurzbz, kurzbzlang FROM tbl_studiengang WHERE studiengang_kz=$this->stg_kz"; - //echo $sql_query; - if(!($result=pg_exec($this->conn, $sql_query))) - die(pg_last_error($this->conn)); - $this->stg_bez=pg_result($result,0,'"bezeichnung"'); - $this->stg_kurzbz=pg_result($result,0,'"kurzbz"'); - $this->stg_kurzbzlang=pg_result($result,0,'"kurzbzlang"'); - } - - // Stundentafel abfragen - $sql_query="SELECT stunde, beginn, ende FROM tbl_stunde ORDER BY stunde"; - if(!$this->stunde=pg_exec($this->conn, $sql_query)) - die(pg_last_error($this->conn)); - - // Studiensemesterdaten ermitteln - $sql_query="SELECT * FROM tbl_studiensemester WHERE now()conn, $sql_query)) - die(pg_last_error($this->conn)); - else - { - $row=pg_fetch_object($result); - $this->studiensemester_now->name=$row->studiensemester_kurzbz; - $this->studiensemester_now->start=mktime(0,0,0,substr($row->start,5,2),substr($row->start,8,2),substr($row->start,0,4)); - $this->studiensemester_now->ende=mktime(0,0,0,substr($row->ende,5,2),substr($row->ende,8,2),substr($row->ende,0,4)); - $row=pg_fetch_object($result); - $this->studiensemester_next->name=$row->studiensemester_kurzbz; - $this->studiensemester_next->start=mktime(0,0,0,substr($row->start,5,2),substr($row->start,8,2),substr($row->start,0,4)); - $this->studiensemester_next->ende=mktime(0,0,0,substr($row->ende,5,2),substr($row->ende,8,2),substr($row->ende,0,4)); - } - return true; - } - - /************************************************************************** - * @brief Funktion load_week ladet die Stundenplandaten einer Woche - * - * @param datum Datum eines Tages in der angeforderten Woche - * - * @return true oder false - * - */ - function load_week($datum, $stpl_view='stundenplan') - { - // Pruefung der Attribute - if (!isset($this->type)) - { - $this->errormsg='$type is not set in stundenplan.load_week!'; - return false; - } - - //Kalenderdaten setzen - $this->datum=montag($datum); - $this->datum_begin=$this->datum; - $this->datum_end=jump_week($this->datum_begin, 1); - $this->datum_nextweek=$this->datum_end; - $this->datum_prevweek=jump_week($this->datum_begin, -1); - $this->datum_next4week=jump_week($this->datum_begin, 4); - $this->datum_prev4week=jump_week($this->datum_begin, -4); - // Formatieren fuer Datenbankabfragen - $this->datum_begin=date("Y-m-d",$this->datum_begin); - $this->datum_end=date("Y-m-d",$this->datum_end); - $this->kalenderwoche=kalenderwoche($this->datum); - - // Stundenplandaten ermittlen - $this->wochenplan=new lehrstunde($this->conn); - $anz=$this->wochenplan->load_lehrstunden($this->type,$this->datum_begin,$this->datum_end,$this->pers_uid,$this->ort_kurzbz,$this->stg_kz,$this->sem,$this->ver,$this->grp,$this->einheit_kurzbz, $stpl_view); - if ($anz<0) - { - $this->errormsg=$this->wochenplan->errormsg; - return false; - } - - // Stundenplandaten aufbereiten - for($i=0;$i<$anz;$i++) - { - $idx=0; - $mtag=substr($this->wochenplan->lehrstunden[$i]->datum, 8,2); - $month=substr($this->wochenplan->lehrstunden[$i]->datum, 5,2); - $jahr=substr($this->wochenplan->lehrstunden[$i]->datum, 0,4); - $tag=date("w",mktime(12,0,0,$month,$mtag,$jahr)); - //echo $tag.':'.$this->wochenplan->lehrstunden[$i]->datum.'
    '; - $stunde=$this->wochenplan->lehrstunden[$i]->stunde; - // naechste freie Stelle im Array suchen - while (isset($this->std_plan[$tag][$stunde][$idx]->lektor_uid)) - $idx++; - //echo $idx.'
    '; - $this->std_plan[$tag][$stunde][$idx]->unr=$this->wochenplan->lehrstunden[$i]->unr; - if ($this->wochenplan->lehrstunden[$idx]->reservierung) - $this->std_plan[$tag][$stunde][$idx]->lehrfach=$this->wochenplan->lehrstunden[$i]->titel; - else - { - $this->std_plan[$tag][$stunde][$idx]->lehrfach=$this->wochenplan->lehrstunden[$i]->lehrfach; - $this->std_plan[$tag][$stunde][$idx]->lehrform=$this->wochenplan->lehrstunden[$i]->lehrform; - $this->std_plan[$tag][$stunde][$idx]->lehrfach_nr=$this->wochenplan->lehrstunden[$i]->lehrfach_nr; - $this->std_plan[$tag][$stunde][$idx]->farbe=$this->wochenplan->lehrstunden[$i]->farbe; - $this->std_plan[$tag][$stunde][$idx]->titel=$this->wochenplan->lehrstunden[$i]->titel; - } - $this->std_plan[$tag][$stunde][$idx]->stundenplan_id=$this->wochenplan->lehrstunden[$i]->stundenplan_id; - $this->std_plan[$tag][$stunde][$idx]->lektor_uid=$this->wochenplan->lehrstunden[$i]->lektor_uid; - $this->std_plan[$tag][$stunde][$idx]->lektor=$this->wochenplan->lehrstunden[$i]->lektor_kurzbz; - $this->std_plan[$tag][$stunde][$idx]->ort=$this->wochenplan->lehrstunden[$i]->ort_kurzbz; - $this->std_plan[$tag][$stunde][$idx]->stg=$this->wochenplan->lehrstunden[$i]->studiengang; - $this->std_plan[$tag][$stunde][$idx]->stg_kz=$this->wochenplan->lehrstunden[$i]->studiengang_kz; - $this->std_plan[$tag][$stunde][$idx]->sem=$this->wochenplan->lehrstunden[$i]->sem; - $this->std_plan[$tag][$stunde][$idx]->ver=$this->wochenplan->lehrstunden[$i]->ver; - $this->std_plan[$tag][$stunde][$idx]->grp=$this->wochenplan->lehrstunden[$i]->grp; - $this->std_plan[$tag][$stunde][$idx]->einheit_kurzbz=$this->wochenplan->lehrstunden[$i]->einheit_kurzbz; - $this->std_plan[$tag][$stunde][$idx]->anmerkung=$this->wochenplan->lehrstunden[$i]->anmerkung; - $this->std_plan[$tag][$stunde][$idx]->updateamum=$this->wochenplan->lehrstunden[$i]->updateamum; - $this->std_plan[$tag][$stunde][$idx]->updatevon=$this->wochenplan->lehrstunden[$i]->updatevon; - //echo $tag.' '.$stunde.' '.$this->std_plan[$tag][$stunde][$idx]->lektor_uid.'
    '; - } - unset($this->wochenplan); - return true; - } - - function draw_header() - { - echo ''; - echo ''; - echo ''; - - // Kalenderjump - echo ''; - echo ''; - echo '

    '; - if ($this->type=='student' || $this->type=='lektor') - echo 'Person: '.$this->pers_titel.' '.$this->pers_vornamen.' '.$this->pers_nachname.' - '.$this->pers_uid.'
    '; - if ($this->type=='student' || $this->type=='verband') - { - echo 'Studiengang: '.$this->stg_kurzbzlang.' - '.$this->stg_bez.'
    '; - echo 'Semester: '.$this->sem.'
    '; - if ($this->ver!='0' && $this->ver!='' && $this->ver!=null) - echo 'Verband: '.$this->ver.'
    '; - if ($this->grp!='0' && $this->grp!='' && $this->grp!=null) - echo 'Gruppe: '.$this->grp.'
    '; - $this->link.='&stg_kz='.$this->stg_kz.'&sem='.$this->sem.'&ver='.$this->ver.'&grp='.$this->grp; - } - if ($this->type=='ort') - echo 'Ort: '.$this->ort_kurzbz.' - '.$this->ort_bezeichnung.'
    '; - echo '

    '; - - //Kalender - $this->kal_link.='&pers_uid='.$this->pers_uid.'&ort_kurzbz='.$this->ort_kurzbz.'&stg_kz='.$this->stg_kz.'&sem='.$this->sem.'&ver='.$this->ver.'&grp='.$this->grp.'&einheit_kurzbz='.$this->einheit_kurzbz; - //global $kalender_begin_ws, $kalender_ende_ws, $kalender_begin_ss, $kalender_ende_ss; - $kal_link_ws=$this->kal_link.'&begin='.$this->studiensemester_now->start.'&ende='.$this->studiensemester_now->ende; - $kal_link_ss=$this->kal_link.'&begin='.$this->studiensemester_next->start.'&ende='.$this->studiensemester_next->ende; - echo '       Kalender:    '; - echo ''.$this->studiensemester_now->name.' '; - echo ' - HTML'; - echo ' - CSV'; - echo ' - CSV-Outlook'; - echo ' - vCal Version 1.0'; - echo ' - vCal Version 2.0'; - echo '    '.$this->studiensemester_next->name.' '; - echo ' - HTML'; - echo ' - CSV'; - echo ' - CSV-Outlook'; - echo ' - iCal Version 1.0'; - echo ' - iCal Version 2.0'; - echo '
    '; - jahreskalenderjump($this->link); - echo '

    '; - - // Jump Wochenweise - if ($this->type=='verband') - $link_parameter='&stg_kz='.$this->stg_kz.'&sem='.$this->sem.'&ver='.$this->ver.'&grp='.$this->grp; - if ($this->type=='student' || $this->type=='lektor') - $link_parameter='&pers_uid='.$this->pers_uid; - - // Ort Jump - if ($this->type=='ort') - { - // Orte abfragen - $sql_query="SELECT * FROM tbl_ort WHERE aktiv AND lehre ORDER BY ort_kurzbz"; - if(!$result_ort=pg_exec($this->conn, $sql_query)) - die(pg_last_error($this->conn)); - $num_rows_ort=pg_numrows($result_ort); - - // vorigen Ort bestimmen - for ($i=0;$i<($num_rows_ort-1);$i++) - if (pg_result($result_ort,$i+1,'"ort_kurzbz"')==$this->ort_kurzbz) - $prev_ort=pg_fetch_object($result_ort,$i); - // naechsten Ort bestimmen - for ($i=1;$i<$num_rows_ort;$i++) - if (pg_result($result_ort,$i-1,'"ort_kurzbz"')==$this->ort_kurzbz) - $next_ort=pg_fetch_object($result_ort,$i); - - // Ort Jump - echo '

    '; - //$datum=mktime($this->datum[hours], $this->datum[minutes], $this->datum[seconds], $this->datum[mon], $this->datum[mday], $this->datum[year]); - if (isset($prev_ort)) - { - echo ''; - } - echo "'; - if (isset($next_ort)) - { - echo ''; - } - echo '

    '; - $link_parameter='&ort_kurzbz='.$this->ort_kurzbz; - } - echo '

    '; - // 4 Wochen zurueck - echo ''; - // 1 Woche zurueck - echo ' KW '.$this->kalenderwoche; - // 1 Woche nach vor - echo ''; - // 4 Wochen nach vor - echo ''; - echo '

    '; - return true; - } - - /************************************************************************** - * Zeichnen der Stundenplanwoche in HTML - */ - function draw_week($user_uid='pam') - { - // Stundentafel abfragen - $sql_query="SELECT stunde, beginn, ende FROM tbl_stunde ORDER BY stunde"; - if(!$result_stunde=pg_exec($this->conn, $sql_query)) - die(pg_last_error($this->conn)); - $num_rows_stunde=pg_numrows($result_stunde); - - // Formularbeginn wenn Lektor - if ($this->user=='lektor' && $this->type=='ort') - echo ''; - - //Tabelle zeichnen - echo ''; - // Kopfzeile darstellen - echo ''; - echo ''; - for ($i=0;$i<$num_rows_stunde; $i++) - { - $beginn=pg_result($result_stunde,$i,'"beginn"'); - $beginn=substr($beginn,0,5); - $ende=pg_result($result_stunde,$i,'"ende"'); - $ende=substr($ende,0,5); - $stunde=pg_result($result_stunde,$i,'"stunde"'); - echo ''; - } - echo ''; - // Von Montag bis Samstag - $datum_now=mktime(); - $datum_res_lektor_start=jump_day($datum_now,RES_TAGE_LEKTOR_MIN); - $datum_res_lektor_ende=jump_day($datum_now,RES_TAGE_LEKTOR_MAX); - if (!date("w",$this->datum)) - $this->datum=jump_day($this->datum,1); - $datum=$this->datum; - for ($i=1; $i<7; $i++) - { - echo ''; //.strftime("%A %d %B %Y",$this->datum) - for ($k=0; $k<$num_rows_stunde; $k++) - { - $j=pg_result($result_stunde,$k,'"stunde"'); - // Stunde aufbereiten - if (isset($this->std_plan[$i][$j][0]->lehrfach)) - { - // Anzahl der Felder - - // Daten aufbereiten - $kollision=-1; - unset($unr); - unset($lektor); - unset($lehrverband); - unset($lehrfach); - foreach ($this->std_plan[$i][$j] as $lehrstunde) - { - $unr[]=$lehrstunde->unr; - // Lektoren - $lektor[]=$lehrstunde->lektor; - // Lehrverband - $lvb=$lehrstunde->stg.'-'.$lehrstunde->sem; - if ($lehrstunde->ver!=null && $lehrstunde->ver!='0' && $lehrstunde->ver!='') - { - $lvb.=$lehrstunde->ver; - if ($lehrstunde->grp!=null && $lehrstunde->grp!='0' && $lehrstunde->grp!='') - $lvb.=$lehrstunde->grp; - } - if (count($lehrstunde->einheit_kurzbz)>0) - $lvb=$lehrstunde->einheit_kurzbz; - $lehrverband[]=$lvb; - // Lehrfach - $lf=$lehrstunde->lehrfach; - if (isset($lehrstunde->lehrform)) - $lf.='-'.$lehrstunde->lehrform; - $lehrfach[]=$lf; - $titel=$lehrstunde->titel; - $anmerkung=$lehrstunde->anmerkung; - } - - - // Unterrichtsnummer (Kollision?) - $unr=array_unique($unr); - $kollision+=count($unr); - - // Lektoren - if ($this->type!='lektor') - { - $lektor=array_unique($lektor); - sort($lektor); - $lkt=''; - foreach ($lektor as $l) - $lkt.=$l.'
    '; - } - else - $lkt=$lektor[0].'
    '; - //echo $lkt; - - // Lehrverband - if ($this->type!='verband') - { - $lehrverband=array_unique($lehrverband); - sort($lehrverband); - $lvb=''; - foreach ($lehrverband as $l) - $lvb.=$l.'
    '; - } - else - $lvb=$lehrverband[0].'
    '; - - // Lehrfach - if ($this->type=='verband') - { - $lehrfach=array_unique($lehrfach); - sort($lehrfach); - $lf=''; - foreach ($lehrfach as $l) - $lf.=$l.'
    '; - } - else - $lf=$lehrfach[0].'
    '; - - //$lkt=$this->std_plan[$i][$j][0]->lektor.'
    '; - //$lvb=$this->std_plan[$i][$j][0]->stg.'-'.$this->std_plan[$i][$j][0]->sem.$this->std_plan[$i][$j][0]->ver.$this->std_plan[$i][$j][0]->grp.'
    '; - - - // Blinken oder nicht ? - if ($kollision) - { - $blink_ein=''.$kollision; - $blink_aus=''; - } - else - { - $blink_ein=''; - $blink_aus=''; - } - - // Ausgabe einer Stunde im Raster (HTML) - echo ''; - } - else - { - echo ''; - } - } - echo ""; - $datum=jump_day($datum, 1); - } - echo '
    Stunde 
    Beginn 
    Ende 
    '.$stunde.'
     '.$beginn .' 
     '.$ende.' 
    '.date("l",$datum).'
    '.date("j. M y",$datum).'
    std_plan[$i][$j][0]->farbe)) - echo 'style="background-color: #'.$this->std_plan[$i][$j][0]->farbe.';"'; - echo '>'.$blink_ein.''.$blink_aus.'
    '; - if ($this->user=='lektor' && $this->type=='ort' && (($datum>$datum_res_lektor_start && $datum<=$datum_res_lektor_ende) || $user_uid=='wagner')) - echo ''; //&& $datum>=$datum_now - echo '
    '; - if ($this->user=='lektor' && $this->type=='ort' && (($datum>=$datum_now && $datum>$datum_res_lektor_start && $datum<=$datum_res_lektor_ende) || $user_uid=='wagner' )) - { - echo '
    Titel: '; - echo ' Beschreibung: '; - echo ' '; - echo ' '; - echo ' '; - echo ' '; - echo ' '; - echo '
    '; - } - } - - /************************************************************************** - * @brief Funktion draw_week_xul Stundenplan im XUL-Format - * - * @param datum Datum eines Tages in der angeforderten Woche - * - * @return true oder false - * - */ - function draw_week_xul($semesterplan,$uid, $wunsch=null) - { - echo $wunsch; - global $cfgStdBgcolor; - $count=0; - $berechtigung=new berechtigung($this->conn); - $berechtigung->getBerechtigungen($uid); - // Stundentafel abfragen - $sql_query="SELECT * FROM tbl_stunde ORDER BY stunde"; - if(!$result_stunde=pg_query($this->conn, $sql_query)) - $this->errormsg=pg_last_error($this->conn); - $num_rows_stunde=pg_numrows($result_stunde); - - // Kontext Menue - echo ' - - - - - '; - - //Tabelle zeichnen - echo ''; - echo ''; - echo ' '; - for ($i=0;$i<$num_rows_stunde; $i++) - echo ' '; - echo ''; - echo ''; - - // Kopfzeile darstellen - echo ''.$this->crlf; - echo ' - - - '.$this->crlf; //BeginnEnde - for ($i=0;$i<$num_rows_stunde; $i++) - { - $row=pg_fetch_object($result_stunde,$i); - $beginn=substr($row->beginn,0,5); - $ende=substr($row->ende,0,5); - $stunde=$row->stunde; - echo ' - '.$this->crlf; - } - echo ''; - - // Von Montag bis Samstag - if (!date("w",$this->datum)) - $this->datum=jump_day($this->datum,1); - $datum=$this->datum; - - // Ferien holen - $ferien=new ferien($this->conn); - if ($this->type=='verband') - $ferien->getAll($this->stg_kz); - else - $ferien->getAll(0); - for ($i=1; $i<7; $i++) - { - $isferien=$ferien->isferien($datum); - echo ''; - echo ''.date("l",$datum).''.date("j.m y",$datum).''; - echo ''; - for ($k=0; $k<$num_rows_stunde; $k++) - { - $j=pg_result($result_stunde,$k,'"stunde"'); - if (isset($wunsch[$i][$j])) - $index=$wunsch[$i][$j]; - else - $index=1; - if ($index=='') - $index=1; - $bgcolor=$cfgStdBgcolor[$index+3]; - if ($isferien) - $bgcolor='#FFFF55'; - echo ''; - - if (isset($this->std_plan[$i][$j][0]->lehrfach)) - { - // Daten aufbereiten - $kollision=-1; - unset($a_unr); - foreach ($this->std_plan[$i][$j] as $lehrstunde) - { - $a_unr[]=$lehrstunde->unr; - $a_lvb[$lehrstunde->unr][]=$lehrstunde->sem.$lehrstunde->ver.$lehrstunde->grp; - } - // Unterrichtsnummer (Kollision?) - $a_unr=array_unique($a_unr); - $kollision+=count($a_unr); - // Ist es bei LVB-Ansicht wirklich eine Kollision? - if ($kollision>0 && $this->type=='verband') - { - $kollision=0; - $a=0; - foreach ($a_unr as $unr) - { - array_unique($a_lvb[$unr]); - $lvb[$a++]=$a_lvb[$unr]; - } - for ($a=0;$astd_plan[$i][$j] as $lehrstunde) - if ($lehrstunde->unr==$unr) - { - // Lektoren - $lektor[]=$lehrstunde->lektor; - // Lehrverband - $lvb=$lehrstunde->stg.'-'.$lehrstunde->sem; - if ($lehrstunde->ver!=null && $lehrstunde->ver!='0' && $lehrstunde->ver!='') - { - $lvb.=$lehrstunde->ver; - if ($lehrstunde->grp!=null && $lehrstunde->grp!='0' && $lehrstunde->grp!='') - $lvb.=$lehrstunde->grp; - } - if (count($lehrstunde->einheit_kurzbz)>0) - $lvb=$lehrstunde->einheit_kurzbz; - $lehrverband[]=$lvb; - // Lehrfach - $lf=$lehrstunde->lehrfach; - if (isset($lehrstunde->lehrform)) - $lf.='-'.$lehrstunde->lehrform; - $lehrfach[]=$lf; - $ort[]=$lehrstunde->ort; - $stg_kz=$lehrstunde->stg_kz; - $updateamum[]=substr($lehrstunde->updateamum,0,16); - $updatevon[]=$lehrstunde->updatevon; - $paramList.='&stundenplan_id'.$z++.'='.$lehrstunde->stundenplan_id; - $farbe=$lehrstunde->farbe; - $titel=$lehrstunde->titel; - $anmerkung=$lehrstunde->anmerkung; - } - - // Lektoren - //if ($this->type!='lektor') - $lektor=array_unique($lektor); - sort($lektor); - $lkt=''; - foreach ($lektor as $l) - $lkt.=$l.''; - - // Lehrverband - //if ($this->type!='verband') - $lehrverband=array_unique($lehrverband); - sort($lehrverband); - $lvb=''; - foreach ($lehrverband as $l) - $lvb.=$l.''; - - // Lehrfach - //if ($this->type=='verband') - $lehrfach=array_unique($lehrfach); - sort($lehrfach); - $lf=''; - foreach ($lehrfach as $l) - $lf.=$l.''; - - // Ort - //if ($this->type=='verband') - $ort=array_unique($ort); - sort($ort); - $orte=''; - foreach ($ort as $o) - $orte.=$o.''; - - // Update Von - $updatevon=array_unique($updatevon); - sort($updatevon); - $updatevonam='Ge??ndert von '; - foreach ($updatevon as $u) - $updatevonam.=$u.', '; - - // Update Am - $updateamum=array_unique($updateamum); - sort($updateamum); - $updatevonam.='am '; - foreach ($updateamum as $u) - $updatevonam.=$u.' '; - //$updatevonam='Ge??ndert von '.$updatevon.', am '.$updateamum; - - // Blinken oder nicht ? - if ($kollision) - { - $blink_ein='';// .$kollision; - $blink_aus=''; - } - else - { - $blink_ein=''; - $blink_aus=''; - } - - // Ausgabe - echo ''; - } - } - if (isset($this->std_plan[$i][$j][0]->frei_orte)) - foreach ($this->std_plan[$i][$j][0]->frei_orte as $f_ort) - { - echo ''.$this->crlf; - } - echo ""; - $datum=jump_day($datum, 1); - } - - // Fuszzeile darstellen - if (!$semesterplan) - { - echo ''.$this->crlf; - echo ' - - - '.$this->crlf; //BeginnEnde - for ($i=0;$i<$num_rows_stunde; $i++) - { - $row=pg_fetch_object($result_stunde,$i); - $beginn=substr($row->beginn,0,5); - $ende=substr($row->ende,0,5); - $stunde=$row->stunde; - echo ' - '.$this->crlf; - } - echo ''; - } - echo ''; - echo ''; - } - - - - /************************************************************************** - * @brief Funktion load_stpl_search sucht Vorschlag fuer Stundenverschiebung - * - * @param datum der Aktuellen Woche - * @param stpl_id Array der stundenplan_id's - * @param db_stpl_table Name der DB-Tabelle - * - * @return true oder false - * - */ - function load_stpl_search($datum,$stpl_id,$db_stpl_table, $block=1) - { - // Name der View - $stpl_view=VIEW_BEGIN.$db_stpl_table; - $stpl_view_id=$db_stpl_table.TABLE_ID; - //Kalenderdaten setzen - $this->datum=montag($datum); - $this->datum_begin=$this->datum; - $this->datum_end=jump_week($this->datum_begin, 1); - // Formatieren fuer Datenbankabfragen - $this->datum_begin=date("Y-m-d",$this->datum_begin); - $this->datum_end=date("Y-m-d",$this->datum_end); - // Stundentafel abfragen - $sql_query='SELECT min(stunde),max(stunde)FROM tbl_stunde'; - if(!$result_stunde=pg_exec($this->conn, $sql_query)) - die(pg_last_error($this->conn)); - $min_stunde=pg_result($result_stunde,0,'min'); - $max_stunde=pg_result($result_stunde,0,'max'); - // Stundenplaneintraege holen - $sql_query="SELECT * FROM $stpl_view WHERE"; - $stplids=''; - foreach ($stpl_id as $id) - $stplids.=" OR $stpl_view_id=$id"; - $stplids=substr($stplids,3); - $sql_query.=$stplids; - //echo $sql_query; - if(!$result_stpl=pg_exec($this->conn, $sql_query)) - die(pg_last_error($this->conn)); - $num_rows_stpl=pg_numrows($result_stpl); - // Daten aufbereiten - for ($i=0;$i<$num_rows_stpl;$i++) - { - $row=pg_fetch_object($result_stpl,$i); - //$block=$row->stundenblockung; - //$raumtyp[$i]=$row->raumtyp; - //$raumtypalt[$i]=$row->raumtypalternativ; - if ($row->einheit_kurzbz!=null) - $einheit[]=$row->einheit_kurzbz; - else - $einheit[]=''; - $lehrverband[$i]->stg_kz=$row->studiengang_kz; - $lehrverband[$i]->sem=$row->semester; - $lehrverband[$i]->ver=$row->verband; - $lehrverband[$i]->grp=$row->gruppe; - $lektor[$i]=$row->uid; - $unr=$row->unr; - } - // Raumtypen - //$raumtyp=array_unique($raumtyp); - //$rtype=''; - //foreach ($raumtyp as $r) - // $rtype.=" OR raumtyp_kurzbz='$r'"; - //$raumtypalt=array_unique($raumtypalt); - //foreach ($raumtypalt as $r) - // $rtype.=" OR raumtyp_kurzbz='$r'"; - //$rtype=substr($rtype,3); - //Lektor - $lektor=array_unique($lektor); - $lkt=''; - foreach ($lektor as $l) - $lkt.=" OR uid='$l'"; - $lkt=substr($lkt,3); - // Einheiten - $einheit=array_unique($einheit); - $einheiten=''; - foreach ($einheit as $e) - if ($e!='') - $einheiten.=" OR einheit_kurzbz='$e'"; - //$einheiten=substr($einheiten,3); - //Lehrverband - //$lehrverband=array_unique($lehrverband); - $lvb=''; - foreach ($lehrverband as $l) - { - $lvb.=' OR (studiengang_kz='.$l->stg_kz.' AND semester='.$l->sem; - if ($l->ver!='' && $l->ver!=' ' && $l->ver!=null) - { - $lvb.=" AND (verband='$l->ver' OR verband IS NULL OR verband='')"; - if ($l->grp!='' && $l->grp!=' ' && $l->grp!=null) - $lvb.=" AND (gruppe='$l->grp' OR gruppe IS NULL OR gruppe='')"; - } - //if ($einheiten=='') - // $lvb.=' AND einheit_kurzbz IS NULL'; - $lvb.=')'; - } - $lvb=substr($lvb,3); - - // Raeume die in Frage kommen, aufgrund der Raumtypen - $sql_query="SELECT DISTINCT ort_kurzbz FROM tbl_ort - WHERE aktiv AND ort_kurzbz NOT LIKE '\\\\_%' ORDER BY ort_kurzbz"; // NATURAL JOIN tbl_ortraumtyp WHERE $rtype hierarchie - //echo $sql_query; - if(!$result=pg_exec($this->conn, $sql_query)) - die(pg_last_error($this->conn)); - $num_orte=pg_numrows($result); - for ($i=0;$i<$num_orte;$i++) - $orte[]=pg_fetch_result($result,$i,"ort_kurzbz"); - - // Raster vorbereiten - for ($t=1;$t<7;$t++) - for ($s=$min_stunde;$s<=$max_stunde;$s++) - { - $raster[$t][$s]->ort=array(); - $raster[$t][$s]->kollision=false; - } - - // Stundenplanabfrage bauen (Wo ist Kollision?) - $sql_query="SELECT DISTINCT datum, stunde FROM $stpl_view - WHERE datum>='$this->datum_begin' AND datum<'$this->datum_end' AND - ($lkt $einheiten OR ($lvb) ) AND unr!=$unr"; //AND unr!=$unr" - //echo $sql_query; - if(!$result_kollision=pg_exec($this->conn, $sql_query)) - die(pg_last_error($this->conn)); - $num_k=pg_numrows($result_kollision); - for ($i=0;$i<$num_k;$i++) - { - $row=pg_fetch_object($result_kollision,$i); - $mtag=substr($row->datum, 8,2); - $month=substr($row->datum, 5,2); - $jahr=substr($row->datum, 0,4); - $tag=date("w",mktime(12,0,0,$month,$mtag,$jahr)); - $raster[$tag][$row->stunde]->kollision=true; - } - - // Stundenplanabfrage bauen (Wo ist besetzt?) - $sql_query="SELECT DISTINCT datum, stunde, ort_kurzbz FROM $stpl_view - WHERE datum>='$this->datum_begin' AND datum<'$this->datum_end' AND unr!=$unr"; - //echo $sql_query; NATURAL JOIN tbl_ortraumtyp AND ($rtype) " - if(!$result_besetzt=pg_exec($this->conn, $sql_query)) - die(pg_last_error($this->conn)); - $num_b=pg_numrows($result_besetzt); - for ($i=0;$i<$num_b;$i++) - { - $row=pg_fetch_object($result_besetzt,$i); - $mtag=substr($row->datum, 8,2); - $month=substr($row->datum, 5,2); - $jahr=substr($row->datum, 0,4); - $tag=date("w",mktime(12,0,0,$month,$mtag,$jahr)); - $raster[$tag][$row->stunde]->ort[]=$row->ort_kurzbz; - } - - // freie Plaetze in den Stundenplan eintragen. - for ($t=1;$t<7;$t++) - for ($s=1;$s<=$max_stunde;$s++) - if (!$raster[$t][$s]->kollision && ($s+$block)<=($max_stunde+1)) - { - if (count($raster[$t][$s]->ort)>0) - $this->std_plan[$t][$s][0]->frei_orte=array_diff($orte,$raster[$t][$s]->ort); - else - $this->std_plan[$t][$s][0]->frei_orte=$orte; - for ($b=1;$b<$block && ($s+$block)<=($max_stunde+1);$b++) - $this->std_plan[$t][$s][0]->frei_orte=array_diff($this->std_plan[$t][$s][0]->frei_orte,$raster[$t][$s+$b]->ort); - } - return true; - } - - /************************************************************************** - * @brief Funktion load_lva_search sucht Vorschlag fuer LVAs - * - * @param datum der Aktuellen Woche - * @param lva_id Array der lvaIDs - * @param db_stpl_table Name der DB-Tabelle - * - * @return true oder false - * - */ - function load_lva_search($datum,$lva_id,$db_stpl_table,$type) - { - // Name der View - $stpl_view=VIEW_BEGIN.$db_stpl_table; - $lva_stpl_view=VIEW_BEGIN.'lva_'.$db_stpl_table; - $stpl_table=TABLE_BEGIN.$db_stpl_table; - //Kalenderdaten setzen - $this->datum=montag($datum); - $this->datum_begin=$this->datum; - $this->datum_end=jump_week($this->datum_begin, 1); - // Formatieren fuer Datenbankabfragen - $this->datum_begin=date("Y-m-d",$this->datum_begin); - $this->datum_end=date("Y-m-d",$this->datum_end); - // Stundentafel abfragen - $sql_query='SELECT min(stunde),max(stunde) FROM tbl_stunde'; - if(!$result_stunde=pg_exec($this->conn, $sql_query)) - die(pg_last_error($this->conn)); - $min_stunde=pg_result($result_stunde,0,'min'); - $max_stunde=pg_result($result_stunde,0,'max'); - - // LVAs holen - $sql_query='SELECT *, (semesterstunden-verplant::smallint) AS offenestunden FROM '.$lva_stpl_view.' WHERE'; - $lvas=''; - foreach ($lva_id as $id) - $lvas.=' OR lehrveranstaltung_id='.$id; - $lvas=substr($lvas,3); - $sql_query.=$lvas; - //$this->errormsg.=$sql_query; - //return false; - if(!$result_lva=pg_exec($this->conn, $sql_query)) - die(pg_last_error($this->conn)); - $num_rows_lva=pg_numrows($result_lva); - // Arrays setzen - //$wochenrythmus=array(); - $verplant=array(); - $block=array(); - $semesterstunden=array(); - $offenestunden=array(); - // Daten aufbereiten - for ($i=0;$i<$num_rows_lva;$i++) - { - $row=pg_fetch_object($result_lva,$i); - $raumtyp[$i]=$row->raumtyp; - $raumtypalt[$i]=$row->raumtypalternativ; - if ($row->einheit_kurzbz!=null && $row->einheit_kurzbz!='') - $einheit[$i]=$row->einheit_kurzbz; - $lehrverband[$i]->stg_kz=$row->studiengang_kz; - $lehrverband[$i]->sem=$row->semester; - $lehrverband[$i]->ver=$row->verband; - $lehrverband[$i]->grp=$row->gruppe; - $lektor[$i]=$row->lektor_uid; - $verplant[$i]=$row->verplant; - $offenestunden[]=$row->offenestunden; - $unr=$row->unr; - $block[$i]=$row->stundenblockung; - $wochenrythmus[$i]=$row->wochenrythmus; - $semesterstunden[$i]=(integer)$row->semesterstunden; - //$this->errormsg.='SS:'.$semesterstunden[$i]; - } - /*// verplante Stunden eindeutig? - $verpl=$verplant[0]; - $verplant=array_unique($verplant); - if (count($verplant)==1) - $verplant=$verpl; //verplant[0]; - else - { - $this->errormsg.='Verplante Stunden sind nicht eindeutig!'; - return false; - } - //$this->errormsg.='Verplant:'.$verplant; - // Semesterstunden eindeutig? - $semstd=$semesterstunden[0]; - $semesterstunden=array_unique($semesterstunden); - //$this->errormsg.='SS:'.$semesterstunden[0]; - if (count($semesterstunden)==1) - $semesterstunden=$semstd;//semesterstunden[0]; - else - { - $this->errormsg.='Semesterstunden sind nicht eindeutig!'; - return false; - } - //$this->errormsg.='SS:'.$semesterstunden;*/ - // Blockung eindeutig? - $blck=$block[0]; - $block=array_unique($block); - if (count($block)==1) - $block=$blck; //block[0]; - else - { - $this->errormsg.='Blockung ist nicht eindeutig!'; - return false; - } - //$this->errormsg.='Block:'.$block; - // Offene Stunden eindeutig? - $os=$offenestunden[0]; - $offenestunden=array_unique($offenestunden); - if ($type=='lva_single_search') - $offenestunden=$block; - elseif (count($offenestunden)==1) - $offenestunden=$os; - else - { - $this->errormsg.='Offene Stunden sind nicht eindeutig!'; - return false; - } - // Wochenrythmus eindeutig? - $wr=$wochenrythmus[0]; - $wochenrythmus=array_unique($wochenrythmus); - if (count($wochenrythmus)==1) - $wr=$wr; - else - { - $this->errormsg.='Wochenrythmus ist nicht eindeutig!'; - return false; - } - // Raumtypen - $raumtyp=array_unique($raumtyp); - $rtype=''; - foreach ($raumtyp as $r) - $rtype.=" OR raumtyp_kurzbz='$r'"; - $raumtypalt=array_unique($raumtypalt); - foreach ($raumtypalt as $r) - $rtype.=" OR raumtyp_kurzbz='$r'"; - $rtype=substr($rtype,3); - //Lektor - $lektor=array_unique($lektor); - $lkt=''; - foreach ($lektor as $l) - $lkt.=" OR uid='$l'"; - $lkt=substr($lkt,3); - //Dummy Lektor kollidiert nicht - $lkt='(('.$lkt.") AND uid!='_DummyLektor')"; - // Einheiten - $einheit=array_unique($einheit); - $einheiten=''; - foreach ($einheit as $e) - $einheiten.=" OR einheit_kurzbz='$e'"; - //$einheiten=substr($einheiten,3); - //Lehrverband - //$lehrverband=array_unique($lehrverband); - $lvb=''; - foreach ($lehrverband as $l) - { - $lvb.=' OR (studiengang_kz='.$l->stg_kz.' AND semester='.$l->sem; - if ($l->ver!='' && $l->ver!=' ' && $l->ver!=null) - { - $lvb.=" AND (verband='$l->ver' OR verband IS NULL OR verband='' OR verband=' ')"; - if ($l->grp!='' && $l->grp!=' ' && $l->grp!=null) - $lvb.=" AND (gruppe='$l->grp' OR gruppe IS NULL OR gruppe='' OR gruppe=' ')"; - } - if ($einheiten=='') - $lvb.=' AND einheit_kurzbz IS NULL'; - $lvb.=')'; - } - $lvb=substr($lvb,3); - - // Raeume die in Frage kommen aufgrund der Raumtypen - $sql_query="SELECT DISTINCT ort_kurzbz, hierarchie FROM tbl_ort - NATURAL JOIN tbl_ortraumtyp WHERE ($rtype) AND aktiv AND ort_kurzbz NOT LIKE '\\\\_%' ORDER BY hierarchie,ort_kurzbz"; // - //echo $sql_query; - if(!$result=pg_exec($this->conn, $sql_query)) - die(pg_last_error($this->conn)); - $num_orte=pg_numrows($result); - for ($i=0;$i<$num_orte;$i++) - $orte[]=pg_fetch_result($result,$i,"ort_kurzbz"); - - // Suche nach freien Orten. Bei 'lva_multi_search' wird die Schleife (do) aktiv - $count=0; - $rest=$offenestunden; - if ($rest<=0 && $type=='lva_multi_search') - { - $this->errormsg.='Es sind bereits alle Stunden verplant!'; - return false; - } - $datum=$this->datum; - $datum_begin=$this->datum_begin; - $datum_end=$this->datum_end; - do - { - // Raster vorbereiten - for ($t=1;$t<7;$t++) - for ($s=$min_stunde;$s<=$max_stunde;$s++) - { - unset($raster[$t][$s]); - $raster[$t][$s]->ort=array(); - $raster[$t][$s]->kollision=false; - } - - // Stundenplanabfrage bauen (Wo ist Kollision?) - $sql_query="SELECT DISTINCT datum, stunde FROM $stpl_table - WHERE datum>='$datum_begin' AND datum<'$datum_end' AND - ($lkt $einheiten OR ($lvb) ) AND unr!=$unr"; - //$this->errormsg.=htmlspecialchars($sql_query); - //return false; - if(!$result_kollision=pg_exec($this->conn, $sql_query)) - { - $this->errormsg=pg_last_error($this->conn); - return false; - } - $num_k=pg_numrows($result_kollision); - // Kollisionen ins Raster eintragen - for ($i=0;$i<$num_k;$i++) - { - $row=pg_fetch_object($result_kollision,$i); - $mtag=substr($row->datum, 8,2); - $month=substr($row->datum, 5,2); - $jahr=substr($row->datum, 0,4); - $tag=date("w",mktime(12,0,0,$month,$mtag,$jahr)); - $raster[$tag][$row->stunde]->kollision=true; - } - - // Stundenplanabfrage bauen (Wo ist besetzt?) - $sql_query="SELECT DISTINCT datum, stunde, ort_kurzbz FROM $stpl_view - NATURAL JOIN tbl_ortraumtyp - WHERE datum>='$datum_begin' AND datum<'$datum_end' AND - ($rtype) AND unr!=$unr"; // - //echo $sql_query; - if(!$result_besetzt=pg_query($this->conn, $sql_query)) - { - $this->errormsg=pg_last_error($this->conn); - return false; - } - $num_b=pg_numrows($result_besetzt); - - // Besetzte Orte ins Raster eintragen - for ($i=0;$i<$num_b;$i++) - { - $row=pg_fetch_object($result_besetzt,$i); - $mtag=substr($row->datum, 8,2); - $month=substr($row->datum, 5,2); - $jahr=substr($row->datum, 0,4); - $tag=date("w",mktime(12,0,0,$month,$mtag,$jahr)); - $raster[$tag][$row->stunde]->ort[]=$row->ort_kurzbz; - //if ($row->ort_kurzbz=='EDV6.10' && $tag==2 && $row->stunde==8) - // $this->errormsg.=htmlspecialchars($row->ort_kurzbz).'/'.$mtag.'/'.$month; - } - - // freie Plaetze in den Stundenplan eintragen. - for ($t=1;$t<7;$t++) - for ($s=1;$s<=$max_stunde;$s++) - if (!$raster[$t][$s]->kollision && ($s+$block)<=($max_stunde+1)) - { - // Besetzte Orte von den freien abziehen - if (count($raster[$t][$s]->ort)>0 && $count==0) - $this->std_plan[$t][$s][0]->frei_orte=array_diff($orte,$raster[$t][$s]->ort); - elseif ($count==0) - $this->std_plan[$t][$s][0]->frei_orte=$orte; - elseif (count($raster[$t][$s]->ort)>0) - $this->std_plan[$t][$s][0]->frei_orte=array_diff($this->std_plan[$t][$s][0]->frei_orte,$raster[$t][$s]->ort); - // Blockung beruecksichtigen - for ($b=1;$b<$block && ($s+$block)<=($max_stunde+1);$b++) - if (!$raster[$t][$s+$b]->kollision) - $this->std_plan[$t][$s][0]->frei_orte=array_diff($this->std_plan[$t][$s][0]->frei_orte,$raster[$t][$s+$b]->ort); - else - $this->std_plan[$t][$s][0]->frei_orte=array(); - } - elseif($raster[$t][$s]->kollision) - $this->std_plan[$t][$s][0]->frei_orte=array(); - - // Variablen abgleichen - $rest-=$block; - if ($block>$rest) - $block=$rest; - $datum=jump_week($datum,$wr); - $datum_begin=$datum; - $datum_end=jump_week($datum_begin, 1); - // Formatieren fuer Datenbankabfragen - $datum_begin=date("Y-m-d",$datum_begin); - $datum_end=date("Y-m-d",$datum_end); - $count++; - } while($type=='lva_multi_search' && $rest>0); - return true; - } - - - /************************************************************************** - * @brief Funktion draw_week_csv Stundenplan im XUL-Format - * - * @param target Ziel-System zB Outlook - * - * @return true oder false - * - */ - function draw_week_csv($target) - { - if (!date("w",$this->datum)) - $this->datum=jump_day($this->datum,1); - $num_rows_stunde=pg_numrows($this->stunde); - for ($i=1; $i<7; $i++) - { - for ($k=0; $k<$num_rows_stunde; $k++) - { - $j=pg_result($this->stunde,$k,'"stunde"'); // get id of hour - if (isset($this->std_plan[$i][$j][0]->lehrfach)) - { - // Daten aufbereiten - unset($unr); - unset($lektor); - unset($lehrverband); - unset($lehrfach); - foreach ($this->std_plan[$i][$j] as $lehrstunde) - { - $unr[]=$lehrstunde->unr; - // Lektoren - $lektor[]=$lehrstunde->lektor; - // Lehrverband - $lvb=$lehrstunde->stg.'-'.$lehrstunde->sem; - if ($lehrstunde->ver!=null && $lehrstunde->ver!='0' && $lehrstunde->ver!='') - { - $lvb.=$lehrstunde->ver; - if ($lehrstunde->grp!=null && $lehrstunde->grp!='0' && $lehrstunde->grp!='') - $lvb.=$lehrstunde->grp; - } - if (count($lehrstunde->einheit_kurzbz)>0) - $lvb=$lehrstunde->einheit_kurzbz; - $lehrverband[]=$lvb; - // Lehrfach - $lf=$lehrstunde->lehrfach; - if (isset($lehrstunde->lehrform)) - $lf.='-'.$lehrstunde->lehrform; - $lehrfach[]=$lf; - $titel=$lehrstunde->titel; - $anmerkung=$lehrstunde->anmerkung; - } - - // Unterrichtsnummer (Kollision?) - $unr=array_unique($unr); - if(!isset($kollision)) - $kollision=0; - $kollision+=count($unr); - - // Lektoren - if ($this->type!='lektor') - { - $lektor=array_unique($lektor); - sort($lektor); - $lkt=''; - foreach ($lektor as $l) - $lkt.=$l.' '; - } - else - $lkt=$lektor[0]; - //echo $lkt; - - // Lehrverband - if ($this->type!='verband') - { - $lehrverband=array_unique($lehrverband); - sort($lehrverband); - $lvb=''; - foreach ($lehrverband as $l) - $lvb.=$l.' '; - } - else - $lvb=$lehrverband[0]; - - - $start_time=pg_result($this->stunde,$k,'"beginn"'); - // Blockungen erkennen - if (($this->std_plan[$i][$j][0]->unr == $this->std_plan[$i][$j+1][0]->unr) && $this->std_plan[$i][$j][0]!=0 && $k<($num_rows_stunde-1)) - { - $end_time=pg_result($this->stunde,++$k,'"ende"'); - if (($this->std_plan[$i][$j][0]->unr == $this->std_plan[$i][$j+2][0]->unr) && $k<($num_rows_stunde-2)) - { - $end_time=pg_result($this->stunde,++$k,'"ende"'); - if (($this->std_plan[$i][$j][0]->unr == $this->std_plan[$i][$j+3][0]->unr) && $k<($num_rows_stunde-3)) - $end_time=pg_result($this->stunde,++$k,'"ende"'); - } - } - else - $end_time=pg_result($this->stunde,$k,'"ende"'); - //$start_time=substr($start_time,0,5); - //$end_time=substr($end_time,0,5); - //$start_date=$this->datum[year].'/'.$this->datum[mon].'/'.$this->datum[mday]; - - $start_date=date("d.m.Y",$this->datum); - $end_date=$start_date; - if ($target=='outlook') - { - echo $this->crlf.'"'.$this->std_plan[$i][$j][0]->lehrfach.'","'.$start_date.'","'.$start_time.'","'.$end_date.'","'.$end_time.'","Aus","Aus",,,,,,,,"Stundenplan'; - echo $this->crlf.$this->std_plan[$i][$j][0]->lehrfach.$this->crlf.$this->std_plan[$i][$j][0]->lektor.$this->crlf.$lvb.$this->crlf.$this->std_plan[$i][$j][0]->ort.'","StundenplanFH","'.$this->std_plan[$i][$j][0]->ort.'","Normal","Aus",,"Normal","2"'; - } - else if ($target=='ical') - { - $sda = explode(".",$start_date); //sda start date array - $sta = explode(":",$start_time); //sta start time array - $eda = explode(".",$end_date); //eda end date array - $eta = explode(":",$end_time); //eta end time array - - $start_date_time_ical = $sda[2].$sda[1].$sda[0].'T'.$sta[0].$sta[1].$sta[2]; //.'Z'; //neu gruppieren der Startzeit und des Startdatums - $end_date_time_ical = $eda[2].$eda[1].$eda[0].'T'.$eta[0].$eta[1].$eta[2]; //.'Z'; //neu gruppieren der Startzeit und des Startdatums - - echo $this->crlf.'BEGIN:VEVENT'.$this->crlf - .'UID:'.'TW'.$lvb.$this->std_plan[$i][$j][0]->ort.$this->std_plan[$i][$j][0]->lektor.$lehrfach[0].$start_date_time_ical.$this->crlf - .'SUMMARY:'.$lehrfach[0].' '.$this->std_plan[$i][$j][0]->ort.' - '.$lvb.$this->crlf - .'DESCRIPTION:'.$lehrfach[0].'\n'.$this->std_plan[$i][$j][0]->lektor.'\n'.$lvb.'\n'.$this->std_plan[$i][$j][0]->ort.$this->crlf - .'LOCATION:'.$this->std_plan[$i][$j][0]->ort.$this->crlf - .'CATEGORIES:StundenplanTW'.$this->crlf - .'DTSTART:'.$start_date_time_ical.$this->crlf - .'DTEND:'.$end_date_time_ical.$this->crlf - .'END:VEVENT'; - } - else - { - echo $this->crlf.'"'.$lehrfach[0].'","StundenplanTW","'.$this->std_plan[$i][$j][0]->ort.'","Stundenplan'.$this->crlf.$this->std_plan[$i][$j][0]->lehrfach.$this->crlf; - echo $this->std_plan[$i][$j][0]->lektor.$this->crlf.$lvb.$this->crlf.$this->std_plan[$i][$j][0]->ort.'","Stundenplan",'; - echo '"'.$start_date.'","'.$start_time.'","'.$end_date.'","'.$end_time.'",,,,,'; - } - } - } - $this->datum=jump_day($this->datum, 1); - } - return true; - } - -} - +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ + +class stundenplan +{ + var $conn; // resource DB-Handle + var $errormsg; // string + var $new; // boolean + var $stundenplan = array(); // stundenplan Objekt + + //Tabellenspalten + var $lehreinheit_id; // integer + var $lehrveranstaltung_nr; // integer + var $studiensemester_kurzbz; // varchar(16) + var $lehrfach_nr; // integer + var $lehrform_kurzbz; // varchar(8) + var $stundenblockung; // smalint + var $wochenrythmus; // smalint + var $start_kw; // smalint + var $raumtyp; // varchar(8) + var $raumtypalternativ; // varchar(8) + var $lehre; // boolean + var $anmerkung; // varchar(255) + var $unr; // integer + var $ext_id; // bigint + + // ************************************************************************* + // * Konstruktor - Uebergibt die Connection und laedt optional eine LE + // * @param $conn Datenbank-Connection + // * $gruppe_kurzbz + // * $unicode Gibt an ob die Daten mit UNICODE Codierung + // * oder LATIN9 Codierung verarbeitet werden sollen + // ************************************************************************* + function lehreinheit($conn, $lehreinheit_id=null, $unicode=false) + { + $this->conn = $conn; + + if($unicode) + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + else + $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; + + if(!pg_query($conn,$qry)) + { + $this->errormsg = 'Encoding konnte nicht gesetzt werden'; + return false; + } + + if($lehreinheit_id!=null) + $this->load($lehreinheit_id); + } + + // ********************************************************* + // * Laedt die LE + // * @param lehreinheit_id + // ********************************************************* + function load($lehreinheit_id) + { + return false; + } + + // ******************************************* + // * Prueft die Variablen vor dem Speichern + // * auf Gueltigkeit. + // * @return true wenn ok, false im Fehlerfall + // ******************************************* + function validate() + { + if($this->lehreinheit_id!='' && !is_numeric($this->lehreinheit_id)) + { + $this->errormsg = 'Lehreinheit_id muss eine gueltige Zahl sein'; + return false; + } + if(!is_numeric($this->lehrveranstaltung_nr)) + { + $this->errormsg = 'LehrveranstaltungsNr muss eine gueltige Zahl sein'; + return false; + } + if(strlen($this->studiensemester_kurzbz)>16) + { + $this->errormsg = 'Studiensemesterkurzbz darf nicht laenger als 16 Zeichen sein'; + return false; + } + if($this->studiensemester_kurzbz=='') + { + $this->errormsg = 'Studiensemester muss angegeben werden'; + return false; + } + if(!is_numeric($this->lehrfach_nr)) + { + $this->errormsg = 'Lehrfach_nr muss eine gueltige Zahl sein'; + return false; + } + if(strlen($this->lehrform_kurzbz)>8) + { + $this->errormsg = 'Lehrform_kurzbz darf nicht laenger als 8 Zeichen sein'; + return false; + } + if($this->lehrform_kurzbz=='') + { + $this->lehrform_kurzbz='SO'; + //TODO + //$this->errormsg = 'Lehrform muss angegeben werden'; + //return false; + } + if(!is_numeric($this->stundenblockung)) + { + $this->errormsg = 'Stundenblockung muss eine gueltige Zahl sein'; + return false; + } + if(!is_numeric($this->wochenrythmus)) + { + $this->errormsg = 'Wochenrythmus muss eine gueltige Zahl sein'; + return false; + } + if($this->start_kw!='' && !is_numeric($this->start_kw)) + { + $this->errormsg = 'StartKW muss eine gueltige Zahl sein'; + return false; + } + if($this->start_kw!='' && ($this->start_kw>53 || $this->start_kw<1)) + { + $this->errormsg = 'StartKW muss zwischen 1 und 53 liegen'; + return false; + } + if(strlen($this->raumtyp)>8) + { + $this->errormsg = 'Raumtyp darf nicht laenger als 8 Zeichen sein'; + return false; + } + if(strlen($this->raumtypalternativ)>8) + { + $this->errormsg = 'Raumtypalternativ darf nicht alenger als 8 Zeichen sein'; + return false; + } + if($this->raumtypalternativ=='') + { + //TODO + $this->raumtypalternativ='Dummy'; + } + if(!is_bool($this->lehre)) + { + $this->errormsg = 'Lehre muss ein boolscher Wert sein'; + return false; + } + if(strlen($this->anmerkung)>255) + { + $this->errormsg = 'Anmerkung darf nicht laenger als 255 Zeichen sein'; + return false; + } + if($this->unr!='' && !is_numeric($this->unr)) + { + $this->errormsg = 'UNR muss eine gueltige Zahl sein'; + return false; + } + if($this->ext_id!='' && !is_numeric($this->ext_id)) + { + $this->errormsg = 'Ext_id muss eine gueltige Zahl sein'; + return false; + } + + return true; + } + + // ************************************************ + // * wenn $var '' ist wird NULL zurueckgegeben + // * wenn $var !='' ist werden Datenbankkritische + // * Zeichen mit Backslash versehen und das Ergbnis + // * unter Hochkomma gesetzt. + // ************************************************ + function addslashes($var) + { + return ($var!=''?"'".addslashes($var)."'":'null'); + } + + // ************************************************************ + // * Speichert LE in die Datenbank + // * Wenn $new auf true gesetzt ist wird ein neuer Datensatz + // * angelegt, ansonsten der Datensatz upgedated + // * @return true wenn erfolgreich, false im Fehlerfall + // ************************************************************ + function save($new=null) + { + if(is_null($new)) + $new = $this->new; + + //Variablen auf Gueltigkeit pruefen + if(!$this->validate()) + return false; + + if($new) + { + //ToDo ID entfernen + $qry = 'INSERT INTO lehre.tbl_lehreinheit (lehrveranstaltung_nr, studiensemester_kurzbz, + lehrfach_nr, lehrform_kurzbz, stundenblockung, wochenrythmus, + start_kw, raumtyp, raumtypalternativ, lehre, anmerkung, unr, ext_id) + VALUES('.$this->addslashes($this->lehrveranstaltung_nr).','. + $this->addslashes($this->studiensemester_kurzbz).','. + $this->addslashes($this->lehrfach_nr).','. + $this->addslashes($this->lehrform_kurzbz).','. + $this->addslashes($this->stundenblockung).','. + $this->addslashes($this->wochenrythmus).','. + $this->addslashes($this->start_kw).','. + $this->addslashes($this->raumtyp).','. + $this->addslashes($this->raumtypalternativ).','. + ($this->lehre?'true':'false').','. + $this->addslashes($this->anmerkung).','. + $this->addslashes($this->unr).','. + $this->addslashes($this->ext_id).');'; + } + else + { + $qry = 'UPDATE lehre.tbl_lehreinheit SET'. + ' lehrveranstaltung_nr='.$this->addslashes($this->lehrveranstaltung_nr).','. + ' studiensemester_kurzbz='.$this->addslashes($this->studiensemester_kurzbz).','. + ' lehrfach_nr='.$this->addslashes($this->lehrfach_nr).','. + ' lehrform_kurzbz='.$this->addslashes($this->lehrform_kurzbz).','. + ' stundenblockung='.$this->addslashes($this->stundenblockung).','. + ' wochenrythmus='.$this->addslashes($this->wochenrythmus).','. + ' start_kw='.$this->addslashes($this->start_kw).','. + ' raumtyp='.$this->addslashes($this->raumtyp).','. + ' raumtypalternativ='.$this->addslashes($this->raumtypalternativ).','. + ' lehre='.($this->lehre?'true':'false').','. + ' anmerkung='.$this->addslashes($this->anmerkung).','. + ' unr='.$this->addslashes($this->unr).','. + ' ext_id='.$this->addslashes($this->ext_id). + " WHERE lehreinheit_id=".$this->addslashes($this->lehreinheit_id).";"; + } + + if(pg_query($this->conn,$qry)) + { + //Log schreiben + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern der LE:'.$qry; + return false; + } + } +} ?> \ No newline at end of file diff --git a/include/telefonnummer.class.php b/include/telefonnummer.class.php new file mode 100644 index 000000000..93528e06d --- /dev/null +++ b/include/telefonnummer.class.php @@ -0,0 +1,296 @@ +conn = $conn; + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + if(!pg_query($conn,$qry)) + { + $this->errormsg = "Encoding konnte nicht gesetzt werden"; + return false; + } + if($telefonnummer_id != null) + $this->load($telefonnummer_id); + } + + /** + * Laedt den Datensatz mit der ID die uebergeben wurde + * @param $telefonnummer_id ID des zu ladenden Datensatzes + * @return true wenn ok, false im Fehlerfall + */ + function load($telefonnummer_id) + { + //Gueltigkeit von telefonnummer_id pruefen + if(!is_numeric($telefonnummer_id) || $telefonnummer_id == '') + { + $this->errormsg = 'telefonnummer_id muss eine Zahl sein'; + return false; + } + + $qry = "SELECT * FROM telefonnummer WHERE telefonnummer_pk=$telefonnummer_id"; + + if(!$res = pg_query($this->conn,$qry)) + { + $this->errormsg = 'Fehler beim Laden des Datensatzes'; + return false; + } + + if($row = pg_fetch_object($res)) + { + $this->telefonnummer_id = $row->telefonnummer_pk; + $this->name = $row->name; + $this->nummer = $row->nummer; + $this->person_id = $row->person_fk; + $this->typ = $row->typ; + $this->updateamum = $row->creationdate; + $this->updatevon = $row->creationuser; + } + else + { + $this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden'; + return false; + } + + return true; + } + + /** + * Laedt alle Telefonnummern einer Person + * @param $person_id Person zu der die Telefonnummern gesucht werden sollen + * @return true wenn ok, false im Fehlerfall + */ + function load_pers($person_id) + { + //Gueltigkeit von person_id pruefen + if(!is_numeric($person_id) || $person_id == '') + { + $this->errormsg = 'person_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "SELECT * from telefonnummer where person_fk=$person_id"; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Der Datensatz konnte nicht geladen werden'; + return false; + } + + while($row = pg_fetch_object($res)) + { + $tel_obj = new telefonnummer($this->conn); + + $tel_obj->telefonnummer_id = $row->telefonnummer_pk; + $tel_obj->name = $row->name; + $tel_obj->nummer = $row->nummer; + $tel_obj->person_id = $row->person_fk; + $tel_obj->typ = $row->typ; + $tel_obj->updateamum = $row->creationdate; + $tel_obj->updatevon = $row->creationuser; + + $this->result[] = $tel_obj; + } + return true; + } + + /** + * Liefert alle Telefonnummern + * @return true wenn ok, false im Fehlerfall + */ + function getAll() + { + /* Benoetigt zu viel Speicher + + $qry = "SELECT * FROM telefonnummer;"; + + if(!$res = pg_query($this->conn, $qry)) + { + $this->errormsg = 'Fehler beim laden der Telefonnummern'; + return false; + } + + while($row = pg_fetch_object($res)) + { + $tel_obj = new telefonnummer($this->conn); + + $tel_obj->telefonnummer_id = $row->telefonnummer_pk; + $tel_obj->name = $row->name; + $tel_obj->nummer = $row->nummer; + $tel_obj->person_id = $row->person_fk; + $tel_obj->typ = $row->typ; + $tel_obj->updateamum = $row->creationdate; + $tel_obj->updatevon = $row->creationuser; + + $this->result[] = $tel_obj; + } + + return true; + */ + return false; + } + + /** + * Prueft die gueltigkeit der Variablen + * @return true wenn ok, false im Fehlerfall + */ + function checkvars() + { + //Hochkomma und HTML Tags ersetzen + //$this->name = htmlentities($this->name, ENT_QUOTES); + //$this->nummer = htmlentities($this->nummer, ENT_QUOTES); + + //Laenge pruefen + $this->errormsg = 'Eine der Gesamtlaengen wurde ueberschritten'; + if(strlen($this->name)>255) return false; + if(strlen($this->nummer)>30) return false; + + //Zahlenfelder pruefen + $this->errormsg = 'Ein Zahlenfeld enthaelt ungueltige Zeichen'; + if(!is_numeric($this->person_id)) return false; + if(!is_numeric($this->typ)) return false; + + $this->errormsg = ''; + return true; + } + + /** + * Speichert den aktuellen Datensatz + * Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt + * andernfalls wird der Datensatz mit der ID in $telefonnummer_id aktualisiert + * @return true wenn ok, false im Fehlerfall + */ + function save() + { + //Variablen pruefen + if(!$this->checkvars()) + return false; + + if($this->new) + { + //Neuen Datensatz anlegen + + //neue ID aus der Sequence holen + $qry = "SELECT nextval('telefonnummer_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim auslesen der Sequence'; + return false; + } + + $this->telefonnummer_id = $row->id; + + $qry = "INSERT INTO telefonnummer (telefonnummer_pk, person_fk, name, nummer, typ, creationdate, creationuser)". + " VALUES('$this->telefonnummer_id', '$this->person_id', '$this->name', '$this->nummer', '$this->typ', now(), '$this->updatevon');"; + } + else + { + //Bestehenden Datensatz aktualisieren + + //Pruefen der ID + if(!is_numeric($this->telefonnummer_id) || $this->telefonnummer_id == '') + { + $this->errormsg = 'telefonnummer_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "UPDATE telefonnummer SET person_fk='$this->person_id', name='$this->name', typ='$this->typ', nummer='$this->nummer'". + " WHERE telefonnummer_pk='$this->telefonnummer_id'"; + } + + if(pg_query($this->conn, $qry)) + { + //Log schreiben + $sql = $qry; + $qry = "SELECT nextval('log_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim Auslesen der Log-Sequence'; + return false; + } + + $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')"; + if(pg_query($this->conn, $qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Speichern der Daten'; + return false; + } + } + + /** + * Loescht den Datensatz mit der uebergebenen ID + * @param telefonnummer_id ID des zu leoschenen Datensatzes + * @return true wenn ok, false im Fehlerfall + */ + function delete($telefonnummer_id) + { + //Pruefen der ID + if(!is_numeric($telefonnummer_id) || $telefonnummer_id == '') + { + $this->errormsg = 'telefonnummer_id muss eine gueltige Zahl sein'; + return false; + } + + //loeschen des Datensatzes + $qry = "DELETE FROM telefonnummer where telefonnummer_pk='$telefonnummer_id'"; + + if(pg_query($this->conn, $qry)) + { + //Log schreiben + $sql = $qry; + $qry = "SELECT nextval('log_seq') as id;"; + if(!$row = pg_fetch_object(pg_query($this->conn, $qry))) + { + $this->errormsg = 'Fehler beim Auslesen der Log-Sequence'; + return false; + } + + $qry = "INSERT INTO log(log_pk, creationdate, creationuser, sql) VALUES('$row->id', now(), '$this->updatevon', '".addslashes($sql)."')"; + if(pg_query($this->conn, $qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim loeschen eines Datensatzes'; + return false; + } + } +} +?> \ No newline at end of file diff --git a/include/test.php b/include/test.php deleted file mode 100644 index ecfa68b70..000000000 --- a/include/test.php +++ /dev/null @@ -1,9 +0,0 @@ - diff --git a/include/fas/variable.class.php b/include/variable.class.php similarity index 100% rename from include/fas/variable.class.php rename to include/variable.class.php diff --git a/include/zeitwunsch.class.php b/include/zeitwunsch.class.php index f5483d79e..0014645d3 100644 --- a/include/zeitwunsch.class.php +++ b/include/zeitwunsch.class.php @@ -1,96 +1,158 @@ -conn=$conn; - } - - /** - * Zeitwunsch einer Person laden - * @return boolean Ergebnis steht in Array $zeitwunsch wenn true - */ - function loadPerson($uid) - { - // Zeitwuensche abfragen - if(!$result=@pg_query($this->conn, "SELECT * FROM tbl_zeitwunsch WHERE uid='$uid'")) - { - $this->errormsg=pg_last_error($this->conn); - return false; - } - else - { - while ($row=@pg_fetch_object($result)) - $this->zeitwunsch[$row->tag][$row->stunde]=$row->gewicht; - return true; - } - } - - - /** - * Zeitwunsch der Personen in Lehrveranstaltungen laden - * @return array mit Fachbereichen oder false=fehler - */ - function loadLVA($lva_id) - { - // SUB-Select fuer LVAs - $sql_query_lva='SELECT DISTINCT lektor FROM tbl_lehrveranstaltung WHERE '; - for ($i=0;$iconn, $sql_query)) - { - $this->errormsg=pg_last_error($this->conn); - return false; - } - else - { - while ($row=@pg_fetch_object($result)) - $this->zeitwunsch[$row->tag][$row->stunde]=$row->gewicht; - return true; - } - } - -} +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ + +class zeitwunsch +{ + var $conn; // resource DB-Handle + var $errormsg; // string + var $new; // boolean + var $zeitwuensche = array(); // zeitwunsch Objekt + + //Tabellenspalten + var $stunde; // smalint + var $mitarbeiter_uid; // varchar(16) + var $tag; // smalint + var $gewicht; // smalint + + // ************************************************************************* + // * Konstruktor - Uebergibt die Connection und laedt optional eine Lehrform + // * @param $conn Datenbank-Connection + // * $uid Uid des Mitarbeiters + // * $tag Tag des Zeitwunsches + // * $stunde Stunde des Zeitwunsches + // * $unicode Gibt an ob die Daten mit UNICODE Codierung + // * oder LATIN9 Codierung verarbeitet werden sollen + // ************************************************************************* + function zeitwunsch($conn, $mitarbeiter_uid=null, $tag=null, $stunde=null, $unicode=false) + { + $this->conn = $conn; + + if($unicode) + $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; + else + $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; + + if(!pg_query($conn,$qry)) + { + $this->errormsg = 'Encoding konnte nicht gesetzt werden'; + return false; + } + + if($mitarbeiter_uid != null && $tag!=null && $stunde!=null) + $this->load($mitarbeiter_uid, $tag, $stunde); + } + + // ********************************************************* + // * Laedt einen Zeitwunsch + // * @param + // ********************************************************* + function load($mitarbeiter_uid, $tag, $stunde) + { + return true; + } + + // ******************************************* + // * Prueft die Variablen vor dem Speichern + // * auf Gueltigkeit. + // * @return true wenn ok, false im Fehlerfall + // ******************************************* + function validate() + { + if(strlen($this->mitarbeiter_uid)>16) + { + $this->errormsg = 'UID darf nicht laenger als 16 Zeichen sein.'; + return false; + } + if($this->mitarbeiter_uid == '') + { + $this->errormsg = 'UID muss angegeben werden'; + return false; + } + if(!is_numeric($this->stunde)) + { + $this->errormsg = 'Stunde muss eine gueltige Zahl sein'; + return false; + } + if(!is_numeric($this->gewicht)) + { + $this->errormsg = 'Gewicht muss eine gueltige Zahl sein'; + return false; + } + if(!is_numeric($this->tag)) + { + $this->errormsg = 'Tag muss eine gueltige Zahl sein'; + return false; + } + + return true; + } + + // ************************************************ + // * wenn $var '' ist wird NULL zurueckgegeben + // * wenn $var !='' ist werden Datenbankkritische + // * Zeichen mit Backslash versehen und das Ergbnis + // * unter Hochkomma gesetzt. + // ************************************************ + function addslashes($var) + { + return ($var!=''?"'".addslashes($var)."'":'null'); + } + + // ************************************************************ + // * Speichert einen Zeitwunsch in die Datenbank + // * Wenn $new auf true gesetzt ist wird ein neuer Datensatz + // * angelegt, ansonsten der Datensatz mit $lehrfach_nr upgedated + // * @return true wenn erfolgreich, false im Fehlerfall + // ************************************************************ + function save() + { + //Variablen auf Gueltigkeit pruefen + if(!$this->validate()) + return false; + + if($this->new) + { + $qry = "INSERT INTO campus.tbl_zeitwunsch (mitarbeiter_uid, tag, stunde, gewicht) + VALUES('".addslashes($this->mitarbeiter_uid)."',". + $this->tag.','.$this->stunde.','.$this->gewicht.');'; + } + else + { + $qry = 'UPDATE campus.tbl_zeitwunsch SET'. + ' gewicht='.$this->gewicht. + " WHERE mitarbeiter_uid='".addslashes($this->mitarbeiter_uid)."' AND + tag=".$this->tag.' AND stunde='.$this->stunde; + } + + if(pg_query($this->conn,$qry)) + { + //Log schreiben + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern des Zeitwunsches:'.$qry; + return false; + } + } +} ?> \ No newline at end of file