diff --git a/include/reihungstest.class.php b/include/reihungstest.class.php index 9be3a4aa4..802392230 100644 --- a/include/reihungstest.class.php +++ b/include/reihungstest.class.php @@ -29,7 +29,7 @@ require_once(dirname(__FILE__).'/basis_db.class.php'); class reihungstest extends basis_db { public $new; // boolean - public $done=false; // boolean + public $done = false; // boolean public $result = array(); //Tabellenspalten @@ -44,43 +44,44 @@ class reihungstest extends basis_db public $insertvon; // bigint public $updateamum; // timestamp public $updatevon; // bigint - public $freigeschaltet=false; // boolean - public $oeffentlich=false; // boolean + public $freigeschaltet = false; // boolean + public $oeffentlich = false; // boolean public $max_teilnehmer; // integer public $studiensemester_kurzbz; //string - public $stufe; //smallint - public $anmeldefrist; //date + public $stufe; //smallint + public $anmeldefrist; //date /** * Konstruktor - * @param $reihungstest_id ID der Adresse die geladen werden soll (Default=null) + * @param int $reihungstest_id ID der Adresse die geladen werden soll (Default=null). */ - public function __construct($reihungstest_id=null) + public function __construct($reihungstest_id = null) { parent::__construct(); - if(!is_null($reihungstest_id)) + if (!is_null($reihungstest_id)) $this->load($reihungstest_id); } /** * Laedt den Reihungstest mit der ID $reihungstest_id - * @param $reihungstest_id ID des zu ladenden Reihungstests + * @param int $reihungstest_id ID des zu ladenden Reihungstests. * @return true wenn ok, false im Fehlerfall */ public function load($reihungstest_id) { - if(!is_numeric($reihungstest_id)) + if (!is_numeric($reihungstest_id)) { $this->errormsg = 'Reihungstest_id ist ungueltig'; return false; } - $qry = "SELECT * FROM public.tbl_reihungstest WHERE reihungstest_id=".$this->db_add_param($reihungstest_id, FHC_INTEGER, false); + $qry = "SELECT * FROM public.tbl_reihungstest + WHERE reihungstest_id=".$this->db_add_param($reihungstest_id, FHC_INTEGER, false); - if($this->db_query($qry)) + if ($this->db_query($qry)) { - if($row = $this->db_fetch_object()) + if ($row = $this->db_fetch_object()) { $this->reihungstest_id = $row->reihungstest_id; $this->studiengang_kz = $row->studiengang_kz; @@ -96,7 +97,7 @@ class reihungstest extends basis_db $this->max_teilnehmer = $row->max_teilnehmer; $this->oeffentlich = $this->db_parse_bool($row->oeffentlich); $this->freigeschaltet = $this->db_parse_bool($row->freigeschaltet); - $this->studiensemester_kurzbz =$row->studiensemester_kurzbz; + $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; $this->stufe = $row->stufe; $this->anmeldefrist = $row->anmeldefrist; return true; @@ -118,17 +119,19 @@ class reihungstest extends basis_db * Liefert alle Reihungstests * wenn ein Datum uebergeben wird, dann werden alle Reihungstests ab diesem * Datum zurueckgeliefert + * @param date $datum Wenn das Datum uebergeben wird, dann werden nur RT von diesem Tag geliefert (optional). + * @return boolean true wenn erfolgreich, false im Fehlerfall */ - public function getAll($datum=null) + public function getAll($datum = null) { $qry = "SELECT * FROM public.tbl_reihungstest "; - if($datum!=null) - $qry.=" WHERE datum>=".$this->db_add_param($datum); - $qry.=" ORDER BY datum DESC, uhrzeit"; + if ($datum != null) + $qry .= " WHERE datum>=".$this->db_add_param($datum); + $qry .= " ORDER BY datum DESC, uhrzeit"; - if($this->db_query($qry)) + if ($this->db_query($qry)) { - while($row = $this->db_fetch_object()) + while ($row = $this->db_fetch_object()) { $obj = new reihungstest(); @@ -146,7 +149,7 @@ class reihungstest extends basis_db $obj->max_teilnehmer = $row->max_teilnehmer; $obj->oeffentlich = $this->db_parse_bool($row->oeffentlich); $obj->freigeschaltet = $this->db_parse_bool($row->freigeschaltet); - $obj->studiensemester_kurzbz =$row->studiensemester_kurzbz; + $obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; $obj->stufe = $row->stufe; $obj->anmeldefrist = $row->anmeldefrist; @@ -165,21 +168,21 @@ class reihungstest extends basis_db * Prueft die Variablen auf Gueltigkeit * @return true wenn ok, false im Fehlerfall */ - private function validate() + private function __validate() { //Zahlenfelder pruefen - if(!is_numeric($this->studiengang_kz)) + if (!is_numeric($this->studiengang_kz)) { - $this->errormsg='studiengang_kz enthaelt ungueltige Zeichen'; + $this->errormsg = 'studiengang_kz enthaelt ungueltige Zeichen'; return false; } //Gesamtlaenge pruefen - if(mb_strlen($this->ort_kurzbz)>32) + if (mb_strlen($this->ort_kurzbz) > 32) { $this->errormsg = 'Ort_kurzbz darf nicht länger als 16 Zeichen sein'; return false; } - if(mb_strlen($this->anmerkung)>64) + if (mb_strlen($this->anmerkung) > 64) { $this->errormsg = 'Anmerkung darf nicht länger als 64 Zeichen sein'; return false; @@ -197,40 +200,41 @@ class reihungstest extends basis_db */ public function save() { - if(!$this->validate()) + if (!$this->__validate()) return false; - if($this->new) + if ($this->new) { //Neuen Datensatz einfuegen - $qry='BEGIN; INSERT INTO public.tbl_reihungstest (studiengang_kz, ort_kurzbz, anmerkung, datum, uhrzeit, - insertamum, insertvon, updateamum, updatevon, max_teilnehmer, oeffentlich, freigeschaltet, studiensemester_kurzbz, stufe, anmeldefrist) VALUES('. - $this->db_add_param($this->studiengang_kz, FHC_INTEGER).', '. - $this->db_add_param($this->ort_kurzbz).', '. - $this->db_add_param($this->anmerkung).', '. - $this->db_add_param($this->datum).', '. - $this->db_add_param($this->uhrzeit).', now(), '. - $this->db_add_param($this->insertvon).', now(), '. - $this->db_add_param($this->updatevon).','. - $this->db_add_param($this->max_teilnehmer).','. - $this->db_add_param($this->oeffentlich, FHC_BOOLEAN).','. - $this->db_add_param($this->freigeschaltet, FHC_BOOLEAN).','. - $this->db_add_param($this->studiensemester_kurzbz).','. - $this->db_add_param($this->stufe, FHC_INTEGER).','. - $this->db_add_param($this->anmeldefrist).');'; + $qry = 'BEGIN; INSERT INTO public.tbl_reihungstest (studiengang_kz, ort_kurzbz, anmerkung, datum, uhrzeit, + insertamum, insertvon, updateamum, updatevon, max_teilnehmer, oeffentlich, freigeschaltet, + studiensemester_kurzbz, stufe, anmeldefrist) VALUES('. + $this->db_add_param($this->studiengang_kz, FHC_INTEGER).', '. + $this->db_add_param($this->ort_kurzbz).', '. + $this->db_add_param($this->anmerkung).', '. + $this->db_add_param($this->datum).', '. + $this->db_add_param($this->uhrzeit).', now(), '. + $this->db_add_param($this->insertvon).', now(), '. + $this->db_add_param($this->updatevon).','. + $this->db_add_param($this->max_teilnehmer).','. + $this->db_add_param($this->oeffentlich, FHC_BOOLEAN).','. + $this->db_add_param($this->freigeschaltet, FHC_BOOLEAN).','. + $this->db_add_param($this->studiensemester_kurzbz).','. + $this->db_add_param($this->stufe, FHC_INTEGER).','. + $this->db_add_param($this->anmeldefrist).');'; } else { - $qry='UPDATE public.tbl_reihungstest SET '. + $qry = 'UPDATE public.tbl_reihungstest SET '. 'studiengang_kz='.$this->db_add_param($this->studiengang_kz, FHC_INTEGER).', '. 'ort_kurzbz='.$this->db_add_param($this->ort_kurzbz).', '. 'anmerkung='.$this->db_add_param($this->anmerkung).', '. 'datum='.$this->db_add_param($this->datum).', '. 'uhrzeit='.$this->db_add_param($this->uhrzeit).', '. - 'updateamum= now(), '. - 'updatevon='.$this->db_add_param($this->updatevon).', '. - 'max_teilnehmer='.$this->db_add_param($this->max_teilnehmer).', '. + 'updateamum= now(), '. + 'updatevon='.$this->db_add_param($this->updatevon).', '. + 'max_teilnehmer='.$this->db_add_param($this->max_teilnehmer).', '. 'oeffentlich='.$this->db_add_param($this->oeffentlich, FHC_BOOLEAN).', '. 'freigeschaltet='.$this->db_add_param($this->freigeschaltet, FHC_BOOLEAN).', '. 'studiensemester_kurzbz='.$this->db_add_param($this->studiensemester_kurzbz).', '. @@ -239,14 +243,14 @@ class reihungstest extends basis_db 'WHERE reihungstest_id='.$this->db_add_param($this->reihungstest_id, FHC_INTEGER, false).';'; } - if($this->db_query($qry)) + if ($this->db_query($qry)) { - if($this->new) + if ($this->new) { $qry = "SELECT currval('public.tbl_reihungstest_reihungstest_id_seq') as id"; - if($this->db_query($qry)) + if ($this->db_query($qry)) { - if($row = $this->db_fetch_object()) + if ($row = $this->db_fetch_object()) { $this->reihungstest_id = $row->id; $this->db_query('COMMIT'); @@ -278,28 +282,28 @@ class reihungstest extends basis_db /** * Liefert die Reihungstests eines Studienganges * - * @param $studiengang_kz - * @param $order (optional) + * @param int $studiengang_kz Kennzahl des Studiengangs. + * @param string $order Sortierung (optional). + * @param string $studiensemester_kurzbz Studiensemester Kurzbezeichnung. * @return true wenn ok, sonst false */ - public function getReihungstest($studiengang_kz,$order=null,$studiensemester_kurzbz=null) + public function getReihungstest($studiengang_kz, $order = null, $studiensemester_kurzbz = null) { $qry = "SELECT * FROM public.tbl_reihungstest WHERE 1=1 "; - if (is_numeric($studiengang_kz) && $studiengang_kz!='') - $qry .=" AND studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER, false); - if ($studiensemester_kurzbz!=null) - $qry .=" AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz, FHC_STRING, false); + if (is_numeric($studiengang_kz) && $studiengang_kz != '') + $qry .= " AND studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER, false); + if ($studiensemester_kurzbz != null) + $qry .= " AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz, FHC_STRING, false); - if ($order!=null) - $qry .=" ORDER BY ".$order; + if ($order != null) + $qry .= " ORDER BY ".$order; + $qry .= ";"; - $qry.= ";"; - - if($this->db_query($qry)) + if ($this->db_query($qry)) { - while($row = $this->db_fetch_object()) + while ($row = $this->db_fetch_object()) { $obj = new reihungstest(); @@ -335,26 +339,53 @@ class reihungstest extends basis_db /** * Liefert die Reihungstests der Zukunft und einer bestimmten ID * Und sortiert diese so, dass die des uebergebenen Studienganges zuerst geliefert werden - * @param $include_id - * @param $studiengang_kz + * @param int $include_id ReihungstestID die zusaetzlich enthalten sein soll. + * @param int $studiengang_kz Kennzahl des Studiengangs. * @return true wenn ok, sonst false */ public function getZukuenftige($include_id, $studiengang_kz) { $qry = " - SELECT *, (SELECT count(*) FROM public.tbl_prestudent WHERE reihungstest_id=a.reihungstest_id) as angemeldete_teilnehmer - FROM ( - SELECT *, '1' as sortierung,(SELECT upper(typ || kurzbz) FROM public.tbl_studiengang WHERE studiengang_kz=tbl_reihungstest.studiengang_kz) as stg FROM public.tbl_reihungstest WHERE datum>=now()-'1 days'::interval AND studiengang_kz=".$this->db_add_param($studiengang_kz)." + SELECT *, + ( + SELECT count(*) FROM public.tbl_prestudent + WHERE reihungstest_id=a.reihungstest_id + ) as angemeldete_teilnehmer + FROM + ( + SELECT *, '1' as sortierung, + ( + SELECT upper(typ || kurzbz) FROM public.tbl_studiengang + WHERE studiengang_kz=tbl_reihungstest.studiengang_kz + ) as stg + FROM + public.tbl_reihungstest + WHERE + datum>=now()-'1 days'::interval AND studiengang_kz=".$this->db_add_param($studiengang_kz)." UNION - SELECT *, '2' as sortierung,(SELECT upper(typ || kurzbz) FROM public.tbl_studiengang WHERE studiengang_kz=tbl_reihungstest.studiengang_kz) as stg FROM public.tbl_reihungstest WHERE datum>=now()-'1 days'::interval AND studiengang_kz!=".$this->db_add_param($studiengang_kz)." + SELECT *, '2' as sortierung, + ( + SELECT upper(typ || kurzbz) FROM public.tbl_studiengang + WHERE studiengang_kz=tbl_reihungstest.studiengang_kz + ) as stg + FROM + public.tbl_reihungstest + WHERE datum>=now()-'1 days'::interval AND studiengang_kz!=".$this->db_add_param($studiengang_kz)." UNION - SELECT *, '0' as sortierung,(SELECT upper(typ || kurzbz) FROM public.tbl_studiengang WHERE studiengang_kz=tbl_reihungstest.studiengang_kz) as stg FROM public.tbl_reihungstest WHERE reihungstest_id=".$this->db_add_param($include_id)." + SELECT *, '0' as sortierung, + ( + SELECT upper(typ || kurzbz) FROM public.tbl_studiengang + WHERE studiengang_kz=tbl_reihungstest.studiengang_kz + ) as stg + FROM + public.tbl_reihungstest + WHERE reihungstest_id=".$this->db_add_param($include_id)." ORDER BY sortierung, stg, datum ) a"; - if($this->db_query($qry)) + if ($this->db_query($qry)) { - while($row = $this->db_fetch_object()) + while ($row = $this->db_fetch_object()) { $obj = new reihungstest(); @@ -372,7 +403,7 @@ class reihungstest extends basis_db $obj->max_teilnehmer = $row->max_teilnehmer; $obj->oeffentlich = $this->db_parse_bool($row->oeffentlich); $obj->freigeschaltet = $this->db_parse_bool($row->freigeschaltet); - $obj->studiensemester_kurzbz =$row->studiensemester_kurzbz; + $obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; $obj->angemeldete_teilnehmer = $row->angemeldete_teilnehmer; $obj->stufe = $row->stufe; $obj->anmeldefrist = $row->anmeldefrist; @@ -388,17 +419,22 @@ class reihungstest extends basis_db } } + /** + * Liefert die Reihungstest eines studiengangs die in der Zukunft liegen + * @param int $stg Kennzahl des Studiengangs. + * @return boolean true wenn ok, false im Fehlerfall + */ public function getStgZukuenftige($stg) { - $qry = "SELECT * " - . "FROM public.tbl_reihungstest " - . "WHERE studiengang_kz = ".$this->db_add_param($stg, FHC_INTEGER)." " - . "AND datum>=now()-'1 days'::interval " - . "AND oeffentlich;"; + $qry = "SELECT * ". + "FROM public.tbl_reihungstest ". + "WHERE studiengang_kz = ".$this->db_add_param($stg, FHC_INTEGER)." ". + "AND datum>=now()-'1 days'::interval ". + "AND oeffentlich;"; - if($result = $this->db_query($qry)) + if ($result = $this->db_query($qry)) { - while($row = $this->db_fetch_object($result)) + while ($row = $this->db_fetch_object($result)) { $obj = new reihungstest(); @@ -428,51 +464,81 @@ class reihungstest extends basis_db return false; } + /** + * Laedt die Anzahl der Teilnehmer zu einem Reihungstest + * @param int $reihungstest_id ID des Reihungstests. + * @return anzahl der Teilnehmer oder false im Fehlerfall + */ public function getTeilnehmerAnzahl($reihungstest_id) { + $qry = 'SELECT + count(*) AS anzahl + FROM + public.tbl_rt_person + WHERE + reihungstest_id = '.$this->db_add_param($reihungstest_id, FHC_INTEGER); - $qry = 'SELECT count(*) AS anzahl ' - . 'FROM public.tbl_prestudent ' - . 'WHERE reihungstest_id = ' . $reihungstest_id; - - $result = $this->db_query($qry); - - $obj = $this->db_fetch_object($result); - - return $obj->anzahl; + if ($result = $this->db_query($qry)) + { + if ($row = $this->db_fetch_object($result)) + { + return $row->anzahl; + } + else + { + $this->errormsg = 'Fehler beim Laden der Teilnehmer'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Teilnehmer'; + return false; + } } + /** + * Loescht einen Rehungstest + * @param int $reihungstest_id ID des Reihungstests der geloescht werden soll. + * @return true wenn erfolgreich, false im Fehlerfall + */ public function delete($reihungstest_id) { - $qry = "DELETE from public.tbl_reihungstest WHERE reihungstest_id=".$this->db_add_param($reihungstest_id); + $qry = "DELETE FROM public.tbl_reihungstest + WHERE reihungstest_id=".$this->db_add_param($reihungstest_id, FHC_INTEGER); - if(!$this->db_query($qry)) - { - $this->errormsg = 'Fehler beim Löschen der Daten'; - return false; - } + if (!$this->db_query($qry)) + { + $this->errormsg = 'Fehler beim Löschen der Daten'; + return false; + } - return true; + return true; } /** * Laedt den Reihungstest-Person-Datensatz mit der ID $rt_person_id - * @param integer $rt_person_id ID des zu ladenden Datensatzes + * @param int $rt_person_id ID des zu ladenden Datensatzes. * @return true wenn ok, false im Fehlerfall */ public function loadReihungstestPerson($rt_person_id) { - if(!is_numeric($rt_person_id)) + if (!is_numeric($rt_person_id)) { $this->errormsg = 'rt_person_id ist ungueltig'; return false; } - $qry = "SELECT * FROM public.tbl_rt_person WHERE rt_person_id=".$this->db_add_param($rt_person_id, FHC_INTEGER, false); + $qry = "SELECT + * + FROM + public.tbl_rt_person + WHERE + rt_person_id=".$this->db_add_param($rt_person_id, FHC_INTEGER, false); - if($result = $this->db_query($qry)) + if ($result = $this->db_query($qry)) { - if($row = $this->db_fetch_object($result)) + if ($row = $this->db_fetch_object($result)) { $this->rt_person_id = $row->rt_person_id; $this->rt_id = $row->rt_id; @@ -498,6 +564,11 @@ class reihungstest extends basis_db } } + /** + * Laedt die Reihungstest Zuordnungen einer Person + * @param int $person_id ID der Person. + * @return boolean true wenn erfolgreich, false im Fehlerfall + */ public function getReihungstestPerson($person_id) { $qry = "SELECT @@ -506,9 +577,9 @@ class reihungstest extends basis_db public.tbl_rt_person WHERE tbl_rt_person.person_id=".$this->db_add_param($person_id); - if($result = $this->db_query($qry)) + if ($result = $this->db_query($qry)) { - while($row = $this->db_fetch_object($result)) + while ($row = $this->db_fetch_object($result)) { $obj = new stdClass(); @@ -532,6 +603,12 @@ class reihungstest extends basis_db } } + /** + * Liefert die Zuordnung einer Person zu einem Reihungstest + * @param int $person_id ID der Person. + * @param int $rt_id ID des Reihungstests. + * @return boolean true wenn erfolgreich, false im Fehlerfall + */ public function getPersonReihungstest($person_id, $rt_id) { $qry = "SELECT @@ -541,9 +618,9 @@ class reihungstest extends basis_db WHERE tbl_rt_person.person_id=".$this->db_add_param($person_id)." AND rt_id=".$this->db_add_param($rt_id); - if($result = $this->db_query($qry)) + if ($result = $this->db_query($qry)) { - if($row = $this->db_fetch_object($result)) + if ($row = $this->db_fetch_object($result)) { $this->rt_person_id = $row->rt_person_id; $this->rt_id = $row->rt_id; @@ -570,8 +647,8 @@ class reihungstest extends basis_db /** * Liefert die Personen, die einem Ort des Reihungstests zugeteilt sind - * @param integer $rt_id ID des Reihungstests - * @param string $ort_kurzbz Ort des Reihungstests mit der ID $rt_id + * @param int $rt_id ID des Reihungstests. + * @param string $ort_kurzbz Ort des Reihungstests mit der ID $rt_id. * @return true wenn ok, sonst false */ public function getPersonReihungstestOrt($rt_id, $ort_kurzbz) @@ -583,9 +660,9 @@ class reihungstest extends basis_db WHERE tbl_rt_person.rt_id=".$this->db_add_param($rt_id)." AND tbl_rt_person.ort_kurzbz=".$this->db_add_param($ort_kurzbz); - if($result = $this->db_query($qry)) + if ($result = $this->db_query($qry)) { - while($row = $this->db_fetch_object($result)) + while ($row = $this->db_fetch_object($result)) { $obj = new stdClass(); @@ -609,11 +686,16 @@ class reihungstest extends basis_db } } + /** + * Speichern die Zuordnung einer Person zu einem Reihungstest + * @return boolean true wenn erfolgreich, false im Fehlerfall + */ public function savePersonReihungstest() { - if($this->new) + if ($this->new) { - $qry = "BEGIN;INSERT INTO public.tbl_rt_person(person_id, rt_id, studienplan_id, anmeldedatum, teilgenommen, ort_kurzbz, punkte) VALUES(". + $qry = "BEGIN;INSERT INTO public.tbl_rt_person(person_id, rt_id, studienplan_id, anmeldedatum, + teilgenommen, ort_kurzbz, punkte) VALUES(". $this->db_add_param($this->person_id, FHC_INTEGER).','. $this->db_add_param($this->rt_id, FHC_INTEGER).','. $this->db_add_param($this->studienplan_id, FHC_INTEGER).','. @@ -625,73 +707,75 @@ class reihungstest extends basis_db else { $qry = "UPDATE public.tbl_rt_person SET ". - ' rt_id = '.$this->db_add_param($this->rt_id).','. - ' studienplan_id = '.$this->db_add_param($this->studienplan_id).','. - ' anmeldedatum='.$this->db_add_param($this->anmeldedatum).','. - ' teilgenommen='.$this->db_add_param($this->teilgenommen, FHC_BOOLEAN).','. - ' ort_kurzbz='.$this->db_add_param($this->ort_kurzbz).','. - ' punkte='.$this->db_add_param($this->punkte).' '. - ' WHERE rt_person_id='.$this->db_add_param($this->rt_person_id, FHC_INTEGER); - } + ' rt_id = '.$this->db_add_param($this->rt_id).','. + ' studienplan_id = '.$this->db_add_param($this->studienplan_id).','. + ' anmeldedatum='.$this->db_add_param($this->anmeldedatum).','. + ' teilgenommen='.$this->db_add_param($this->teilgenommen, FHC_BOOLEAN).','. + ' ort_kurzbz='.$this->db_add_param($this->ort_kurzbz).','. + ' punkte='.$this->db_add_param($this->punkte).' '. + ' WHERE rt_person_id='.$this->db_add_param($this->rt_person_id, FHC_INTEGER); + } - if($this->db_query($qry)) - { - if($this->new) - { - $qry = "SELECT currval('public.tbl_rt_person_rt_person_id_seq') as id"; - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - $this->rt_person_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; - } - } - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern der Daten'; - return false; - } + if ($this->db_query($qry)) + { + if ($this->new) + { + $qry = "SELECT currval('public.tbl_rt_person_rt_person_id_seq') as id"; + if ($this->db_query($qry)) + { + if ($row = $this->db_fetch_object()) + { + $this->rt_person_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; + } + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern der Daten'; + return false; + } } /** * Loescht einen Person Reihungstest Eintrag + * @param int $rt_person_id ID der PersonReihungstestzuordnung die geloescht werden soll. + * @return boolean true wenn erfolgreich, false im Fehlerfall. */ public function deletePersonReihungstest($rt_person_id) { $qry = "DELETE FROM public.tbl_rt_person - WHERE rt_person_id=".$this->db_add_param($rt_person_id, FHC_INTEGER); + WHERE rt_person_id=".$this->db_add_param($rt_person_id, FHC_INTEGER); - if($this->db_query($qry)) + if ($this->db_query($qry)) { return true; } else { - $this->erromsg='Fehler beim Löschen der Daten'; + $this->erromsg = 'Fehler beim Löschen der Daten'; return false; } } /** * Liefert die Orte, die einem Reihungstest zugeordnet sind - * @param integer $reihungstest_id ID des Reihungstests, dessen Ort zurueckgegeben werden sollen + * @param int $reihungstest_id ID des Reihungstests, dessen Ort zurueckgegeben werden sollen. * @return true wenn ok, sonst false */ public function getOrteReihungstest($reihungstest_id) @@ -704,9 +788,9 @@ class reihungstest extends basis_db tbl_rt_ort.rt_id=".$this->db_add_param($reihungstest_id)." ORDER BY ort_kurzbz"; - if($result = $this->db_query($qry)) + if ($result = $this->db_query($qry)) { - while($row = $this->db_fetch_object($result)) + while ($row = $this->db_fetch_object($result)) { $obj = new stdClass(); @@ -733,7 +817,7 @@ class reihungstest extends basis_db */ public function saveOrtReihungstest() { - if($this->new) + if ($this->new) { $qry = "INSERT INTO public.tbl_rt_ort(rt_id, ort_kurzbz, uid) VALUES(". $this->db_add_param($this->rt_id, FHC_INTEGER).','. @@ -743,13 +827,13 @@ class reihungstest extends basis_db else { $qry = "UPDATE public.tbl_rt_ort SET ". - ' ort_kurzbz='.$this->db_add_param($this->ort_kurzbz).','. - ' uid='.$this->db_add_param($this->uid).' '. - ' WHERE rt_id='.$this->db_add_param($this->rt_id, FHC_INTEGER).' AND '. - ' ort_kurzbz='.$this->db_add_param($this->ort_kurzbz); + ' ort_kurzbz='.$this->db_add_param($this->ort_kurzbz).','. + ' uid='.$this->db_add_param($this->uid).' '. + ' WHERE rt_id='.$this->db_add_param($this->rt_id, FHC_INTEGER).' AND '. + ' ort_kurzbz='.$this->db_add_param($this->ort_kurzbz); } - if($this->db_query($qry)) + if ($this->db_query($qry)) { return true; } @@ -762,20 +846,23 @@ class reihungstest extends basis_db /** * Loescht einen Ort zu einem Reihungstest Eintrag + * @param int $reihungstest_id ID des Reihungstests. + * @param string $ort_kurzbz Kurzbezeichnung des Orts. + * @return boolean true wenn erfolgreich, false im Fehlerfall */ public function deleteOrtReihungstest($reihungstest_id, $ort_kurzbz) { $qry = "DELETE FROM public.tbl_rt_ort - WHERE rt_id=".$this->db_add_param($reihungstest_id, FHC_INTEGER)." + WHERE rt_id=".$this->db_add_param($reihungstest_id, FHC_INTEGER)." AND ort_kurzbz=".$this->db_add_param($ort_kurzbz); - if($this->db_query($qry)) + if ($this->db_query($qry)) { return true; } else { - $this->erromsg='Fehler beim Löschen der Daten'; + $this->erromsg = 'Fehler beim Löschen der Daten'; return false; } } @@ -788,7 +875,7 @@ class reihungstest extends basis_db */ public function saveStudienplanReihungstest() { - if($this->new) + if ($this->new) { $qry = "INSERT INTO public.tbl_rt_studienplan(reihungstest_id, studienplan_id) VALUES(". $this->db_add_param($this->rt_id, FHC_INTEGER).','. @@ -802,7 +889,7 @@ class reihungstest extends basis_db ' studienplan_id='.$this->db_add_param($this->studienplan_id); } - if($this->db_query($qry)) + if ($this->db_query($qry)) { return true; } @@ -815,6 +902,7 @@ class reihungstest extends basis_db /** * Laedt alle Studienplan IDs, die einem Reihungstest zugeordnet sind + * @param int $reihungstest_id ID des Reihungstests. * @return true wenn ok, false im Fehlerfall */ public function getStudienplaeneReihungstest($reihungstest_id) @@ -827,9 +915,9 @@ class reihungstest extends basis_db tbl_rt_studienplan.reihungstest_id=".$this->db_add_param($reihungstest_id)." ORDER BY studienplan_id"; - if($result = $this->db_query($qry)) + if ($result = $this->db_query($qry)) { - while($row = $this->db_fetch_object($result)) + while ($row = $this->db_fetch_object($result)) { $obj = new stdClass(); @@ -848,27 +936,33 @@ class reihungstest extends basis_db /** * Loescht eine Studienplanzuordnung zu einem Reihungstest Eintrag - * @param $reihungstest_id integer ID des Reihungstests - * @param $studienplan_id integer ID des Studienplans - * @return true wenn ok, false im Fehlerfall + * @param int $reihungstest_id ID des Reihungstests. + * @param int $studienplan_id ID des Studienplans. + * @return true wenn ok, false im Fehlerfall. */ public function deleteStudienplanReihungstest($reihungstest_id, $studienplan_id) { $qry = "DELETE FROM public.tbl_rt_studienplan - WHERE reihungstest_id=".$this->db_add_param($reihungstest_id, FHC_INTEGER)." + WHERE reihungstest_id=".$this->db_add_param($reihungstest_id, FHC_INTEGER)." AND studienplan_id=".$this->db_add_param($studienplan_id, FHC_INTEGER); - if($this->db_query($qry)) + if ($this->db_query($qry)) { return true; } else { - $this->erromsg='Fehler beim Löschen der Studienplanzuordnung'; + $this->erromsg = 'Fehler beim Löschen der Studienplanzuordnung'; return false; } } + /** + * Liefert alle Reihungstests zu den uebergebenen StudienplanIDs + * + * @param array $studienplan_arr Array mit StudienplanIDs zu denen die RT geladen werden sollen. + * @return boolean true wenn erfolgreich, false im Fehlerfall. + */ public function getReihungstestStudienplan($studienplan_arr) { $qry = "SELECT @@ -878,9 +972,9 @@ class reihungstest extends basis_db JOIN public.tbl_rt_studienplan USING(reihungstest_id) WHERE studienplan_id IN(".$this->db_implode4Sql($studienplan_arr).")"; - if($this->db_query($qry)) + if ($this->db_query($qry)) { - while($row = $this->db_fetch_object()) + while ($row = $this->db_fetch_object()) { $obj = new reihungstest(); @@ -898,7 +992,7 @@ class reihungstest extends basis_db $obj->max_teilnehmer = $row->max_teilnehmer; $obj->oeffentlich = $this->db_parse_bool($row->oeffentlich); $obj->freigeschaltet = $this->db_parse_bool($row->freigeschaltet); - $obj->studiensemester_kurzbz =$row->studiensemester_kurzbz; + $obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; $obj->stufe = $row->stufe; $obj->anmeldefrist = $row->anmeldefrist; @@ -915,9 +1009,9 @@ class reihungstest extends basis_db /** * Laedt Reihungstests die den Suchkriterien entsprechen - * @param $datum Datum - * @param $studiensemester_kurzbz Studiensemester optional - * @param $stufe Stufe optional + * @param date $datum Datum. + * @param string $studiensemester_kurzbz Studiensemester optional. + * @param int $stufe Stufe optional. * @return boolean true wenn erfolgreich, false im Fehlerfall */ public function findReihungstest($datum, $studiensemester_kurzbz = null, $stufe = null) @@ -929,15 +1023,15 @@ class reihungstest extends basis_db WHERE datum=".$this->db_add_param($datum); - if(!is_null($studiensemester_kurzbz)) - $qry.=" AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); - if(!is_null($stufe)) - $qry.=" AND stufe=".$this->db_add_param($stufe); - $qry .=" ORDER BY reihungstest_id"; + if (!is_null($studiensemester_kurzbz)) + $qry .= " AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); + if (!is_null($stufe)) + $qry .= " AND stufe=".$this->db_add_param($stufe); + $qry .= " ORDER BY reihungstest_id"; - if($result = $this->db_query($qry)) + if ($result = $this->db_query($qry)) { - while($row = $this->db_fetch_object($result)) + while ($row = $this->db_fetch_object($result)) { $obj = new reihungstest(); @@ -955,7 +1049,7 @@ class reihungstest extends basis_db $obj->max_teilnehmer = $row->max_teilnehmer; $obj->oeffentlich = $this->db_parse_bool($row->oeffentlich); $obj->freigeschaltet = $this->db_parse_bool($row->freigeschaltet); - $obj->studiensemester_kurzbz =$row->studiensemester_kurzbz; + $obj->studiensemester_kurzbz = $row->studiensemester_kurzbz; $obj->stufe = $row->stufe; $obj->anmeldefrist = $row->anmeldefrist; diff --git a/include/studienplan.class.php b/include/studienplan.class.php index eefa21d3e..fa5493cdc 100644 --- a/include/studienplan.class.php +++ b/include/studienplan.class.php @@ -75,12 +75,12 @@ class studienplan extends basis_db { $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 @@ -1139,7 +1139,7 @@ class studienplan extends basis_db } return false; } - + /** * Sucht nach Studienordnungen, die den Kriterien entsprechen * @param string $searchItems Array aus Suchstrings @@ -1147,21 +1147,21 @@ class studienplan extends basis_db public function searchStudienplaene($searchItems) { $qry= " - SELECT DISTINCT + SELECT DISTINCT studienplan_id, tbl_studienplan.bezeichnung - FROM + FROM lehre.tbl_studienplan - JOIN + JOIN lehre.tbl_studienordnung USING (studienordnung_id) - JOIN + JOIN lehre.tbl_studienplan_semester USING (studienplan_id) - JOIN + JOIN public.tbl_studiengang USING (studiengang_kz) WHERE tbl_studienplan.aktiv=true AND tbl_studienordnung.status_kurzbz IN ('approved')"; - + foreach($searchItems as $value) $qry.=" AND ( @@ -1182,11 +1182,11 @@ class studienplan extends basis_db while($row = $this->db_fetch_object($result)) { $obj = new studienplan(); - + $obj->studienplan_id = $row->studienplan_id; $obj->bezeichnung = $row->bezeichnung; $obj->new=false; - + $this->result[] = $obj; } return true; diff --git a/system/dbupdate_3.2/migrate_reihungstest.php b/system/dbupdate_3.2/migrate_reihungstest.php index f2b2cb071..37dab50c3 100644 --- a/system/dbupdate_3.2/migrate_reihungstest.php +++ b/system/dbupdate_3.2/migrate_reihungstest.php @@ -100,7 +100,7 @@ else "; $count_zuordnungen = 0; - $count_neue_reihungsests = 0; + $count_neue_reihungstests = 0; $count_zuordnung_vorhanden = 0; if ($result = $db->db_query($qry)) @@ -114,31 +114,37 @@ else $stufe = 1; $ausbildungssemester = 1; $studiensemester_kurzbz = ''; + $orgform_kurzbz = ''; + + $prestudent_obj = new prestudent(); + if (!$prestudent_obj->getLastStatus($row->prestudent_id, '', 'Interessent')) + { + $errormsg .= 'kein Interessentenstatus für PrestudentID '.$row->prestudent_id.' gefunden'; + $error = true; + continue; + } + else + { + $studienplan_id = $prestudent_obj->studienplan_id; + $studiensemester_kurzbz = $prestudent_obj->studiensemester_kurzbz; + $orgform_kurzbz = $prestudent_obj->orgform_kurzbz; + } if ($row->reihungstest_id == '') { // Reihungstesttermin nicht eingetragen -> erstellen - $prestudent_obj = new prestudent(); - if ($prestudent_obj->getLastStatus($row->prestudent_id, '', 'Interessent')) - { - $ausbildungssemester = $prestudent_obj->ausbildungssemester; + $ausbildungssemester = $prestudent_obj->ausbildungssemester; - $stsem_obj = new studiensemester(); - if ($stsem_obj->load($prestudent_obj->studiensemester_kurzbz)) - { - $datum = $stsem_obj->start; - $studiensemester_kurzbz = $prestudent_obj->studiensemester_kurzbz; - $studienplan_id = $prestudent_obj->studienplan_id; - } - else - { - $errorsmg .= 'Fehler beim Laden des Studiensemesters'; - $error = true; - } + $stsem_obj = new studiensemester(); + if ($stsem_obj->load($prestudent_obj->studiensemester_kurzbz)) + { + $datum = $stsem_obj->start; + $studiensemester_kurzbz = $prestudent_obj->studiensemester_kurzbz; + $studienplan_id = $prestudent_obj->studienplan_id; } else { - $errormsg .= 'kein Interessentenstatus für PrestudentID '.$row->prestudent_id.' gefunden'; + $errorsmg .= 'Fehler beim Laden des Studiensemesters'; $error = true; } @@ -154,14 +160,26 @@ else { // Wenn kein Studienplan eingetragen ist, dann wird geraten $studienplanObj = new studienplan(); - $studienplanObj->getStudienplaeneFromSem($row->studiengang_kz, $studiensemester_kurzbz, $ausbildungssemester); + + // Pruefen ob ein Studienplan mit selber orgform vorhanden ist + $studienplanObj->getStudienplaeneFromSem($row->studiengang_kz, $studiensemester_kurzbz, $ausbildungssemester, $orgform_kurzbz); if (isset($studienplanObj->result[0])) $studienplan_id = $studienplanObj->result[0]->studienplan_id; else { - $error = true; - $errormsg .= 'StudienplanID nicht gefunden für '.$row->prestudent_id.' '.$row->nachname.' '.$row->vorname; + // Falls kein passender Studienplan fuer diese Orgform vorhanden ist, dann nochmal suchen + // ohne orgform + $studienplanObj = new studienplan(); + $studienplanObj->getStudienplaeneFromSem($row->studiengang_kz, $studiensemester_kurzbz, $ausbildungssemester); + + if (isset($studienplanObj->result[0])) + $studienplan_id = $studienplanObj->result[0]->studienplan_id; + else + { + $error = true; + $errormsg .= 'StudienplanID nicht gefunden für '.$row->prestudent_id.' '.$row->nachname.' '.$row->vorname; + } } } @@ -173,7 +191,6 @@ else if (!$error) { - //echo "
AddReihungstestPerson1 $reihungstest_id, $row->rt_punkte1, $studienplan_id"; if (addReihungstestPerson($row, $reihungstest_id, $row->rt_punkte1, $studienplan_id) === false) $error = true; } @@ -185,9 +202,9 @@ else $stufe = 2; $rt = new reihungstest(); $rt->load($reihungstest_id); - + if($rt->datum=='') + $rt->datum='1970-01-01'; $reihungstest_id = getReihungstest($rt->datum, $rt->studiensemester_kurzbz, $stufe, $row->studiengang_kz); - //echo "
AddReihungstestPerson2 $reihungstest_id, $row->rt_punkte2, $studienplan_id"; if (addReihungstestPerson($row, $reihungstest_id, $row->rt_punkte2, $studienplan_id) === false) $error = true; } @@ -196,9 +213,9 @@ else $stufe = 3; $rt = new reihungstest(); $rt->load($reihungstest_id); - + if($rt->datum=='') + $rt->datum='1970-01-01'; $reihungstest_id = getReihungstest($rt->datum, $rt->studiensemester_kurzbz, $stufe, $row->studiengang_kz); - //echo "
AddReihungstestPerson3 $reihungstest_id, $row->rt_punkte3, $studienplan_id"; if (addReihungstestPerson($row, $reihungstest_id, $row->rt_punkte3, $studienplan_id) === false) $error = true; } @@ -211,7 +228,7 @@ else echo '

Migration abgeschlossen


Neue Zuordnungen: '.$count_zuordnungen.'
- Neue Reihungstests: '.$count_neue_reihungsests.'
+ Neue Reihungstests: '.$count_neue_reihungstests.'
Bereits vorhandene Zuordnungen: '.$count_zuordnung_vorhanden; } echo ' @@ -277,7 +294,7 @@ function addReihungstestPerson($row, $reihungstest_id, $punkte, $studienplan_id) else { // Eintrag bereits vorhanden. - // keine weiter aktion nötig. + // keine weitere aktion nötig. $count_zuordnung_vorhanden++; return true; } @@ -285,7 +302,7 @@ function addReihungstestPerson($row, $reihungstest_id, $punkte, $studienplan_id) /** * Liefert eine ReihungstestID die den Kriterien entspricht - * Wenn es keine passenden Termin gibt, dann wird einer erstellt + * Wenn es keinen passenden Termin gibt, dann wird einer erstellt * @param date $datum Datum des Reihungstests. * @param varchar $studiensemester_kurzbz Kurzbz des Studiensemesters in dem der RT stattfindet. * @param int $stufe Stufe des Reihungstests. @@ -294,14 +311,14 @@ function addReihungstestPerson($row, $reihungstest_id, $punkte, $studienplan_id) */ function getReihungstest($datum, $studiensemester_kurzbz, $stufe, $studiengang_kz) { - global $errormsg, $error, $count_neue_reihungsests; + global $errormsg, $error, $count_neue_reihungstests; // Pruefen ob bereits ein passender Reihungstesttermin vorhanden ist $reihungstest_obj = new reihungstest(); $reihungstest_obj->findReihungstest($datum, $studiensemester_kurzbz, $stufe); if (!isset($reihungstest_obj->result[0])) { - // Wenn kein Termin gefunden wurde, dann einen neuen Anlegen + // Wenn kein Termin gefunden wurde, dann einen Neuen anlegen $reihungstest_obj = new reihungstest(); $reihungstest_obj->new = true; $reihungstest_obj->datum = $datum; @@ -314,7 +331,7 @@ function getReihungstest($datum, $studiensemester_kurzbz, $stufe, $studiengang_k if ($reihungstest_obj->save()) { $reihungstest_id = $reihungstest_obj->reihungstest_id; - $count_neue_reihungsests++; + $count_neue_reihungstests++; } else {