diff --git a/include/abschlusspruefung.class.php b/include/abschlusspruefung.class.php index f26690bee..b7ccd69e0 100755 --- a/include/abschlusspruefung.class.php +++ b/include/abschlusspruefung.class.php @@ -16,8 +16,9 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * * Authors: Christian Paminger , - * Andreas Oesterreicher and - * Rudolf Hangl . + * Andreas Oesterreicher , + * Rudolf Hangl and + * Andreas Moik . */ /** * Klasse zur Verwaltung der Abschlusspruefungen @@ -327,12 +328,12 @@ class abschlusspruefung extends basis_db } - /** - * Liefert die letzte Abschlussprüfung eines Studenten - * @param type $student_uid - */ - public function getLastAbschlusspruefung($student_uid) - { + /** + * Liefert die letzte Abschlussprüfung eines Studenten + * @param type $student_uid + */ + public function getLastAbschlusspruefung($student_uid) + { $qry = "SELECT * FROM @@ -341,7 +342,7 @@ class abschlusspruefung extends basis_db WHERE student_uid=".$this->db_add_param($student_uid, FHC_STRING, false)." ORDER BY datum DESC LIMIT 1"; - if($this->db_query($qry)) + if($this->db_query($qry)) { if($row = $this->db_fetch_object()) { @@ -365,7 +366,6 @@ class abschlusspruefung extends basis_db $this->insertamum = $row->insertamum; $this->insertvon = $row->insertvon; $this->ext_id = $row->ext_id; - } return true; } @@ -374,7 +374,6 @@ class abschlusspruefung extends basis_db $this->errormsg = 'Fehler beim Laden der Daten'; return false; } - } - + } } ?> diff --git a/include/adresse.class.php b/include/adresse.class.php index 45c70e7c5..247e175f3 100644 --- a/include/adresse.class.php +++ b/include/adresse.class.php @@ -16,8 +16,9 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * * Authors: Christian Paminger , - * Andreas Oesterreicher and - * Rudolf Hangl . + * Andreas Oesterreicher , + * Rudolf Hangl and + * Andreas Moik . */ /** * Klasse Adresse @@ -279,20 +280,20 @@ class adresse extends basis_db { //Neuen Datensatz einfuegen $qry='BEGIN;INSERT INTO public.tbl_adresse (person_id, name, strasse, plz, typ, ort, nation, insertamum, insertvon, - gemeinde, heimatadresse, zustelladresse, firma_id, updateamum, updatevon) VALUES('. - $this->db_add_param($this->person_id, FHC_INTEGER).', '. - $this->db_add_param($this->name).', '. - $this->db_add_param($this->strasse).', '. - $this->db_add_param($this->plz).', '. - $this->db_add_param(trim($this->typ)).', '. - $this->db_add_param($this->ort).', '. - $this->db_add_param($this->nation).', now(), '. - $this->db_add_param($this->insertvon).', '. - $this->db_add_param($this->gemeinde).', '. - $this->db_add_param($this->heimatadresse,FHC_BOOLEAN, false).', '. - $this->db_add_param($this->zustelladresse,FHC_BOOLEAN, false).', '. - $this->db_add_param($this->firma_id, FHC_INTEGER).', now(), '. - $this->db_add_param($this->updatevon).');'; + gemeinde, heimatadresse, zustelladresse, firma_id, updateamum, updatevon) VALUES('. + $this->db_add_param($this->person_id, FHC_INTEGER).', '. + $this->db_add_param($this->name).', '. + $this->db_add_param($this->strasse).', '. + $this->db_add_param($this->plz).', '. + $this->db_add_param(trim($this->typ)).', '. + $this->db_add_param($this->ort).', '. + $this->db_add_param($this->nation).', now(), '. + $this->db_add_param($this->insertvon).', '. + $this->db_add_param($this->gemeinde).', '. + $this->db_add_param($this->heimatadresse,FHC_BOOLEAN, false).', '. + $this->db_add_param($this->zustelladresse,FHC_BOOLEAN, false).', '. + $this->db_add_param($this->firma_id, FHC_INTEGER).', now(), '. + $this->db_add_param($this->updatevon).');'; } else { @@ -307,16 +308,16 @@ class adresse extends basis_db ' name='.$this->db_add_param($this->name).', '. ' strasse='.$this->db_add_param($this->strasse).', '. ' plz='.$this->db_add_param($this->plz).', '. - ' typ='.$this->db_add_param(trim($this->typ)).', '. - ' ort='.$this->db_add_param($this->ort).', '. - ' nation='.$this->db_add_param($this->nation).', '. - ' gemeinde='.$this->db_add_param($this->gemeinde).', '. - ' firma_id='.$this->db_add_param($this->firma_id, FHC_INTEGER).','. - ' updateamum= now(), '. - ' updatevon='.$this->db_add_param($this->updatevon).', '. - ' heimatadresse='.$this->db_add_param($this->heimatadresse, FHC_BOOLEAN, false).', '. - ' zustelladresse='.$this->db_add_param($this->zustelladresse, FHC_BOOLEAN, false).' '. - 'WHERE adresse_id='.$this->db_add_param($this->adresse_id, FHC_INTEGER, false).';'; + ' typ='.$this->db_add_param(trim($this->typ)).', '. + ' ort='.$this->db_add_param($this->ort).', '. + ' nation='.$this->db_add_param($this->nation).', '. + ' gemeinde='.$this->db_add_param($this->gemeinde).', '. + ' firma_id='.$this->db_add_param($this->firma_id, FHC_INTEGER).','. + ' updateamum= now(), '. + ' updatevon='.$this->db_add_param($this->updatevon).', '. + ' heimatadresse='.$this->db_add_param($this->heimatadresse, FHC_BOOLEAN, false).', '. + ' zustelladresse='.$this->db_add_param($this->zustelladresse, FHC_BOOLEAN, false).' '. + 'WHERE adresse_id='.$this->db_add_param($this->adresse_id, FHC_INTEGER, false).';'; } if($this->db_query($qry)) @@ -432,7 +433,6 @@ class adresse extends basis_db $this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden'; return false; } - return true; } } diff --git a/include/akadgrad.class.php b/include/akadgrad.class.php index e1adebed2..50309efed 100644 --- a/include/akadgrad.class.php +++ b/include/akadgrad.class.php @@ -15,9 +15,10 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * - * Authors: Christian Paminger , - * Andreas Oesterreicher and - * Rudolf Hangl . + * Authors: Christian Paminger , + * Andreas Oesterreicher , + * Rudolf Hangl and + * Andreas Moik . */ require_once(dirname(__FILE__).'/basis_db.class.php'); @@ -156,8 +157,9 @@ class akadgrad extends basis_db } } - public function __toString(){ - return $this->akadgrad_kurzbz; + public function __toString() + { + return $this->akadgrad_kurzbz; } } ?> diff --git a/include/akte.class.php b/include/akte.class.php index c69cb31fe..391e6e993 100644 --- a/include/akte.class.php +++ b/include/akte.class.php @@ -1,440 +1,439 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ -require_once(dirname(__FILE__).'/basis_db.class.php'); - -class akte extends basis_db -{ - public $new; - public $result = array(); - - //Tabellenspalten - public $akte_id; - public $person_id; - public $dokument_kurzbz; - public $inhalt; - public $mimetype; - public $erstelltam; - public $gedruckt; - public $titel; - public $bezeichnung; - public $updateamum; - public $updatevon; - public $insertamum; - public $insertvon; - public $uid; - public $ext_id; - public $dms_id; - public $nachgereicht; - public $anmerkung; - public $titel_intern; - public $anmerkung_intern; - - /** - * Konstruktor - * @param akte_id ID des zu ladenden Datensatzes - */ - public function __construct($akte_id=null) - { - parent::__construct(); - - if(!is_null($akte_id)) - $this->load($akte_id); - } - - /** - * Laedt einen Datensatz - * @param akte_id ID des zu ladenden Datensatzes - */ - public function load($akte_id) - { - //akte_id auf gueltigkeit pruefen - if(!is_numeric($akte_id) || $akte_id == '') - { - $this->errormsg = 'akte_id muss eine gueltige Zahl sein'; - return false; - } - - //laden des Datensatzes - $qry = "SELECT * FROM public.tbl_akte WHERE akte_id=".$this->db_add_param($akte_id, FHC_INTEGER); - - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - $this->akte_id = $row->akte_id; - $this->person_id = $row->person_id; - $this->dokument_kurzbz = $row->dokument_kurzbz; - $this->inhalt = $row->inhalt; - $this->mimetype = $row->mimetype; - $this->erstelltam = $row->erstelltam; - $this->gedruckt = $this->db_parse_bool($row->gedruckt); - $this->titel = $row->titel; - $this->bezeichnung = $row->bezeichnung; - $this->updateamum = $row->updateamum; - $this->updatevon = $row->updatevon; - $this->insertamum = $row->insertamum; - $this->insertvon = $row->insertvon; - $this->uid = $row->uid; - $this->dms_id = $row->dms_id; - $this->anmerkung = $row->anmerkung; - $this->nachgereicht = $this->db_parse_bool($row->nachgereicht); - $this->titel_intern = $row->titel_intern; - $this->anmerkung_intern = $row->anmerkung_intern; - return true; - } - else - { - $this->errormsg = 'Fehler bei der Datenbankabfrage'; - return false; - } - } - else - { - $this->errormsg = 'Fehler bei der Datenbankabfrage'; - return false; - } - } - - /** - * Loescht einen Datensatz - * @param akte_id ID des zu loeschenden Datensatzes - * @return true wenn ok, false im Fehlerfall - */ - public function delete($akte_id) - { - //akte_id auf gueltigkeit pruefen - if(!is_numeric($akte_id) || $akte_id == '') - { - $this->errormsg = 'akte_id muss eine gueltige Zahl sein'; - return false; - } - - $qry = "DELETE FROM public.tbl_akte WHERE akte_id=".$this->db_add_param($akte_id, FHC_INTEGER); - - if($this->db_query($qry)) - { - //Log schreiben - return true; - } - else - { - $this->errormsg = 'Fehler beim Löschen'; - return false; - } - } - - /** - * Prueft die Variablen vor dem Speichern - * - * @return true wenn ok, sonst false - */ - protected function validate() - { - if($this->person_id=='') - { - $this->errormsg = 'Person ID muss angegeben werden'; - return false; - } - if($this->dokument_kurzbz=='') - { - $this->errormsg = 'DokumentKurzbz muss angegeben werden'; - return false; - } - - 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 $akte_id aktualisiert - * @return true wenn ok, false im Fehlerfall - */ - public function save($new=null) - { - if(!$this->validate()) - return false; - - if($new==null) - $new = $this->new; - - if($new) - { - //Neuen Datensatz anlegen - $qry = "BEGIN;INSERT INTO public.tbl_akte (person_id, dokument_kurzbz, inhalt, mimetype, erstelltam, gedruckt, titel, - bezeichnung, updateamum, updatevon, insertamum, insertvon, uid, dms_id, nachgereicht, anmerkung, titel_intern, anmerkung_intern ) VALUES (". - $this->db_add_param($this->person_id, FHC_INTEGER).', '. - $this->db_add_param($this->dokument_kurzbz).', '. - $this->db_add_param($this->inhalt).', '. - $this->db_add_param($this->mimetype).', '. - $this->db_add_param($this->erstelltam).', '. - $this->db_add_param($this->gedruckt, FHC_BOOLEAN).', '. - $this->db_add_param($this->titel).', '. - $this->db_add_param($this->bezeichnung).', '. - $this->db_add_param($this->updateamum).', '. - $this->db_add_param($this->updatevon).', '. - $this->db_add_param($this->insertamum).', '. - $this->db_add_param($this->insertvon).', '. - $this->db_add_param($this->uid).','. - $this->db_add_param($this->dms_id, FHC_INTEGER).','. - $this->db_add_param($this->nachgereicht, FHC_BOOLEAN).','. - $this->db_add_param($this->anmerkung).','. - $this->db_add_param($this->titel_intern).','. - $this->db_add_param($this->anmerkung_intern).');'; - - } - else - { - //Bestehenden Datensatz aktualisieren - $qry= "UPDATE public.tbl_akte SET". - " person_id=".$this->db_add_param($this->person_id, FHC_INTEGER).",". - " dokument_kurzbz=".$this->db_add_param($this->dokument_kurzbz).",". - " inhalt=".$this->db_add_param($this->inhalt).",". - " mimetype=".$this->db_add_param($this->mimetype).",". - " erstelltam=".$this->db_add_param($this->erstelltam).",". - " gedruckt=".$this->db_add_param($this->gedruckt,FHC_BOOLEAN).",". - " titel=".$this->db_add_param($this->titel).",". - " bezeichnung=".$this->db_add_param($this->bezeichnung).",". - " updateamum=".$this->db_add_param($this->updateamum).",". - " updatevon=".$this->db_add_param($this->updatevon).",". - " uid=".$this->db_add_param($this->uid).",". - " dms_id=".$this->db_add_param($this->dms_id, FHC_INTEGER).",". - " nachgereicht=".$this->db_add_param($this->nachgereicht, FHC_BOOLEAN).",". - " anmerkung=".$this->db_add_param($this->anmerkung).",". - " titel_intern=".$this->db_add_param($this->titel_intern).",". - " anmerkung_intern=".$this->db_add_param($this->anmerkung_intern). - " WHERE akte_id=".$this->db_add_param($this->akte_id, FHC_INTEGER); - } - - if($this->db_query($qry)) - { - if($new) - { - $qry = "SELECT currval('public.tbl_akte_akte_id_seq') as id"; - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - $this->akte_id = $row->id; - $this->db_query('COMMIT;'); - return true; - } - else - { - $this->errormsg = 'Fehler beim Auslesen der Sequence'; - $this->db_query('ROLLBACK'); - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Auslesen der Sequence'; - $this->db_query('ROLLBACK'); - return false; - } - } - else - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern des Datensatzes'; - return false; - } - } - - /** - * Liefert die Akten einer Person - * - * @param $person_id - * @param $dokument_kurzbz - * @param $stg_kz -> wenn gesetzt werden nur Akten angezeigt die ZUSÄTZLICH zum Studiengang abgegeben worden sind ohne Zeugnis - * @param $prestudent_id -> gesetzt wenn auch stg_kz gesetzt ist um sicherzugehen, dass Akten, die er schon für seinen Studiengang abgegeben hat, - * nicht mehr angezeigt werden - * @return true wenn ok, sonst false - */ - public function getAkten($person_id, $dokument_kurzbz=null, $stg_kz = null, $prestudent_id= null) - { - $qry = "SELECT - akte_id, person_id, dokument_kurzbz, mimetype, erstelltam, gedruckt, titel_intern, anmerkung_intern, - titel, bezeichnung, updateamum, insertamum, updatevon, insertvon, uid, dms_id, anmerkung, nachgereicht, - CASE WHEN inhalt is not null THEN true ELSE false END as inhalt_vorhanden - FROM public.tbl_akte WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER); - if($dokument_kurzbz!=null) - $qry.=" AND dokument_kurzbz=".$this->db_add_param($dokument_kurzbz); - if($stg_kz != null && $prestudent_id != null) - $qry.=" AND dokument_kurzbz not in (SELECT dokument_kurzbz FROM public.tbl_dokument JOIN public.tbl_dokumentstudiengang USING(dokument_kurzbz) - WHERE studiengang_kz= ".$this->db_add_param($stg_kz).") AND dokument_kurzbz NOT IN ('Zeugnis') AND dokument_kurzbz NOT IN - (SELECT dokument_kurzbz FROM public.tbl_dokumentprestudent JOIN public.tbl_dokument USING(dokument_kurzbz) - WHERE prestudent_id=".$this->db_add_param($prestudent_id).")"; - - $qry.=" ORDER BY erstelltam"; - - $this->errormsg = $qry; - - if($this->db_query($qry)) - { - while($row = $this->db_fetch_object()) - { - $akten = new akte(); - - $akten->akte_id = $row->akte_id; - $akten->person_id = $row->person_id; - $akten->dokument_kurzbz = $row->dokument_kurzbz; - //$akte->inhalt = $row->inhalt; - $akten->inhalt_vorhanden = $this->db_parse_bool($row->inhalt_vorhanden); - $akten->mimetype = $row->mimetype; - $akten->erstelltam = $row->erstelltam; - $akten->gedruckt = $this->db_parse_bool($row->gedruckt); - $akten->titel = $row->titel; - $akten->bezeichnung = $row->bezeichnung; - $akten->updateamum = $row->updateamum; - $akten->updatevon = $row->updatevon; - $akten->insertamum = $row->insertamum; - $akten->insertvon = $row->insertvon; - $akten->uid = $row->uid; - $akten->dms_id = $row->dms_id; - $akten->nachgereicht = $this->db_parse_bool($row->nachgereicht); - $akten->anmerkung = $row->anmerkung; - $akten->titel_intern = $row->titel_intern; - $akten->anmerkung_intern = $row->anmerkung_intern; - - $this->result[] = $akten; - } - return true; - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - - /** - * Liefert die Akten die ein Outgoing sehen darf - * - * @param $person_id - * @return true wenn ok, sonst false - */ - public function getAktenOutgoing($person_id) - { - $qry = "SELECT - akte_id, person_id, dokument_kurzbz, mimetype, erstelltam, gedruckt, - titel, bezeichnung, updateamum, insertamum, updatevon, insertvon, uid, - dms_id,nachgereicht,anmerkung,titel_intern,anmerkung_intern - FROM public.tbl_akte WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER); - - $qry.=" AND dokument_kurzbz IN ('Lebenslf','Motivat','LearnAgr')"; - $qry.=" ORDER BY erstelltam"; - - if($this->db_query($qry)) - { - while($row = $this->db_fetch_object()) - { - $akten = new akte(); - - $akten->akte_id = $row->akte_id; - $akten->person_id = $row->person_id; - $akten->dokument_kurzbz = $row->dokument_kurzbz; - //$akte->inhalt = $row->inhalt; - $akten->mimetype = $row->mimetype; - $akten->erstelltam = $row->erstelltam; - $akten->gedruckt = $this->db_parse_bool($row->gedruckt); - $akten->titel = $row->titel; - $akten->bezeichnung = $row->bezeichnung; - $akten->updateamum = $row->updateamum; - $akten->updatevon = $row->updatevon; - $akten->insertamum = $row->insertamum; - $akten->insertvon = $row->insertvon; - $akten->uid = $row->uid; - $akten->dms_id = $row->dms_id; - $akten->nachgereicht = $this->db_parse_bool($row->nachgereicht); - $akten->anmerkung = $row->anmerkung; - $akten->titel_intern = $row->titel_intern; - $akten->anmerkung_intern = $row->anmerkung_intern; - - $this->result[] = $akten; - } - return true; - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - /** - * Liefert die Akten anhand der dms_id - * - * @param $person_id - * @return true wenn ok, sonst false - */ - public function getAktenDms($dms_id) - { - $qry = "SELECT - akte_id, person_id, dokument_kurzbz, mimetype, erstelltam, gedruckt, - titel, bezeichnung, updateamum, insertamum, updatevon, insertvon, uid, - dms_id,nachgereicht,anmerkung,titel_intern,anmerkung_intern - FROM public.tbl_akte WHERE dms_id=".$this->db_add_param($dms_id, FHC_INTEGER)." - ORDER BY erstelltam"; - - if($this->db_query($qry)) - { - while($row = $this->db_fetch_object()) - { - $akten = new akte(); - - $akten->akte_id = $row->akte_id; - $akten->person_id = $row->person_id; - $akten->dokument_kurzbz = $row->dokument_kurzbz; - //$akte->inhalt = $row->inhalt; - $akten->mimetype = $row->mimetype; - $akten->erstelltam = $row->erstelltam; - $akten->gedruckt = $this->db_parse_bool($row->gedruckt); - $akten->titel = $row->titel; - $akten->bezeichnung = $row->bezeichnung; - $akten->updateamum = $row->updateamum; - $akten->updatevon = $row->updatevon; - $akten->insertamum = $row->insertamum; - $akten->insertvon = $row->insertvon; - $akten->uid = $row->uid; - $akten->dms_id = $row->dms_id; - $akten->nachgereicht = $this->db_parse_bool($row->nachgereicht); - $akten->anmerkung = $row->anmerkung; - $akten->titel_intern = $row->titel_intern; - $akten->anmerkung_intern = $row->anmerkung_intern; - - $this->result[] = $akten; - } - return true; - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - -} -?> +, + * Andreas Oesterreicher , + * Rudolf Hangl and + * Andreas Moik . + */ +require_once(dirname(__FILE__).'/basis_db.class.php'); + +class akte extends basis_db +{ + public $new; + public $result = array(); + + //Tabellenspalten + public $akte_id; + public $person_id; + public $dokument_kurzbz; + public $inhalt; + public $mimetype; + public $erstelltam; + public $gedruckt; + public $titel; + public $bezeichnung; + public $updateamum; + public $updatevon; + public $insertamum; + public $insertvon; + public $uid; + public $ext_id; + public $dms_id; + public $nachgereicht; + public $anmerkung; + public $titel_intern; + public $anmerkung_intern; + + /** + * Konstruktor + * @param akte_id ID des zu ladenden Datensatzes + */ + public function __construct($akte_id=null) + { + parent::__construct(); + + if(!is_null($akte_id)) + $this->load($akte_id); + } + + /** + * Laedt einen Datensatz + * @param akte_id ID des zu ladenden Datensatzes + */ + public function load($akte_id) + { + //akte_id auf gueltigkeit pruefen + if(!is_numeric($akte_id) || $akte_id == '') + { + $this->errormsg = 'akte_id muss eine gueltige Zahl sein'; + return false; + } + + //laden des Datensatzes + $qry = "SELECT * FROM public.tbl_akte WHERE akte_id=".$this->db_add_param($akte_id, FHC_INTEGER); + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->akte_id = $row->akte_id; + $this->person_id = $row->person_id; + $this->dokument_kurzbz = $row->dokument_kurzbz; + $this->inhalt = $row->inhalt; + $this->mimetype = $row->mimetype; + $this->erstelltam = $row->erstelltam; + $this->gedruckt = $this->db_parse_bool($row->gedruckt); + $this->titel = $row->titel; + $this->bezeichnung = $row->bezeichnung; + $this->updateamum = $row->updateamum; + $this->updatevon = $row->updatevon; + $this->insertamum = $row->insertamum; + $this->insertvon = $row->insertvon; + $this->uid = $row->uid; + $this->dms_id = $row->dms_id; + $this->anmerkung = $row->anmerkung; + $this->nachgereicht = $this->db_parse_bool($row->nachgereicht); + $this->titel_intern = $row->titel_intern; + $this->anmerkung_intern = $row->anmerkung_intern; + return true; + } + else + { + $this->errormsg = 'Fehler bei der Datenbankabfrage'; + return false; + } + } + else + { + $this->errormsg = 'Fehler bei der Datenbankabfrage'; + return false; + } + } + + /** + * Loescht einen Datensatz + * @param akte_id ID des zu loeschenden Datensatzes + * @return true wenn ok, false im Fehlerfall + */ + public function delete($akte_id) + { + //akte_id auf gueltigkeit pruefen + if(!is_numeric($akte_id) || $akte_id == '') + { + $this->errormsg = 'akte_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "DELETE FROM public.tbl_akte WHERE akte_id=".$this->db_add_param($akte_id, FHC_INTEGER); + + if($this->db_query($qry)) + { + //Log schreiben + return true; + } + else + { + $this->errormsg = 'Fehler beim Löschen'; + return false; + } + } + + /** + * Prueft die Variablen vor dem Speichern + * + * @return true wenn ok, sonst false + */ + protected function validate() + { + if($this->person_id=='') + { + $this->errormsg = 'Person ID muss angegeben werden'; + return false; + } + if($this->dokument_kurzbz=='') + { + $this->errormsg = 'DokumentKurzbz muss angegeben werden'; + return false; + } + + 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 $akte_id aktualisiert + * @return true wenn ok, false im Fehlerfall + */ + public function save($new=null) + { + if(!$this->validate()) + return false; + + if($new==null) + $new = $this->new; + + if($new) + { + //Neuen Datensatz anlegen + $qry = "BEGIN;INSERT INTO public.tbl_akte (person_id, dokument_kurzbz, inhalt, mimetype, erstelltam, gedruckt, titel, + bezeichnung, updateamum, updatevon, insertamum, insertvon, uid, dms_id, nachgereicht, anmerkung, titel_intern, anmerkung_intern ) VALUES (". + $this->db_add_param($this->person_id, FHC_INTEGER).', '. + $this->db_add_param($this->dokument_kurzbz).', '. + $this->db_add_param($this->inhalt).', '. + $this->db_add_param($this->mimetype).', '. + $this->db_add_param($this->erstelltam).', '. + $this->db_add_param($this->gedruckt, FHC_BOOLEAN).', '. + $this->db_add_param($this->titel).', '. + $this->db_add_param($this->bezeichnung).', '. + $this->db_add_param($this->updateamum).', '. + $this->db_add_param($this->updatevon).', '. + $this->db_add_param($this->insertamum).', '. + $this->db_add_param($this->insertvon).', '. + $this->db_add_param($this->uid).','. + $this->db_add_param($this->dms_id, FHC_INTEGER).','. + $this->db_add_param($this->nachgereicht, FHC_BOOLEAN).','. + $this->db_add_param($this->anmerkung).','. + $this->db_add_param($this->titel_intern).','. + $this->db_add_param($this->anmerkung_intern).');'; + } + else + { + //Bestehenden Datensatz aktualisieren + $qry= "UPDATE public.tbl_akte SET". + " person_id=".$this->db_add_param($this->person_id, FHC_INTEGER).",". + " dokument_kurzbz=".$this->db_add_param($this->dokument_kurzbz).",". + " inhalt=".$this->db_add_param($this->inhalt).",". + " mimetype=".$this->db_add_param($this->mimetype).",". + " erstelltam=".$this->db_add_param($this->erstelltam).",". + " gedruckt=".$this->db_add_param($this->gedruckt,FHC_BOOLEAN).",". + " titel=".$this->db_add_param($this->titel).",". + " bezeichnung=".$this->db_add_param($this->bezeichnung).",". + " updateamum=".$this->db_add_param($this->updateamum).",". + " updatevon=".$this->db_add_param($this->updatevon).",". + " uid=".$this->db_add_param($this->uid).",". + " dms_id=".$this->db_add_param($this->dms_id, FHC_INTEGER).",". + " nachgereicht=".$this->db_add_param($this->nachgereicht, FHC_BOOLEAN).",". + " anmerkung=".$this->db_add_param($this->anmerkung).",". + " titel_intern=".$this->db_add_param($this->titel_intern).",". + " anmerkung_intern=".$this->db_add_param($this->anmerkung_intern). + " WHERE akte_id=".$this->db_add_param($this->akte_id, FHC_INTEGER); + } + + if($this->db_query($qry)) + { + if($new) + { + $qry = "SELECT currval('public.tbl_akte_akte_id_seq') as id"; + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->akte_id = $row->id; + $this->db_query('COMMIT;'); + return true; + } + else + { + $this->errormsg = 'Fehler beim Auslesen der Sequence'; + $this->db_query('ROLLBACK'); + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Auslesen der Sequence'; + $this->db_query('ROLLBACK'); + return false; + } + } + else + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern des Datensatzes'; + return false; + } + } + + /** + * Liefert die Akten einer Person + * + * @param $person_id + * @param $dokument_kurzbz + * @param $stg_kz -> wenn gesetzt werden nur Akten angezeigt die ZUSÄTZLICH zum Studiengang abgegeben worden sind ohne Zeugnis + * @param $prestudent_id -> gesetzt wenn auch stg_kz gesetzt ist um sicherzugehen, dass Akten, die er schon für seinen Studiengang abgegeben hat, + * nicht mehr angezeigt werden + * @return true wenn ok, sonst false + */ + public function getAkten($person_id, $dokument_kurzbz=null, $stg_kz = null, $prestudent_id= null) + { + $qry = "SELECT + akte_id, person_id, dokument_kurzbz, mimetype, erstelltam, gedruckt, titel_intern, anmerkung_intern, + titel, bezeichnung, updateamum, insertamum, updatevon, insertvon, uid, dms_id, anmerkung, nachgereicht, + CASE WHEN inhalt is not null THEN true ELSE false END as inhalt_vorhanden + FROM public.tbl_akte WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER); + if($dokument_kurzbz!=null) + $qry.=" AND dokument_kurzbz=".$this->db_add_param($dokument_kurzbz); + if($stg_kz != null && $prestudent_id != null) + $qry.=" AND dokument_kurzbz not in (SELECT dokument_kurzbz FROM public.tbl_dokument JOIN public.tbl_dokumentstudiengang USING(dokument_kurzbz) + WHERE studiengang_kz= ".$this->db_add_param($stg_kz).") AND dokument_kurzbz NOT IN ('Zeugnis') AND dokument_kurzbz NOT IN + (SELECT dokument_kurzbz FROM public.tbl_dokumentprestudent JOIN public.tbl_dokument USING(dokument_kurzbz) + WHERE prestudent_id=".$this->db_add_param($prestudent_id).")"; + + $qry.=" ORDER BY erstelltam"; + + $this->errormsg = $qry; + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $akten = new akte(); + + $akten->akte_id = $row->akte_id; + $akten->person_id = $row->person_id; + $akten->dokument_kurzbz = $row->dokument_kurzbz; + //$akte->inhalt = $row->inhalt; + $akten->inhalt_vorhanden = $this->db_parse_bool($row->inhalt_vorhanden); + $akten->mimetype = $row->mimetype; + $akten->erstelltam = $row->erstelltam; + $akten->gedruckt = $this->db_parse_bool($row->gedruckt); + $akten->titel = $row->titel; + $akten->bezeichnung = $row->bezeichnung; + $akten->updateamum = $row->updateamum; + $akten->updatevon = $row->updatevon; + $akten->insertamum = $row->insertamum; + $akten->insertvon = $row->insertvon; + $akten->uid = $row->uid; + $akten->dms_id = $row->dms_id; + $akten->nachgereicht = $this->db_parse_bool($row->nachgereicht); + $akten->anmerkung = $row->anmerkung; + $akten->titel_intern = $row->titel_intern; + $akten->anmerkung_intern = $row->anmerkung_intern; + + $this->result[] = $akten; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + + /** + * Liefert die Akten die ein Outgoing sehen darf + * + * @param $person_id + * @return true wenn ok, sonst false + */ + public function getAktenOutgoing($person_id) + { + $qry = "SELECT + akte_id, person_id, dokument_kurzbz, mimetype, erstelltam, gedruckt, + titel, bezeichnung, updateamum, insertamum, updatevon, insertvon, uid, + dms_id,nachgereicht,anmerkung,titel_intern,anmerkung_intern + FROM public.tbl_akte WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER); + + $qry.=" AND dokument_kurzbz IN ('Lebenslf','Motivat','LearnAgr')"; + $qry.=" ORDER BY erstelltam"; + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $akten = new akte(); + + $akten->akte_id = $row->akte_id; + $akten->person_id = $row->person_id; + $akten->dokument_kurzbz = $row->dokument_kurzbz; + //$akte->inhalt = $row->inhalt; + $akten->mimetype = $row->mimetype; + $akten->erstelltam = $row->erstelltam; + $akten->gedruckt = $this->db_parse_bool($row->gedruckt); + $akten->titel = $row->titel; + $akten->bezeichnung = $row->bezeichnung; + $akten->updateamum = $row->updateamum; + $akten->updatevon = $row->updatevon; + $akten->insertamum = $row->insertamum; + $akten->insertvon = $row->insertvon; + $akten->uid = $row->uid; + $akten->dms_id = $row->dms_id; + $akten->nachgereicht = $this->db_parse_bool($row->nachgereicht); + $akten->anmerkung = $row->anmerkung; + $akten->titel_intern = $row->titel_intern; + $akten->anmerkung_intern = $row->anmerkung_intern; + + $this->result[] = $akten; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Liefert die Akten anhand der dms_id + * + * @param $person_id + * @return true wenn ok, sonst false + */ + public function getAktenDms($dms_id) + { + $qry = "SELECT + akte_id, person_id, dokument_kurzbz, mimetype, erstelltam, gedruckt, + titel, bezeichnung, updateamum, insertamum, updatevon, insertvon, uid, + dms_id,nachgereicht,anmerkung,titel_intern,anmerkung_intern + FROM public.tbl_akte WHERE dms_id=".$this->db_add_param($dms_id, FHC_INTEGER)." + ORDER BY erstelltam"; + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $akten = new akte(); + + $akten->akte_id = $row->akte_id; + $akten->person_id = $row->person_id; + $akten->dokument_kurzbz = $row->dokument_kurzbz; + //$akte->inhalt = $row->inhalt; + $akten->mimetype = $row->mimetype; + $akten->erstelltam = $row->erstelltam; + $akten->gedruckt = $this->db_parse_bool($row->gedruckt); + $akten->titel = $row->titel; + $akten->bezeichnung = $row->bezeichnung; + $akten->updateamum = $row->updateamum; + $akten->updatevon = $row->updatevon; + $akten->insertamum = $row->insertamum; + $akten->insertvon = $row->insertvon; + $akten->uid = $row->uid; + $akten->dms_id = $row->dms_id; + $akten->nachgereicht = $this->db_parse_bool($row->nachgereicht); + $akten->anmerkung = $row->anmerkung; + $akten->titel_intern = $row->titel_intern; + $akten->anmerkung_intern = $row->anmerkung_intern; + + $this->result[] = $akten; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } +} +?> diff --git a/include/ampel.class.php b/include/ampel.class.php index 66676664f..964a5c418 100755 --- a/include/ampel.class.php +++ b/include/ampel.class.php @@ -1,530 +1,530 @@ - and - */ -/** - * Klasse Ampel - * - */ -require_once(dirname(__FILE__).'/basis_db.class.php'); -require_once(dirname(__FILE__).'/sprache.class.php'); - -class ampel extends basis_db -{ - public $new; - public $result = array(); - - //Tabellenspalten - public $ampel_id; // bigint - public $kurzbz; // varchar(64) - public $beschreibung = array(); // text[] - public $benutzer_select;// text - public $deadline; // date - public $vorlaufzeit; // smallint - public $verfallszeit; // smallint - public $email; // boolean - public $insertamum; // timestamp - public $insertvon; // varchar(32) - public $updateamum; // timestamp - public $updatevon; // varchar(32) - - public $ampel_benutzer_id; // bigint - public $uid; // varchar(32) - - /** - * Konstruktor - Laedt optional eine Ampel - * @param $amepl_id - */ - public function __construct($ampel_id=null) - { - parent::__construct(); - - if(!is_null($ampel_id)) - $this->load($ampel_id); - } - - /** - * Laedt eine Ampel mit der uebergebenen ID - * - * @param $ampel_id - * @return boolean - */ - public function load($ampel_id) - { - if(!is_numeric($ampel_id)) - { - $this->errormsg = 'Ampel ID ist ungueltig'; - return false; - } - - $sprache = new sprache(); - $beschreibung = $sprache->getSprachQuery('beschreibung'); - - $qry = "SELECT *,".$beschreibung." FROM public.tbl_ampel WHERE ampel_id=".$this->db_add_param($ampel_id, FHC_INTEGER); - - if($result = $this->db_query($qry)) - { - if($row = $this->db_fetch_object($result)) - { - $this->ampel_id = $row->ampel_id; - $this->kurzbz = $row->kurzbz; - $this->beschreibung = $sprache->parseSprachResult('beschreibung', $row); - $this->benutzer_select = $row->benutzer_select; - $this->deadline = $row->deadline; - $this->vorlaufzeit = $row->vorlaufzeit; - $this->verfallszeit = $row->verfallszeit; - $this->email = $row->email; - $this->insertamum = $row->insertamum; - $this->insertvon = $row->insertvon; - $this->updateamum = $row->updateamum; - $this->updatevon = $row->updatevon; - - return true; - } - else - { - $this->errormsg = 'Ampel mit dieser ID exisitert nicht'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Laden der Ampel'; - return false; - } - } - - /** - * Laedt alle vorhandenen Ampeln - * @param aktiv lade nur aktive Ampeln - */ - public function getAll($aktiv=false) - { - $sprache = new sprache(); - $beschreibung = $sprache->getSprachQuery('beschreibung'); - - $qry = "SELECT *,".$beschreibung." FROM public.tbl_ampel"; - if($aktiv) - { - $qry .= " WHERE (NOW()>(deadline-(vorlaufzeit || ' days')::interval)::date)"; - $qry .= " AND (NOW()<(deadline+(verfallszeit || ' days')::interval)::date)"; - } - $qry .= " ORDER BY deadline"; - - if($result = $this->db_query($qry)) - { - while($row = $this->db_fetch_object($result)) - { - $obj = new ampel(); - - $obj->ampel_id = $row->ampel_id; - $obj->kurzbz = $row->kurzbz; - $obj->beschreibung = $sprache->parseSprachResult('beschreibung', $row); - $obj->benutzer_select = $row->benutzer_select; - $obj->deadline = $row->deadline; - $obj->vorlaufzeit = $row->vorlaufzeit; - $obj->verfallszeit = $row->verfallszeit; - $obj->email = $this->db_parse_bool($row->email); - $obj->insertamum = $row->insertamum; - $obj->insertvon = $row->insertvon; - - $this->result[] = $obj; - } - return true; - } - else - { - $this->errormsg='Fehler beim Laden der Daten'; - return false; - } - } - - /** - * Prueft ob ein User eine Ampel schon bestaetigt hat - * - * @param $user - * @param $ampel_id - * @return boolean - */ - public function isBestaetigt($user, $ampel_id) - { - $qry = "SELECT 1 FROM public.tbl_ampel_benutzer_bestaetigt WHERE ampel_id=".$this->db_add_param($ampel_id, FHC_INTEGER)." AND uid=".$this->db_add_param($user); - - if($result = $this->db_query($qry)) - { - if($this->db_num_rows($result)>0) - return true; - else - return false; - } - else - { - $this->errormsg='Fehler beim Laden der Daten'; - return false; - } - } - - /** - * Prueft ob ein User zu einer Ampel zugeteilt ist - * @param $user - * @param $benutzer_select - */ - public function isZugeteilt($user, $benutzer_select) - { - $qry = "SELECT CASE WHEN ".$this->db_add_param($user)." IN (".$benutzer_select.") THEN true ELSE false END as zugeteilt"; - - if($result_zugeteilt = $this->db_query($qry)) - { - if($row_zugeteilt = $this->db_fetch_object($result_zugeteilt)) - { - if($row_zugeteilt->zugeteilt=='t') - return true; - else - return false; - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - /** - * Laedt alle aktuellen Ampeln eines Users - * @param $user - * @param $zukuenftige_anzeigen - * wenn true, werden alle zukuenftigen Ampeln geladen - * wenn false, werden nur die Ampeln geladen die innerhalb der vorlaufzeit liegen - * @param $bestaetigt - * wenn true, werden alle Ampeln geladen - * wenn false, werden nur die Ampeln geladen die noch nicht bestaetigt wurden - */ - public function loadUserAmpel($user, $zukuenftige_anzeigen=false, $bestaetigt=false) - { - $sprache = new sprache(); - $beschreibung = $sprache->getSprachQuery('beschreibung'); - - $qry = "SELECT *,".$beschreibung." FROM public.tbl_ampel WHERE deadline+verfallszeit>now()"; - - if(!$zukuenftige_anzeigen) - $qry.=" AND deadline-vorlaufzeitdb_add_param($user)." AND ampel_id=tbl_ampel.ampel_id)"; - } - - if($result = $this->db_query($qry)) - { - while($row = $this->db_fetch_object($result)) - { - if($this->isZugeteilt($user, $row->benutzer_select)) - { - $obj = new ampel(); - - $obj->ampel_id = $row->ampel_id; - $obj->kurzbz = $row->kurzbz; - $obj->beschreibung = $sprache->parseSprachResult('beschreibung', $row); - $obj->benutzer_select = $row->benutzer_select; - $obj->deadline = $row->deadline; - $obj->vorlaufzeit = $row->vorlaufzeit; - $obj->verfallszeit = $row->verfallszeit; - $obj->email = $row->email; - $obj->insertamum = $row->insertamum; - $obj->insertvon = $row->insertvon; - - $this->result[] = $obj; - } - } - return true; - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - /** - * Prueft die Daten vor dem Speichern - * @return boolean - */ - public function validate() - { - $benutzer_select = mb_strtolower($this->benutzer_select); - - if(mb_strstr($benutzer_select, 'update ') || mb_strstr($benutzer_select, 'insert ') || mb_strstr($benutzer_select, 'delete ')) - { - $this->errormsg = 'Der Benutzer Select darf nur Selects beinhalten'; - return false; - } - - if(!mb_strstr($benutzer_select,'select ')) - { - $this->errormsg = 'Der Benutzer Select muss einen Select-Befehl beinhalten'; - return false; - } - return true; - } - - /** - * Speichert eine Ampel - * @param $new - */ - public function save($new=null) - { - if(is_null($new)) - $new = $this->new; - - if(!$this->validate()) - return false; - - $sprache = new sprache(); - $sprache->loadIndexArray(); - - if($this->new) - { - $qry = "BEGIN;INSERT INTO public.tbl_ampel (kurzbz, "; - - foreach($this->beschreibung as $key=>$value) - { - $idx = sprache::$index_arr[$key]; - $qry.=" beschreibung[$idx],"; - } - - $qry.=" benutzer_select, deadline, - vorlaufzeit, verfallszeit, email, insertamum, insertvon , updateamum, updatevon) VALUES(". - $this->db_add_param($this->kurzbz).','; - reset($this->beschreibung); - foreach($this->beschreibung as $key=>$value) - $qry.=$this->db_add_param($value).','; - - $qry .= $this->db_add_param($this->benutzer_select).','. - $this->db_add_param($this->deadline).','. - $this->db_add_param($this->vorlaufzeit).','. - $this->db_add_param($this->verfallszeit).','. - $this->db_add_param($this->email, FHC_BOOLEAN).','. - $this->db_add_param($this->insertamum).','. - $this->db_add_param($this->insertvon).','. - $this->db_add_param($this->updateamum).','. - $this->db_add_param($this->updatevon).');'; - } - else - { - $qry = 'UPDATE public.tbl_ampel SET'. - ' kurzbz = '.$this->db_add_param($this->kurzbz).','; - reset($this->beschreibung); - foreach($this->beschreibung as $key=>$value) - { - $idx = sprache::$index_arr[$key]; - $qry.=' beschreibung['.$idx.'] = '.$this->db_add_param($value).','; - } - - $qry.= ' benutzer_select = '.$this->db_add_param($this->benutzer_select).','. - ' deadline = '.$this->db_add_param($this->deadline).','. - ' vorlaufzeit = '.$this->db_add_param($this->vorlaufzeit).','. - ' verfallszeit = '.$this->db_add_param($this->verfallszeit).','. - ' email = '.$this->db_add_param($this->email, FHC_BOOLEAN).','. - ' updateamum ='.$this->db_add_param($this->updateamum).','. - ' updatevon ='.$this->db_add_param($this->updatevon). - ' WHERE ampel_id='.$this->db_add_param($this->ampel_id, FHC_INTEGER).';'; - } - - if($this->db_query($qry)) - { - if($new) - { - $qry = "SELECT currval('public.seq_ampel_ampel_id') as id"; - if($result = $this->db_query($qry)) - { - if($row = $this->db_fetch_object($result)) - { - $this->ampel_id = $row->id; - $this->db_query('COMMIT;'); - return true; - } - else - { - $this->errormsg = 'Fehler beim Auslesen der Sequence'; - $this->db_query('ROLLBACK'); - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Auslesen der Sequence'; - $this->db_query('ROLLBACK'); - return false; - } - } - else - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern der Daten'; - return false; - } - } - - /** - * Loescht eine Ampel - - * @param $ampel_id - */ - public function delete($ampel_id) - { - if(!is_numeric($ampel_id)) - { - $this->errormsg='ID ist ungueltig'; - return false; - } - $qry = "DELETE FROM public.tbl_ampel WHERE ampel_id=".$this->db_add_param($ampel_id); - - if($this->db_query($qry)) - return true; - else - { - $this->errormsg = 'Fehler beim Loeschen der Ampel'; - return false; - } - } - - /** - * Bestaetigt die Ampel eines Users - * @param $user - * @param $ampel_id - * @return boolean - */ - public function bestaetigen($user, $ampel_id) - { - $qry = 'INSERT INTO public.tbl_ampel_benutzer_bestaetigt(ampel_id, uid, insertamum, insertvon) VALUES('. - $this->db_add_param($ampel_id, FHC_INTEGER).','. - $this->db_add_param($user).','. - 'now(),'. - $this->db_add_param($user).');'; - - if($this->db_query($qry)) - return true; - else - { - $this->errormsg = 'Fehler beim Speichern der Daten'; - return false; - } - } - - /** - * Laedt Ampeln und Mitarbeiter zu einer OE/Ampel - * @param $oe_arr - * @param $ampel_id - */ - public function loadAmpelMitarbeiter($oe_arr, $ampel_id) - { - $sprache = new sprache(); - $beschreibung = $sprache->getSprachQuery('beschreibung'); - - if(!is_numeric($ampel_id) && $ampel_id!='') - { - $this->errormsg = 'Ampel ID ist ungueltig'; - return false; - } - - // Ampeln holen - $qry = "SELECT *,".$beschreibung." FROM public.tbl_ampel"; - if($ampel_id!='') - $qry.=" WHERE ampel_id=".$this->db_add_param($ampel_id, FHC_INTEGER); - - if($result = $this->db_query($qry)) - { - while($row = $this->db_fetch_object($result)) - { - // Alle Mitarbeiter/Studenten dazu holen - $qry = "SELECT - distinct on (tbl_ampel_benutzer_bestaetigt.ampel_benutzer_bestaetigt_id, a.uid) *, - tbl_ampel_benutzer_bestaetigt.insertamum,tbl_ampel_benutzer_bestaetigt.insertvon - FROM - (".$row->benutzer_select.") a - JOIN campus.vw_benutzer USING(uid) - LEFT JOIN public.tbl_benutzerfunktion USING(uid) - LEFT JOIN public.tbl_ampel_benutzer_bestaetigt on(public.tbl_ampel_benutzer_bestaetigt.uid=a.uid AND ampel_id=".$this->db_add_param($row->ampel_id, FHC_INTEGER).") - WHERE - (tbl_ampel_benutzer_bestaetigt.ampel_id is null OR tbl_ampel_benutzer_bestaetigt.ampel_id=".$this->db_add_param($row->ampel_id).") - AND - ( - (funktion_kurzbz='oezuordnung' AND oe_kurzbz in(".$this->implode4SQL($oe_arr).")) - OR - (funktion_kurzbz is null - AND (SELECT oe_kurzbz FROM - public.tbl_studiengang JOIN public.tbl_student USING(studiengang_kz) - WHERE vw_benutzer.uid=tbl_student.student_uid) - in(".$this->implode4SQL($oe_arr).") - ) - ) - "; - - if($result_ma = $this->db_query($qry)) - { - while($row_ma = $this->db_fetch_object($result_ma)) - { - $obj = new ampel(); - - $obj->ampel_id = $row->ampel_id; - $obj->kurzbz = $row->kurzbz; - $obj->beschreibung = $sprache->parseSprachResult('beschreibung', $row); - $obj->benutzer_select = $row->benutzer_select; - $obj->deadline = $row->deadline; - $obj->vorlaufzeit = $row->vorlaufzeit; - $obj->verfallszeit = $row->verfallszeit; - $obj->email = $row->email; - $obj->insertamum = $row->insertamum; - $obj->insertvon = $row->insertvon; - - $obj->vorname = $row_ma->vorname; - $obj->nachname = $row_ma->nachname; - $obj->titelpre = $row_ma->titelpre; - $obj->titelpost = $row_ma->titelpost; - $obj->oe_kurzbz = $row_ma->oe_kurzbz; - - $obj->insertamum_best = $row_ma->insertamum; - $obj->insertvon_best = $row_ma->insertvon; - $obj->ampel_benutzer_bestaetigt_id = $row_ma->ampel_benutzer_bestaetigt_id; - - $this->result[] = $obj; - } - } - } - return true; - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - - } -} -?> \ No newline at end of file + and + */ +/** + * Klasse Ampel + * + */ +require_once(dirname(__FILE__).'/basis_db.class.php'); +require_once(dirname(__FILE__).'/sprache.class.php'); + +class ampel extends basis_db +{ + public $new; + public $result = array(); + + //Tabellenspalten + public $ampel_id; // bigint + public $kurzbz; // varchar(64) + public $beschreibung = array(); // text[] + public $benutzer_select;// text + public $deadline; // date + public $vorlaufzeit; // smallint + public $verfallszeit; // smallint + public $email; // boolean + public $insertamum; // timestamp + public $insertvon; // varchar(32) + public $updateamum; // timestamp + public $updatevon; // varchar(32) + + public $ampel_benutzer_id; // bigint + public $uid; // varchar(32) + + /** + * Konstruktor - Laedt optional eine Ampel + * @param $amepl_id + */ + public function __construct($ampel_id=null) + { + parent::__construct(); + + if(!is_null($ampel_id)) + $this->load($ampel_id); + } + + /** + * Laedt eine Ampel mit der uebergebenen ID + * + * @param $ampel_id + * @return boolean + */ + public function load($ampel_id) + { + if(!is_numeric($ampel_id)) + { + $this->errormsg = 'Ampel ID ist ungueltig'; + return false; + } + + $sprache = new sprache(); + $beschreibung = $sprache->getSprachQuery('beschreibung'); + + $qry = "SELECT *,".$beschreibung." FROM public.tbl_ampel WHERE ampel_id=".$this->db_add_param($ampel_id, FHC_INTEGER); + + if($result = $this->db_query($qry)) + { + if($row = $this->db_fetch_object($result)) + { + $this->ampel_id = $row->ampel_id; + $this->kurzbz = $row->kurzbz; + $this->beschreibung = $sprache->parseSprachResult('beschreibung', $row); + $this->benutzer_select = $row->benutzer_select; + $this->deadline = $row->deadline; + $this->vorlaufzeit = $row->vorlaufzeit; + $this->verfallszeit = $row->verfallszeit; + $this->email = $row->email; + $this->insertamum = $row->insertamum; + $this->insertvon = $row->insertvon; + $this->updateamum = $row->updateamum; + $this->updatevon = $row->updatevon; + + return true; + } + else + { + $this->errormsg = 'Ampel mit dieser ID exisitert nicht'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Ampel'; + return false; + } + } + + /** + * Laedt alle vorhandenen Ampeln + * @param aktiv lade nur aktive Ampeln + */ + public function getAll($aktiv=false) + { + $sprache = new sprache(); + $beschreibung = $sprache->getSprachQuery('beschreibung'); + + $qry = "SELECT *,".$beschreibung." FROM public.tbl_ampel"; + if($aktiv) + { + $qry .= " WHERE (NOW()>(deadline-(vorlaufzeit || ' days')::interval)::date)"; + $qry .= " AND (NOW()<(deadline+(verfallszeit || ' days')::interval)::date)"; + } + $qry .= " ORDER BY deadline"; + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $obj = new ampel(); + + $obj->ampel_id = $row->ampel_id; + $obj->kurzbz = $row->kurzbz; + $obj->beschreibung = $sprache->parseSprachResult('beschreibung', $row); + $obj->benutzer_select = $row->benutzer_select; + $obj->deadline = $row->deadline; + $obj->vorlaufzeit = $row->vorlaufzeit; + $obj->verfallszeit = $row->verfallszeit; + $obj->email = $this->db_parse_bool($row->email); + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg='Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Prueft ob ein User eine Ampel schon bestaetigt hat + * + * @param $user + * @param $ampel_id + * @return boolean + */ + public function isBestaetigt($user, $ampel_id) + { + $qry = "SELECT 1 FROM public.tbl_ampel_benutzer_bestaetigt WHERE ampel_id=".$this->db_add_param($ampel_id, FHC_INTEGER)." AND uid=".$this->db_add_param($user); + + if($result = $this->db_query($qry)) + { + if($this->db_num_rows($result)>0) + return true; + else + return false; + } + else + { + $this->errormsg='Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Prueft ob ein User zu einer Ampel zugeteilt ist + * @param $user + * @param $benutzer_select + */ + public function isZugeteilt($user, $benutzer_select) + { + $qry = "SELECT CASE WHEN ".$this->db_add_param($user)." IN (".$benutzer_select.") THEN true ELSE false END as zugeteilt"; + + if($result_zugeteilt = $this->db_query($qry)) + { + if($row_zugeteilt = $this->db_fetch_object($result_zugeteilt)) + { + if($row_zugeteilt->zugeteilt=='t') + return true; + else + return false; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Laedt alle aktuellen Ampeln eines Users + * @param $user + * @param $zukuenftige_anzeigen + * wenn true, werden alle zukuenftigen Ampeln geladen + * wenn false, werden nur die Ampeln geladen die innerhalb der vorlaufzeit liegen + * @param $bestaetigt + * wenn true, werden alle Ampeln geladen + * wenn false, werden nur die Ampeln geladen die noch nicht bestaetigt wurden + */ + public function loadUserAmpel($user, $zukuenftige_anzeigen=false, $bestaetigt=false) + { + $sprache = new sprache(); + $beschreibung = $sprache->getSprachQuery('beschreibung'); + + $qry = "SELECT *,".$beschreibung." FROM public.tbl_ampel WHERE deadline+verfallszeit>now()"; + + if(!$zukuenftige_anzeigen) + $qry.=" AND deadline-vorlaufzeitdb_add_param($user)." AND ampel_id=tbl_ampel.ampel_id)"; + } + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + if($this->isZugeteilt($user, $row->benutzer_select)) + { + $obj = new ampel(); + + $obj->ampel_id = $row->ampel_id; + $obj->kurzbz = $row->kurzbz; + $obj->beschreibung = $sprache->parseSprachResult('beschreibung', $row); + $obj->benutzer_select = $row->benutzer_select; + $obj->deadline = $row->deadline; + $obj->vorlaufzeit = $row->vorlaufzeit; + $obj->verfallszeit = $row->verfallszeit; + $obj->email = $row->email; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + + $this->result[] = $obj; + } + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Prueft die Daten vor dem Speichern + * @return boolean + */ + public function validate() + { + $benutzer_select = mb_strtolower($this->benutzer_select); + + if(mb_strstr($benutzer_select, 'update ') || mb_strstr($benutzer_select, 'insert ') || mb_strstr($benutzer_select, 'delete ')) + { + $this->errormsg = 'Der Benutzer Select darf nur Selects beinhalten'; + return false; + } + + if(!mb_strstr($benutzer_select,'select ')) + { + $this->errormsg = 'Der Benutzer Select muss einen Select-Befehl beinhalten'; + return false; + } + return true; + } + + /** + * Speichert eine Ampel + * @param $new + */ + public function save($new=null) + { + if(is_null($new)) + $new = $this->new; + + if(!$this->validate()) + return false; + + $sprache = new sprache(); + $sprache->loadIndexArray(); + + if($this->new) + { + $qry = "BEGIN;INSERT INTO public.tbl_ampel (kurzbz, "; + + foreach($this->beschreibung as $key=>$value) + { + $idx = sprache::$index_arr[$key]; + $qry.=" beschreibung[$idx],"; + } + + $qry.=" benutzer_select, deadline, + vorlaufzeit, verfallszeit, email, insertamum, insertvon , updateamum, updatevon) VALUES(". + $this->db_add_param($this->kurzbz).','; + reset($this->beschreibung); + foreach($this->beschreibung as $key=>$value) + $qry.=$this->db_add_param($value).','; + + $qry .= $this->db_add_param($this->benutzer_select).','. + $this->db_add_param($this->deadline).','. + $this->db_add_param($this->vorlaufzeit).','. + $this->db_add_param($this->verfallszeit).','. + $this->db_add_param($this->email, FHC_BOOLEAN).','. + $this->db_add_param($this->insertamum).','. + $this->db_add_param($this->insertvon).','. + $this->db_add_param($this->updateamum).','. + $this->db_add_param($this->updatevon).');'; + } + else + { + $qry = 'UPDATE public.tbl_ampel SET'. + ' kurzbz = '.$this->db_add_param($this->kurzbz).','; + reset($this->beschreibung); + foreach($this->beschreibung as $key=>$value) + { + $idx = sprache::$index_arr[$key]; + $qry.=' beschreibung['.$idx.'] = '.$this->db_add_param($value).','; + } + + $qry.= ' benutzer_select = '.$this->db_add_param($this->benutzer_select).','. + ' deadline = '.$this->db_add_param($this->deadline).','. + ' vorlaufzeit = '.$this->db_add_param($this->vorlaufzeit).','. + ' verfallszeit = '.$this->db_add_param($this->verfallszeit).','. + ' email = '.$this->db_add_param($this->email, FHC_BOOLEAN).','. + ' updateamum ='.$this->db_add_param($this->updateamum).','. + ' updatevon ='.$this->db_add_param($this->updatevon). + ' WHERE ampel_id='.$this->db_add_param($this->ampel_id, FHC_INTEGER).';'; + } + + if($this->db_query($qry)) + { + if($new) + { + $qry = "SELECT currval('public.seq_ampel_ampel_id') as id"; + if($result = $this->db_query($qry)) + { + if($row = $this->db_fetch_object($result)) + { + $this->ampel_id = $row->id; + $this->db_query('COMMIT;'); + return true; + } + else + { + $this->errormsg = 'Fehler beim Auslesen der Sequence'; + $this->db_query('ROLLBACK'); + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Auslesen der Sequence'; + $this->db_query('ROLLBACK'); + return false; + } + } + else + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern der Daten'; + return false; + } + } + + /** + * Loescht eine Ampel + + * @param $ampel_id + */ + public function delete($ampel_id) + { + if(!is_numeric($ampel_id)) + { + $this->errormsg='ID ist ungueltig'; + return false; + } + $qry = "DELETE FROM public.tbl_ampel WHERE ampel_id=".$this->db_add_param($ampel_id); + + if($this->db_query($qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Loeschen der Ampel'; + return false; + } + } + + /** + * Bestaetigt die Ampel eines Users + * @param $user + * @param $ampel_id + * @return boolean + */ + public function bestaetigen($user, $ampel_id) + { + $qry = 'INSERT INTO public.tbl_ampel_benutzer_bestaetigt(ampel_id, uid, insertamum, insertvon) VALUES('. + $this->db_add_param($ampel_id, FHC_INTEGER).','. + $this->db_add_param($user).','. + 'now(),'. + $this->db_add_param($user).');'; + + if($this->db_query($qry)) + return true; + else + { + $this->errormsg = 'Fehler beim Speichern der Daten'; + return false; + } + } + + /** + * Laedt Ampeln und Mitarbeiter zu einer OE/Ampel + * @param $oe_arr + * @param $ampel_id + */ + public function loadAmpelMitarbeiter($oe_arr, $ampel_id) + { + $sprache = new sprache(); + $beschreibung = $sprache->getSprachQuery('beschreibung'); + + if(!is_numeric($ampel_id) && $ampel_id!='') + { + $this->errormsg = 'Ampel ID ist ungueltig'; + return false; + } + + // Ampeln holen + $qry = "SELECT *,".$beschreibung." FROM public.tbl_ampel"; + if($ampel_id!='') + $qry.=" WHERE ampel_id=".$this->db_add_param($ampel_id, FHC_INTEGER); + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + // Alle Mitarbeiter/Studenten dazu holen + $qry = "SELECT + distinct on (tbl_ampel_benutzer_bestaetigt.ampel_benutzer_bestaetigt_id, a.uid) *, + tbl_ampel_benutzer_bestaetigt.insertamum,tbl_ampel_benutzer_bestaetigt.insertvon + FROM + (".$row->benutzer_select.") a + JOIN campus.vw_benutzer USING(uid) + LEFT JOIN public.tbl_benutzerfunktion USING(uid) + LEFT JOIN public.tbl_ampel_benutzer_bestaetigt on(public.tbl_ampel_benutzer_bestaetigt.uid=a.uid AND ampel_id=".$this->db_add_param($row->ampel_id, FHC_INTEGER).") + WHERE + (tbl_ampel_benutzer_bestaetigt.ampel_id is null OR tbl_ampel_benutzer_bestaetigt.ampel_id=".$this->db_add_param($row->ampel_id).") + AND + ( + (funktion_kurzbz='oezuordnung' AND oe_kurzbz in(".$this->implode4SQL($oe_arr).")) + OR + (funktion_kurzbz is null + AND (SELECT oe_kurzbz FROM + public.tbl_studiengang JOIN public.tbl_student USING(studiengang_kz) + WHERE vw_benutzer.uid=tbl_student.student_uid) + in(".$this->implode4SQL($oe_arr).") + ) + ) + "; + + if($result_ma = $this->db_query($qry)) + { + while($row_ma = $this->db_fetch_object($result_ma)) + { + $obj = new ampel(); + + $obj->ampel_id = $row->ampel_id; + $obj->kurzbz = $row->kurzbz; + $obj->beschreibung = $sprache->parseSprachResult('beschreibung', $row); + $obj->benutzer_select = $row->benutzer_select; + $obj->deadline = $row->deadline; + $obj->vorlaufzeit = $row->vorlaufzeit; + $obj->verfallszeit = $row->verfallszeit; + $obj->email = $row->email; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + + $obj->vorname = $row_ma->vorname; + $obj->nachname = $row_ma->nachname; + $obj->titelpre = $row_ma->titelpre; + $obj->titelpost = $row_ma->titelpost; + $obj->oe_kurzbz = $row_ma->oe_kurzbz; + + $obj->insertamum_best = $row_ma->insertamum; + $obj->insertvon_best = $row_ma->insertvon; + $obj->ampel_benutzer_bestaetigt_id = $row_ma->ampel_benutzer_bestaetigt_id; + + $this->result[] = $obj; + } + } + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + + } +} +?> diff --git a/include/anrechnung.class.php b/include/anrechnung.class.php index 8a6449890..1e4f6db1e 100644 --- a/include/anrechnung.class.php +++ b/include/anrechnung.class.php @@ -16,282 +16,338 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. * - * Authors: Nikolaus Krondraf + * Authors: Nikolaus Krondraf and + * Andreas Moik . */ require_once(dirname(__FILE__) . '/basis_db.class.php'); require_once(dirname(__FILE__) . '/datum.class.php'); require_once(dirname(__FILE__) . '/lehrveranstaltung.class.php'); -class anrechnung extends basis_db { +class anrechnung extends basis_db +{ - public $errormsg; - public $new; - public $result; - // Tabellenspalten - public $anrechnung_id; // integer - public $prestudent_id; // integer - public $lehrveranstaltung_id; // integer - public $begruendung_id; // integer - public $lehrveranstaltung_id_kompatibel; // integer - public $genehmigt_von; // varchar(32) - public $insertamum; // timestamp - public $insertvon; // varchar(32) - public $updateamum; // timestamp - public $updatevon; // varchar(32) - public $begruendungen = array(); + public $errormsg; + public $new; + public $result; + // Tabellenspalten + public $anrechnung_id; // integer + public $prestudent_id; // integer + public $lehrveranstaltung_id; // integer + public $begruendung_id; // integer + public $lehrveranstaltung_id_kompatibel; // integer + public $genehmigt_von; // varchar(32) + public $insertamum; // timestamp + public $insertvon; // varchar(32) + public $updateamum; // timestamp + public $updatevon; // varchar(32) + public $begruendungen = array(); - /** - * Konstruktor - Laedt optional eine Anrechnung - * @param $anrechnung_id - */ - public function __construct($anrechnung_id = null) { - parent::__construct(); - if ($anrechnung_id != null) - $this->load($anrechnung_id); - } - - public function validate() { - if (!is_numeric($this->prestudent_id)) { - $this->errormsg = "Prestudent_id ist ungueltig"; - return false; + /** + * Konstruktor - Laedt optional eine Anrechnung + * @param $anrechnung_id + */ + public function __construct($anrechnung_id = null) + { + parent::__construct(); + if ($anrechnung_id != null) + $this->load($anrechnung_id); } - if (!is_numeric($this->lehrveranstaltung_id)) { - $this->errormsg = "Wählen Sie eine Lehrveranstaltung aus"; - return false; + public function validate() + { + if (!is_numeric($this->prestudent_id)) + { + $this->errormsg = "Prestudent_id ist ungueltig"; + return false; + } + + if (!is_numeric($this->lehrveranstaltung_id)) + { + $this->errormsg = "Wählen Sie eine Lehrveranstaltung aus"; + return false; + } + + if (!is_numeric($this->begruendung_id)) + { + $this->errormsg = "Wählen Sie eine Begründung aus"; + return false; + } + + if ($this->begruendung_id == "2" && !is_numeric($this->lehrveranstaltung_id_kompatibel)) + { + $this->errormsg = "Wählen Sie eine kompatible Lehrveranstaltung aus"; + return false; + } + + if (empty($this->genehmigt_von)) + { + $this->errormsg = "Wählen Sie die Person aus, die die Anrechnung genehmigt hat"; + return false; + } + + return true; } - if (!is_numeric($this->begruendung_id)) { - $this->errormsg = "Wählen Sie eine Begründung aus"; - return false; + /** + * Lädt eine Anrechnung + * @param $anrechnung_id ID der Anrechnung + * @return true wenn ok, false im Fehlerfall + */ + public function getAnrechnung($anrechnung_id) + { + $qry = "SELECT anrechnung_id, prestudent_id, lehrveranstaltung_id, begruendung_id, bezeichnung AS begruendung, " + . "lehrveranstaltung_id_kompatibel, genehmigt_von, insertamum, insertvon, updateamum, updatevon " + . "FROM lehre.tbl_anrechnung " + . "JOIN lehre.tbl_anrechnung_begruendung USING (begruendung_id) " + . "WHERE anrechnung_id = " . $this->db_add_param($anrechnung_id); + + if ($result = $this->db_query($qry)) + { + if ($row = $this->db_fetch_object($result)) + { + $datum = new datum(); + $lehrveranstaltung = new lehrveranstaltung($row->lehrveranstaltung_id); + $row->insertamum = $datum->convertISODate($row->insertamum); + $row->lehrveranstaltung_bez = $lehrveranstaltung->bezeichnung; + + if ($row->lehrveranstaltung_id_kompatibel != '') + { + $lehrveranstaltung = new lehrveranstaltung($row->lehrveranstaltung_id_kompatibel); + $row->lehrveranstaltung_bez_kompatibel = $lehrveranstaltung->bezeichnung; + } + else + $row->lehrveranstaltung_bez_kompatibel = null; + + $this->result[] = $row; + } + else + { + $this->errormsg = 'Es wurde kein Datensatz mit dieser ID gefunden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } +} + + /** + * Speichert eine Anrechnung + * @return true wenn ok, false im Fehlerfall + */ + public function save() + { + if (!$this->validate()) + return false; + + if ($this->new == "1") + { + // Neuen Datensatz anlegen + $qry = 'INSERT INTO lehre.tbl_anrechnung (prestudent_id, lehrveranstaltung_id, begruendung_id, lehrveranstaltung_id_kompatibel, genehmigt_von, insertamum, insertvon, updateamum, updatevon) VALUES (' . + $this->db_add_param($this->prestudent_id) . ', ' . + $this->db_add_param($this->lehrveranstaltung_id) . ', ' . + $this->db_add_param($this->begruendung_id) . ', ' . + $this->db_add_param($this->lehrveranstaltung_id_kompatibel) . ', ' . + $this->db_add_param($this->genehmigt_von) . ', ' . + 'NOW(),' . + $this->db_add_param($this->insertvon) . ', ' . + 'NOW(),' . + $this->db_add_param($this->updatevon) . ') RETURNING anrechnung_id;'; + } + else + { + // Datensatz aktualisieren + $qry = 'UPDATE lehre.tbl_anrechnung SET ' + . 'lehrveranstaltung_id = ' . $this->db_add_param($this->lehrveranstaltung_id) . ', ' + . 'begruendung_id = ' . $this->db_add_param($this->begruendung_id) . ', ' + . 'lehrveranstaltung_id_kompatibel = ' . $this->db_add_param($this->lehrveranstaltung_id_kompatibel) . ', ' + . 'genehmigt_von = ' . $this->db_add_param($this->genehmigt_von) . ', ' + . 'updateamum = NOW(), ' + . 'updatevon = ' . $this->db_add_param($this->updatevon) . ' ' + . 'WHERE anrechnung_id = ' . $this->db_add_param($this->anrechnung_id); + } + + if ($this->db_query($qry)) + { + $this->anrechnung_id = $this->db_fetch_object()->anrechnung_id; + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern der Anrechnung: ' . $this->db_last_error(); + return false; + } } - if ($this->begruendung_id == "2" && !is_numeric($this->lehrveranstaltung_id_kompatibel)) { - $this->errormsg = "Wählen Sie eine kompatible Lehrveranstaltung aus"; - return false; + /** + * Gibt alle Anrechnungen eines Prestudenten zurück + * @param $prestudent_id + * @return true wenn ok, false im Fehlerfall + */ + public function getAnrechnungPrestudent($prestudent_id) + { + $qry = "SELECT anrechnung_id, prestudent_id, lehrveranstaltung_id, begruendung_id, bezeichnung AS begruendung, " + . "lehrveranstaltung_id_kompatibel, genehmigt_von , insertamum, insertvon, updateamum, updatevon " + . "FROM lehre.tbl_anrechnung " + . "JOIN lehre.tbl_anrechnung_begruendung USING (begruendung_id) " + . "WHERE prestudent_id = " . $this->db_add_param($prestudent_id); + + if ($this->db_query($qry)) + { + $datum = new datum(); + + while ($row = $this->db_fetch_object()) + { + $row->insertamum = $datum->convertISODate($row->insertamum); + $lehrveranstaltung = new lehrveranstaltung($row->lehrveranstaltung_id); + $row->lehrveranstaltung_bez = $lehrveranstaltung->bezeichnung; + + if ($row->lehrveranstaltung_id_kompatibel != '') + { + $lehrveranstaltung = new lehrveranstaltung($row->lehrveranstaltung_id_kompatibel); + $row->lehrveranstaltung_bez_kompatibel = $lehrveranstaltung->bezeichnung; + } + else + $row->lehrveranstaltung_bez_kompatibel = null; + + $this->result[] = $row; + } + + return true; + } + else + { + $this->errormsg = 'Datensatz konnte nicht geladen werden'; + return false; + } } - if (empty($this->genehmigt_von)) { - $this->errormsg = "Wählen Sie die Person aus, die die Anrechnung genehmigt hat"; - return false; + /** + * Loescht eine Anrechnung + * @param $anrechnung_id + * @return true wenn ok, false im Fehlerfall + */ + public function delete($anrechnung_id) + { + $qry = "DELETE FROM lehre.tbl_anrechnung WHERE anrechnung_id = " . $this->db_add_param($anrechnung_id); + + if ($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Datensatz konnte nicht geloescht werden'; + return false; + } } - return true; - } - - /** - * Lädt eine Anrechnung - * @param $anrechnung_id ID der Anrechnung - * @return true wenn ok, false im Fehlerfall - */ - public function getAnrechnung($anrechnung_id) { - $qry = "SELECT anrechnung_id, prestudent_id, lehrveranstaltung_id, begruendung_id, bezeichnung AS begruendung, " - . "lehrveranstaltung_id_kompatibel, genehmigt_von, insertamum, insertvon, updateamum, updatevon " - . "FROM lehre.tbl_anrechnung " - . "JOIN lehre.tbl_anrechnung_begruendung USING (begruendung_id) " - . "WHERE anrechnung_id = " . $this->db_add_param($anrechnung_id); - - if ($result = $this->db_query($qry)) { - if ($row = $this->db_fetch_object($result)) { - $datum = new datum(); - $lehrveranstaltung = new lehrveranstaltung($row->lehrveranstaltung_id); - $row->insertamum = $datum->convertISODate($row->insertamum); - $row->lehrveranstaltung_bez = $lehrveranstaltung->bezeichnung; - if ($row->lehrveranstaltung_id_kompatibel != '') { - $lehrveranstaltung = new lehrveranstaltung($row->lehrveranstaltung_id_kompatibel); - $row->lehrveranstaltung_bez_kompatibel = $lehrveranstaltung->bezeichnung; - } else - $row->lehrveranstaltung_bez_kompatibel = null; - - $this->result[] = $row; - } - else { - $this->errormsg = 'Es wurde kein Datensatz mit dieser ID gefunden'; - return false; - } - } else { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - /** - * Speichert eine Anrechnung - * @return true wenn ok, false im Fehlerfall - */ - public function save() { - if (!$this->validate()) - return false; - - if ($this->new == "1") { - // Neuen Datensatz anlegen - $qry = 'INSERT INTO lehre.tbl_anrechnung (prestudent_id, lehrveranstaltung_id, begruendung_id, lehrveranstaltung_id_kompatibel, genehmigt_von, insertamum, insertvon, updateamum, updatevon) VALUES (' . - $this->db_add_param($this->prestudent_id) . ', ' . - $this->db_add_param($this->lehrveranstaltung_id) . ', ' . - $this->db_add_param($this->begruendung_id) . ', ' . - $this->db_add_param($this->lehrveranstaltung_id_kompatibel) . ', ' . - $this->db_add_param($this->genehmigt_von) . ', ' . - 'NOW(),' . - $this->db_add_param($this->insertvon) . ', ' . - 'NOW(),' . - $this->db_add_param($this->updatevon) . ') RETURNING anrechnung_id;'; - } else { - // Datensatz aktualisieren - $qry = 'UPDATE lehre.tbl_anrechnung SET ' - . 'lehrveranstaltung_id = ' . $this->db_add_param($this->lehrveranstaltung_id) . ', ' - . 'begruendung_id = ' . $this->db_add_param($this->begruendung_id) . ', ' - . 'lehrveranstaltung_id_kompatibel = ' . $this->db_add_param($this->lehrveranstaltung_id_kompatibel) . ', ' - . 'genehmigt_von = ' . $this->db_add_param($this->genehmigt_von) . ', ' - . 'updateamum = NOW(), ' - . 'updatevon = ' . $this->db_add_param($this->updatevon) . ' ' - . 'WHERE anrechnung_id = ' . $this->db_add_param($this->anrechnung_id); - } - - if ($this->db_query($qry)) { - $this->anrechnung_id = $this->db_fetch_object()->anrechnung_id; - return true; - } else { - $this->errormsg = 'Fehler beim Speichern der Anrechnung: ' . $this->db_last_error(); - return false; - } - } - - /** - * Gibt alle Anrechnungen eines Prestudenten zurück - * @param $prestudent_id - * @return true wenn ok, false im Fehlerfall - */ - public function getAnrechnungPrestudent($prestudent_id) { - $qry = "SELECT anrechnung_id, prestudent_id, lehrveranstaltung_id, begruendung_id, bezeichnung AS begruendung, " - . "lehrveranstaltung_id_kompatibel, genehmigt_von , insertamum, insertvon, updateamum, updatevon " - . "FROM lehre.tbl_anrechnung " - . "JOIN lehre.tbl_anrechnung_begruendung USING (begruendung_id) " - . "WHERE prestudent_id = " . $this->db_add_param($prestudent_id); - - if ($this->db_query($qry)) { - $datum = new datum(); - - while ($row = $this->db_fetch_object()) { - $row->insertamum = $datum->convertISODate($row->insertamum); - $lehrveranstaltung = new lehrveranstaltung($row->lehrveranstaltung_id); - $row->lehrveranstaltung_bez = $lehrveranstaltung->bezeichnung; - if ($row->lehrveranstaltung_id_kompatibel != '') { - $lehrveranstaltung = new lehrveranstaltung($row->lehrveranstaltung_id_kompatibel); - $row->lehrveranstaltung_bez_kompatibel = $lehrveranstaltung->bezeichnung; - } else - $row->lehrveranstaltung_bez_kompatibel = null; - - $this->result[] = $row; - } - - return true; - } - else { - $this->errormsg = 'Datensatz konnte nicht geladen werden'; - return false; - } - } - - /** - * Loescht eine Anrechnung - * @param $anrechnung_id - * @return true wenn ok, false im Fehlerfall - */ - public function delete($anrechnung_id) { - $qry = "DELETE FROM lehre.tbl_anrechnung WHERE anrechnung_id = " . $this->db_add_param($anrechnung_id); - - if ($this->db_query($qry)) { - return true; - } else { - $this->errormsg = 'Datensatz konnte nicht geloescht werden'; - return false; - } - } - - /** - * Gibt die Anzahl der Notizen für eine Anrechnung zurück - * @param $anrechung_id - * @return Anzahl der Notizen, false im Fehlerfall - */ - public function getAnzahlNotizen($anrechung_id) { - $qry = "SELECT COUNT(*) AS anzahl " + /** + * Gibt die Anzahl der Notizen für eine Anrechnung zurück + * @param $anrechung_id + * @return Anzahl der Notizen, false im Fehlerfall + */ + public function getAnzahlNotizen($anrechung_id) + { + $qry = "SELECT COUNT(*) AS anzahl " . "FROM public.tbl_notizzuordnung " . "WHERE anrechnung_id = " . $this->db_add_param($anrechung_id); - if ($result = $this->db_query($qry)) { - if ($row = $this->db_fetch_object($result)) { - return $row->anzahl; - } else { - $this->errormsg = 'Daten konnten nicht geladen werden'; - return false; - } - } else { - $this->errormsg = 'Daten konnten nicht geladen werden'; - return false; + if ($result = $this->db_query($qry)) + { + if ($row = $this->db_fetch_object($result)) + { + return $row->anzahl; + } + else + { + $this->errormsg = 'Daten konnten nicht geladen werden'; + return false; + } + } + else + { + $this->errormsg = 'Daten konnten nicht geladen werden'; + return false; + } } - } - /** - * Gibt alle möglichen Begründungen zurück - * @return array Array der Begründungen - */ - public function getAllBegruendung() { - $qry = 'SELECT * FROM lehre.tbl_anrechnung_begruendung'; + /** + * Gibt alle möglichen Begründungen zurück + * @return array Array der Begründungen + */ + public function getAllBegruendung() + { + $qry = 'SELECT * FROM lehre.tbl_anrechnung_begruendung'; - if ($this->db_query($qry)) { - while ($row = $this->db_fetch_object()) { - $stdobj = new stdClass(); - $stdobj->begruendung_id = $row->begruendung_id; - $stdobj->bezeichnung = $row->bezeichnung; - array_push($this->begruendungen, $stdobj); - } - return true; - } else { - $this->errormsg = 'Daten konnten nicht geladen werden'; - return false; + if ($this->db_query($qry)) + { + while ($row = $this->db_fetch_object()) + { + $stdobj = new stdClass(); + $stdobj->begruendung_id = $row->begruendung_id; + $stdobj->bezeichnung = $row->bezeichnung; + array_push($this->begruendungen, $stdobj); + } + return true; + } + else + { + $this->errormsg = 'Daten konnten nicht geladen werden'; + return false; + } } - } - /** - * Lädt eine Anrechnung - * @param $anrechnung_id ID der Anrechnung - * @return true wenn ok, false im Fehlerfall - */ - public function load($anrechnung_id) { - $qry = "SELECT anrechnung_id, prestudent_id, lehrveranstaltung_id, begruendung_id, bezeichnung AS begruendung, " + /** + * Lädt eine Anrechnung + * @param $anrechnung_id ID der Anrechnung + * @return true wenn ok, false im Fehlerfall + */ + public function load($anrechnung_id) + { + $qry = "SELECT anrechnung_id, prestudent_id, lehrveranstaltung_id, begruendung_id, bezeichnung AS begruendung, " . "lehrveranstaltung_id_kompatibel, genehmigt_von, insertamum, insertvon, updateamum, updatevon " . "FROM lehre.tbl_anrechnung " . "JOIN lehre.tbl_anrechnung_begruendung USING (begruendung_id) " . "WHERE anrechnung_id = " . $this->db_add_param($anrechnung_id); - if ($result = $this->db_query($qry)) { - if ($row = $this->db_fetch_object($result)) { - $this->anrechnung_id = $row->anrechnung_id; - $this->prestudent_id = $row->prestudent_id; - $this->lehrveranstaltung_id = $row->lehrveranstaltung_id; - $this->lehrveranstaltung_id_kompatibel = $row->lehrveranstaltung_id_kompatibel; - $this->begruendung_id = $row->begruendung_id; - $this->begruendung = $row->begruendung; - $this->genehmigt_von = $row->genehmigt_von; - - $datum = new datum(); - $lehrveranstaltung = new lehrveranstaltung($row->lehrveranstaltung_id); - $this->insertamum = $datum->convertISODate($row->insertamum); - $this->lehrveranstaltung_bez = $lehrveranstaltung->bezeichnung; - if ($row->lehrveranstaltung_id_kompatibel != '') { - $lehrveranstaltung = new lehrveranstaltung($row->lehrveranstaltung_id_kompatibel); - $this->lehrveranstaltung_bez_kompatibel = $lehrveranstaltung->bezeichnung; - } else - $this->lehrveranstaltung_bez_kompatibel = null; - } - else { - $this->errormsg = 'Es wurde kein Datensatz mit dieser ID gefunden'; - return false; - } - } else { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; + if ($result = $this->db_query($qry)) + { + if ($row = $this->db_fetch_object($result)) + { + $this->anrechnung_id = $row->anrechnung_id; + $this->prestudent_id = $row->prestudent_id; + $this->lehrveranstaltung_id = $row->lehrveranstaltung_id; + $this->lehrveranstaltung_id_kompatibel = $row->lehrveranstaltung_id_kompatibel; + $this->begruendung_id = $row->begruendung_id; + $this->begruendung = $row->begruendung; + $this->genehmigt_von = $row->genehmigt_von; + + $datum = new datum(); + $lehrveranstaltung = new lehrveranstaltung($row->lehrveranstaltung_id); + $this->insertamum = $datum->convertISODate($row->insertamum); + $this->lehrveranstaltung_bez = $lehrveranstaltung->bezeichnung; + + if ($row->lehrveranstaltung_id_kompatibel != '') + { + $lehrveranstaltung = new lehrveranstaltung($row->lehrveranstaltung_id_kompatibel); + $this->lehrveranstaltung_bez_kompatibel = $lehrveranstaltung->bezeichnung; + } + else + $this->lehrveranstaltung_bez_kompatibel = null; + } + else + { + $this->errormsg = 'Es wurde kein Datensatz mit dieser ID gefunden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } } - } - }