From 8bba44a7bb0f33c7ba305edc9b52580a3f47602e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Mon, 21 Oct 2013 09:36:46 +0000 Subject: [PATCH] Fehler beim Escapen von Integern behoben, Anpassung der Studienordnung-Klassen --- include/basis_db.class.php | 1 + include/lehrveranstaltung.class.php | 423 ++++++++++++++++++++-------- include/pgsql.class.php | 27 +- include/studienordnung.class.php | 205 +++++++++----- include/studienplan.class.php | 397 ++++++++++++++++++++++++++ 5 files changed, 865 insertions(+), 188 deletions(-) create mode 100644 include/studienplan.class.php diff --git a/include/basis_db.class.php b/include/basis_db.class.php index a3f3cbb26..f5882432b 100644 --- a/include/basis_db.class.php +++ b/include/basis_db.class.php @@ -61,6 +61,7 @@ abstract class db extends basis abstract function db_qoute($var); abstract function db_add_param($var, $type=FHC_STRING, $nullable=true); abstract function db_parse_bool($var); + abstract function db_implode4SQL($var); /** diff --git a/include/lehrveranstaltung.class.php b/include/lehrveranstaltung.class.php index a135b08ea..b8c331835 100644 --- a/include/lehrveranstaltung.class.php +++ b/include/lehrveranstaltung.class.php @@ -24,8 +24,6 @@ require_once(dirname(__FILE__).'/functions.inc.php'); class lehrveranstaltung extends basis_db { - public $conn; // resource DB-Handle - public $errormsg; // string public $new; // boolean public $lehrveranstaltungen = array(); // lehrveranstaltung Objekt @@ -60,7 +58,13 @@ class lehrveranstaltung extends basis_db public $bezeichnung_english; // varchar(256) public $orgform_kurzbz; public $bezeichnung_arr = array(); - + + public $studienplan_lehrveranstaltung_id; + public $studienplan_lehrveranstaltung_id_parent; + public $stpllv_pflicht=true; + public $stpllv_koordinator; + public $stpllv_semester; + /** * Konstruktor * @param $lehrveranstaltung_id ID der zu ladenden Lehrveranstaltung @@ -85,7 +89,7 @@ class lehrveranstaltung extends basis_db $this->errormsg = 'Lehrveranstaltung_id muss eine gueltige Zahl sein'; return false; } - $qry = "SELECT * FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_id='$lehrveranstaltung_id';"; + $qry = "SELECT * FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_id=".$db->db_add_param($lehrveranstaltung_id, FHC_INTEGER); if(!$this->db_query($qry)) { @@ -104,9 +108,9 @@ class lehrveranstaltung extends basis_db $this->ects=$row->ects; $this->semesterstunden=$row->semesterstunden; $this->anmerkung=$row->anmerkung; - $this->lehre=($row->lehre=='t'?true:false); + $this->lehre=$this->db_parse_bool($row->lehre); $this->lehreverzeichnis=$row->lehreverzeichnis; - $this->aktiv=($row->aktiv=='t'?true:false); + $this->aktiv=$this->db_parse_bool($row->aktiv); $this->ext_id=$row->ext_id; $this->insertamum=$row->insertamum; $this->insertvon=$row->insertvon; @@ -119,8 +123,8 @@ class lehrveranstaltung extends basis_db $this->sprache=$row->sprache; $this->sort=$row->sort; $this->incoming=$row->incoming; - $this->zeugnis=($row->zeugnis=='t'?true:false); - $this->projektarbeit=($row->projektarbeit=='t'?true:false); + $this->zeugnis=$this->db_parse_bool($row->zeugnis); + $this->projektarbeit=$this->db_parse_bool($row->projektarbeit); $this->koordinator=$row->koordinator; $this->bezeichnung_english = $row->bezeichnung_english; $this->orgform_kurzbz = $row->orgform_kurzbz; @@ -161,9 +165,9 @@ class lehrveranstaltung extends basis_db $lv_obj->ects=$row->ects; $lv_obj->semesterstunden=$row->semesterstunden; $lv_obj->anmerkung=$row->anmerkung; - $lv_obj->lehre=($row->lehre=='t'?true:false); + $lv_obj->lehre=$this->db_parse_bool($row->lehre); $lv_obj->lehreverzeichnis=$row->lehreverzeichnis; - $lv_obj->aktiv=($row->aktiv=='t'?true:false); + $lv_obj->aktiv=$this->db_parse_bool($row->aktiv); $lv_obj->ext_id=$row->ext_id; $lv_obj->insertamum=$row->insertamum; $lv_obj->insertvon=$row->insertvon; @@ -176,8 +180,8 @@ class lehrveranstaltung extends basis_db $lv_obj->sprache=$row->sprache; $lv_obj->sort=$row->sort; $lv_obj->incoming=$row->incoming; - $lv_obj->zeugnis=($row->zeugnis=='t'?true:false); - $lv_obj->projektarbeit=($row->projektarbeit=='t'?true:false); + $lv_obj->zeugnis=$this->db_parse_bool($row->zeugnis); + $lv_obj->projektarbeit=$this->db_parse_bool($row->projektarbeit); $lv_obj->koordinator=$row->koordinator; $lv_obj->bezeichnung_english = $row->bezeichnung_english; $lv_obj->orgform_kurzbz = $row->orgform_kurzbz; @@ -224,16 +228,16 @@ class lehrveranstaltung extends basis_db return false; } - $qry = "SELECT * FROM lehre.tbl_lehrveranstaltung where studiengang_kz='".addslashes($studiengang_kz)."' "; + $qry = "SELECT * FROM lehre.tbl_lehrveranstaltung where studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER); //Select Befehl zusammenbauen if(!is_null($lehreverzeichnis)) - $qry .= " AND lehreverzeichnis='$lehreverzeichnis'"; + $qry .= " AND lehreverzeichnis=".$this->db_add_param($lehreverzeichnis); else $qry .= " AND lehreverzeichnis<>'' "; if(!is_null($semester) && $semester!='') - $qry .= " AND semester='$semester'"; + $qry .= " AND semester=".$this->db_add_param($semester, FHC_INTEGER); else $qry .= " AND semester is not null "; @@ -273,9 +277,9 @@ class lehrveranstaltung extends basis_db $lv_obj->ects=$row->ects; $lv_obj->semesterstunden=$row->semesterstunden; $lv_obj->anmerkung=$row->anmerkung; - $lv_obj->lehre=($row->lehre=='t'?true:false); + $lv_obj->lehre=$this->db_parse_bool($row->lehre); $lv_obj->lehreverzeichnis=$row->lehreverzeichnis; - $lv_obj->aktiv=($row->aktiv=='t'?true:false); + $lv_obj->aktiv=$this->db_parse_bool($row->aktiv); $lv_obj->ext_id=$row->ext_id; $lv_obj->insertamum=$row->insertamum; $lv_obj->insertvon=$row->insertvon; @@ -288,8 +292,8 @@ class lehrveranstaltung extends basis_db $lv_obj->sprache=$row->sprache; $lv_obj->sort=$row->sort; $lv_obj->incoming=$row->incoming; - $lv_obj->zeugnis=($row->zeugnis=='t'?true:false); - $lv_obj->projektarbeit=($row->projektarbeit=='t'?true:false); + $lv_obj->zeugnis=$this->db_parse_bool($row->zeugnis); + $lv_obj->projektarbeit=$this->db_parse_bool($row->projektarbeit); $lv_obj->koordinator=$row->koordinator; $lv_obj->bezeichnung_english = $row->bezeichnung_english; $lv_obj->orgform_kurzbz = $row->orgform_kurzbz; @@ -315,7 +319,7 @@ class lehrveranstaltung extends basis_db { //Variablen pruefen - if(!is_numeric($studiengang_kz) || $studiengang_kz=='') + if(!is_numeric($studiengang_kz) || $studiengang_kz==='') { $this->errormsg = 'studiengang_kz muss eine gueltige Zahl sein'; return false; @@ -336,21 +340,21 @@ class lehrveranstaltung extends basis_db return false; } - $qry = "SELECT distinct lehre.tbl_lehrveranstaltung.*, tbl_lehreinheit.studiensemester_kurzbz FROM lehre.tbl_lehrveranstaltung,lehre.tbl_lehreinheit where tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id and studiengang_kz='".addslashes($studiengang_kz)."' "; + $qry = "SELECT distinct lehre.tbl_lehrveranstaltung.*, tbl_lehreinheit.studiensemester_kurzbz FROM lehre.tbl_lehrveranstaltung,lehre.tbl_lehreinheit where tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id and studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER); //Select Befehl zusammenbauen if(!is_null($lehreverzeichnis)) - $qry .= " AND lehreverzeichnis='$lehreverzeichnis'"; + $qry .= " AND lehreverzeichnis=".$this->db_add_param($lehreverzeichnis); else $qry .= " AND lehreverzeichnis<>'' "; if(!is_null($semester) && $semester!='') - $qry .= " AND semester='$semester'"; + $qry .= " AND semester=".$this->db_add_param($semester); else $qry .= " AND semester is not null "; if(!is_null($studiensemester_kurzbz) && $studiensemester_kurzbz!='') - $qry .= " AND tbl_lehreinheit.studiensemester_kurzbz='$studiensemester_kurzbz'"; + $qry .= " AND tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); if(!is_null($lehre)) @@ -389,9 +393,9 @@ class lehrveranstaltung extends basis_db $lv_obj->ects=$row->ects; $lv_obj->semesterstunden=$row->semesterstunden; $lv_obj->anmerkung=$row->anmerkung; - $lv_obj->lehre=($row->lehre=='t'?true:false); + $lv_obj->lehre=$this->db_parse_bool($row->lehre); $lv_obj->lehreverzeichnis=$row->lehreverzeichnis; - $lv_obj->aktiv=($row->aktiv=='t'?true:false); + $lv_obj->aktiv=$this->db_parse_bool($row->aktiv); $lv_obj->ext_id=$row->ext_id; $lv_obj->insertamum=$row->insertamum; $lv_obj->insertvon=$row->insertvon; @@ -404,8 +408,8 @@ class lehrveranstaltung extends basis_db $lv_obj->sprache=$row->sprache; $lv_obj->sort=$row->sort; $lv_obj->incoming=$row->incoming; - $lv_obj->zeugnis=($row->zeugnis=='t'?true:false); - $lv_obj->projektarbeit=($row->projektarbeit=='t'?true:false); + $lv_obj->zeugnis=$this->db_parse_bool($row->zeugnis); + $lv_obj->projektarbeit=$this->db_parse_bool($row->projektarbeit); $lv_obj->koordinator=$row->koordinator; $lv_obj->bezeichnung_english = $row->bezeichnung_english; $lv_obj->orgform_kurzbz = $row->orgform_kurzbz; @@ -455,9 +459,9 @@ class lehrveranstaltung extends basis_db $lv_obj->ects=$row->ects; $lv_obj->semesterstunden=$row->semesterstunden; $lv_obj->anmerkung=$row->anmerkung; - $lv_obj->lehre=($row->lehre=='t'?true:false); + $lv_obj->lehre=$this->db_parse_bool($row->lehre); $lv_obj->lehreverzeichnis=$row->lehreverzeichnis; - $lv_obj->aktiv=($row->aktiv=='t'?true:false); + $lv_obj->aktiv=$this->db_parse_bool($row->aktiv); $lv_obj->ext_id=$row->ext_id; $lv_obj->insertamum=$row->insertamum; $lv_obj->insertvon=$row->insertvon; @@ -470,8 +474,8 @@ class lehrveranstaltung extends basis_db $lv_obj->sprache=$row->sprache; $lv_obj->sort=$row->sort; $lv_obj->incoming=$row->incoming; - $lv_obj->zeugnis=($row->zeugnis=='t'?true:false); - $lv_obj->projektarbeit=($row->projektarbeit=='t'?true:false); + $lv_obj->zeugnis=$this->db_parse_bool($row->zeugnis); + $lv_obj->projektarbeit=$this->db_parse_bool($row->projektarbeit); $lv_obj->koordinator=$row->koordinator; $lv_obj->bezeichnung_english = $row->bezeichnung_english; $lv_obj->orgform_kurzbz = $row->orgform_kurzbz; @@ -582,37 +586,34 @@ class lehrveranstaltung extends basis_db $qry = 'BEGIN; INSERT INTO lehre.tbl_lehrveranstaltung (studiengang_kz, bezeichnung, kurzbz, lehrform_kurzbz, semester, ects, semesterstunden, anmerkung, lehre, lehreverzeichnis, aktiv, ext_id, insertamum, insertvon, planfaktor, planlektoren, planpersonalkosten, plankostenprolektor, updateamum, updatevon, sort,zeugnis, projektarbeit, sprache, koordinator, bezeichnung_english, orgform_kurzbz,incoming) VALUES ('. - $this->addslashes($this->studiengang_kz).', '. - $this->addslashes($this->bezeichnung).', '. - $this->addslashes($this->kurzbz).', '; - if ($this->lehrform_kurzbz=='NULL') - $qry.= 'NULL, '; - else - $qry.= $this->addslashes($this->lehrform_kurzbz).', '; - $qry.= $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->plankostenprolektor).', '. - $this->addslashes($this->updateamum).', '. - $this->addslashes($this->updatevon).','. - $this->addslashes($this->sort).','. - ($this->zeugnis?'true':'false').','. - ($this->projektarbeit?'true':'false').','. - $this->addslashes($this->sprache).','. - $this->addslashes($this->koordinator).','. - $this->addslashes($this->bezeichnung_english).','. - $this->addslashes($this->orgform_kurzbz).','. - $this->addslashes($this->incoming).');'; + $this->db_add_param($this->studiengang_kz).', '. + $this->db_add_param($this->bezeichnung).', '. + $this->db_add_param($this->kurzbz).', '. + $this->db_add_param($this->lehrform_kurzbz).', '. + $this->db_add_param($this->semester).', '. + $this->db_add_param($this->ects).', '. + $this->db_add_param($this->semesterstunden).', '. + $this->db_add_param($this->anmerkung).', '. + $this->db_add_param($this->lehre, FHC_BOOLEAN).','. + $this->db_add_param($this->lehreverzeichnis).', '. + $this->db_add_param($this->aktiv, FHC_BOOLEAN).', '. + $this->db_add_param($this->ext_id).', '. + $this->db_add_param($this->insertamum).', '. + $this->db_add_param($this->insertvon).', '. + $this->db_add_param($this->planfaktor).', '. + $this->db_add_param($this->planlektoren).', '. + $this->db_add_param($this->planpersonalkosten).', '. + $this->db_add_param($this->plankostenprolektor).', '. + $this->db_add_param($this->updateamum).', '. + $this->db_add_param($this->updatevon).','. + $this->db_add_param($this->sort).','. + $this->db_add_param($this->zeugnis, FHC_BOOLEAN).','. + $this->db_add_param($this->projektarbeit, FHC_BOOLEAN).','. + $this->db_add_param($this->sprache).','. + $this->db_add_param($this->koordinator).','. + $this->db_add_param($this->bezeichnung_english).','. + $this->db_add_param($this->orgform_kurzbz).','. + $this->db_add_param($this->incoming).');'; } else { @@ -626,40 +627,33 @@ class lehrveranstaltung extends basis_db } $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) .', '. - 'lehrform_kurzbz='; - if ($this->lehrform_kurzbz=='NULL') - $qry.= 'NULL, '; - else - $qry.=$this->addslashes($this->lehrform_kurzbz) .', '; - $qry.= 'semester='.$this->addslashes($this->semester) .', '. - 'ects='.$this->addslashes($this->ects) .', '. - 'semesterstunden='.$this->addslashes($this->semesterstunden) .', '. - 'anmerkung='.$this->addslashes($this->anmerkung) .', '. - 'lehre='.($this->lehre?'true':'false') .', '. - '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) .', '. - 'plankostenprolektor='.$this->addslashes($this->plankostenprolektor) .', '. - 'updateamum='.$this->addslashes($this->updateamum) .','. - 'updatevon='.$this->addslashes($this->updatevon) .','. - 'sort='.$this->addslashes($this->sort) .','. - 'incoming='.$this->addslashes($this->incoming).','. - 'zeugnis='.($this->zeugnis?'true':'false').','. - 'projektarbeit='.($this->projektarbeit?'true':'false').','. - 'koordinator='.$this->addslashes($this->koordinator).','. - 'sprache='.$this->addslashes($this->sprache).','. - 'bezeichnung_english='.$this->addslashes($this->bezeichnung_english).','. - 'orgform_kurzbz='.$this->addslashes($this->orgform_kurzbz).' '. - 'WHERE lehrveranstaltung_id = '.$this->addslashes($this->lehrveranstaltung_id).';'; + 'studiengang_kz='.$this->db_add_param($this->studiengang_kz, FHC_INTEGER) .', '. + 'bezeichnung='.$this->db_add_param($this->bezeichnung) .', '. + 'kurzbz='.$this->db_add_param($this->kurzbz) .', '. + 'lehrform_kurzbz='.$this->db_add_param($this->lehrform_kurzbz) .', '. + 'semester='.$this->db_add_param($this->semester, FHC_INTEGER) .', '. + 'ects='.$this->db_add_param($this->ects) .', '. + 'semesterstunden='.$this->db_add_param($this->semesterstunden, FHC_INTEGER) .', '. + 'anmerkung='.$this->db_add_param($this->anmerkung) .', '. + 'lehre='.$this->db_add_param($this->lehre, FHC_BOOLEAN) .', '. + 'lehreverzeichnis='.$this->db_add_param($this->lehreverzeichnis) .', '. + 'aktiv='.$this->db_add_param($this->aktiv, FHC_BOOLEAN) .', '. + 'ext_id='.$this->db_add_param($this->ext_id) .', '. + 'planfaktor='.$this->db_add_param($this->planfaktor) .', '. + 'planlektoren='.$this->db_add_param($this->planlektoren) .', '. + 'planpersonalkosten='.$this->db_add_param($this->planpersonalkosten) .', '. + 'plankostenprolektor='.$this->db_add_param($this->plankostenprolektor) .', '. + 'updateamum='.$this->db_add_param($this->updateamum) .','. + 'updatevon='.$this->db_add_param($this->updatevon) .','. + 'sort='.$this->db_add_param($this->sort) .','. + 'incoming='.$this->db_add_param($this->incoming).','. + 'zeugnis='.$this->db_add_param($this->zeugnis, FHC_BOOLEAN).','. + 'projektarbeit='.$this->db_add_param($this->projektarbeit, FHC_BOOLEAN).','. + 'koordinator='.$this->db_add_param($this->koordinator).','. + 'sprache='.$this->db_add_param($this->sprache).','. + 'bezeichnung_english='.$this->db_add_param($this->bezeichnung_english).','. + 'orgform_kurzbz='.$this->db_add_param($this->orgform_kurzbz).' '. + 'WHERE lehrveranstaltung_id = '.$this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER, false).';'; } if($this->db_query($qry)) @@ -715,12 +709,12 @@ class lehrveranstaltung extends basis_db $qry = "SELECT * FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter WHERE "; if($studiengang_kz!=0) - $qry.="tbl_lehrveranstaltung.studiengang_kz='".addslashes($studiengang_kz)."' AND "; + $qry.="tbl_lehrveranstaltung.studiengang_kz=".$this->db_add_param($studiengang_kz)." AND "; $qry.= "tbl_lehrveranstaltung.lehrveranstaltung_id = tbl_lehreinheit.lehrveranstaltung_id AND tbl_lehreinheitmitarbeiter.lehreinheit_id = tbl_lehreinheit.lehreinheit_id AND - tbl_lehreinheit.studiensemester_kurzbz = '".addslashes($studiensemester_kurzbz)."' AND - tbl_lehreinheitmitarbeiter.mitarbeiter_uid='".addslashes($uid)."';"; + tbl_lehreinheit.studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)." AND + tbl_lehreinheitmitarbeiter.mitarbeiter_uid=".$this->db_add_param($uid).";"; if($this->db_query($qry)) { while($row = $this->db_fetch_object()) @@ -736,9 +730,9 @@ class lehrveranstaltung extends basis_db $lv_obj->ects=$row->ects; $lv_obj->semesterstunden=$row->semesterstunden; $lv_obj->anmerkung=$row->anmerkung; - $lv_obj->lehre=($row->lehre=='t'?true:false); + $lv_obj->lehre=$this->db_parse_bool($row->lehre); $lv_obj->lehreverzeichnis=$row->lehreverzeichnis; - $lv_obj->aktiv=($row->aktiv=='t'?true:false); + $lv_obj->aktiv=$this->db_parse_bool($row->aktiv); $lv_obj->ext_id=$row->ext_id; $lv_obj->insertamum=$row->insertamum; $lv_obj->insertvon=$row->insertvon; @@ -751,8 +745,8 @@ class lehrveranstaltung extends basis_db $lv_obj->sprache=$row->sprache; $lv_obj->sort=$row->sort; $lv_obj->incoming=$row->incoming; - $lv_obj->zeugnis=($row->zeugnis=='t'?true:false); - $lv_obj->projektarbeit=($row->projektarbeit=='t'?true:false); + $lv_obj->zeugnis= $this->db_parse_bool($row->zeugnis); + $lv_obj->projektarbeit=$this->db_parse_bool($row->projektarbeit); $lv_obj->zeugnis=$row->koordinator; $lv_obj->bezeichnung_english = $row->bezeichnung_english; $lv_obj->orgform_kurzbz = $row->orgform_kurzbz; @@ -833,8 +827,8 @@ class lehrveranstaltung extends basis_db $l->insertvon = $row->insertvon; $l->sort = $row->sort; $l->incoming = $row->incoming; - $l->zeugnis = ($row->zeugnis=='t'?true:false); - $l->projektarbeit = ($row->projektarbeit=='t'?true:false); + $l->zeugnis = $this->db_parse_bool($row->zeugnis); + $l->projektarbeit = $this->db_parse_bool($row->projektarbeit); $l->koordinator = $row->koordinator; $l->bezeichnung_english = $row->bezeichnung_english; $l->orgform_kurzbz = $row->orgform_kurzbz; @@ -903,7 +897,7 @@ class lehrveranstaltung extends basis_db if(count($ids)==0) return true; - $ids = "'".implode("','",$ids)."'"; + $ids = $this->db_implode4SQL($ids); $qry = 'SELECT * FROM lehre.tbl_lehrveranstaltung WHERE lehrveranstaltung_id in('.$ids.')'; $qry .=" ORDER BY bezeichnung"; @@ -927,9 +921,9 @@ class lehrveranstaltung extends basis_db $lv_obj->ects=$row->ects; $lv_obj->semesterstunden=$row->semesterstunden; $lv_obj->anmerkung=$row->anmerkung; - $lv_obj->lehre=($row->lehre=='t'?true:false); + $lv_obj->lehre=$this->db_parse_bool($row->lehre); $lv_obj->lehreverzeichnis=$row->lehreverzeichnis; - $lv_obj->aktiv=($row->aktiv=='t'?true:false); + $lv_obj->aktiv=$this->db_parse_bool($row->aktiv); $lv_obj->ext_id=$row->ext_id; $lv_obj->insertamum=$row->insertamum; $lv_obj->insertvon=$row->insertvon; @@ -942,8 +936,8 @@ class lehrveranstaltung extends basis_db $lv_obj->sprache=$row->sprache; $lv_obj->sort=$row->sort; $lv_obj->incoming=$row->incoming; - $lv_obj->zeugnis=($row->zeugnis=='t'?true:false); - $lv_obj->projektarbeit=($row->projektarbeit=='t'?true:false); + $lv_obj->zeugnis=$this->db_parse_bool($row->zeugnis); + $lv_obj->projektarbeit=$this->db_parse_bool($row->projektarbeit); $lv_obj->koordinator=$row->koordinator; $lv_obj->bezeichnung_english = $row->bezeichnung_english; $lv_obj->orgform_kurzbz = $row->orgform_kurzbz; @@ -958,5 +952,212 @@ class lehrveranstaltung extends basis_db return true; } + + /** + * Laedt alle Lehrveranstaltungen eines Studienplans + * + * @param $studienplan_id ID des Studienplans + * @param $semeser Semester optional + * @return boolean true wenn ok, false im Fehlerfall + */ + public function loadLehrveranstaltungStudienplan($studienplan_id, $semester=null) + { + if(!is_numeric($studienplan_id) || $studienplan_id==='') + { + $this->errormsg='StudienplanID ist ungueltig'; + return false; + } + + $qry = "SELECT + tbl_lehrveranstaltung.*, + tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id, + tbl_studienplan_lehrveranstaltung.semester as stpllv_semester, + tbl_studienplan_lehrveranstaltung.pflicht as stpllv_pflicht, + tbl_studienplan_lehrveranstaltung.koordinator as stpllv_koordinator, + tbl_studienplan_lehrveranstaltung.studienplan_lehrveranstaltung_id_parent + FROM + lehre.tbl_lehrveranstaltung + JOIN lehre.tbl_studienplan_lehrveranstaltung USING(lehrveranstaltung_id) + WHERE + tbl_studienplan_lehrveranstaltung.studienplan_id=".$this->db_add_param($studienplan_id, FHC_INTEGER); + if(!is_null($semester)) + { + $qry.=" AND tbl_studienplan_lehrveranstaltung.semester=".$this->db_add_param($semester, FHC_INTEGER); + } + $qry.=" ORDER BY sort"; + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $obj = new lehrveranstaltung(); + + $obj->lehrveranstaltung_id=$row->lehrveranstaltung_id; + $obj->studiengang_kz=$row->studiengang_kz; + $obj->bezeichnung=$row->bezeichnung; + $obj->kurzbz=$row->kurzbz; + $obj->lehrform_kurzbz=$row->lehrform_kurzbz; + $obj->semester=$row->semester; + $obj->ects=$row->ects; + $obj->semesterstunden=$row->semesterstunden; + $obj->anmerkung=$row->anmerkung; + $obj->lehre=$this->db_parse_bool($row->lehre); + $obj->lehreverzeichnis=$row->lehreverzeichnis; + $obj->aktiv=$this->db_parse_bool($row->aktiv); + $obj->ext_id=$row->ext_id; + $obj->insertamum=$row->insertamum; + $obj->insertvon=$row->insertvon; + $obj->planfaktor=$row->planfaktor; + $obj->planlektoren=$row->planlektoren; + $obj->planpersonalkosten=$row->planpersonalkosten; + $obj->plankostenprolektor=$row->plankostenprolektor; + $obj->updateamum=$row->updateamum; + $obj->updatevon=$row->updatevon; + $obj->sprache=$row->sprache; + $obj->sort=$row->sort; + $obj->incoming=$row->incoming; + $obj->zeugnis=$this->db_parse_bool($row->zeugnis); + $obj->projektarbeit=$this->db_parse_bool($row->projektarbeit); + $obj->koordinator=$row->koordinator; + $obj->bezeichnung_english = $row->bezeichnung_english; + $obj->orgform_kurzbz = $row->orgform_kurzbz; + + $obj->bezeichnung_arr['German']=$row->bezeichnung; + $obj->bezeichnung_arr['English']=$row->bezeichnung_english; + if($obj->bezeichnung_arr['English']=='') + $obj->bezeichnung_arr['English']=$obj->bezeichnung_arr['German']; + + $obj->stpllv_semester = $row->stpllv_semester; + $obj->stpllv_pflicht = $this->db_parse_bool($row->stpllv_pflicht); + $obj->stpllv_koordinator = $row->stpllv_koordinator; + $obj->studienplan_lehrveranstaltung_id = $row->studienplan_lehrveranstaltung_id; + $obj->studienplan_lehrveranstaltung_id_parent = $row->studienplan_lehrveranstaltung_id_parent; + $obj->new=false; + + $this->lehrveranstaltungen[] = $obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Liefert die Lehrveranstaltungen als verschachtelten Tree + */ + public function getLehrveranstaltungTree() + { + $tree=array(); + foreach($this->lehrveranstaltungen as $row) + { + if($row->studienplan_lehrveranstaltung_id_parent=='') + { + $tree[$row->studienplan_lehrveranstaltung_id]=$row; + $tree[$row->studienplan_lehrveranstaltung_id]->childs = $this->getLehrveranstaltungTreeChilds($row->studienplan_lehrveranstaltung_id); + } + } + return $tree; + } + + /** + * Generiert die Subtrees des Lehrveranstaltungstrees + */ + protected function getLehrveranstaltungTreeChilds($studienplan_lehrveranstaltung_id) + { + $childs = array(); + foreach($this->lehrveranstaltungen as $row) + { + if($row->studienplan_lehrveranstaltung_id_parent===$studienplan_lehrveranstaltung_id) + { + $childs[$row->studienplan_lehrveranstaltung_id]=$row; + $childs[$row->studienplan_lehrveranstaltung_id]->childs = $this->getLehrveranstaltungTreeChilds($row->studienplan_lehrveranstaltung_id); + } + } + return $childs; + } + + /** + * Speichert die Zuordnung einer Lehrveranstaltung zu einem Studienplan + * @return true wenn ok, false im Fehlerfall + */ + public function saveStudienplanLehrveranstaltung() + { + + if($this->new) + { + //Neuen Datensatz einfuegen + $qry='BEGIN;INSERT INTO lehre.tbl_studienplan_lehrveranstaltung (studienplan_id, lehrveranstaltung_id, + semester,studienplan_lehrveranstaltung_id_parent,pflicht, koordinator, + insertamum, insertvon) VALUES ('. + $this->db_add_param($this->studienplan_id, FHC_INTEGER).', '. + $this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER).', '. + $this->db_add_param($this->stpllv_semester, FHC_INTEGER).', '. + $this->db_add_param($this->studienplan_lehrveranstaltung_id_parent, FHC_INTEGER).', '. + $this->db_add_param($this->stpllv_pflicht, FHC_BOOLEAN).', '. + $this->db_add_param($this->stpllv_koordinator).', '. + 'now(), '. + $this->db_add_param($this->insertvon).');'; + } + else + { + //Pruefen ob studienplan_id eine gueltige Zahl ist + if(!is_numeric($this->studienplan_lehrveranstaltung_id)) + { + $this->errormsg = 'studienplan_lehrveranstaltung_id muss eine gueltige Zahl sein'; + return false; + } + $qry='UPDATE lehre.tbl_studienplan_lehrveranstaltung SET'. + ' studienplan_id='.$this->db_add_param($this->studienplan_id, FHC_INTEGER).', '. + ' lehrveranstaltung_id='.$this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER).', '. + ' semester='.$this->db_add_param($this->stpllv_semester, FHC_INTEGER).', '. + ' studienplan_lehrveranstaltung_id_parent='.$this->db_add_param($this->studienplan_lehrveranstaltung_id_parent, FHC_INTEGER).', '. + ' pflicht='.$this->db_add_param($this->stpllv_pflicht, FHC_BOOLEAN).', '. + ' sprache='.$this->db_add_param($this->sprache).', '. + ' koordinator='.$this->db_add_param($this->stpllv_koordinator).', '. + ' updateamum= now(), '. + ' updatevon='.$this->db_add_param($this->updatevon).' '. + ' WHERE studienplan_lehrveranstaltung_id='.$this->db_add_param($this->studienplan_lehrveranstaltung_id, FHC_INTEGER, false).';'; + } + + if($this->db_query($qry)) + { + if($this->new) + { + //naechste ID aus der Sequence holen + $qry="SELECT currval('lehre.seq_studienplan_studienplan_lehrveranstaltung_id') as id;"; + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->studienplan_lehrveranstaltung_id = $row->id; + $this->db_query('COMMIT'); + } + else + { + $this->db_query('ROLLBACK'); + $this->errormsg = "Fehler beim Auslesen der Sequence"; + return false; + } + } + else + { + $this->db_query('ROLLBACK'); + $this->errormsg = 'Fehler beim Auslesen der Sequence'; + return false; + } + } + + } + else + { + $this->errormsg = 'Fehler beim Speichern des Datensatzes'; + return false; + } + return $this->studienplan_lehrveranstaltung_id; + } + } ?> diff --git a/include/pgsql.class.php b/include/pgsql.class.php index b67b5cee2..6db94e03d 100644 --- a/include/pgsql.class.php +++ b/include/pgsql.class.php @@ -194,9 +194,9 @@ class basis_db extends db public function db_null_value($var, $qoute=true) { if($qoute) - return ($var!=''?$this->db_qoute($var):'null'); + return ($var!==''?$this->db_qoute($var):'null'); else - return ($var!=''?$var:'null'); + return ($var!==''?$var:'null'); } /** @@ -225,7 +225,7 @@ class basis_db extends db */ public function db_add_param($var, $type=FHC_STRING, $nullable=true) { - if($var=='' && $type!=FHC_BOOLEAN) + if($var==='' && $type!=FHC_BOOLEAN) { if($nullable) return 'null'; @@ -237,8 +237,8 @@ class basis_db extends db { case FHC_INTEGER: $var = $this->db_escape($var); - if(!is_numeric($var)) - die('Invalid Integer Parameter detected'); + if(!is_numeric($var) && $var!=='') + die('Invalid Integer Parameter detected:'.$var); $var = $this->db_null_value($var, false); break; @@ -276,6 +276,21 @@ class basis_db extends db else die('Invalid DB Boolean. Wrong DB-Engine?'); } - + + /** + * Bereitet ein Array von Elementen auf, damit es in der IN-Klausel eines + * Select Befehls verwendet werden kann. + */ + public function db_implode4SQL($array) + { + $string = ''; + foreach($array as $row) + { + if($string!='') + $string.=','; + $string.=$this->db_add_param($row); + } + return $string; + } } ?> diff --git a/include/studienordnung.class.php b/include/studienordnung.class.php index 55b1c1a74..ede7eb6f4 100644 --- a/include/studienordnung.class.php +++ b/include/studienordnung.class.php @@ -21,6 +21,7 @@ * * * Authors: Christian Paminger + * Andreas Österreicher */ require_once(dirname(__FILE__).'/basis_db.class.php'); @@ -28,48 +29,41 @@ require_once(dirname(__FILE__).'/basis_db.class.php'); class studienordnung extends basis_db { private $new = true; // boolean - public $result = array(); // Objekte + public $result = array(); // Objekte //Tabellenspalten protected $studienordnung_id; // integer (PK) - protected $studiengang_kz; // integer (FK Studiengang) + protected $studiengang_kz; // integer (FK Studiengang) protected $version; // varchar (256) - protected $bezeichnung; // varchar (512) + protected $bezeichnung; // varchar (512) protected $ects; // numeric (5,2) - protected $gueltigvon; // varchar (FK Studiensemester) - protected $gueltigbis; // varchar (FK Studiensemester) + protected $gueltigvon; // varchar (FK Studiensemester) + protected $gueltigbis; // varchar (FK Studiensemester) protected $studiengangbezeichnung; // varchar (256) protected $studiengangbezeichnung_englisch; // varchar (256) - protected $studiengangkurzbzlang;// varchar (256) - protected $akadgrad_id; // integer (FK akadgrad) + protected $studiengangkurzbzlang; // varchar (256) + protected $akadgrad_id; // integer (FK akadgrad) protected $max_semester; // smallint - protected $updateamum; // timestamp + protected $updateamum; // timestamp protected $updatevon; // varchar - protected $insertamum; // timestamp - protected $insertvon; // varchar + protected $insertamum; // timestamp + protected $insertvon; // varchar /** * Konstruktor - * @param $studienordnung_id ID des Studienplatz der geladen werden soll (Default=null) */ public function __construct() { parent::__construct(); - } public function __set($name,$value) { switch ($name) { - case 'test': - if ($value=='test') - throw new Exception('UnitTest: "This is a test!"'); - $this->$name=$value; - break; case 'studiengang_kz': if (!is_numeric($value)) - throw new Exception('Attribute studiengang_kz mus be numeric!"'); + throw new Exception('Attribute studiengang_kz must be numeric!"'); $this->$name=$value; break; default: @@ -79,19 +73,12 @@ class studienordnung extends basis_db public function __get($name) { - switch ($name) - { - case 'test': - throw new Exception('UnitTest: "This is a test!"'); - break; - default: - return $this->$name; - } + return $this->$name; } /** * Laedt die Studienordnung mit der ID $studienordnung_id - * @param $adress_id ID der zu ladenden Adresse + * @param $studienordnung_id ID der zu ladenden Studienordnung * @return true wenn ok, false im Fehlerfall */ public function loadStudienordnung($studienordnung_id) @@ -122,7 +109,7 @@ class studienordnung extends basis_db $this->gueltigvon = $row->gueltigvon; $this->gueltigbis = $row->gueltigbis; $this->studiengangbezeichnung = $row->studiengangbezeichnung; - $this->studiengangbezeichnung_english = $row->studiengangbezeichnung_english; + $this->studiengangbezeichnung_englisch = $row->studiengangbezeichnung_englisch; $this->studiengangkurzbzlang = $row->studiengangkurzbzlang; $this->akadgrad_id = $row->akadgrad_id; $this->max_semester = $row->max_semester; @@ -141,27 +128,34 @@ class studienordnung extends basis_db } /** - * Laedt alle Adressen zu der Person die uebergeben wird - * @param $pers_id ID der Person zu der die Adressen geladen werden sollen + * Laedt alle Studienordnungen zu einem Studiengang der uebergeben wird + * @param $studiengang_kz Kennzahl des Studiengangs + * @param $studiensemester_kurzbz + * @param $semester * @return true wenn ok, false im Fehlerfall */ - public function loadStudienordnungSTG($studiengang_kz,$studiensemester=null, $semester=null) + public function loadStudienordnungSTG($studiengang_kz,$studiensemester_kurzbz=null, $semester=null) { - //Pruefen ob studienordnung_id eine gueltige Zahl ist - if(!is_numeric($studiengang_kz) || $studiengang_kz == '') + //Pruefen ob studiengang_kz eine gueltige Zahl ist + if(!is_numeric($studiengang_kz) || $studiengang_kz === '') { - $this->errormsg = 'studienordnung_id muss eine gültige Zahl sein'; + $this->errormsg = 'studiengang_kz muss eine gültige Zahl sein'; return false; } - // Query vorbereiten - $qry = 'SELECT * FROM lehre.tbl_studienordnung JOIN lehre.tbl_studienordnung_semester USING (studienordnung_id) WHERE studiengang_kz='.$this->db_add_param($studiengang_kz, FHC_INTEGER, false); - if (!is_null($studiensemester)) - $qry.=" AND studiensemester_kurzb='".$this->db_add_param($studiensemester, FHC_STRING,false); + $qry = 'SELECT + * + FROM + lehre.tbl_studienordnung + LEFT JOIN lehre.tbl_studienordnung_semester USING (studienordnung_id) + WHERE + studiengang_kz='.$this->db_add_param($studiengang_kz, FHC_INTEGER, false); + + if (!is_null($studiensemester_kurzbz)) + $qry.=" AND studiensemester_kurzb=".$this->db_add_param($studiensemester_kurzbz, FHC_STRING,false); if (!is_null($semester)) - $qry.=" AND semester='".$this->db_add_param($semester, FHC_INTEGER,false); + $qry.=" AND semester=".$this->db_add_param($semester, FHC_INTEGER,false); - //Lesen der Daten aus der Datenbank if(!$this->db_query($qry)) { $this->errormsg = 'Fehler bei einer Datenbankabfrage'; @@ -180,7 +174,7 @@ class studienordnung extends basis_db $obj->gueltigvon = $row->gueltigvon; $obj->gueltigbis = $row->gueltigbis; $obj->studiengangbezeichnung = $row->studiengangbezeichnung; - $obj->studiengangbezeichnung_english = $row->studiengangbezeichnung_english; + $obj->studiengangbezeichnung_englisch = $row->studiengangbezeichnung_englisch; $obj->studiengangkurzbzlang = $row->studiengangkurzbzlang; $obj->akadgrad_id = $row->akadgrad_id; $obj->max_semester = $row->max_semester; @@ -190,12 +184,14 @@ class studienordnung extends basis_db $obj->insertvon = $row->insertvon; $obj->new = false; + $obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $obj->semester = $row->semester; + $obj->studienordnung_semester_id = $row->studienordnung_semester_id; + $this->result[] = $obj; } return true; } - - /** * Prueft die Variablen auf Gueltigkeit @@ -203,52 +199,66 @@ class studienordnung extends basis_db */ protected function validate() { - /*//Zahlenfelder pruefen - if(!is_numeric($this->person_id) && $this->person_id!='') + //Zahlenfelder pruefen + if(!is_numeric($this->studiengang_kz) && $this->studiengang_kz!=='') { - $this->errormsg='person_id enthaelt ungueltige Zeichen'; + $this->errormsg='studiengang_kz enthaelt ungueltige Zeichen'; return false; } + if(!is_numeric($this->ects)) + { + $this->errormsg='ects enthaelt ungueltige Zeichen'; + return false; + } + if(!is_numeric($this->akadgrad_id)) + { + $this->errormsg='akadgrad_id enthaelt ungueltige Zeichen'; + return false; + } + //Gesamtlaenge pruefen - if(mb_strlen($this->name)>255) + if(mb_strlen($this->version)>256) { - $this->errormsg = 'Name darf nicht länger als 255 Zeichen sein'; + $this->errormsg = 'Version darf nicht länger als 256 Zeichen sein'; return false; } - if(mb_strlen($this->strasse)>255) + if(mb_strlen($this->bezeichnung)>512) { - $this->errormsg = 'Strasse darf nicht länger als 255 Zeichen sein'; + $this->errormsg = 'Bezeichnung darf nicht länger als 512 Zeichen sein'; return false; } - if(mb_strlen($this->plz)>10) + if(mb_strlen($this->gueltigvon)>16) { - $this->errormsg = 'Plz darf nicht länger als 10 Zeichen sein'; + $this->errormsg = 'Gueltig Von darf nicht laenger als 16 Zeichen sein'; return false; } - if(mb_strlen($this->ort)>255) + if(mb_strlen($this->gueltigbis)>16) { - $this->errormsg = 'Ort darf nicht länger als 255 Zeichen sein'; + $this->errormsg = 'Gueltig Bis darf nicht laenger als 16 Zeichen sein'; return false; } - if(mb_strlen($this->nation)>3) + if(mb_strlen($this->studiengangbezeichnung)>256) { - $this->errormsg = 'Nation darf nicht länger als 3 Zeichen sein'; + $this->errormsg = 'Studiengangbezeichnung darf nicht länger als 256 Zeichen sein'; return false; } - if(mb_strlen($this->gemeinde)>255) + if(mb_strlen($this->studiengangbezeichnung_englisch)>256) { - $this->errormsg = 'Gemeinde darf nicht länger als 255 Zeichen sein'; + $this->errormsg = 'Studiengangbezeichnung Englisch darf nicht länger als 256 Zeichen sein'; return false; } -*/ + if(mb_strlen($this->studiengangkurzbzlang)>8) + { + $this->errormsg = 'Studiengangkurzbzlang darf nicht länger als 8 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 $studienordnung_id aktualisiert * @return true wenn ok, false im Fehlerfall */ public function save() @@ -259,7 +269,6 @@ class studienordnung extends basis_db if($this->new) { - echo $this->studiengang_kz; //Neuen Datensatz einfuegen $qry='BEGIN;INSERT INTO lehre.tbl_studienordnung (studiengang_kz, version, bezeichnung, ects, gueltigvon, gueltigbis, studiengangbezeichnung, studiengangbezeichnung_englisch, studiengangkurzbzlang, akadgrad_id, max_semester, insertamum, insertvon) VALUES ('. $this->db_add_param($this->studiengang_kz, FHC_INTEGER).', '. @@ -274,7 +283,6 @@ class studienordnung extends basis_db $this->db_add_param($this->akadgrad_id,FHC_INTEGER).', '. $this->db_add_param($this->max_semester,FHC_INTEGER).', now(), '. $this->db_add_param($this->insertvon).');'; - echo $qry; } else { @@ -284,20 +292,20 @@ class studienordnung extends basis_db $this->errormsg = 'studienordnung_id muss eine gueltige Zahl sein'; return false; } - $qry='UPDATE public.tbl_studienordnung SET'. + $qry='UPDATE lehre.tbl_studienordnung SET'. ' studiengang_kz='.$this->db_add_param($this->studiengang_kz, FHC_INTEGER).', '. ' version='.$this->db_add_param($this->version).', '. ' bezeichnung='.$this->db_add_param($this->bezeichnung).', '. ' ects='.$this->db_add_param($this->ects).', '. - ' gueltigvon='.$this->db_add_param(trim($this->gueltigvon)).', '. + ' gueltigvon='.$this->db_add_param($this->gueltigvon).', '. ' gueltigbis='.$this->db_add_param($this->gueltigbis).', '. ' studiengangbezeichnung='.$this->db_add_param($this->studiengangbezeichnung).', '. ' studiengangbezeichnung_englisch='.$this->db_add_param($this->studiengangbezeichnung_englisch).', '. - ' studiengangkurzbzlang='.$this->db_add_param($this->studiengangkurzbzlang, FHC_INTEGER).','. - ' akadgrad_id='.$this->db_add_param($this->akadgrad_id, FHC_BOOLEAN, false).', '. - ' max_semester='.$this->db_add_param($this->max_semester, FHC_BOOLEAN, false).' '. + ' studiengangkurzbzlang='.$this->db_add_param($this->studiengangkurzbzlang).','. + ' akadgrad_id='.$this->db_add_param($this->akadgrad_id, FHC_INTEGER).', '. + ' max_semester='.$this->db_add_param($this->max_semester, FHC_INTEGER).', '. ' updateamum= now(), '. - ' updatevon='.$this->db_add_param($this->updatevon).', '. + ' updatevon='.$this->db_add_param($this->updatevon).' '. ' WHERE studienordnung_id='.$this->db_add_param($this->studienordnung_id, FHC_INTEGER, false).';'; } @@ -306,7 +314,7 @@ class studienordnung extends basis_db if($this->new) { //naechste ID aus der Sequence holen - $qry="SELECT currval('public.tbl_studienordnung_id_seq') as id;"; + $qry="SELECT currval('lehre.seq_studienordnung_studienordnung_id') as id;"; if($this->db_query($qry)) { if($row = $this->db_fetch_object()) @@ -332,7 +340,7 @@ class studienordnung extends basis_db } else { - $this->errormsg = 'Fehler beim Speichern des Adress-Datensatzes'; + $this->errormsg = 'Fehler beim Speichern des Datensatzes'; return false; } return $this->studienordnung_id; @@ -365,5 +373,60 @@ class studienordnung extends basis_db return false; } } + + public function cleanResult() + { + $data = array(); + + if(count($this->result)>0) + { + foreach($this->result as $row) + { + $obj = new stdClass(); + + $obj->studienordnung_id= $row->studienordnung_id; + $obj->studiengang_kz = $row->studiengang_kz; + $obj->version = $row->version; + $obj->bezeichnung = $row->bezeichnung; + $obj->ects = $row->ects; + $obj->gueltigvon = $row->gueltigvon; + $obj->gueltigbis = $row->gueltigbis; + $obj->studiengangbezeichnung = $row->studiengangbezeichnung; + $obj->studiengangbezeichnung_englisch = $row->studiengangbezeichnung_englisch; + $obj->studiengangkurzbzlang = $row->studiengangkurzbzlang; + $obj->akadgrad_id = $row->akadgrad_id; + $obj->max_semester = $row->max_semester; + $obj->updateamum = $row->updateamum; + $obj->updatevon = $row->updatevon; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + + $data[]=$obj; + } + } + else + { + $obj = new stdClass(); + + $obj->studienordnung_id= $this->studienordnung_id; + $obj->studiengang_kz = $this->studiengang_kz; + $obj->version = $this->version; + $obj->bezeichnung = $this->bezeichnung; + $obj->ects = $this->ects; + $obj->gueltigvon = $this->gueltigvon; + $obj->gueltigbis = $this->gueltigbis; + $obj->studiengangbezeichnung = $this->studiengangbezeichnung; + $obj->studiengangbezeichnung_englisch = $this->studiengangbezeichnung_englisch; + $obj->studiengangkurzbzlang = $this->studiengangkurzbzlang; + $obj->akadgrad_id = $this->akadgrad_id; + $obj->max_semester = $this->max_semester; + $obj->updateamum = $this->updateamum; + $obj->updatevon = $this->updatevon; + $obj->insertamum = $this->insertamum; + $obj->insertvon = $this->insertvon; + $data[]=$obj; + } + return $data; + } } ?> diff --git a/include/studienplan.class.php b/include/studienplan.class.php new file mode 100644 index 000000000..4381038fb --- /dev/null +++ b/include/studienplan.class.php @@ -0,0 +1,397 @@ + + */ + +require_once(dirname(__FILE__).'/basis_db.class.php'); + +class studienplan extends basis_db +{ + private $new = true; // boolean + public $result = array(); // Objekte + + //Tabellenspalten + protected $studienplan_id; // integer (PK) + protected $studienordnung_id; // integer FK Studienordnung + protected $orgform_kurzbz; // varchar (3) + protected $version; // varchar (256) + protected $bezeichnung; // varchar (256) + protected $regelstudiendauer; // integer + protected $sprache; // varchar (16) FK Sprache + protected $aktiv=false; // boolean + protected $semesterwochen; // smallint + protected $testtool_sprachwahl=true;// boolean + protected $updateamum; // timestamp + protected $updatevon; // varchar + protected $insertamum; // timestamp + protected $insertvon; // varchar + + /** + * Konstruktor + */ + public function __construct() + { + parent::__construct(); + } + + public function __set($name,$value) + { + $this->$name=$value; + } + + public function __get($name) + { + return $this->$name; + } + + /** + * Laedt Studienplan mit der ID $studienplan_id + * @param $studienplan_id ID des zu ladenden Studienplanes + * @return true wenn ok, false im Fehlerfall + */ + public function loadStudienplan($studienplan_id) + { + //Pruefen ob studienplan_id eine gueltige Zahl ist + if(!is_numeric($studienplan_id) || $studienplan_id === '') + { + $this->errormsg = 'Studienplan_id muss eine Zahl sein'; + return false; + } + + //Daten aus der Datenbank lesen + $qry = "SELECT * FROM lehre.tbl_studienplan WHERE studienplan_id=".$this->db_add_param($studienplan_id, FHC_INTEGER, false); + + if(!$this->db_query($qry)) + { + $this->errormsg = 'Fehler bei einer Datenbankabfrage'; + return false; + } + + if($row = $this->db_fetch_object()) + { + $this->studienplan_id = $row->studienplan_id; + $this->studienordnung_id = $row->studienordnung_id; + $this->orgform_kurzbz = $row->orgform_kurzbz; + $this->version = $row->version; + $this->bezeichnung = $row->bezeichnung; + $this->regelstudiendauer = $row->regelstudiendauer; + $this->sprache = $row->sprache; + $this->aktiv = $this->db_parse_bool($row->aktiv); + $this->semesterwochen = $row->semesterwochen; + $this->testtool_sprachwahl = $this->db_parse_bool($row->testtool_sprachwahl); + $this->updateamum = $row->updateamum; + $this->updatevon = $row->updatevon; + $this->insertamum = $row->insertamum; + $this->insertvon = $row->insertvon; + $this->new=false; + + return true; + } + else + { + $this->errormsg = 'Es ist kein Datensatz mit dieser ID vorhanden'; + return false; + } + } + + /** + * Laedt die Studienplaene einer Studienordnung und Optional einer Organisationsform + * + * @param $studienordnung_id ID der Studienordnung + * @param $orgform_kurzbz Organisationsform + * @return boolean true wenn ok, false im Fehlerfall + */ + public function loadStudienplanSTO($studienordnung_id, $orgform_kurzbz=null) + { + //Pruefen ob studienordnung_id eine gueltige Zahl ist + if(!is_numeric($studienordnung_id) || $studienordnung_id === '') + { + $this->errormsg = 'Studienordnung_id muss eine Zahl sein'; + return false; + } + + //Daten aus der Datenbank lesen + $qry = "SELECT * FROM lehre.tbl_studienplan WHERE studienordnung_id=".$this->db_add_param($studienordnung_id, FHC_INTEGER, false); + + if(!is_null($orgform_kurzbz)) + $qry.=" AND orgform_kurzbz=".$this->db_add_param($orgform_kurzbz); + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $obj = new studienplan(); + + $obj->studienplan_id = $row->studienplan_id; + $obj->studienordnung_id = $row->studienordnung_id; + $obj->orgform_kurzbz = $row->orgform_kurzbz; + $obj->version = $row->version; + $obj->bezeichnung = $row->bezeichnung; + $obj->regelstudiendauer = $row->regelstudiendauer; + $obj->sprache = $row->sprache; + $obj->aktiv = $this->db_parse_bool($row->aktiv); + $obj->semesterwochen = $row->semesterwochen; + $obj->testtool_sprachwahl = $this->db_parse_bool($row->testtool_sprachwahl); + $obj->updateamum = $row->updateamum; + $obj->updatevon = $row->updatevon; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + $obj->new=false; + + $this->result[] = $obj; + } + + return true; + } + else + { + $this->errormsg = 'Fehler bei einer Datenbankabfrage'; + return false; + } + } + + /** + * Prueft die Variablen auf Gueltigkeit + * @return true wenn ok, false im Fehlerfall + */ + protected function validate() + { + //Zahlenfelder pruefen + if(!is_numeric($this->studienordnung_id)) + { + $this->errormsg='studienordnung_id enthaelt ungueltige Zeichen'; + return false; + } + + if(!is_numeric($this->regelstudiendauer) && $this->regelstudiendauer!=='') + { + $this->errormsg='regelstudiendauer enthaelt ungueltige Zeichen'; + return false; + } + if(!is_numeric($this->semesterwochen) && $this->semesterwochen!=='') + { + $this->errormsg='semesterwochen enthaelt ungueltige Zeichen'; + return false; + } + + //Gesamtlaenge pruefen + if(mb_strlen($this->version)>256) + { + $this->errormsg = 'Version darf nicht länger als 256 Zeichen sein'; + return false; + } + if(mb_strlen($this->bezeichnung)>256) + { + $this->errormsg = 'Bezeichnung darf nicht länger als 256 Zeichen sein'; + return false; + } + if(mb_strlen($this->orgform_kurzbz)>3) + { + $this->errormsg = 'Orgform_kurzbz darf nicht laenger als 3 Zeichen sein'; + return false; + } + if(mb_strlen($this->sprache)>16) + { + $this->errormsg = 'sprache darf nicht laenger als 16 Zeichen sein'; + return false; + } + if(!is_bool($this->aktiv)) + { + $this->errormsg='Aktiv ist ungueltig'; + return false; + } + if(!is_bool($this->testtool_sprachwahl)) + { + $this->errormsg='Testtool_sprachwahl ist ungueltig'; + return false; + } + + $this->errormsg = ''; + return true; + } + + /** + * Speichert den aktuellen Datensatz in die Datenbank + * @return true wenn ok, false im Fehlerfall + */ + public function save() + { + //Variablen pruefen + if(!$this->validate()) + return false; + + if($this->new) + { + //Neuen Datensatz einfuegen + $qry='BEGIN;INSERT INTO lehre.tbl_studienplan (studienordnung_id, orgform_kurzbz,version, + bezeichnung, regelstudiendauer, sprache, aktiv, semesterwochen, testtool_sprachwahl, + insertamum, insertvon) VALUES ('. + $this->db_add_param($this->studienordnung_id, FHC_INTEGER).', '. + $this->db_add_param($this->orgform_kurzbz).', '. + $this->db_add_param($this->version).', '. + $this->db_add_param($this->bezeichnung).', '. + $this->db_add_param($this->regelstudiendauer, FHC_INTEGER).', '. + $this->db_add_param($this->sprache).', '. + $this->db_add_param($this->aktiv, FHC_BOOLEAN).', '. + $this->db_add_param($this->semesterwochen,FHC_INTEGER).', '. + $this->db_add_param($this->testtool_sprachwahl,FHC_BOOLEAN).', '. + 'now(), '. + $this->db_add_param($this->insertvon).');'; + } + else + { + //Pruefen ob studienplan_id eine gueltige Zahl ist + if(!is_numeric($this->studienplan_id)) + { + $this->errormsg = 'studienplan_id muss eine gueltige Zahl sein'; + return false; + } + $qry='UPDATE lehre.tbl_studienplan SET'. + ' studienordnung_id='.$this->db_add_param($this->studienordnung_id, FHC_INTEGER).', '. + ' orgform_kurzbz='.$this->db_add_param($this->orgform_kurzbz).', '. + ' version='.$this->db_add_param($this->version).', '. + ' bezeichnung='.$this->db_add_param($this->bezeichnung).', '. + ' regelstudiendauer='.$this->db_add_param($this->regelstudiendauer, FHC_INTEGER).', '. + ' sprache='.$this->db_add_param($this->sprache).', '. + ' aktiv='.$this->db_add_param($this->aktiv, FHC_BOOLEAN).', '. + ' semesterwochen='.$this->db_add_param($this->semesterwochen, FHC_INTEGER).', '. + ' testtool_sprachwahl='.$this->db_add_param($this->testtool_sprachwahl, FHC_BOOLEAN).','. + ' updateamum= now(), '. + ' updatevon='.$this->db_add_param($this->updatevon).' '. + ' WHERE studienplan_id='.$this->db_add_param($this->studienplan_id, FHC_INTEGER, false).';'; + } + + if($this->db_query($qry)) + { + if($this->new) + { + //naechste ID aus der Sequence holen + $qry="SELECT currval('lehre.seq_studienplan_studienplan_id') as id;"; + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->studienplan_id = $row->id; + $this->db_query('COMMIT'); + } + else + { + $this->db_query('ROLLBACK'); + $this->errormsg = "Fehler beim Auslesen der Sequence"; + return false; + } + } + else + { + $this->db_query('ROLLBACK'); + $this->errormsg = 'Fehler beim Auslesen der Sequence'; + return false; + } + } + + } + else + { + $this->errormsg = 'Fehler beim Speichern des Datensatzes'; + return false; + } + return $this->studienplan_id; + } + + /** + * Loescht den Datenensatz mit der ID die uebergeben wird + * @param $studienplan_id ID die geloescht werden soll + * @return true wenn ok, false im Fehlerfall + */ + public function delete($studienplan_id) + { + //Pruefen ob studienplan_id eine gueltige Zahl ist + if(!is_numeric($studienplan_id) || $studienplan_id === '') + { + $this->errormsg = 'studienplan_id muss eine gültige Zahl sein'."\n"; + return false; + } + + //loeschen des Datensatzes + $qry="DELETE FROM public.tbl_studienplan WHERE studienplan_id=".$this->db_add_param($studienplan_id, FHC_INTEGER, false).";"; + + if($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Löschen der Daten'."\n"; + return false; + } + } + + public function cleanResult() + { + $data = array(); + + if(count($this->result)>0) + { + foreach($this->result as $row) + { + $obj = new stdClass(); + $obj->studienplan_id = $row->studienplan_id; + $obj->studienordnung_id = $row->studienordnung_id; + $obj->orgform_kurzbz = $row->orgform_kurzbz; + $obj->version = $row->version; + $obj->bezeichnung = $row->bezeichnung; + $obj->regelstudiendauer = $row->regelstudiendauer; + $obj->sprache = $row->sprache; + $obj->aktiv = $row->aktiv; + $obj->semesterwochen = $row->semesterwochen; + $obj->testtool_sprachwahl = $row->testtool_sprachwahl; + $obj->updateamum = $row->updateamum; + $obj->updatevon = $row->updatevon; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + $data[]=$obj; + } + } + else + { + $obj = new stdClass(); + $obj->studienplan_id = $this->studienplan_id; + $obj->studienordnung_id = $this->studienordnung_id; + $obj->orgform_kurzbz = $this->orgform_kurzbz; + $obj->version = $this->version; + $obj->bezeichnung = $this->bezeichnung; + $obj->regelstudiendauer = $this->regelstudiendauer; + $obj->sprache = $this->sprache; + $obj->aktiv = $this->aktiv; + $obj->semesterwochen = $this->semesterwochen; + $obj->testtool_sprachwahl = $this->testtool_sprachwahl; + $obj->updateamum = $this->updateamum; + $obj->updatevon = $this->updatevon; + $obj->insertamum = $this->insertamum; + $obj->insertvon = $this->insertvon; + $data[]=$obj; + } + return $data; + } +} +?>