diff --git a/cis/menu.php b/cis/menu.php index d342f5404..5627f7b3b 100644 --- a/cis/menu.php +++ b/cis/menu.php @@ -43,75 +43,82 @@ ob_start(); -
-'; - if($content_id!=CIS_MENU_ENTRY_CONTENT) - { - echo '
  • << '.$p->t('global/zurueck').'
  • '; - } - require_once('../cms/menu.inc.php'); - drawSubmenu($content_id); - - //Gepufferten Output ausgeben - ob_end_flush(); - echo ''; -?> -
    +
    + + + +
    diff --git a/cis/private/profile/anwesenheit.php b/cis/private/profile/anwesenheit.php new file mode 100644 index 000000000..8a2056eb4 --- /dev/null +++ b/cis/private/profile/anwesenheit.php @@ -0,0 +1,144 @@ +. + * + * Authors: Robert Hofer + */ + +/* + * Zeigt die bisherige Anwesenheit eines Studenten im aktuellen Semester bei LVAs + */ + +require_once('../../../config/cis.config.inc.php'); +require_once('../../../config/global.config.inc.php'); +require_once('../../../include/basis_db.class.php'); +require_once('../../../include/functions.inc.php'); +require_once('../../../include/anwesenheit.class.php'); +require_once('../../../include/phrasen.class.php'); +require_once('../../../include/studiensemester.class.php'); +require_once('../../../include/student.class.php'); +require_once('../../../include/prestudent.class.php'); +require_once('../../../include/stundenplan.class.php'); + +$uid = get_uid(); +//$uid = 'if14b001'; +//$uid = 'wi13b120'; +//$uid = 'ia06b172'; + +$benutzer = new benutzer(); +if(!$benutzer->load($uid)) +{ + die('Benutzer nicht gefunden'); +} + +$p = new phrasen(getSprache()); + +$student = new student; +$stundenplan = new stundenplan('stundenplan'); +$anwesenheit = new anwesenheit; + +$prestudent = new prestudent; +$alle_semester = $prestudent->getSemesterZuUid($uid); + +$semester = filter_input(INPUT_GET, 'semester'); + +if(!$semester || !array_key_exists($semester, $alle_semester)) +{ + end($alle_semester); + $semester = key($alle_semester); +} + +$student->get_lv($uid, $semester); +?> + + + + <?php echo $p->t('lvaliste/anwesenheit') ?> + + + + + + + + result): ?> + +
    + +
    + + result as $lv): + + $stunden_gesamt = $stundenplan->getStunden($lv->lehreinheit_id); + + if(!$stunden_gesamt) + { + continue; + } + + $fehlstunden = $anwesenheit->getAnwesenheit($uid, $lv->lehreinheit_id); + $le_erledigt = $fehlstunden + $anwesenheit->getAnwesenheit($uid, $lv->lehreinheit_id, true); + $anwesenheit_relativ = ($stunden_gesamt - $fehlstunden) / $stunden_gesamt * 100; + ?> +
    +
    + bezeichnung ?> + (lehrform_kurzbz ?>) +
    +
    +
    +
    +
    + % + LE abgeschlossen: [/] + + + + >> +
    + getAbwesendTermine($uid, $lv->lehreinheit_id); ?> + + + + + + + +
    datum ?>einheiten ?>
    +
    + + +
    +
    + + + Es konnten keine Lehrveranstaltungen gefunden werden. + + + + diff --git a/cis/private/profile/anwesenheit_lektor.php b/cis/private/profile/anwesenheit_lektor.php new file mode 100644 index 000000000..c6237e298 --- /dev/null +++ b/cis/private/profile/anwesenheit_lektor.php @@ -0,0 +1,170 @@ +. + * + * Authors: Robert Hofer + */ + +/* + * Zeigt die bisherige Anwesenheit eines Studenten im aktuellen Semester bei LVAs + */ + +require_once('../../../config/cis.config.inc.php'); +require_once('../../../config/global.config.inc.php'); +require_once('../../../include/basis_db.class.php'); +require_once('../../../include/functions.inc.php'); +require_once('../../../include/phrasen.class.php'); +require_once('../../../include/benutzer.class.php'); +require_once('../../../include/lehreinheit.class.php'); +require_once('../../../include/lehreinheitmitarbeiter.class.php'); +require_once('../../../include/stundenplan.class.php'); +require_once('../../../include/anwesenheit.class.php'); + +$uid = get_uid(); +//$uid = 'himmel'; + +$benutzer = new benutzer(); +if(!$benutzer->load($uid) || !check_lektor($uid)) +{ + die('nicht berechtigt'); +} + +$p = new phrasen(getSprache()); + +$lehreinheitObj = new lehreinheit; +$lema = new lehreinheitmitarbeiter; +$stundenplan = new stundenplan('stundenplan'); +$anwesenheit = new anwesenheit; +$alle_semester = $lema->getSemesterZuLektor($uid); + +$semester = filter_input(INPUT_GET, 'semester'); +$lehreinheit_id = filter_input(INPUT_GET, 'lehreinheit', FILTER_SANITIZE_NUMBER_INT); + +if(!$semester || !array_key_exists($semester, $alle_semester)) +{ + end($alle_semester); + $semester = key($alle_semester); +} + +$lehreinheiten = $lema->getLehreinheiten($uid, $semester); + +if(!array_key_exists($lehreinheit_id, $lehreinheiten)) +{ + $lehreinheit_id = null; +} + +if($lehreinheit_id) +{ + $studenten = $lehreinheitObj->getStudenten($lehreinheit_id); +} +?> + + + + <?php echo $p->t('lvaliste/anwesenheit/studenten') ?> + + + + + + + + +
    + + +
    + getStunden($lehreinheit_id); + } + + if(!$lehreinheit_id): ?> + Bitte LV auswählen. + + Keine Stunden eingetragen. + getAnwesenheit($student->uid, $lehreinheit_id); + $le_erledigt = $fehlstunden + $anwesenheit->getAnwesenheit($student->uid, $lehreinheit_id, true); + $anwesenheit_relativ = ($stunden_gesamt - $fehlstunden) / $stunden_gesamt * 100; + ?> + +
    +
    + nachname ?> + vorname ?> +
    +
    +
    +
    +
    + % + LE abgeschlossen: [/] + + + + >> +
    + getAbwesendTermine($uid, $lv->lehreinheit_id); ?> + + + + + + + +
    datum ?>einheiten ?>
    +
    + + +
    +
    + + + + + + + diff --git a/cms/menu.inc.php b/cms/menu.inc.php index b3dc81cb8..136187f70 100755 --- a/cms/menu.inc.php +++ b/cms/menu.inc.php @@ -59,7 +59,7 @@ function drawSubmenu($content_id) // Baumstruktur laden $childsobject = $content->getChildArray($content_id); - + // Menue rausschreiben drawSubmenu1($content_id); diff --git a/cms/menu/menu_addon_meinelv.inc.php b/cms/menu/menu_addon_meinelv.inc.php index 217e640b3..1ef93247d 100755 --- a/cms/menu/menu_addon_meinelv.inc.php +++ b/cms/menu/menu_addon_meinelv.inc.php @@ -80,6 +80,11 @@ class menu_addon_meinelv extends menu_addon ); } } + + $this->items[] = array('title'=>$p->t("lvaliste/anwesenheit"), + 'target'=>'content', + 'link'=>'private/profile/anwesenheit.php', + 'name'=>$p->t("lvaliste/anwesenheit")); } else echo "Fehler beim Auslesen der LV"; @@ -106,8 +111,13 @@ class menu_addon_meinelv extends menu_addon { $this->items[] = array('title'=>$p->t("lvaliste/titel"), 'target'=>'content', - 'link'=>'private/profile/lva_liste.php', - 'name'=>$p->t("lvaliste/titel")); + 'link'=>'private/profile/lva_liste.php', + 'name'=>$p->t("lvaliste/titel")); + + $this->items[] = array('title'=>$p->t("lvaliste/anwesenheit/studenten"), + 'target'=>'content', + 'link'=>'private/profile/anwesenheit.php', + 'name'=>$p->t("lvaliste/anwesenheit/studenten")); while($row = $this->db_fetch_object($result)) { @@ -161,4 +171,3 @@ class menu_addon_meinelv extends menu_addon } new menu_addon_meinelv(); -?> diff --git a/include/anwesenheit.class.php b/include/anwesenheit.class.php index 080d0c1a8..2b5abf6cf 100644 --- a/include/anwesenheit.class.php +++ b/include/anwesenheit.class.php @@ -281,5 +281,72 @@ class anwesenheit extends basis_db return false; } } + + /** + * Liefert für Student und Einheit wieviel Einheiten als anwesend/abwesend + * eingetragen sind. + * + * @param string $uid + * @param int $lehreinheit_id + * @param bool $anwesend + * @return int + */ + public function getAnwesenheit($uid, $lehreinheit_id, $anwesend = FALSE) + { + $qry = 'SELECT sum(einheiten) AS einheiten ' + . 'FROM campus.tbl_anwesenheit ' + . 'WHERE uid = ' . $this->db_add_param($uid) + . ' AND lehreinheit_id = ' . $this->db_add_param($lehreinheit_id, FHC_INTEGER) + . ' AND anwesend = ' . $this->db_add_param($anwesend, FHC_BOOLEAN); + + $result = $this->db_query($qry); + $row = $this->db_fetch_object($result); + + return $row->einheiten; + } + + /** + * Liefert die Termine an denen eine Abwesenheit eingetragen ist. + * + * @param string $uid + * @param int $lehreinheit_id + * @return array + */ + public function getAbwesendTermine($uid, $lehreinheit_id) + { + + $qry = 'SELECT datum, einheiten ' + . 'FROM campus.tbl_anwesenheit ' + . 'WHERE uid = ' . $this->db_add_param($uid) + . ' AND lehreinheit_id = ' . $this->db_add_param($lehreinheit_id) + . ' AND anwesend = FALSE ' + . 'ORDER BY datum'; + + $result = $this->db_query($qry); + $ret_obj = array(); + + while($row = $this->db_fetch_object($result)) + { + $ret_obj[] = $row; + } + + return $ret_obj; + } + + public function getAmpel($anwesenheit_relativ) + { + + if($anwesenheit_relativ < 70) + { + return 'red'; + } + elseif($anwesenheit_relativ < 90) + { + return 'yellow'; + } + else + { + return 'green'; + } + } } -?> diff --git a/include/lehreinheit.class.php b/include/lehreinheit.class.php index 77b687a81..4f308366b 100644 --- a/include/lehreinheit.class.php +++ b/include/lehreinheit.class.php @@ -1006,5 +1006,30 @@ class lehreinheit extends basis_db return false; } } + + /** + * Liefert Studenten die einer Lehreinheit zugeordnet sind. + * + * @param int $lehreinheit_id + * @return array + */ + public function getStudenten($lehreinheit_id) + { + $qry = 'SELECT uid, vorname, nachname ' + . 'FROM campus.vw_student_lehrveranstaltung ' + . 'JOIN campus.vw_student ' + . 'USING (uid) ' + . 'WHERE lehreinheit_id = ' . $this->db_add_param($lehreinheit_id, FHC_INTEGER) + . ' ORDER BY nachname'; + + $result = $this->db_query($qry); + $ret = array(); + + while($row = $this->db_fetch_object($result)) + { + $ret[] = $row; + } + + return $ret; + } } -?> diff --git a/include/lehreinheitmitarbeiter.class.php b/include/lehreinheitmitarbeiter.class.php index 658d060d9..8b40888df 100644 --- a/include/lehreinheitmitarbeiter.class.php +++ b/include/lehreinheitmitarbeiter.class.php @@ -1,437 +1,490 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ -require_once(dirname(__FILE__).'/basis_db.class.php'); - -class lehreinheitmitarbeiter extends basis_db -{ - public $new; // boolean - public $lehreinheitmitarbeiter = array(); // lehreinheitmitarbeiter Objekt - - //Tabellenspalten - public $lehreinheit_id; // integer - public $mitarbeiter_uid; // varchar(16) - public $mitarbeiter_uid_old; // verwendet bei Update der UID - public $semesterstunden; // smalint - public $planstunden; // smalint - public $stundensatz; // numeric(6,2) - public $faktor; // numeric(2,1) - public $anmerkung; // varchar(256) - public $lehrfunktion_kurzbz; // varchar(16) - public $bismelden; // boolean - public $insertamum; // timestamp - public $insertvon; // varchar(16) - public $updateamum; // timestamp - public $updatevon; // varchar(16) - public $ext_id; // bigint - public $vertrag_id; - - /** - * Konstruktor - Laedt optional einee LEMitarbeiterzuordnung - * @param $lehreinheit_id - * @param $uid - */ - public function __construct($lehreinheit_id=null, $mitarbeiter_uid=null) - { - parent::__construct(); - - if(!is_null($lehreinheit_id) && !is_null($mitarbeiter_uid)) - $this->load($lehreinheit_id, $mitarbeiter_uid); - } - - /** - * Laedt die LEMitarbeiterzuordnung - * @param lehreinheit_id - * @param mitarbeiter_uid - * @return boolean - */ - public function load($lehreinheit_id, $mitarbeiter_uid=null) - { - if(!is_numeric($lehreinheit_id)) - { - $this->errormsg = 'Lehreinheit_id ist ungueltig'; - return false; - } - - $qry = "SELECT * FROM lehre.tbl_lehreinheitmitarbeiter - WHERE lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER)." AND mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid).';'; - - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - $this->lehreinheit_id = $row->lehreinheit_id; - $this->mitarbeiter_uid = $row->mitarbeiter_uid; - $this->lehrfunktion_kurzbz = $row->lehrfunktion_kurzbz; - $this->semesterstunden = $row->semesterstunden; - $this->planstunden = $row->planstunden; - $this->stundensatz = $row->stundensatz; - $this->faktor = $row->faktor; - $this->anmerkung = $row->anmerkung; - $this->bismelden = $this->db_parse_bool($row->bismelden); - $this->updateamum = $row->updateamum; - $this->updatevon = $row->updatevon; - $this->insertamum = $row->insertamum; - $this->insertvon = $row->insertvon; - $this->ext_id = $row->ext_id; - $this->new=false; - return true; - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - /** - * Laedt die Lektoren einer Lehreinheit - * @param lehreinheit_id - * @return array + true wenn ok / false im Fehlerfall - */ - public function getLehreinheitmitarbeiter($lehreinheit_id, $mitarbeiter_uid=null) - { - if(!is_numeric($lehreinheit_id)) - { - $this->errormsg = 'Lehreinheit_id ist ungueltig'; - return false; - } - - $qry = "SELECT * FROM lehre.tbl_lehreinheitmitarbeiter WHERE lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER); - if($mitarbeiter_uid!=null) - $qry.=" AND mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid); - $qry .=" ORDER BY mitarbeiter_uid;"; - - if($this->db_query($qry)) - { - while($row = $this->db_fetch_object()) - { - $obj = new lehreinheitmitarbeiter(); - $obj->lehreinheit_id = $row->lehreinheit_id; - $obj->mitarbeiter_uid = $row->mitarbeiter_uid; - $obj->lehrfunktion_kurzbz = $row->lehrfunktion_kurzbz; - $obj->semesterstunden = $row->semesterstunden; - $obj->planstunden = $row->planstunden; - $obj->stundensatz = $row->stundensatz; - $obj->faktor = $row->faktor; - $obj->anmerkung = $row->anmerkung; - $obj->bismelden = $this->db_parse_bool($row->bismelden); - $obj->updateamum = $row->updateamum; - $obj->updatevon = $row->updatevon; - $obj->insertamum = $row->insertamum; - $obj->insertvon = $row->insertvon; - $obj->ext_id = $row->ext_id; - - $this->lehreinheitmitarbeiter[] = $obj; - } - return true; - } - - return false; - } - - /** - * Prueft die Variablen vor dem Speichern - * auf Gueltigkeit. - * @return true wenn ok, false im Fehlerfall - */ - protected function validate() - { - if($this->stundensatz!='' && !is_numeric($this->stundensatz)) - { - $this->errormsg = 'Stundensatz muss eine gueltige Zahl sein'; - return false; - } - if($this->planstunden!='' && !is_numeric($this->planstunden)) - { - $this->errormsg = 'Planstunden muss eine gueltige Zahl sein'; - return false; - } - - if($this->semesterstunden!='' && !is_numeric($this->semesterstunden)) - { - $this->errormsg = 'Semesterstunden muss eine gueltige Zahl sein'; - return false; - } - if($this->faktor!='' && !is_numeric($this->faktor)) - { - $this->errormsg = 'Faktor muss eine gueltige Zahl sein'; - return false; - } - if(mb_strlen($this->anmerkung)>255) - { - $this->errormsg = 'Anmerkung darf nicht laenger als 255 Zeichen sein.'; - return false; - } - - return true; - } - - /** - * Speichert LEMitarbeiter in die Datenbank - * Wenn $new auf true gesetzt ist wird ein neuer Datensatz - * angelegt, ansonsten der Datensatz upgedated - * @return true wenn erfolgreich, false im Fehlerfall - */ - public function save($new=null) - { - if(is_null($new)) - $new = $this->new; - - //Variablen auf Gueltigkeit pruefen - if(!$this->validate()) - return false; - - if(!$this->planstunden=='') - $this->planstunden = (int)mb_str_replace(',', '.', $this->planstunden); - $this->semesterstunden = mb_str_replace(',', '.', $this->semesterstunden); - - if($new) - { - //Pruefen ob dieser Mitarbeiter schon zugeordnet ist - $qry = "SELECT * FROM lehre.tbl_lehreinheitmitarbeiter WHERE lehreinheit_id=".$this->db_add_param($this->lehreinheit_id, FHC_INTEGER)." AND mitarbeiter_uid=".$this->db_add_param($this->mitarbeiter_uid).';'; - if($this->db_query($qry)) - { - if($this->db_num_rows()>0) - { - $this->errormsg='Der Mitarbeiter ist bereits zugeteilt!'; - return false; - } - } - else - { - $this->errormsg='Fehler beim Pruefen der Zuordnung'; - return false; - } - - //ToDo ID entfernen - $qry = 'INSERT INTO lehre.tbl_lehreinheitmitarbeiter (lehreinheit_id, mitarbeiter_uid, semesterstunden, planstunden, - stundensatz, faktor, anmerkung, lehrfunktion_kurzbz, bismelden, ext_id, insertamum, insertvon, vertrag_id) - VALUES('.$this->db_add_param($this->lehreinheit_id, FHC_INTEGER).','. - $this->db_add_param($this->mitarbeiter_uid).','. - $this->db_add_param($this->semesterstunden).','. - $this->db_add_param($this->planstunden, FHC_INTEGER).','. - $this->db_add_param($this->stundensatz).','. - $this->db_add_param($this->faktor).','. - $this->db_add_param($this->anmerkung).','. - $this->db_add_param($this->lehrfunktion_kurzbz).','. - $this->db_add_param($this->bismelden, FHC_BOOLEAN).','. - $this->db_add_param($this->ext_id, FHC_INTEGER).','. - $this->db_add_param($this->insertamum).','. - $this->db_add_param($this->insertvon).','. - $this->db_add_param($this->vertrag_id).');'; - } - else - { - if($this->mitarbeiter_uid_old=='') - $this->mitarbeiter_uid_old = $this->mitarbeiter_uid; - - //Wenn der Lektor geaendert wird, dann wird insertamum und insertvon neu gesetzt - //damit in den Cronjobs erkannt wird welche Lektoren an diesem Tag geaendert wurden. - $setinsert=''; - if($this->mitarbeiter_uid_old!=$this->mitarbeiter_uid) - { - $setinsert=", insertamum='".date('Y-m-d H:i:s')."', insertvon=".$this->db_add_param($this->updatevon); - } - - $qry = 'UPDATE lehre.tbl_lehreinheitmitarbeiter SET'. - ' semesterstunden='.$this->db_add_param($this->semesterstunden).','. - ' planstunden='.$this->db_add_param($this->planstunden, FHC_INTEGER).','. - ' stundensatz='.$this->db_add_param($this->stundensatz).','. - ' faktor='.$this->db_add_param($this->faktor).','. - ' anmerkung='.$this->db_add_param($this->anmerkung).','. - ' lehrfunktion_kurzbz='.$this->db_add_param($this->lehrfunktion_kurzbz).','. - ' mitarbeiter_uid='.$this->db_add_param($this->mitarbeiter_uid).','. - ' bismelden='.$this->db_add_param($this->bismelden, FHC_BOOLEAN).','. - ' updateamum='.$this->db_add_param($this->updateamum).','. - ' updatevon='.$this->db_add_param($this->updatevon).','. - ' vertrag_id='.$this->db_add_param($this->vertrag_id).','. - ' ext_id = '.$this->db_add_param($this->ext_id, FHC_INTEGER). - $setinsert. - " WHERE lehreinheit_id=".$this->db_add_param($this->lehreinheit_id, FHC_INTEGER)." AND - mitarbeiter_uid=".$this->db_add_param($this->mitarbeiter_uid_old).";"; - } - - if($this->db_query($qry)) - { - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern der LEMitarbeiter:'.$this->db_last_error(); - return false; - } - } - - /** - * Prueft ob die Kombination Lehreinheit-Mitarbeiter - * bereits existiert - * @param $lehreinheit_id - * @param $uid - * @return true wenn die zuteilung existiert sonst false - */ - public function exists($lehreinheit_id, $uid) - { - if(!is_numeric($lehreinheit_id)) - { - $this->errormsg = 'lehreinheit_id muss eine gueltige Zahl sein'; - return false; - } - - $qry = "SELECT * FROM lehre.tbl_lehreinheitmitarbeiter - WHERE lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER)." AND mitarbeiter_uid=".$this->db_add_param($uid).';'; - if($this->db_query($qry)) - { - if($this->db_num_rows()>0) - return true; - else - return false; - } - else - { - $this->errormsg = 'Fehler beim Lesen der Lehreinheitmitarbeiterzuteilung'; - return false; - } - } - - /** - * Prueft ob ein Mitarbeiter einer LV zugeordnet ist - * @param $lehrveranstaltung_id - * @param $studiensemester_kurzbz - * @param $uid - * @return true wenn die Zuteilung existiert sonst false - */ - public function existsLV($lehrveranstaltung_id, $studiensemester_kurzbz, $uid) - { - if(!is_numeric($lehrveranstaltung_id)) - { - $this->errormsg = 'lehrveranstaltung_id muss eine gueltige Zahl sein'; - return false; - } - - $qry = "SELECT - 1 - FROM - lehre.tbl_lehreinheitmitarbeiter - JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) - WHERE - lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)." - AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)." - AND mitarbeiter_uid=".$this->db_add_param($uid).';'; - - if($this->db_query($qry)) - { - if($this->db_num_rows()>0) - return true; - else - return false; - } - else - { - $this->errormsg = 'Fehler beim Lesen der Lehreinheitmitarbeiterzuteilung'; - return false; - } - } - - /** - * Loescht die Zuteilung eines Mitarbeiters - * zu einer Lehreinheit - * @param $lehreinheit_id - * @param $mitarbeiter_uid - * @return true wenn ok, false im fehlerfall - */ - public function delete($lehreinheit_id, $mitarbeiter_uid) - { - if(!is_numeric($lehreinheit_id)) - { - $this->errormsg = 'Lehreinheit_id ist ungueltig'; - return false; - } - $qry_del = "DELETE FROM lehre.tbl_lehreinheitmitarbeiter WHERE lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER)." AND mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid).";"; - $qry = "SELECT * FROM lehre.tbl_lehreinheitmitarbeiter WHERE lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER)." AND mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid).";"; - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - $undo = 'INSERT INTO lehre.tbl_lehreinheitmitarbeiter (lehreinheit_id, mitarbeiter_uid, semesterstunden, planstunden, '. - ' stundensatz, faktor, anmerkung, lehrfunktion_kurzbz, bismelden, ext_id, insertamum, insertvon, updateamum, updatevon)'. - ' VALUES('.$this->db_add_param($row->lehreinheit_id, FHC_INTEGER).','. - $this->db_add_param($row->mitarbeiter_uid).','. - $this->db_add_param($row->semesterstunden).','. - $this->db_add_param($row->planstunden, FHC_INTEGER).','. - $this->db_add_param($row->stundensatz).','. - $this->db_add_param($row->faktor).','. - $this->db_add_param($row->anmerkung).','. - $this->db_add_param($row->lehrfunktion_kurzbz).','. - $this->db_add_param($this->db_parse_bool($row->bismelden), FHC_BOOLEAN).','. - $this->db_add_param($row->ext_id, FHC_INTEGER).','. - $this->db_add_param($row->insertamum).','. - $this->db_add_param($row->insertvon).','. - $this->db_add_param($row->updateamum).','. - $this->db_add_param($row->updatevon).');'; - - $log = new log(); - $log->sqlundo = $undo; - $log->sql = $qry_del; - $log->mitarbeiter_uid = get_uid(); - $log->beschreibung = "Lektorzuteilung loeschen $mitarbeiter_uid - $lehreinheit_id"; - $this->db_query('BEGIN;'); - if($log->save(true)) - { - if($this->db_query($qry_del)) - { - $this->db_query('COMMIT;'); - return true; - } - else - { - $this->db_query('ROLLBACK;'); - $this->errormsg = 'Fehler beim Loeschen der Zuteilung'; - return false; - } - } - else - { - $this->db_query('ROLLBACK;'); - $this->errormsg = 'UNDO Eintrag konnte nicht erstellt werden'; - return false; - } - } - else - { - $this->errormsg = 'Datensatz wurde nicht gefunden'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Lesen der Daten'; - return false; - } - } -} -?> +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ +require_once(dirname(__FILE__).'/basis_db.class.php'); + +class lehreinheitmitarbeiter extends basis_db +{ + public $new; // boolean + public $lehreinheitmitarbeiter = array(); // lehreinheitmitarbeiter Objekt + + //Tabellenspalten + public $lehreinheit_id; // integer + public $mitarbeiter_uid; // varchar(16) + public $mitarbeiter_uid_old; // verwendet bei Update der UID + public $semesterstunden; // smalint + public $planstunden; // smalint + public $stundensatz; // numeric(6,2) + public $faktor; // numeric(2,1) + public $anmerkung; // varchar(256) + public $lehrfunktion_kurzbz; // varchar(16) + public $bismelden; // boolean + public $insertamum; // timestamp + public $insertvon; // varchar(16) + public $updateamum; // timestamp + public $updatevon; // varchar(16) + public $ext_id; // bigint + public $vertrag_id; + + /** + * Konstruktor - Laedt optional einee LEMitarbeiterzuordnung + * @param $lehreinheit_id + * @param $uid + */ + public function __construct($lehreinheit_id=null, $mitarbeiter_uid=null) + { + parent::__construct(); + + if(!is_null($lehreinheit_id) && !is_null($mitarbeiter_uid)) + $this->load($lehreinheit_id, $mitarbeiter_uid); + } + + /** + * Laedt die LEMitarbeiterzuordnung + * @param lehreinheit_id + * @param mitarbeiter_uid + * @return boolean + */ + public function load($lehreinheit_id, $mitarbeiter_uid=null) + { + if(!is_numeric($lehreinheit_id)) + { + $this->errormsg = 'Lehreinheit_id ist ungueltig'; + return false; + } + + $qry = "SELECT * FROM lehre.tbl_lehreinheitmitarbeiter + WHERE lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER)." AND mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid).';'; + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->lehreinheit_id = $row->lehreinheit_id; + $this->mitarbeiter_uid = $row->mitarbeiter_uid; + $this->lehrfunktion_kurzbz = $row->lehrfunktion_kurzbz; + $this->semesterstunden = $row->semesterstunden; + $this->planstunden = $row->planstunden; + $this->stundensatz = $row->stundensatz; + $this->faktor = $row->faktor; + $this->anmerkung = $row->anmerkung; + $this->bismelden = $this->db_parse_bool($row->bismelden); + $this->updateamum = $row->updateamum; + $this->updatevon = $row->updatevon; + $this->insertamum = $row->insertamum; + $this->insertvon = $row->insertvon; + $this->ext_id = $row->ext_id; + $this->new=false; + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Laedt die Lektoren einer Lehreinheit + * @param lehreinheit_id + * @return array + true wenn ok / false im Fehlerfall + */ + public function getLehreinheitmitarbeiter($lehreinheit_id, $mitarbeiter_uid=null) + { + if(!is_numeric($lehreinheit_id)) + { + $this->errormsg = 'Lehreinheit_id ist ungueltig'; + return false; + } + + $qry = "SELECT * FROM lehre.tbl_lehreinheitmitarbeiter WHERE lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER); + if($mitarbeiter_uid!=null) + $qry.=" AND mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid); + $qry .=" ORDER BY mitarbeiter_uid;"; + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $obj = new lehreinheitmitarbeiter(); + $obj->lehreinheit_id = $row->lehreinheit_id; + $obj->mitarbeiter_uid = $row->mitarbeiter_uid; + $obj->lehrfunktion_kurzbz = $row->lehrfunktion_kurzbz; + $obj->semesterstunden = $row->semesterstunden; + $obj->planstunden = $row->planstunden; + $obj->stundensatz = $row->stundensatz; + $obj->faktor = $row->faktor; + $obj->anmerkung = $row->anmerkung; + $obj->bismelden = $this->db_parse_bool($row->bismelden); + $obj->updateamum = $row->updateamum; + $obj->updatevon = $row->updatevon; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + $obj->ext_id = $row->ext_id; + + $this->lehreinheitmitarbeiter[] = $obj; + } + return true; + } + + return false; + } + + /** + * Prueft die Variablen vor dem Speichern + * auf Gueltigkeit. + * @return true wenn ok, false im Fehlerfall + */ + protected function validate() + { + if($this->stundensatz!='' && !is_numeric($this->stundensatz)) + { + $this->errormsg = 'Stundensatz muss eine gueltige Zahl sein'; + return false; + } + if($this->planstunden!='' && !is_numeric($this->planstunden)) + { + $this->errormsg = 'Planstunden muss eine gueltige Zahl sein'; + return false; + } + + if($this->semesterstunden!='' && !is_numeric($this->semesterstunden)) + { + $this->errormsg = 'Semesterstunden muss eine gueltige Zahl sein'; + return false; + } + if($this->faktor!='' && !is_numeric($this->faktor)) + { + $this->errormsg = 'Faktor muss eine gueltige Zahl sein'; + return false; + } + if(mb_strlen($this->anmerkung)>255) + { + $this->errormsg = 'Anmerkung darf nicht laenger als 255 Zeichen sein.'; + return false; + } + + return true; + } + + /** + * Speichert LEMitarbeiter in die Datenbank + * Wenn $new auf true gesetzt ist wird ein neuer Datensatz + * angelegt, ansonsten der Datensatz upgedated + * @return true wenn erfolgreich, false im Fehlerfall + */ + public function save($new=null) + { + if(is_null($new)) + $new = $this->new; + + //Variablen auf Gueltigkeit pruefen + if(!$this->validate()) + return false; + + if(!$this->planstunden=='') + $this->planstunden = (int)mb_str_replace(',', '.', $this->planstunden); + $this->semesterstunden = mb_str_replace(',', '.', $this->semesterstunden); + + if($new) + { + //Pruefen ob dieser Mitarbeiter schon zugeordnet ist + $qry = "SELECT * FROM lehre.tbl_lehreinheitmitarbeiter WHERE lehreinheit_id=".$this->db_add_param($this->lehreinheit_id, FHC_INTEGER)." AND mitarbeiter_uid=".$this->db_add_param($this->mitarbeiter_uid).';'; + if($this->db_query($qry)) + { + if($this->db_num_rows()>0) + { + $this->errormsg='Der Mitarbeiter ist bereits zugeteilt!'; + return false; + } + } + else + { + $this->errormsg='Fehler beim Pruefen der Zuordnung'; + return false; + } + + //ToDo ID entfernen + $qry = 'INSERT INTO lehre.tbl_lehreinheitmitarbeiter (lehreinheit_id, mitarbeiter_uid, semesterstunden, planstunden, + stundensatz, faktor, anmerkung, lehrfunktion_kurzbz, bismelden, ext_id, insertamum, insertvon, vertrag_id) + VALUES('.$this->db_add_param($this->lehreinheit_id, FHC_INTEGER).','. + $this->db_add_param($this->mitarbeiter_uid).','. + $this->db_add_param($this->semesterstunden).','. + $this->db_add_param($this->planstunden, FHC_INTEGER).','. + $this->db_add_param($this->stundensatz).','. + $this->db_add_param($this->faktor).','. + $this->db_add_param($this->anmerkung).','. + $this->db_add_param($this->lehrfunktion_kurzbz).','. + $this->db_add_param($this->bismelden, FHC_BOOLEAN).','. + $this->db_add_param($this->ext_id, FHC_INTEGER).','. + $this->db_add_param($this->insertamum).','. + $this->db_add_param($this->insertvon).','. + $this->db_add_param($this->vertrag_id).');'; + } + else + { + if($this->mitarbeiter_uid_old=='') + $this->mitarbeiter_uid_old = $this->mitarbeiter_uid; + + //Wenn der Lektor geaendert wird, dann wird insertamum und insertvon neu gesetzt + //damit in den Cronjobs erkannt wird welche Lektoren an diesem Tag geaendert wurden. + $setinsert=''; + if($this->mitarbeiter_uid_old!=$this->mitarbeiter_uid) + { + $setinsert=", insertamum='".date('Y-m-d H:i:s')."', insertvon=".$this->db_add_param($this->updatevon); + } + + $qry = 'UPDATE lehre.tbl_lehreinheitmitarbeiter SET'. + ' semesterstunden='.$this->db_add_param($this->semesterstunden).','. + ' planstunden='.$this->db_add_param($this->planstunden, FHC_INTEGER).','. + ' stundensatz='.$this->db_add_param($this->stundensatz).','. + ' faktor='.$this->db_add_param($this->faktor).','. + ' anmerkung='.$this->db_add_param($this->anmerkung).','. + ' lehrfunktion_kurzbz='.$this->db_add_param($this->lehrfunktion_kurzbz).','. + ' mitarbeiter_uid='.$this->db_add_param($this->mitarbeiter_uid).','. + ' bismelden='.$this->db_add_param($this->bismelden, FHC_BOOLEAN).','. + ' updateamum='.$this->db_add_param($this->updateamum).','. + ' updatevon='.$this->db_add_param($this->updatevon).','. + ' vertrag_id='.$this->db_add_param($this->vertrag_id).','. + ' ext_id = '.$this->db_add_param($this->ext_id, FHC_INTEGER). + $setinsert. + " WHERE lehreinheit_id=".$this->db_add_param($this->lehreinheit_id, FHC_INTEGER)." AND + mitarbeiter_uid=".$this->db_add_param($this->mitarbeiter_uid_old).";"; + } + + if($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern der LEMitarbeiter:'.$this->db_last_error(); + return false; + } + } + + /** + * Prueft ob die Kombination Lehreinheit-Mitarbeiter + * bereits existiert + * @param $lehreinheit_id + * @param $uid + * @return true wenn die zuteilung existiert sonst false + */ + public function exists($lehreinheit_id, $uid) + { + if(!is_numeric($lehreinheit_id)) + { + $this->errormsg = 'lehreinheit_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "SELECT * FROM lehre.tbl_lehreinheitmitarbeiter + WHERE lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER)." AND mitarbeiter_uid=".$this->db_add_param($uid).';'; + if($this->db_query($qry)) + { + if($this->db_num_rows()>0) + return true; + else + return false; + } + else + { + $this->errormsg = 'Fehler beim Lesen der Lehreinheitmitarbeiterzuteilung'; + return false; + } + } + + /** + * Prueft ob ein Mitarbeiter einer LV zugeordnet ist + * @param $lehrveranstaltung_id + * @param $studiensemester_kurzbz + * @param $uid + * @return true wenn die Zuteilung existiert sonst false + */ + public function existsLV($lehrveranstaltung_id, $studiensemester_kurzbz, $uid) + { + if(!is_numeric($lehrveranstaltung_id)) + { + $this->errormsg = 'lehrveranstaltung_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "SELECT + 1 + FROM + lehre.tbl_lehreinheitmitarbeiter + JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) + WHERE + lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)." + AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)." + AND mitarbeiter_uid=".$this->db_add_param($uid).';'; + + if($this->db_query($qry)) + { + if($this->db_num_rows()>0) + return true; + else + return false; + } + else + { + $this->errormsg = 'Fehler beim Lesen der Lehreinheitmitarbeiterzuteilung'; + return false; + } + } + + /** + * Loescht die Zuteilung eines Mitarbeiters + * zu einer Lehreinheit + * @param $lehreinheit_id + * @param $mitarbeiter_uid + * @return true wenn ok, false im fehlerfall + */ + public function delete($lehreinheit_id, $mitarbeiter_uid) + { + if(!is_numeric($lehreinheit_id)) + { + $this->errormsg = 'Lehreinheit_id ist ungueltig'; + return false; + } + $qry_del = "DELETE FROM lehre.tbl_lehreinheitmitarbeiter WHERE lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER)." AND mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid).";"; + $qry = "SELECT * FROM lehre.tbl_lehreinheitmitarbeiter WHERE lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER)." AND mitarbeiter_uid=".$this->db_add_param($mitarbeiter_uid).";"; + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $undo = 'INSERT INTO lehre.tbl_lehreinheitmitarbeiter (lehreinheit_id, mitarbeiter_uid, semesterstunden, planstunden, '. + ' stundensatz, faktor, anmerkung, lehrfunktion_kurzbz, bismelden, ext_id, insertamum, insertvon, updateamum, updatevon)'. + ' VALUES('.$this->db_add_param($row->lehreinheit_id, FHC_INTEGER).','. + $this->db_add_param($row->mitarbeiter_uid).','. + $this->db_add_param($row->semesterstunden).','. + $this->db_add_param($row->planstunden, FHC_INTEGER).','. + $this->db_add_param($row->stundensatz).','. + $this->db_add_param($row->faktor).','. + $this->db_add_param($row->anmerkung).','. + $this->db_add_param($row->lehrfunktion_kurzbz).','. + $this->db_add_param($this->db_parse_bool($row->bismelden), FHC_BOOLEAN).','. + $this->db_add_param($row->ext_id, FHC_INTEGER).','. + $this->db_add_param($row->insertamum).','. + $this->db_add_param($row->insertvon).','. + $this->db_add_param($row->updateamum).','. + $this->db_add_param($row->updatevon).');'; + + $log = new log(); + $log->sqlundo = $undo; + $log->sql = $qry_del; + $log->mitarbeiter_uid = get_uid(); + $log->beschreibung = "Lektorzuteilung loeschen $mitarbeiter_uid - $lehreinheit_id"; + $this->db_query('BEGIN;'); + if($log->save(true)) + { + if($this->db_query($qry_del)) + { + $this->db_query('COMMIT;'); + return true; + } + else + { + $this->db_query('ROLLBACK;'); + $this->errormsg = 'Fehler beim Loeschen der Zuteilung'; + return false; + } + } + else + { + $this->db_query('ROLLBACK;'); + $this->errormsg = 'UNDO Eintrag konnte nicht erstellt werden'; + return false; + } + } + else + { + $this->errormsg = 'Datensatz wurde nicht gefunden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Lesen der Daten'; + return false; + } + } + + /** + * Lädt alle Semester in der ein Lektor aktiv war. + * + * @param string $uid + * @return array + */ + public function getSemesterZuLektor($uid) + { + $qry = 'SELECT DISTINCT studiensemester_kurzbz, bezeichnung, start ' + . 'FROM lehre.tbl_lehreinheitmitarbeiter ' + . 'JOIN lehre.tbl_lehreinheit ' + . 'USING (lehreinheit_id) ' + . 'JOIN public.tbl_studiensemester ' + . 'USING (studiensemester_kurzbz) ' + . 'WHERE mitarbeiter_uid = ' . $this->db_add_param($uid) + . ' ORDER BY start '; + + $result = $this->db_query($qry); + $ret = array(); + + while($row = $this->db_fetch_object($result)) + { + $ret[$row->studiensemester_kurzbz] = $row->bezeichnung; + } + + return $ret; + } + + /** + * Lädt die Lehreinheiten eines Mitarbeiters für ein bestimmtes Semester. + * + * @param string $mitarbeiter_uid + * @param string $studiensemester_kurzbz + * @return array + */ + public function getLehreinheiten($mitarbeiter_uid, $studiensemester_kurzbz) + { + $qry = 'SELECT DISTINCT lehreinheit_id, lv_bezeichnung, lv_kurzbz, unr, lv_lehrform_kurzbz ' + . 'FROM campus.vw_lehreinheit ' + . 'WHERE mitarbeiter_uid = ' . $this->db_add_param($mitarbeiter_uid) + . ' AND studiensemester_kurzbz = ' . $this->db_add_param($studiensemester_kurzbz) + . ' ORDER BY lv_bezeichnung, unr '; + + $result = $this->db_query($qry); + $ret = array(); + + while($row = $this->db_fetch_object($result)) + { + $ret[$row->lehreinheit_id] = $row; + } + + return $ret; + } +} diff --git a/include/prestudent.class.php b/include/prestudent.class.php index edce79162..5bb6c5672 100644 --- a/include/prestudent.class.php +++ b/include/prestudent.class.php @@ -1,1568 +1,1592 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ -require_once(dirname(__FILE__).'/person.class.php'); - -class prestudent extends person -{ - //Tabellenspalten - public $prestudent_id; // varchar(16) - public $aufmerksamdurch_kurzbz; - public $studiengang_kz; - public $berufstaetigkeit_code; - public $ausbildungcode; - public $zgv_code; - public $zgvort; - public $zgvdatum; - public $zgvmas_code; - public $zgvmaort; - public $zgvmadatum; - public $ausstellungsstaat; - public $aufnahmeschluessel; - public $facheinschlberuf; - public $anmeldungreihungstest; - public $reihungstestangetreten; - public $reihungstest_id; - public $punkte; //rt_gesamtpunkte - public $rt_punkte1; - public $rt_punkte2; - public $rt_punkte3=0; - public $bismelden=true; - public $anmerkung; - public $mentor; - public $ext_id_prestudent; - public $dual=false; - public $zgvdoktor_code; - public $zgvdoktorort; - public $zgvdoktordatum; - - public $status_kurzbz; - public $studiensemester_kurzbz; - public $ausbildungssemester; - public $datum; - public $insertamum; - public $insertvon; - public $updateamum; - public $updatevon; - public $orgform_kurzbz; - public $studienplan_id; - public $studienplan_bezeichnung; - public $bestaetigtam; - public $bestaetigtvon; - - public $studiensemester_old=''; - public $ausbildungssemester_old=''; - - // ErgebnisArray - public $result=array(); - public $num_rows=0; - - /** - * Konstruktor - Uebergibt die Connection und laedt optional einen Prestudent - * @param $prestudent_id Prestudent der geladen werden soll (default=null) - */ - public function __construct($prestudent_id=null) - { - parent::__construct(); - - if($prestudent_id != null) - $this->load($prestudent_id); - } - - /** - * Laedt Prestudent mit der uebergebenen ID - * @param $uid ID der Person die geladen werden soll - */ - public function load($prestudent_id) - { - if(!is_numeric($prestudent_id)) - { - $this->errormsg = 'ID ist ungueltig'; - return false; - } - - $qry = "SELECT * FROM public.tbl_prestudent WHERE prestudent_id=".$this->db_add_param($prestudent_id); - - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - $this->prestudent_id = $row->prestudent_id; - $this->aufmerksamdurch_kurzbz = $row->aufmerksamdurch_kurzbz; - $this->studiengang_kz = $row->studiengang_kz; - $this->berufstaetigkeit_code = $row->berufstaetigkeit_code; - $this->ausbildungcode = $row->ausbildungcode; - $this->zgv_code = $row->zgv_code; - $this->zgvort = $row->zgvort; - $this->zgvdatum = $row->zgvdatum; - $this->zgvmas_code = $row->zgvmas_code; - $this->zgvmaort = $row->zgvmaort; - $this->zgvmadatum = $row->zgvmadatum; - $this->aufnahmeschluessel = $row->aufnahmeschluessel; - $this->facheinschlberuf = $this->db_parse_bool($row->facheinschlberuf); - $this->anmeldungreihungstest = $row->anmeldungreihungstest; - $this->reihungstestangetreten = $this->db_parse_bool($row->reihungstestangetreten); - $this->reihungstest_id = $row->reihungstest_id; - $this->punkte = $row->rt_gesamtpunkte; - $this->rt_punkte1 = $row->rt_punkte1; - $this->rt_punkte2 = $row->rt_punkte2; - $this->rt_punkte3 = $row->rt_punkte3; - $this->bismelden = $this->db_parse_bool($row->bismelden); - $this->person_id = $row->person_id; - $this->anmerkung = $row->anmerkung; - $this->mentor = $row->mentor; - $this->ext_id_prestudent = $row->ext_id; - $this->dual = $this->db_parse_bool($row->dual); - $this->ausstellungsstaat = $row->ausstellungsstaat; - $this->zgvdoktor_code = $row->zgvdoktor_code; - $this->zgvdoktorort = $row->zgvdoktorort; - $this->zgvdoktordatum = $row->zgvdoktordatum; - - if(!person::load($row->person_id)) - return false; - else - return true; - } - else - { - $this->errormsg = "Kein Prestudent Eintrag gefunden"; - return false; - } - } - else - { - $this->errormsg = "Fehler beim Laden des Prestudenten"; - return false; - } - } - - /** - * Prueft die Variablen vor dem Speichern - * auf Gueltigkeit. - * @return true wenn ok, false im Fehlerfall - */ - protected function validate() - { - if($this->punkte>9999.9999) - { - $this->errormsg = 'Reihungstestgesamtpunkte darf nicht groesser als 9999.9999 sein'; - return false; - } - if($this->rt_punkte1>9999.9999) - { - $this->errormsg = 'Reihungstestpunkte1 darf nicht groesser als 9999.9999 sein'; - return false; - } - if($this->rt_punkte2>9999.9999) - { - $this->errormsg = 'Reihungstestpunkte2 darf nicht groesser als 9999.9999 sein'; - return false; - } - if($this->rt_punkte3>9999.9999) - { - $this->errormsg = 'Reihungstestpunkte3 darf nicht groesser als 9999.9999 sein'; - return false; - } - - return true; - } - - /** - * Speichert die Benutzerdaten in die Datenbank - * Wenn $new auf true gesetzt ist wird ein neuer Datensatz angelegt - * ansonsten der Datensatz mit $uid upgedated - * @return true wenn erfolgreich, false im Fehlerfall - */ - public function save() - { - //Personen Datensatz speichern - //if(!person::save()) - // return false; - - //Variablen auf Gueltigkeit pruefen - if(!prestudent::validate()) - return false; - - if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE - { - $qry = 'BEGIN;INSERT INTO public.tbl_prestudent (aufmerksamdurch_kurzbz, person_id, - studiengang_kz, berufstaetigkeit_code, ausbildungcode, zgv_code, zgvort, zgvdatum, - zgvmas_code, zgvmaort, zgvmadatum, aufnahmeschluessel, facheinschlberuf, - reihungstest_id, anmeldungreihungstest, reihungstestangetreten, rt_gesamtpunkte, - rt_punkte1, rt_punkte2, rt_punkte3, bismelden, insertamum, insertvon, - updateamum, updatevon, ext_id, anmerkung, dual, ausstellungsstaat, mentor) VALUES('. - $this->db_add_param($this->aufmerksamdurch_kurzbz).",". - $this->db_add_param($this->person_id).",". - $this->db_add_param($this->studiengang_kz).",". - $this->db_add_param($this->berufstaetigkeit_code).",". - $this->db_add_param($this->ausbildungcode).",". - $this->db_add_param($this->zgv_code).",". - $this->db_add_param($this->zgvort).",". - $this->db_add_param($this->zgvdatum).",". - $this->db_add_param($this->zgvmas_code).",". - $this->db_add_param($this->zgvmaort).",". - $this->db_add_param($this->zgvmadatum).",". - $this->db_add_param($this->aufnahmeschluessel).",". - $this->db_add_param($this->facheinschlberuf, FHC_BOOLEAN).",". - $this->db_add_param($this->reihungstest_id).",". - $this->db_add_param($this->anmeldungreihungstest).",". - $this->db_add_param($this->reihungstestangetreten, FHC_BOOLEAN).",". - $this->db_add_param($this->punkte).",". - $this->db_add_param($this->rt_punkte1).",". - $this->db_add_param($this->rt_punkte2).",". - $this->db_add_param($this->rt_punkte3).",". - $this->db_add_param($this->bismelden, 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).",". - $this->db_add_param($this->ext_id_prestudent).",". - $this->db_add_param($this->anmerkung).",". - $this->db_add_param($this->dual, FHC_BOOLEAN).",". - $this->db_add_param($this->ausstellungsstaat).",". - $this->db_add_param($this->mentor).");"; - } - else - { - $qry = 'UPDATE public.tbl_prestudent SET'. - ' aufmerksamdurch_kurzbz='.$this->db_add_param($this->aufmerksamdurch_kurzbz).",". - ' person_id='.$this->db_add_param($this->person_id).",". - ' studiengang_kz='.$this->db_add_param($this->studiengang_kz).",". - ' berufstaetigkeit_code='.$this->db_add_param($this->berufstaetigkeit_code).",". - ' ausbildungcode='.$this->db_add_param($this->ausbildungcode).",". - ' zgv_code='.$this->db_add_param($this->zgv_code).",". - ' zgvort='.$this->db_add_param($this->zgvort).",". - ' zgvdatum='.$this->db_add_param($this->zgvdatum).",". - ' zgvmas_code='.$this->db_add_param($this->zgvmas_code).",". - ' zgvmaort='.$this->db_add_param($this->zgvmaort).",". - ' zgvmadatum='.$this->db_add_param($this->zgvmadatum).",". - ' aufnahmeschluessel='.$this->db_add_param($this->aufnahmeschluessel).",". - ' facheinschlberuf='.$this->db_add_param($this->facheinschlberuf, FHC_BOOLEAN).",". - ' reihungstest_id='.$this->db_add_param($this->reihungstest_id).",". - ' anmeldungreihungstest='.$this->db_add_param($this->anmeldungreihungstest).",". - ' reihungstestangetreten='.$this->db_add_param($this->reihungstestangetreten, FHC_BOOLEAN).",". - ' rt_gesamtpunkte='.$this->db_add_param($this->punkte).",". - ' rt_punkte1='.$this->db_add_param($this->rt_punkte1).",". - ' rt_punkte2='.$this->db_add_param($this->rt_punkte2).",". - ' rt_punkte3='.$this->db_add_param($this->rt_punkte3).",". - ' bismelden='.$this->db_add_param($this->bismelden, FHC_BOOLEAN).",". - ' updateamum='.$this->db_add_param($this->updateamum).",". - ' updatevon='.$this->db_add_param($this->updatevon).",". - ' ext_id='.$this->db_add_param($this->ext_id_prestudent).",". - ' anmerkung='.$this->db_add_param($this->anmerkung).",". - ' mentor='.$this->db_add_param($this->mentor).",". - ' dual='.$this->db_add_param($this->dual, FHC_BOOLEAN).",". - ' ausstellungsstaat='.$this->db_add_param($this->ausstellungsstaat). - " WHERE prestudent_id=".$this->db_add_param($this->prestudent_id).";"; - } - - if($this->db_query($qry)) - { - if($this->new) - { - $qry = "SELECT currval('public.tbl_prestudent_prestudent_id_seq') as id;"; - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - $this->prestudent_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; - } - } - //Log schreiben - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern des Prestudent-Datensatzes'; - return false; - } - } - - /** - * Laden aller Prestudenten, die an $datum zum Reihungstest geladen sind. - * Wenn $equal auf true gesetzt ist wird genau dieses Datum verwendet, - * ansonsten werden auch alle mit späterem Datum geladen. ---> von kindlm am 30.03.2012 geändert - * da zukünftige Teilnehmer nicht mehr angezeigt werden sollen. - * @return true wenn erfolgreich, false im Fehlerfall - */ - public function getPrestudentRT($datum, $equal=false) - { - $sql_query='SELECT DISTINCT * FROM public.vw_prestudent WHERE rt_datum'; - if ($equal) - $sql_query.='='; - else - $sql_query.='='; - $sql_query.="'$datum' ORDER BY nachname,vorname"; - - if(!$this->db_query($sql_query)) - { - $this->errormsg = 'Fehler beim Speichern des Benutzer-Datensatzes:'.$sql_query; - return false; - } - - $this->num_rows=0; - - while($row = $this->db_fetch_object()) - { - $ps=new prestudent(); - $ps->prestudent_id = $row->prestudent_id; - $ps->person_id = $row->person_id; - $ps->reihungstest_id = $row->reihungstest_id; - $ps->staatsbuergerschaft = $row->staatsbuergerschaft; - $ps->geburtsnation = $row->geburtsnation; - $ps->sprache = $row->sprache; - $ps->anrede = $row->anrede; - $ps->titelpost = $row->titelpost; - $ps->titelpre = $row->titelpre; - $ps->nachname = $row->nachname; - $ps->vorname = $row->vorname; - $ps->vornamen = $row->vornamen; - $ps->gebdatum = $row->gebdatum; - $ps->gebort = $row->gebort; - $ps->gebzeit = $row->gebzeit; - // $ps->foto = $row->foto; - $ps->anmerkungen = $row->anmerkungen; - $ps->homepage = $row->homepage; - $ps->svnr = $row->svnr; - $ps->ersatzkennzeichen = $row->ersatzkennzeichen; - $ps->familienstand = $row->familienstand; - $ps->geschlecht = $row->geschlecht; - $ps->anzahlkinder = $row->anzahlkinder; - $ps->aktiv = $this->db_parse_bool($row->aktiv); - $ps->aufmerksamdurch_kurzbz = $row->aufmerksamdurch_kurzbz; - $ps->studiengang_kz = $row->studiengang_kz; - $ps->berufstaetigkeit_code = $row->berufstaetigkeit_code; - $ps->ausbildungcode = $row->ausbildungcode; - $ps->zgv_code = $row->zgv_code; - $ps->zgvort = $row->zgvort; - $ps->zgvdatum = $row->zgvdatum; - $ps->zgvmas_code = $row->zgvmas_code; - $ps->zgvmaort = $row->zgvmaort; - $ps->zgvmadatum = $row->zgvmadatum; - $ps->aufnahmeschluessel = $row->aufnahmeschluessel; - $ps->facheinschlberuf = $this->db_parse_bool($row->facheinschlberuf); - $ps->anmeldungreihungstest = $row->anmeldungreihungstest; - $ps->reihungstestangetreten = $this->db_parse_bool($row->reihungstestangetreten); - $ps->punkte = $row->punkte; - $ps->rt_punkte1 = $row->rt_punkte1; - $ps->rt_punkte2 = $row->rt_punkte2; - $ps->bismelden = $this->db_parse_bool($row->bismelden); - $ps->rt_studiengang_kz = $row->rt_studiengang_kz; - $ps->rt_ort = $row->rt_ort; - $ps->rt_datum = $row->rt_datum; - $ps->rt_uhrzeit = $row->rt_uhrzeit; - $ps->updateamum = $row->updateamum; - $ps->updatevon = $row->updatevon; - $ps->insertamum = $row->insertamum; - $ps->insertvon = $row->insertvon; - //$ps->ext_id_prestudent = $row->ext_id_prestudent; - $this->result[]=$ps; - $this->num_rows++; - } - return true; - } - - /** - * Laedt die Rolle(n) eines Prestudenten - */ - public function getPrestudentRolle($prestudent_id, $status_kurzbz=null, $studiensemester_kurzbz=null, $order="datum, insertamum", $ausbildungssemester=null) - { - if(!is_numeric($prestudent_id)) - { - $this->errormsg = 'Prestudent_id muss eine gueltige Zahl sein'; - return false; - } - - $qry = "SELECT - tbl_prestudentstatus.*, tbl_studienplan.bezeichnung as studienplan_bezeichnung - FROM public.tbl_prestudentstatus - LEFT JOIN lehre.tbl_studienplan USING(studienplan_id) - WHERE - prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER); - if($status_kurzbz!=null) - $qry.= " AND status_kurzbz=".$this->db_add_param($status_kurzbz); - if($studiensemester_kurzbz!=null) - $qry.= " AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); - if($ausbildungssemester!=null) - $qry.= " AND ausbildungssemester=".$this->db_add_param($ausbildungssemester); - - if($order!='') - $qry.=" ORDER BY ".$order; - - if($this->db_query($qry)) - { - while($row = $this->db_fetch_object()) - { - $rolle = new prestudent(); - - $rolle->prestudent_id = $row->prestudent_id; - $rolle->status_kurzbz = $row->status_kurzbz; - $rolle->studiensemester_kurzbz = $row->studiensemester_kurzbz; - $rolle->ausbildungssemester = $row->ausbildungssemester; - $rolle->datum = $row->datum; - $rolle->insertamum = $row->insertamum; - $rolle->insertvon = $row->insertvon; - $rolle->updateamum = $row->updateamum; - $rolle->updatevon = $row->updatevon; - $rolle->orgform_kurzbz = $row->orgform_kurzbz; - $rolle->studienplan_id = $row->studienplan_id; - $rolle->studienplan_bezeichnung = $row->studienplan_bezeichnung; - $rolle->bestaetigtam = $row->bestaetigtam; - $rolle->bestaetigtvon = $row->bestaetigtvon; - $this->result[] = $rolle; - } - return true; - } - else - { - $this->errormsg = 'Fehler beim Laden der PrestudentDaten'; - return false; - } - } - - /** - * Laedt die Rolle - * - * @param $prestudent_id - * @param $status_kurzbz - * @param $studiensemester_kurzbz - * @param $ausbildungssemester - * @return boolean - */ - public function load_rolle($prestudent_id, $status_kurzbz, $studiensemester_kurzbz, $ausbildungssemester) - { - if(!is_numeric($prestudent_id) || $prestudent_id=='') - { - $this->errormsg = 'Prestudent_id muss eine gueltige Zahl sein'; - return false; - } - - $qry = "SELECT * FROM public.tbl_prestudentstatus WHERE prestudent_id=".$this->db_add_param($prestudent_id). - " AND status_kurzbz=".$this->db_add_param($status_kurzbz). - " AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz). - " AND ausbildungssemester=".$this->db_add_param($ausbildungssemester); - - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - $this->prestudent_id = $row->prestudent_id; - $this->status_kurzbz = $row->status_kurzbz; - $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; - $this->ausbildungssemester = $row->ausbildungssemester; - $this->datum = $row->datum; - $this->insertamum = $row->insertamum; - $this->insertvon = $row->insertvon; - $this->updateamum = $row->updateamum; - $this->updatevon = $row->updatevon; - $this->ext_id_prestudent = $row->ext_id; - $this->orgform_kurzbz = $row->orgform_kurzbz; - $this->studienplan_id = $row->studienplan_id; - $this->bestaetigtam = $row->bestaetigtam; - $this->bestaetigtvon = $row->bestaetigtvon; - - return true; - } - else - { - $this->errormsg = 'Rolle existiert nicht'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Laden der PrestudentDaten'; - return false; - } - } - - /** - * Laedt die Interessenten und Bewerber fuer ein bestimmtes Studiensemester - * @param $studiensemester_kurzbz Studiensemester fuer das die Int. und Bewerber - * geladen werden sollen - */ - public function loadIntessentenUndBewerber($studiensemester_kurzbz, $studiengang_kz, $semester=null, $typ=null, $orgform=null) - { - $stsemqry=''; - if(!is_null($studiensemester_kurzbz) && $studiensemester_kurzbz!='') - $stsemqry=" AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); - - $qry = "SELECT - *, a.anmerkung, tbl_person.anmerkung as anmerkungen - FROM - ( - SELECT - *, (SELECT status_kurzbz FROM tbl_prestudentstatus - WHERE prestudent_id=prestudent.prestudent_id $stsemqry - ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) AS rolle - FROM tbl_prestudent prestudent ORDER BY prestudent_id - ) a, tbl_prestudentstatus, tbl_person - WHERE a.rolle=tbl_prestudentstatus.status_kurzbz AND - a.person_id=tbl_person.person_id AND - a.prestudent_id = tbl_prestudentstatus.prestudent_id AND - a.studiengang_kz=".$this->db_add_param($studiengang_kz); - - if(!is_null($studiensemester_kurzbz) && $studiensemester_kurzbz!='') - $qry.=" AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); - - if($semester!=null) - $qry.=" AND ausbildungssemester=".$this->db_add_param($semester); - if($orgform!=null && $orgform!='') - $qry.=" AND tbl_prestudentstatus.orgform_kurzbz=".$this->db_add_param($orgform); - - switch ($typ) - { - case "interessenten": - $qry.=" AND a.rolle='Interessent'"; - break; - case "zgv": - $stg_obj = new studiengang(); - $stg_obj->load($studiengang_kz); - if($stg_obj->typ=='m') - $qry.=" AND a.rolle='Interessent' AND a.zgvmas_code is not null"; - else - $qry.=" AND a.rolle='Interessent' AND a.zgv_code is not null"; - break; - case "reihungstestangemeldet": - $qry.=" AND a.rolle='Interessent' AND a.anmeldungreihungstest is not null"; - break; - case "reihungstestnichtangemeldet": - $qry.=" AND a.rolle='Interessent' AND a.anmeldungreihungstest is null"; - break; - case "bewerber": - $qry.=" AND a.rolle='Bewerber'"; - break; - case "aufgenommen": - $qry.=" AND a.rolle='Aufgenommener'"; - break; - case "warteliste": - $qry.=" AND a.rolle='Wartender'"; - break; - case "absage": - $qry.=" AND a.rolle='Abgewiesener'"; - break; - case "prestudent": - if($studiensemester_kurzbz=='' || is_null($studiensemester_kurzbz)) - $qry = "SELECT *, '' as status_kurzbz, '' as studiensemester_kurzbz, '' as ausbildungssemester, '' as datum, tbl_person.anmerkung as anmerkungen, '' as orgform_kurzbz FROM public.tbl_prestudent prestudent, public.tbl_person WHERE NOT EXISTS (select * from tbl_prestudentstatus WHERE prestudent_id=prestudent.prestudent_id) AND studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER)." AND prestudent.person_id=tbl_person.person_id"; - else - $qry .= " AND a.rolle IN('Interessent', 'Bewerber', 'Aufgenommener', 'Wartender', 'Abgewiesener')"; - break; - case "absolvent": - $qry.=" AND a.rolle='Absolvent'"; - break; - case "diplomand": - $qry.=" AND a.rolle='Diplomand'"; - break; - default: - break; - } - - if($this->db_query($qry)) - { - while($row = $this->db_fetch_object()) - { - $ps = new prestudent(); - - $ps->person_id = $row->person_id; - $ps->staatsbuergerschaft = $row->staatsbuergerschaft; - $ps->gebnation = $row->geburtsnation; - $ps->sprache = $row->sprache; - $ps->anrede = $row->anrede; - $ps->titelpost = $row->titelpost; - $ps->titelpre = $row->titelpre; - $ps->nachname = $row->nachname; - $ps->vorname = $row->vorname; - $ps->vornamen = $row->vornamen; - $ps->gebdatum = $row->gebdatum; - $ps->gebort = $row->gebort; - $ps->gebzeit = $row->gebzeit; - //$ps->foto = $row->foto; - $ps->anmerkungen = $row->anmerkungen; - $ps->homepage = $row->homepage; - $ps->svnr = $row->svnr; - $ps->ersatzkennzeichen = $row->ersatzkennzeichen; - $ps->familienstand = $row->familienstand; - $ps->geschlecht = $row->geschlecht; - $ps->anzahlkinder = $row->anzahlkinder; - $ps->aktiv = $this->db_parse_bool($row->aktiv); - - $ps->prestudent_id = $row->prestudent_id; - $ps->aufmerksamdurch_kurzbz = $row->aufmerksamdurch_kurzbz; - $ps->studiengang_kz = $row->studiengang_kz; - $ps->berufstaetigkeit_code = $row->berufstaetigkeit_code; - $ps->ausbildungcode = $row->ausbildungcode; - $ps->zgv_code = $row->zgv_code; - $ps->zgvort = $row->zgvort; - $ps->zgvdatum = $row->zgvdatum; - $ps->zgvmas_code = $row->zgvmas_code; - $ps->zgvmaort = $row->zgvmaort; - $ps->zgvmadatum = $row->zgvmadatum; - $ps->ausstellungsstaat = $row->ausstellungsstaat; - $ps->aufnahmeschluessel = $row->aufnahmeschluessel; - $ps->facheinschlberuf = $this->db_parse_bool($row->facheinschlberuf); - $ps->anmeldungreihungstest = $row->anmeldungreihungstest; - $ps->reihungstestangetreten = $this->db_parse_bool($row->reihungstestangetreten); - $ps->reihungstest_id = $row->reihungstest_id; - $ps->punkte = $row->rt_gesamtpunkte; - $ps->rt_punkte1 = $row->rt_punkte1; - $ps->rt_punkte2 = $row->rt_punkte2; - $ps->rt_punkte3 = $row->rt_punkte3; - $ps->bismelden = $this->db_parse_bool($row->bismelden); - $ps->anmerkung = $row->anmerkung; - $ps->dual = $this->db_parse_bool($row->dual); - - $ps->status_kurzbz = $row->status_kurzbz; - $ps->studiensemester_kurzbz = $row->studiensemester_kurzbz; - $ps->ausbildungssemester = $row->ausbildungssemester; - $ps->datum = $row->datum; - $ps->orgform_kurzbz = $row->orgform_kurzbz; - - $this->result[] = $ps; - } - return true; - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - /** - * Prueft ob eine Person bereits einen PreStudenteintrag - * fuer einen Studiengang besitzt - * @param person_id - * studiengang_kz - * @return true wenn vorhanden - * false wenn nicht vorhanden - * false und errormsg wenn Fehler aufgetreten ist - */ - public function exists($person_id, $studiengang_kz) - { - if(!is_numeric($person_id)) - { - $this->errormsg = 'Person_id muss eine gueltige Zahl sein'; - return false; - } - - if(!is_numeric($studiengang_kz)) - { - $this->errormsg = 'Studiengang_kz muss eine gueltige Zahl sein'; - return false; - } - - $qry = "SELECT count(*) as anzahl FROM public.tbl_prestudent - WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER)." - AND studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER); - - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - if($row->anzahl>0) - { - $this->errormsg = ''; - return true; - } - else - { - $this->errormsg = ''; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - /** - * Speichert den Prestudentstatus - * @return true wenn ok, false im Fehlerfall - */ - public function save_rolle() - { - if($this->new) - { - //pruefen ob die Rolle schon vorhanden ist - if($this->load_rolle($this->prestudent_id, $this->status_kurzbz, $this->studiensemester_kurzbz, $this->ausbildungssemester)) - { - $this->errormsg = 'Diese Rolle existiert bereits'; - return false; - } - - $qry = 'INSERT INTO public.tbl_prestudentstatus (prestudent_id, status_kurzbz, - studiensemester_kurzbz, ausbildungssemester, datum, insertamum, insertvon, - updateamum, updatevon, ext_id, orgform_kurzbz, bestaetigtam, bestaetigtvon, studienplan_id) VALUES('. - $this->db_add_param($this->prestudent_id).",". - $this->db_add_param($this->status_kurzbz).",". - $this->db_add_param($this->studiensemester_kurzbz).",". - $this->db_add_param($this->ausbildungssemester).",". - $this->db_add_param($this->datum).",". - $this->db_add_param($this->insertamum).",". - $this->db_add_param($this->insertvon).",". - $this->db_add_param($this->updateamum).",". - $this->db_add_param($this->updatevon).",". - $this->db_add_param($this->ext_id_prestudent).",". - $this->db_add_param($this->orgform_kurzbz).",". - $this->db_add_param($this->bestaetigtam).",". - $this->db_add_param($this->bestaetigtvon).",". - $this->db_add_param($this->studienplan_id,FHC_INTEGER).");"; - } - else - { - if($this->studiensemester_old=='') - $this->studiensemester_old = $this->studiensemester_kurzbz; - if($this->ausbildungssemester_old=='') - $this->ausbildungssemester_old = $this->ausbildungssemester; - - //wenn der PrimaryKey geaendert wird, schauen ob schon ein Eintrag mit diesem Key vorhanden ist - if($this->studiensemester_old!=$this->studiensemester_kurzbz || $this->ausbildungssemester_old!=$this->ausbildungssemester) - { - if($this->load_rolle($this->prestudent_id, $this->status_kurzbz, $this->studiensemester_kurzbz, $this->ausbildungssemester)) - { - $this->errormsg = 'Diese Rolle existiert bereits'; - return false; - } - } - $qry = 'UPDATE public.tbl_prestudentstatus SET'. - ' ausbildungssemester='.$this->db_add_param($this->ausbildungssemester).",". - ' studiensemester_kurzbz='.$this->db_add_param($this->studiensemester_kurzbz).",". - ' datum='.$this->db_add_param($this->datum).",". - ' updateamum='.$this->db_add_param($this->updateamum).",". - ' updatevon='.$this->db_add_param($this->updatevon).",". - ' bestaetigtam='.$this->db_add_param($this->bestaetigtam).",". - ' bestaetigtvon='.$this->db_add_param($this->bestaetigtvon).",". - ' studienplan_id='.$this->db_add_param($this->studienplan_id, FHC_INTEGER).",". - ' orgform_kurzbz='.$this->db_add_param($this->orgform_kurzbz). - " WHERE - prestudent_id=".$this->db_add_param($this->prestudent_id, FHC_INTEGER, false)." - AND status_kurzbz=".$this->db_add_param($this->status_kurzbz, FHC_STRING, false)." - AND studiensemester_kurzbz=".$this->db_add_param($this->studiensemester_old, FHC_STRING, false)." - AND ausbildungssemester=".$this->db_add_param($this->ausbildungssemester_old, FHC_STRING, false).";"; - } - - if($this->db_query($qry)) - { - //Log schreiben - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern des Prestudentstatus'; - return false; - } - } - - /** - * Loescht einen Prestudentstatus - * @param $prestudent_id - * $status_kurzbz - * $studiensemester_kurzbz - * $ausbildungssemester - * @return true wenn ok, false wenn Fehler - */ - public function delete_rolle($prestudent_id, $status_kurzbz, $studiensemester_kurzbz, $ausbildungssemester) - { - if(!is_numeric($prestudent_id)) - { - $this->errormsg = 'Prestudent_id ist ungueltig'; - return false; - } - - $qry = "DELETE FROM public.tbl_prestudentstatus - WHERE - prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER)." - AND status_kurzbz=".$this->db_add_param($status_kurzbz)." - AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)." - AND ausbildungssemester=".$this->db_add_param($ausbildungssemester); - - if($this->load_rolle($prestudent_id, $status_kurzbz, $studiensemester_kurzbz, $ausbildungssemester)) - { - $this->db_query('BEGIN;'); - - $log = new log(); - - $log->executetime = date('Y-m-d H:i:s'); - $log->beschreibung = 'Loeschen der Rolle '.$status_kurzbz.' bei '.$prestudent_id; - $log->mitarbeiter_uid = get_uid(); - $log->sql = $qry; - $log->sqlundo = 'INSERT INTO public.tbl_prestudentstatus(prestudent_id, status_kurzbz, studiensemester_kurzbz,'. - ' ausbildungssemester, datum, insertamum, insertvon, updateamum, updatevon, ext_id, orgform_kurzbz, bestaetigtam, bestaetigtvon, studienplan_id) VALUES('. - $this->db_add_param($this->prestudent_id).','. - $this->db_add_param($this->status_kurzbz).','. - $this->db_add_param($this->studiensemester_kurzbz).','. - $this->db_add_param($this->ausbildungssemester).','. - $this->db_add_param($this->datum).','. - $this->db_add_param($this->insertamum).','. - $this->db_add_param($this->insertvon).','. - $this->db_add_param($this->updateamum).','. - $this->db_add_param($this->updatevon).','. - $this->db_add_param($this->ext_id_prestudent).','. - $this->db_add_param($this->orgform_kurzbz).','. - $this->db_add_param($this->bestaetigtam).','. - $this->db_add_param($this->bestaetigtvon).','. - $this->db_add_param($this->studienplan_id, FHC_INTEGER).');'; - if($log->save(true)) - { - - if($this->db_query($qry)) - { - $this->db_query('COMMIT'); - return true; - } - else - { - $this->db_query('ROLLBACK'); - $this->errormsg = 'Fehler beim Loeschen der Daten'; - return false; - } - } - else - { - $this->db_query('ROLLBACK'); - $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; - return false; - } - } - else - { - return false; - } - } - - public function bestaetige_rolle($prestudent_id, $status_kurzbz, $studiensemester_kurzbz, $ausbildungssemester, $user) - { - if(!is_numeric($prestudent_id)) - { - $this->errormsg = 'Prestudent_id ist ungueltig'; - return false; - } - - $qry = 'UPDATE public.tbl_prestudentstatus SET'. - ' bestaetigtam='.$this->db_add_param(date('Y-m-d')).','. - ' bestaetigtvon='.$this->db_add_param($user)." ". - ' WHERE - prestudent_id='.$this->db_add_param($prestudent_id, FHC_INTEGER).' - AND status_kurzbz='.$this->db_add_param($status_kurzbz).' - AND studiensemester_kurzbz='.$this->db_add_param($studiensemester_kurzbz).' - AND ausbildungssemester='.$this->db_add_param($ausbildungssemester); - - if($this->db_query($qry)) - { - return true; - } - else - { - $this->errormsg='Fehler beim Speichern der Daten'; - return false; - } - } - - /** - * Liefert den Letzten Status eines Prestudenten in einem Studiensemester - * Wenn kein Studiensemester angegeben wird, wird der letztgueltige Status ermittelt - * @param $prestudent_id - * @param $studiensemester_kurzbz - * @return boolean - */ - public function getLastStatus($prestudent_id, $studiensemester_kurzbz='', $status_kurzbz = '') - { - if($prestudent_id=='' || !is_numeric($prestudent_id)) - { - $this->errormsg = 'Prestudent_id ist ungueltig'; - return false; - } - - $qry = "SELECT tbl_prestudentstatus.*, bezeichnung AS studienplan_bezeichnung - FROM public.tbl_prestudentstatus LEFT JOIN lehre.tbl_studienplan USING (studienplan_id) - WHERE prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER); - - if($studiensemester_kurzbz!='') - $qry.=" AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); - - if($status_kurzbz !='') - $qry.= " AND status_kurzbz =".$this->db_add_param($status_kurzbz); - - $qry.=" ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1"; - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - $this->prestudent_id = $row->prestudent_id; - $this->status_kurzbz = $row->status_kurzbz; - $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; - $this->ausbildungssemester = $row->ausbildungssemester; - $this->datum = $row->datum; - $this->insertamum = $row->insertamum; - $this->insertvon = $row->insertvon; - $this->updateamum = $row->updateamum; - $this->updatevon = $row->updatevon; - $this->bestaetigtam = $row->bestaetigtam; - $this->bestaetigtvon = $row->bestaetigtvon; - $this->orgform_kurzbz = $row->orgform_kurzbz; - $this->studienplan_id = $row->studienplan_id; - $this->studienplan_bezeichnung = $row->studienplan_bezeichnung; - return true; - } - else - { - $this->errormsg = 'Keine Rolle vorhanden'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Laden der PrestudentDaten'; - return false; - } - } - - /** - * Liefert den Ersten Status eines Prestudenten mit der übergebenen Statuskurzbezeichnung - * @param $prestudent_id - * @param $studiensemester_kurzbz - * @return boolean - */ - public function getFirstStatus($prestudent_id, $status_kurzbz) - { - if($prestudent_id=='' || !is_numeric($prestudent_id)) - { - $this->errormsg = 'Prestudent_id ist ungueltig'; - return false; - } - - $qry = "SELECT * FROM public.tbl_prestudentstatus - WHERE - prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER)." - AND status_kurzbz = ".$this->db_add_param($status_kurzbz)." - ORDER BY datum ASC, insertamum ASC, ext_id ASC LIMIT 1"; - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - $this->prestudent_id = $row->prestudent_id; - $this->status_kurzbz = $row->status_kurzbz; - $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; - $this->ausbildungssemester = $row->ausbildungssemester; - $this->datum = $row->datum; - $this->insertamum = $row->insertamum; - $this->insertvon = $row->insertvon; - $this->updateamum = $row->updateamum; - $this->updatevon = $row->updatevon; - $this->bestaetigtam = $row->bestaetigtam; - $this->bestaetigtvon = $row->bestaetigtvon; - $this->orgform_kurzbz = $row->orgform_kurzbz; - $this->studienplan_id = $row->studienplan_id; - return true; - } - else - { - $this->errormsg = 'Keine Rolle vorhanden'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Laden der PrestudentDaten'; - return false; - } - } - - /** - * Laedt alle Prestudenten der Person - * @return true wenn ok, false wenn Fehler - */ - public function getPrestudenten($person_id) - { - if(!is_numeric($person_id) || $person_id=='') - { - $this->errormsg='ID ist ungueltig'; - return false; - } - - $qry = "SELECT * FROM public.tbl_prestudent WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER)." ORDER BY prestudent_id"; - - if($this->db_query($qry)) - { - while($row = $this->db_fetch_object()) - { - $obj = new prestudent(); - - $obj->prestudent_id = $row->prestudent_id; - $obj->aufmerksamdurch_kurzbz = $row->aufmerksamdurch_kurzbz; - $obj->studiengang_kz = $row->studiengang_kz; - $obj->berufstaetigkeit_code = $row->berufstaetigkeit_code; - $obj->ausbildungcode = $row->ausbildungcode; - $obj->zgv_code = $row->zgv_code; - $obj->zgvort = $row->zgvort; - $obj->zgvdatum = $row->zgvdatum; - $obj->zgvmas_code = $row->zgvmas_code; - $obj->zgvmaort = $row->zgvmaort; - $obj->zgvmadatum = $row->zgvmadatum; - $obj->aufnahmeschluessel = $row->aufnahmeschluessel; - $obj->facheinschlberuf = $this->db_parse_bool($row->facheinschlberuf); - $obj->anmeldungreihungstest = $row->anmeldungreihungstest; - $obj->reihungstestangetreten = $this->db_parse_bool($row->reihungstestangetreten); - $obj->reihungstest_id = $row->reihungstest_id; - $obj->punkte = $row->rt_gesamtpunkte; - $obj->rt_punkte1 = $row->rt_punkte1; - $obj->rt_punkte2 = $row->rt_punkte2; - $obj->rt_punkte3 = $row->rt_punkte3; - $obj->bismelden = $this->db_parse_bool($row->bismelden); - $obj->person_id = $row->person_id; - $obj->anmerkung = $row->anmerkung; - $obj->mentor = $row->mentor; - $obj->ext_id_prestudent = $row->ext_id; - $obj->dual = $this->db_parse_bool($row->dual); - $obj->ausstellungsstaat = $row->ausstellungsstaat; - $obj->zgvdoktor_code = $row->zgvdoktor_code; - $obj->zgvdoktorort = $row->zgvdoktorort; - $obj->zgvdoktordatum = $row->zgvdoktordatum; - - $this->result[] = $obj; - } - return true; - } - else - { - $this->errormsg = "Fehler beim Laden"; - return false; - } - } - - /** - * Liefert die Anzahl der Bewerber im ausgewaehlten Bereich - * @param $studiensemester_kurzbz Studiensemester - * @param $studiengang_kz Kennzahl des Studienganges (optional) - * @param $orgform_kurzbz Organisationsform (optional) - * @param $ausbildungssemester Ausbildungssemester (optional) - * @return Anzahl der Bewerber oder false im Fehlerfall - */ - public function getAnzBewerber($studiensemester_kurzbz, $studiengang_kz=null, $orgform_kurzbz=null, $ausbildungssemester=null) - { - $qry = "SELECT - count(*) as anzahl - FROM - public.tbl_prestudent - JOIN public.tbl_prestudentstatus USING(prestudent_id) - WHERE - tbl_prestudentstatus.status_kurzbz='Bewerber' - AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); - - if(!is_null($studiengang_kz)) - $qry.=" AND tbl_prestudent.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER); - - if(!is_null($orgform_kurzbz)) - $qry.=" AND (tbl_prestudentstatus.orgform_kurzbz=".$this->db_add_param($orgform_kurzbz)." OR (tbl_prestudentstatus.orgform_kurzbz IS NULL AND EXISTS(SELECT 1 FROM public.tbl_studiengang WHERE studiengang_kz=tbl_prestudent.studiengang_kz AND orgform_kurzbz=".$this->db_add_param($orgform_kurzbz).")))"; - - if(!is_null($ausbildungssemester)) - $qry.=" AND tbl_prestudentstatus.ausbildungssemester=".$this->db_add_param($ausbildungssemester); - - if($result = $this->db_query($qry)) - { - if($row = $this->db_fetch_object($result)) - { - return $row->anzahl; - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - /** - * Liefert die Anzahl der Interessenten im ausgewaehlten Bereich - * @param $studiensemester_kurzbz Studiensemester - * @param $studiengang_kz Kennzahl des Studienganges (optional) - * @param $orgform_kurzbz Organisationsform (optional) - * @param $ausbildungssemester Ausbildungssemester (optional) - * @return Anzahl der Interessenten oder false im Fehlerfall - */ - public function getAnzInteressenten($studiensemester_kurzbz, $studiengang_kz=null, $orgform_kurzbz=null, $ausbildungssemester=null) - { - $qry = "SELECT - count(*) as anzahl - FROM - public.tbl_prestudent - JOIN public.tbl_prestudentstatus USING(prestudent_id) - WHERE - tbl_prestudentstatus.status_kurzbz='Interessent' - AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); - - if(!is_null($studiengang_kz)) - $qry.=" AND tbl_prestudent.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER); - - if(!is_null($orgform_kurzbz)) - $qry.=" AND (tbl_prestudentstatus.orgform_kurzbz=".$this->db_add_param($orgform_kurzbz)." OR (tbl_prestudentstatus.orgform_kurzbz IS NULL AND EXISTS(SELECT 1 FROM public.tbl_studiengang WHERE studiengang_kz=tbl_prestudent.studiengang_kz AND orgform_kurzbz=".$this->db_add_param($orgform_kurzbz).")))"; - - if(!is_null($ausbildungssemester)) - $qry.=" AND tbl_prestudentstatus.ausbildungssemester=".$this->db_add_param($ausbildungssemester); - - if($result = $this->db_query($qry)) - { - if($row = $this->db_fetch_object($result)) - { - return $row->anzahl; - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - /** - * Liefert die Anzahl der Interessenten mit Zugangsvoraussetzung im ausgewaehlten Bereich - * @param $studiensemester_kurzbz Studiensemester - * @param $studiengang_kz Kennzahl des Studienganges (optional) - * @param $orgform_kurzbz Organisationsform (optional) - * @param $ausbildungssemester Ausbildungssemester (optional) - * @return Anzahl der Interessenten mit ZGV oder false im Fehlerfall - */ - public function getAnzInteressentenZGV($studiensemester_kurzbz, $studiengang_kz=null, $orgform_kurzbz=null, $ausbildungssemester=null) - { - $qry = "SELECT - count(*) as anzahl - FROM - public.tbl_prestudent - JOIN public.tbl_prestudentstatus USING(prestudent_id) - JOIN public.tbl_studiengang USING(studiengang_kz) - WHERE - tbl_prestudentstatus.status_kurzbz='Interessent' - AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)." - AND ((tbl_studiengang.typ<>'m' AND zgv_code IS NOT NULL) OR zgvmas_code IS NOT NULL)"; - - if(!is_null($studiengang_kz)) - $qry.=" AND tbl_prestudent.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER); - - if(!is_null($orgform_kurzbz)) - $qry.=" AND (tbl_prestudentstatus.orgform_kurzbz=".$this->db_add_param($orgform_kurzbz)." OR (tbl_prestudentstatus.orgform_kurzbz IS NULL AND tbl_studiengang.orgform_kurzbz=".$this->db_add_param($orgform_kurzbz)."))"; - - if(!is_null($ausbildungssemester)) - $qry.=" AND tbl_prestudentstatus.ausbildungssemester=".$this->db_add_param($ausbildungssemester); - - if($result = $this->db_query($qry)) - { - if($row = $this->db_fetch_object($result)) - { - return $row->anzahl; - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - - } - - /** - * Liefert ein Array mit den Bewerberzahlen - * @param $studiensemester_kurzbz (optional) - * @return true wenn ok, false im Fehlerfall DatenArray in $this->result - * Bsp: - * $prestudent->result[$stsem][$stg_kz]['anzahl'] - * $prestudent->result[$stsem][$stg_kz][$orgform][$semester]['anzahl'] - */ - public function listAnzBewerber($studiensemester_kurzbz=null) - { - $qry = "SELECT - tbl_prestudentstatus.studiensemester_kurzbz, - tbl_prestudent.studiengang_kz, - tbl_prestudentstatus.ausbildungssemester, - COALESCE(tbl_prestudentstatus.orgform_kurzbz, tbl_studiengang.orgform_kurzbz) as orgform_kurzbz - FROM - public.tbl_prestudent - JOIN public.tbl_prestudentstatus USING(prestudent_id) - JOIN public.tbl_studiengang USING(studiengang_kz) - WHERE - tbl_prestudentstatus.status_kurzbz='Bewerber'"; - - if(!is_null($studiensemester_kurzbz)) - $qry.=" AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); - - $this->result = array(); - if($result = $this->db_query($qry)) - { - while($row = $this->db_fetch_object($result)) - { - // Studiensemester - if(!isset($this->result[$row->studiensemester_kurzbz]['anzahl'])) - $this->result[$row->studiensemester_kurzbz]['anzahl']=0; - - $this->result[$row->studiensemester_kurzbz]['anzahl']++; - - // Studiengang - if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl'])) - $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl']=0; - - $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl']++; - - // Orgform - if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl'])) - $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl']=0; - - $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl']++; - - // Ausbildungssemester - if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl'])) - $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl']=0; - - $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl']++; - } - return true; - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - - - - - /** - * Liefert ein Array mit den Interessentenzahlen - * @param $studiensemester_kurzbz (optional) - * @return true wenn ok, false im Fehlerfall DatenArray in $this->result - * Bsp: - * $prestudent->result[$stsem][$stg_kz]['anzahl'] - * $prestudent->result[$stsem][$stg_kz][$orgform][$semester]['anzahl'] - */ - public function listAnzInteressenten($studiensemester_kurzbz=null) - { - $qry = "SELECT - tbl_prestudentstatus.studiensemester_kurzbz, - tbl_prestudent.studiengang_kz, - tbl_prestudentstatus.ausbildungssemester, - COALESCE(tbl_prestudentstatus.orgform_kurzbz, tbl_studiengang.orgform_kurzbz) as orgform_kurzbz - FROM - public.tbl_prestudent - JOIN public.tbl_prestudentstatus USING(prestudent_id) - JOIN public.tbl_studiengang USING(studiengang_kz) - WHERE - bismelden=true - AND tbl_prestudentstatus.status_kurzbz='Interessent'"; - - if(!is_null($studiensemester_kurzbz)) - $qry.=" AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); - - $this->result = array(); - if($result = $this->db_query($qry)) - { - while($row = $this->db_fetch_object($result)) - { - // Studiensemester - if(!isset($this->result[$row->studiensemester_kurzbz]['anzahl'])) - $this->result[$row->studiensemester_kurzbz]['anzahl']=0; - - $this->result[$row->studiensemester_kurzbz]['anzahl']++; - - // Studiengang - if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl'])) - $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl']=0; - - $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl']++; - - // Orgform - if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl'])) - $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl']=0; - - $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl']++; - - // Ausbildungssemester - if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl'])) - $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl']=0; - - $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl']++; - } - return true; - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - - public function listAnzAbbrecher($studiensemester_kurzbz=null) - { - $qry = "SELECT - tbl_prestudentstatus.studiensemester_kurzbz, - tbl_prestudent.studiengang_kz, - tbl_prestudentstatus.ausbildungssemester, - COALESCE(tbl_prestudentstatus.orgform_kurzbz, tbl_studiengang.orgform_kurzbz) as orgform_kurzbz - FROM - public.tbl_prestudent - JOIN public.tbl_prestudentstatus USING(prestudent_id) - JOIN public.tbl_studiengang USING(studiengang_kz) - WHERE - tbl_prestudentstatus.status_kurzbz='Abbrecher' - AND bismelden=true"; - - if(!is_null($studiensemester_kurzbz)) - $qry.=" AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); - - $this->result = array(); - if($result = $this->db_query($qry)) - { - while($row = $this->db_fetch_object($result)) - { - // Studiensemester - if(!isset($this->result[$row->studiensemester_kurzbz]['anzahl'])) - $this->result[$row->studiensemester_kurzbz]['anzahl']=0; - - $this->result[$row->studiensemester_kurzbz]['anzahl']++; - - // Studiengang - if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl'])) - $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl']=0; - - $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl']++; - - // Orgform - if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl'])) - $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl']=0; - - $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl']++; - - // Ausbildungssemester - if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl'])) - $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl']=0; - - $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl']++; - } - return true; - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - public function listAnzStudierende($studiensemester_kurzbz=null) - { - $qry = "SELECT - distinct on(prestudent_id) prestudent_id, - tbl_prestudentstatus.studiensemester_kurzbz, - tbl_prestudent.studiengang_kz, - tbl_prestudentstatus.ausbildungssemester, - COALESCE(tbl_prestudentstatus.orgform_kurzbz, tbl_studiengang.orgform_kurzbz) as orgform_kurzbz - FROM - public.tbl_prestudent - JOIN public.tbl_prestudentstatus USING(prestudent_id) - JOIN public.tbl_studiengang USING(studiengang_kz) - WHERE - tbl_prestudentstatus.status_kurzbz IN ('Student','Unterbrecher','Diplomand') - AND bismelden=true"; - - if(!is_null($studiensemester_kurzbz)) - $qry.=" AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); - - - - $this->result = array(); - if($result = $this->db_query($qry)) - { - while($row = $this->db_fetch_object($result)) - { - // Studiensemester - if(!isset($this->result[$row->studiensemester_kurzbz]['anzahl'])) - $this->result[$row->studiensemester_kurzbz]['anzahl']=0; - - $this->result[$row->studiensemester_kurzbz]['anzahl']++; - - // Studiengang - if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl'])) - $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl']=0; - - $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl']++; - - // Orgform - if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl'])) - $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl']=0; - - $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl']++; - - // Ausbildungssemester - if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl'])) - $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl']=0; - - $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl']++; - } - return true; - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - /** - * Anzahl der Abbrecher liefern.
    - * WM: Kopie von getBewerber() => @TODO: überprüfen!!! - * @param type $studiensemester_kurzbz - * @param type $studiengang_kz - * @param type $orgform_kurzbz - * @param type $ausbildungssemester - * @return boolean - */ - public function getAnzAbbrecher($studiensemester_kurzbz, $studiengang_kz=null, $orgform_kurzbz=null, $ausbildungssemester=null) - { - $qry = "SELECT - count(*) as anzahl - FROM - public.tbl_prestudent - JOIN public.tbl_prestudentstatus USING(prestudent_id) - WHERE - tbl_prestudentstatus.status_kurzbz='Abbrecher' - AND bismelden=true - AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); - - if(!is_null($studiengang_kz)) - $qry.=" AND tbl_prestudent.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER); - - if(!is_null($orgform_kurzbz)) - $qry.=" AND (tbl_prestudentstatus.orgform_kurzbz=".$this->db_add_param($orgform_kurzbz)." OR (tbl_prestudentstatus.orgform_kurzbz IS NULL AND EXISTS(SELECT 1 FROM public.tbl_studiengang WHERE studiengang_kz=tbl_prestudent.studiengang_kz AND orgform_kurzbz=".$this->db_add_param($orgform_kurzbz).")))"; - - if(!is_null($ausbildungssemester)) - $qry.=" AND tbl_prestudentstatus.ausbildungssemester=".$this->db_add_param($ausbildungssemester); - - if($result = $this->db_query($qry)) - { - if($row = $this->db_fetch_object($result)) - { - return $row->anzahl; - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - /** - * Anzahl der Studierenden liefern.
    - * WM: Kopie von getBewerber() => @TODO: überprüfen!!! - * @param type $studiensemester_kurzbz - * @param type $studiengang_kz - * @param type $orgform_kurzbz - * @param type $ausbildungssemester - * @return boolean - */ - public function getAnzStudierende($studiensemester_kurzbz, $studiengang_kz=null, $orgform_kurzbz=null, $ausbildungssemester=null) - { - $qry = "SELECT count(*) as anzahl FROM ( - SELECT - distinct on(prestudent_id) prestudent_id - FROM - public.tbl_prestudent - JOIN public.tbl_prestudentstatus USING(prestudent_id) - WHERE - tbl_prestudentstatus.status_kurzbz IN ('Student','Unterbrecher','Diplomand') - AND bismelden=true - AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); - - if(!is_null($studiengang_kz)) - $qry.=" AND tbl_prestudent.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER); - - if(!is_null($orgform_kurzbz)) - $qry.=" AND (tbl_prestudentstatus.orgform_kurzbz=".$this->db_add_param($orgform_kurzbz)." OR (tbl_prestudentstatus.orgform_kurzbz IS NULL AND EXISTS(SELECT 1 FROM public.tbl_studiengang WHERE studiengang_kz=tbl_prestudent.studiengang_kz AND orgform_kurzbz=".$this->db_add_param($orgform_kurzbz).")))"; - - if(!is_null($ausbildungssemester)) - $qry.=" AND tbl_prestudentstatus.ausbildungssemester=".$this->db_add_param($ausbildungssemester); - - $qry.=") as sub"; - - if($result = $this->db_query($qry)) - { - if($row = $this->db_fetch_object($result)) - { - return $row->anzahl; - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - -} -?> +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ +require_once(dirname(__FILE__).'/person.class.php'); + +class prestudent extends person +{ + //Tabellenspalten + public $prestudent_id; // varchar(16) + public $aufmerksamdurch_kurzbz; + public $studiengang_kz; + public $berufstaetigkeit_code; + public $ausbildungcode; + public $zgv_code; + public $zgvort; + public $zgvdatum; + public $zgvmas_code; + public $zgvmaort; + public $zgvmadatum; + public $ausstellungsstaat; + public $aufnahmeschluessel; + public $facheinschlberuf; + public $anmeldungreihungstest; + public $reihungstestangetreten; + public $reihungstest_id; + public $punkte; //rt_gesamtpunkte + public $rt_punkte1; + public $rt_punkte2; + public $rt_punkte3=0; + public $bismelden=true; + public $anmerkung; + public $mentor; + public $ext_id_prestudent; + public $dual=false; + public $zgvdoktor_code; + public $zgvdoktorort; + public $zgvdoktordatum; + + public $status_kurzbz; + public $studiensemester_kurzbz; + public $ausbildungssemester; + public $datum; + public $insertamum; + public $insertvon; + public $updateamum; + public $updatevon; + public $orgform_kurzbz; + public $studienplan_id; + public $studienplan_bezeichnung; + public $bestaetigtam; + public $bestaetigtvon; + + public $studiensemester_old=''; + public $ausbildungssemester_old=''; + + // ErgebnisArray + public $result=array(); + public $num_rows=0; + + /** + * Konstruktor - Uebergibt die Connection und laedt optional einen Prestudent + * @param $prestudent_id Prestudent der geladen werden soll (default=null) + */ + public function __construct($prestudent_id=null) + { + parent::__construct(); + + if($prestudent_id != null) + $this->load($prestudent_id); + } + + /** + * Laedt Prestudent mit der uebergebenen ID + * @param $uid ID der Person die geladen werden soll + */ + public function load($prestudent_id) + { + if(!is_numeric($prestudent_id)) + { + $this->errormsg = 'ID ist ungueltig'; + return false; + } + + $qry = "SELECT * FROM public.tbl_prestudent WHERE prestudent_id=".$this->db_add_param($prestudent_id); + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->prestudent_id = $row->prestudent_id; + $this->aufmerksamdurch_kurzbz = $row->aufmerksamdurch_kurzbz; + $this->studiengang_kz = $row->studiengang_kz; + $this->berufstaetigkeit_code = $row->berufstaetigkeit_code; + $this->ausbildungcode = $row->ausbildungcode; + $this->zgv_code = $row->zgv_code; + $this->zgvort = $row->zgvort; + $this->zgvdatum = $row->zgvdatum; + $this->zgvmas_code = $row->zgvmas_code; + $this->zgvmaort = $row->zgvmaort; + $this->zgvmadatum = $row->zgvmadatum; + $this->aufnahmeschluessel = $row->aufnahmeschluessel; + $this->facheinschlberuf = $this->db_parse_bool($row->facheinschlberuf); + $this->anmeldungreihungstest = $row->anmeldungreihungstest; + $this->reihungstestangetreten = $this->db_parse_bool($row->reihungstestangetreten); + $this->reihungstest_id = $row->reihungstest_id; + $this->punkte = $row->rt_gesamtpunkte; + $this->rt_punkte1 = $row->rt_punkte1; + $this->rt_punkte2 = $row->rt_punkte2; + $this->rt_punkte3 = $row->rt_punkte3; + $this->bismelden = $this->db_parse_bool($row->bismelden); + $this->person_id = $row->person_id; + $this->anmerkung = $row->anmerkung; + $this->mentor = $row->mentor; + $this->ext_id_prestudent = $row->ext_id; + $this->dual = $this->db_parse_bool($row->dual); + $this->ausstellungsstaat = $row->ausstellungsstaat; + $this->zgvdoktor_code = $row->zgvdoktor_code; + $this->zgvdoktorort = $row->zgvdoktorort; + $this->zgvdoktordatum = $row->zgvdoktordatum; + + if(!person::load($row->person_id)) + return false; + else + return true; + } + else + { + $this->errormsg = "Kein Prestudent Eintrag gefunden"; + return false; + } + } + else + { + $this->errormsg = "Fehler beim Laden des Prestudenten"; + return false; + } + } + + /** + * Prueft die Variablen vor dem Speichern + * auf Gueltigkeit. + * @return true wenn ok, false im Fehlerfall + */ + protected function validate() + { + if($this->punkte>9999.9999) + { + $this->errormsg = 'Reihungstestgesamtpunkte darf nicht groesser als 9999.9999 sein'; + return false; + } + if($this->rt_punkte1>9999.9999) + { + $this->errormsg = 'Reihungstestpunkte1 darf nicht groesser als 9999.9999 sein'; + return false; + } + if($this->rt_punkte2>9999.9999) + { + $this->errormsg = 'Reihungstestpunkte2 darf nicht groesser als 9999.9999 sein'; + return false; + } + if($this->rt_punkte3>9999.9999) + { + $this->errormsg = 'Reihungstestpunkte3 darf nicht groesser als 9999.9999 sein'; + return false; + } + + return true; + } + + /** + * Speichert die Benutzerdaten in die Datenbank + * Wenn $new auf true gesetzt ist wird ein neuer Datensatz angelegt + * ansonsten der Datensatz mit $uid upgedated + * @return true wenn erfolgreich, false im Fehlerfall + */ + public function save() + { + //Personen Datensatz speichern + //if(!person::save()) + // return false; + + //Variablen auf Gueltigkeit pruefen + if(!prestudent::validate()) + return false; + + if($this->new) //Wenn new true ist dann ein INSERT absetzen ansonsten ein UPDATE + { + $qry = 'BEGIN;INSERT INTO public.tbl_prestudent (aufmerksamdurch_kurzbz, person_id, + studiengang_kz, berufstaetigkeit_code, ausbildungcode, zgv_code, zgvort, zgvdatum, + zgvmas_code, zgvmaort, zgvmadatum, aufnahmeschluessel, facheinschlberuf, + reihungstest_id, anmeldungreihungstest, reihungstestangetreten, rt_gesamtpunkte, + rt_punkte1, rt_punkte2, rt_punkte3, bismelden, insertamum, insertvon, + updateamum, updatevon, ext_id, anmerkung, dual, ausstellungsstaat, mentor) VALUES('. + $this->db_add_param($this->aufmerksamdurch_kurzbz).",". + $this->db_add_param($this->person_id).",". + $this->db_add_param($this->studiengang_kz).",". + $this->db_add_param($this->berufstaetigkeit_code).",". + $this->db_add_param($this->ausbildungcode).",". + $this->db_add_param($this->zgv_code).",". + $this->db_add_param($this->zgvort).",". + $this->db_add_param($this->zgvdatum).",". + $this->db_add_param($this->zgvmas_code).",". + $this->db_add_param($this->zgvmaort).",". + $this->db_add_param($this->zgvmadatum).",". + $this->db_add_param($this->aufnahmeschluessel).",". + $this->db_add_param($this->facheinschlberuf, FHC_BOOLEAN).",". + $this->db_add_param($this->reihungstest_id).",". + $this->db_add_param($this->anmeldungreihungstest).",". + $this->db_add_param($this->reihungstestangetreten, FHC_BOOLEAN).",". + $this->db_add_param($this->punkte).",". + $this->db_add_param($this->rt_punkte1).",". + $this->db_add_param($this->rt_punkte2).",". + $this->db_add_param($this->rt_punkte3).",". + $this->db_add_param($this->bismelden, 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).",". + $this->db_add_param($this->ext_id_prestudent).",". + $this->db_add_param($this->anmerkung).",". + $this->db_add_param($this->dual, FHC_BOOLEAN).",". + $this->db_add_param($this->ausstellungsstaat).",". + $this->db_add_param($this->mentor).");"; + } + else + { + $qry = 'UPDATE public.tbl_prestudent SET'. + ' aufmerksamdurch_kurzbz='.$this->db_add_param($this->aufmerksamdurch_kurzbz).",". + ' person_id='.$this->db_add_param($this->person_id).",". + ' studiengang_kz='.$this->db_add_param($this->studiengang_kz).",". + ' berufstaetigkeit_code='.$this->db_add_param($this->berufstaetigkeit_code).",". + ' ausbildungcode='.$this->db_add_param($this->ausbildungcode).",". + ' zgv_code='.$this->db_add_param($this->zgv_code).",". + ' zgvort='.$this->db_add_param($this->zgvort).",". + ' zgvdatum='.$this->db_add_param($this->zgvdatum).",". + ' zgvmas_code='.$this->db_add_param($this->zgvmas_code).",". + ' zgvmaort='.$this->db_add_param($this->zgvmaort).",". + ' zgvmadatum='.$this->db_add_param($this->zgvmadatum).",". + ' aufnahmeschluessel='.$this->db_add_param($this->aufnahmeschluessel).",". + ' facheinschlberuf='.$this->db_add_param($this->facheinschlberuf, FHC_BOOLEAN).",". + ' reihungstest_id='.$this->db_add_param($this->reihungstest_id).",". + ' anmeldungreihungstest='.$this->db_add_param($this->anmeldungreihungstest).",". + ' reihungstestangetreten='.$this->db_add_param($this->reihungstestangetreten, FHC_BOOLEAN).",". + ' rt_gesamtpunkte='.$this->db_add_param($this->punkte).",". + ' rt_punkte1='.$this->db_add_param($this->rt_punkte1).",". + ' rt_punkte2='.$this->db_add_param($this->rt_punkte2).",". + ' rt_punkte3='.$this->db_add_param($this->rt_punkte3).",". + ' bismelden='.$this->db_add_param($this->bismelden, FHC_BOOLEAN).",". + ' updateamum='.$this->db_add_param($this->updateamum).",". + ' updatevon='.$this->db_add_param($this->updatevon).",". + ' ext_id='.$this->db_add_param($this->ext_id_prestudent).",". + ' anmerkung='.$this->db_add_param($this->anmerkung).",". + ' mentor='.$this->db_add_param($this->mentor).",". + ' dual='.$this->db_add_param($this->dual, FHC_BOOLEAN).",". + ' ausstellungsstaat='.$this->db_add_param($this->ausstellungsstaat). + " WHERE prestudent_id=".$this->db_add_param($this->prestudent_id).";"; + } + + if($this->db_query($qry)) + { + if($this->new) + { + $qry = "SELECT currval('public.tbl_prestudent_prestudent_id_seq') as id;"; + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->prestudent_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; + } + } + //Log schreiben + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern des Prestudent-Datensatzes'; + return false; + } + } + + /** + * Laden aller Prestudenten, die an $datum zum Reihungstest geladen sind. + * Wenn $equal auf true gesetzt ist wird genau dieses Datum verwendet, + * ansonsten werden auch alle mit späterem Datum geladen. ---> von kindlm am 30.03.2012 geändert + * da zukünftige Teilnehmer nicht mehr angezeigt werden sollen. + * @return true wenn erfolgreich, false im Fehlerfall + */ + public function getPrestudentRT($datum, $equal=false) + { + $sql_query='SELECT DISTINCT * FROM public.vw_prestudent WHERE rt_datum'; + if ($equal) + $sql_query.='='; + else + $sql_query.='='; + $sql_query.="'$datum' ORDER BY nachname,vorname"; + + if(!$this->db_query($sql_query)) + { + $this->errormsg = 'Fehler beim Speichern des Benutzer-Datensatzes:'.$sql_query; + return false; + } + + $this->num_rows=0; + + while($row = $this->db_fetch_object()) + { + $ps=new prestudent(); + $ps->prestudent_id = $row->prestudent_id; + $ps->person_id = $row->person_id; + $ps->reihungstest_id = $row->reihungstest_id; + $ps->staatsbuergerschaft = $row->staatsbuergerschaft; + $ps->geburtsnation = $row->geburtsnation; + $ps->sprache = $row->sprache; + $ps->anrede = $row->anrede; + $ps->titelpost = $row->titelpost; + $ps->titelpre = $row->titelpre; + $ps->nachname = $row->nachname; + $ps->vorname = $row->vorname; + $ps->vornamen = $row->vornamen; + $ps->gebdatum = $row->gebdatum; + $ps->gebort = $row->gebort; + $ps->gebzeit = $row->gebzeit; + // $ps->foto = $row->foto; + $ps->anmerkungen = $row->anmerkungen; + $ps->homepage = $row->homepage; + $ps->svnr = $row->svnr; + $ps->ersatzkennzeichen = $row->ersatzkennzeichen; + $ps->familienstand = $row->familienstand; + $ps->geschlecht = $row->geschlecht; + $ps->anzahlkinder = $row->anzahlkinder; + $ps->aktiv = $this->db_parse_bool($row->aktiv); + $ps->aufmerksamdurch_kurzbz = $row->aufmerksamdurch_kurzbz; + $ps->studiengang_kz = $row->studiengang_kz; + $ps->berufstaetigkeit_code = $row->berufstaetigkeit_code; + $ps->ausbildungcode = $row->ausbildungcode; + $ps->zgv_code = $row->zgv_code; + $ps->zgvort = $row->zgvort; + $ps->zgvdatum = $row->zgvdatum; + $ps->zgvmas_code = $row->zgvmas_code; + $ps->zgvmaort = $row->zgvmaort; + $ps->zgvmadatum = $row->zgvmadatum; + $ps->aufnahmeschluessel = $row->aufnahmeschluessel; + $ps->facheinschlberuf = $this->db_parse_bool($row->facheinschlberuf); + $ps->anmeldungreihungstest = $row->anmeldungreihungstest; + $ps->reihungstestangetreten = $this->db_parse_bool($row->reihungstestangetreten); + $ps->punkte = $row->punkte; + $ps->rt_punkte1 = $row->rt_punkte1; + $ps->rt_punkte2 = $row->rt_punkte2; + $ps->bismelden = $this->db_parse_bool($row->bismelden); + $ps->rt_studiengang_kz = $row->rt_studiengang_kz; + $ps->rt_ort = $row->rt_ort; + $ps->rt_datum = $row->rt_datum; + $ps->rt_uhrzeit = $row->rt_uhrzeit; + $ps->updateamum = $row->updateamum; + $ps->updatevon = $row->updatevon; + $ps->insertamum = $row->insertamum; + $ps->insertvon = $row->insertvon; + //$ps->ext_id_prestudent = $row->ext_id_prestudent; + $this->result[]=$ps; + $this->num_rows++; + } + return true; + } + + /** + * Laedt die Rolle(n) eines Prestudenten + */ + public function getPrestudentRolle($prestudent_id, $status_kurzbz=null, $studiensemester_kurzbz=null, $order="datum, insertamum", $ausbildungssemester=null) + { + if(!is_numeric($prestudent_id)) + { + $this->errormsg = 'Prestudent_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "SELECT + tbl_prestudentstatus.*, tbl_studienplan.bezeichnung as studienplan_bezeichnung + FROM public.tbl_prestudentstatus + LEFT JOIN lehre.tbl_studienplan USING(studienplan_id) + WHERE + prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER); + if($status_kurzbz!=null) + $qry.= " AND status_kurzbz=".$this->db_add_param($status_kurzbz); + if($studiensemester_kurzbz!=null) + $qry.= " AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); + if($ausbildungssemester!=null) + $qry.= " AND ausbildungssemester=".$this->db_add_param($ausbildungssemester); + + if($order!='') + $qry.=" ORDER BY ".$order; + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $rolle = new prestudent(); + + $rolle->prestudent_id = $row->prestudent_id; + $rolle->status_kurzbz = $row->status_kurzbz; + $rolle->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $rolle->ausbildungssemester = $row->ausbildungssemester; + $rolle->datum = $row->datum; + $rolle->insertamum = $row->insertamum; + $rolle->insertvon = $row->insertvon; + $rolle->updateamum = $row->updateamum; + $rolle->updatevon = $row->updatevon; + $rolle->orgform_kurzbz = $row->orgform_kurzbz; + $rolle->studienplan_id = $row->studienplan_id; + $rolle->studienplan_bezeichnung = $row->studienplan_bezeichnung; + $rolle->bestaetigtam = $row->bestaetigtam; + $rolle->bestaetigtvon = $row->bestaetigtvon; + $this->result[] = $rolle; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der PrestudentDaten'; + return false; + } + } + + /** + * Laedt die Rolle + * + * @param $prestudent_id + * @param $status_kurzbz + * @param $studiensemester_kurzbz + * @param $ausbildungssemester + * @return boolean + */ + public function load_rolle($prestudent_id, $status_kurzbz, $studiensemester_kurzbz, $ausbildungssemester) + { + if(!is_numeric($prestudent_id) || $prestudent_id=='') + { + $this->errormsg = 'Prestudent_id muss eine gueltige Zahl sein'; + return false; + } + + $qry = "SELECT * FROM public.tbl_prestudentstatus WHERE prestudent_id=".$this->db_add_param($prestudent_id). + " AND status_kurzbz=".$this->db_add_param($status_kurzbz). + " AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz). + " AND ausbildungssemester=".$this->db_add_param($ausbildungssemester); + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->prestudent_id = $row->prestudent_id; + $this->status_kurzbz = $row->status_kurzbz; + $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $this->ausbildungssemester = $row->ausbildungssemester; + $this->datum = $row->datum; + $this->insertamum = $row->insertamum; + $this->insertvon = $row->insertvon; + $this->updateamum = $row->updateamum; + $this->updatevon = $row->updatevon; + $this->ext_id_prestudent = $row->ext_id; + $this->orgform_kurzbz = $row->orgform_kurzbz; + $this->studienplan_id = $row->studienplan_id; + $this->bestaetigtam = $row->bestaetigtam; + $this->bestaetigtvon = $row->bestaetigtvon; + + return true; + } + else + { + $this->errormsg = 'Rolle existiert nicht'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der PrestudentDaten'; + return false; + } + } + + /** + * Laedt die Interessenten und Bewerber fuer ein bestimmtes Studiensemester + * @param $studiensemester_kurzbz Studiensemester fuer das die Int. und Bewerber + * geladen werden sollen + */ + public function loadIntessentenUndBewerber($studiensemester_kurzbz, $studiengang_kz, $semester=null, $typ=null, $orgform=null) + { + $stsemqry=''; + if(!is_null($studiensemester_kurzbz) && $studiensemester_kurzbz!='') + $stsemqry=" AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); + + $qry = "SELECT + *, a.anmerkung, tbl_person.anmerkung as anmerkungen + FROM + ( + SELECT + *, (SELECT status_kurzbz FROM tbl_prestudentstatus + WHERE prestudent_id=prestudent.prestudent_id $stsemqry + ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1) AS rolle + FROM tbl_prestudent prestudent ORDER BY prestudent_id + ) a, tbl_prestudentstatus, tbl_person + WHERE a.rolle=tbl_prestudentstatus.status_kurzbz AND + a.person_id=tbl_person.person_id AND + a.prestudent_id = tbl_prestudentstatus.prestudent_id AND + a.studiengang_kz=".$this->db_add_param($studiengang_kz); + + if(!is_null($studiensemester_kurzbz) && $studiensemester_kurzbz!='') + $qry.=" AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); + + if($semester!=null) + $qry.=" AND ausbildungssemester=".$this->db_add_param($semester); + if($orgform!=null && $orgform!='') + $qry.=" AND tbl_prestudentstatus.orgform_kurzbz=".$this->db_add_param($orgform); + + switch ($typ) + { + case "interessenten": + $qry.=" AND a.rolle='Interessent'"; + break; + case "zgv": + $stg_obj = new studiengang(); + $stg_obj->load($studiengang_kz); + if($stg_obj->typ=='m') + $qry.=" AND a.rolle='Interessent' AND a.zgvmas_code is not null"; + else + $qry.=" AND a.rolle='Interessent' AND a.zgv_code is not null"; + break; + case "reihungstestangemeldet": + $qry.=" AND a.rolle='Interessent' AND a.anmeldungreihungstest is not null"; + break; + case "reihungstestnichtangemeldet": + $qry.=" AND a.rolle='Interessent' AND a.anmeldungreihungstest is null"; + break; + case "bewerber": + $qry.=" AND a.rolle='Bewerber'"; + break; + case "aufgenommen": + $qry.=" AND a.rolle='Aufgenommener'"; + break; + case "warteliste": + $qry.=" AND a.rolle='Wartender'"; + break; + case "absage": + $qry.=" AND a.rolle='Abgewiesener'"; + break; + case "prestudent": + if($studiensemester_kurzbz=='' || is_null($studiensemester_kurzbz)) + $qry = "SELECT *, '' as status_kurzbz, '' as studiensemester_kurzbz, '' as ausbildungssemester, '' as datum, tbl_person.anmerkung as anmerkungen, '' as orgform_kurzbz FROM public.tbl_prestudent prestudent, public.tbl_person WHERE NOT EXISTS (select * from tbl_prestudentstatus WHERE prestudent_id=prestudent.prestudent_id) AND studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER)." AND prestudent.person_id=tbl_person.person_id"; + else + $qry .= " AND a.rolle IN('Interessent', 'Bewerber', 'Aufgenommener', 'Wartender', 'Abgewiesener')"; + break; + case "absolvent": + $qry.=" AND a.rolle='Absolvent'"; + break; + case "diplomand": + $qry.=" AND a.rolle='Diplomand'"; + break; + default: + break; + } + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $ps = new prestudent(); + + $ps->person_id = $row->person_id; + $ps->staatsbuergerschaft = $row->staatsbuergerschaft; + $ps->gebnation = $row->geburtsnation; + $ps->sprache = $row->sprache; + $ps->anrede = $row->anrede; + $ps->titelpost = $row->titelpost; + $ps->titelpre = $row->titelpre; + $ps->nachname = $row->nachname; + $ps->vorname = $row->vorname; + $ps->vornamen = $row->vornamen; + $ps->gebdatum = $row->gebdatum; + $ps->gebort = $row->gebort; + $ps->gebzeit = $row->gebzeit; + //$ps->foto = $row->foto; + $ps->anmerkungen = $row->anmerkungen; + $ps->homepage = $row->homepage; + $ps->svnr = $row->svnr; + $ps->ersatzkennzeichen = $row->ersatzkennzeichen; + $ps->familienstand = $row->familienstand; + $ps->geschlecht = $row->geschlecht; + $ps->anzahlkinder = $row->anzahlkinder; + $ps->aktiv = $this->db_parse_bool($row->aktiv); + + $ps->prestudent_id = $row->prestudent_id; + $ps->aufmerksamdurch_kurzbz = $row->aufmerksamdurch_kurzbz; + $ps->studiengang_kz = $row->studiengang_kz; + $ps->berufstaetigkeit_code = $row->berufstaetigkeit_code; + $ps->ausbildungcode = $row->ausbildungcode; + $ps->zgv_code = $row->zgv_code; + $ps->zgvort = $row->zgvort; + $ps->zgvdatum = $row->zgvdatum; + $ps->zgvmas_code = $row->zgvmas_code; + $ps->zgvmaort = $row->zgvmaort; + $ps->zgvmadatum = $row->zgvmadatum; + $ps->ausstellungsstaat = $row->ausstellungsstaat; + $ps->aufnahmeschluessel = $row->aufnahmeschluessel; + $ps->facheinschlberuf = $this->db_parse_bool($row->facheinschlberuf); + $ps->anmeldungreihungstest = $row->anmeldungreihungstest; + $ps->reihungstestangetreten = $this->db_parse_bool($row->reihungstestangetreten); + $ps->reihungstest_id = $row->reihungstest_id; + $ps->punkte = $row->rt_gesamtpunkte; + $ps->rt_punkte1 = $row->rt_punkte1; + $ps->rt_punkte2 = $row->rt_punkte2; + $ps->rt_punkte3 = $row->rt_punkte3; + $ps->bismelden = $this->db_parse_bool($row->bismelden); + $ps->anmerkung = $row->anmerkung; + $ps->dual = $this->db_parse_bool($row->dual); + + $ps->status_kurzbz = $row->status_kurzbz; + $ps->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $ps->ausbildungssemester = $row->ausbildungssemester; + $ps->datum = $row->datum; + $ps->orgform_kurzbz = $row->orgform_kurzbz; + + $this->result[] = $ps; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Prueft ob eine Person bereits einen PreStudenteintrag + * fuer einen Studiengang besitzt + * @param person_id + * studiengang_kz + * @return true wenn vorhanden + * false wenn nicht vorhanden + * false und errormsg wenn Fehler aufgetreten ist + */ + public function exists($person_id, $studiengang_kz) + { + if(!is_numeric($person_id)) + { + $this->errormsg = 'Person_id muss eine gueltige Zahl sein'; + return false; + } + + if(!is_numeric($studiengang_kz)) + { + $this->errormsg = 'Studiengang_kz muss eine gueltige Zahl sein'; + return false; + } + + $qry = "SELECT count(*) as anzahl FROM public.tbl_prestudent + WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER)." + AND studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER); + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + if($row->anzahl>0) + { + $this->errormsg = ''; + return true; + } + else + { + $this->errormsg = ''; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Speichert den Prestudentstatus + * @return true wenn ok, false im Fehlerfall + */ + public function save_rolle() + { + if($this->new) + { + //pruefen ob die Rolle schon vorhanden ist + if($this->load_rolle($this->prestudent_id, $this->status_kurzbz, $this->studiensemester_kurzbz, $this->ausbildungssemester)) + { + $this->errormsg = 'Diese Rolle existiert bereits'; + return false; + } + + $qry = 'INSERT INTO public.tbl_prestudentstatus (prestudent_id, status_kurzbz, + studiensemester_kurzbz, ausbildungssemester, datum, insertamum, insertvon, + updateamum, updatevon, ext_id, orgform_kurzbz, bestaetigtam, bestaetigtvon, studienplan_id) VALUES('. + $this->db_add_param($this->prestudent_id).",". + $this->db_add_param($this->status_kurzbz).",". + $this->db_add_param($this->studiensemester_kurzbz).",". + $this->db_add_param($this->ausbildungssemester).",". + $this->db_add_param($this->datum).",". + $this->db_add_param($this->insertamum).",". + $this->db_add_param($this->insertvon).",". + $this->db_add_param($this->updateamum).",". + $this->db_add_param($this->updatevon).",". + $this->db_add_param($this->ext_id_prestudent).",". + $this->db_add_param($this->orgform_kurzbz).",". + $this->db_add_param($this->bestaetigtam).",". + $this->db_add_param($this->bestaetigtvon).",". + $this->db_add_param($this->studienplan_id,FHC_INTEGER).");"; + } + else + { + if($this->studiensemester_old=='') + $this->studiensemester_old = $this->studiensemester_kurzbz; + if($this->ausbildungssemester_old=='') + $this->ausbildungssemester_old = $this->ausbildungssemester; + + //wenn der PrimaryKey geaendert wird, schauen ob schon ein Eintrag mit diesem Key vorhanden ist + if($this->studiensemester_old!=$this->studiensemester_kurzbz || $this->ausbildungssemester_old!=$this->ausbildungssemester) + { + if($this->load_rolle($this->prestudent_id, $this->status_kurzbz, $this->studiensemester_kurzbz, $this->ausbildungssemester)) + { + $this->errormsg = 'Diese Rolle existiert bereits'; + return false; + } + } + $qry = 'UPDATE public.tbl_prestudentstatus SET'. + ' ausbildungssemester='.$this->db_add_param($this->ausbildungssemester).",". + ' studiensemester_kurzbz='.$this->db_add_param($this->studiensemester_kurzbz).",". + ' datum='.$this->db_add_param($this->datum).",". + ' updateamum='.$this->db_add_param($this->updateamum).",". + ' updatevon='.$this->db_add_param($this->updatevon).",". + ' bestaetigtam='.$this->db_add_param($this->bestaetigtam).",". + ' bestaetigtvon='.$this->db_add_param($this->bestaetigtvon).",". + ' studienplan_id='.$this->db_add_param($this->studienplan_id, FHC_INTEGER).",". + ' orgform_kurzbz='.$this->db_add_param($this->orgform_kurzbz). + " WHERE + prestudent_id=".$this->db_add_param($this->prestudent_id, FHC_INTEGER, false)." + AND status_kurzbz=".$this->db_add_param($this->status_kurzbz, FHC_STRING, false)." + AND studiensemester_kurzbz=".$this->db_add_param($this->studiensemester_old, FHC_STRING, false)." + AND ausbildungssemester=".$this->db_add_param($this->ausbildungssemester_old, FHC_STRING, false).";"; + } + + if($this->db_query($qry)) + { + //Log schreiben + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern des Prestudentstatus'; + return false; + } + } + + /** + * Loescht einen Prestudentstatus + * @param $prestudent_id + * $status_kurzbz + * $studiensemester_kurzbz + * $ausbildungssemester + * @return true wenn ok, false wenn Fehler + */ + public function delete_rolle($prestudent_id, $status_kurzbz, $studiensemester_kurzbz, $ausbildungssemester) + { + if(!is_numeric($prestudent_id)) + { + $this->errormsg = 'Prestudent_id ist ungueltig'; + return false; + } + + $qry = "DELETE FROM public.tbl_prestudentstatus + WHERE + prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER)." + AND status_kurzbz=".$this->db_add_param($status_kurzbz)." + AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)." + AND ausbildungssemester=".$this->db_add_param($ausbildungssemester); + + if($this->load_rolle($prestudent_id, $status_kurzbz, $studiensemester_kurzbz, $ausbildungssemester)) + { + $this->db_query('BEGIN;'); + + $log = new log(); + + $log->executetime = date('Y-m-d H:i:s'); + $log->beschreibung = 'Loeschen der Rolle '.$status_kurzbz.' bei '.$prestudent_id; + $log->mitarbeiter_uid = get_uid(); + $log->sql = $qry; + $log->sqlundo = 'INSERT INTO public.tbl_prestudentstatus(prestudent_id, status_kurzbz, studiensemester_kurzbz,'. + ' ausbildungssemester, datum, insertamum, insertvon, updateamum, updatevon, ext_id, orgform_kurzbz, bestaetigtam, bestaetigtvon, studienplan_id) VALUES('. + $this->db_add_param($this->prestudent_id).','. + $this->db_add_param($this->status_kurzbz).','. + $this->db_add_param($this->studiensemester_kurzbz).','. + $this->db_add_param($this->ausbildungssemester).','. + $this->db_add_param($this->datum).','. + $this->db_add_param($this->insertamum).','. + $this->db_add_param($this->insertvon).','. + $this->db_add_param($this->updateamum).','. + $this->db_add_param($this->updatevon).','. + $this->db_add_param($this->ext_id_prestudent).','. + $this->db_add_param($this->orgform_kurzbz).','. + $this->db_add_param($this->bestaetigtam).','. + $this->db_add_param($this->bestaetigtvon).','. + $this->db_add_param($this->studienplan_id, FHC_INTEGER).');'; + if($log->save(true)) + { + + if($this->db_query($qry)) + { + $this->db_query('COMMIT'); + return true; + } + else + { + $this->db_query('ROLLBACK'); + $this->errormsg = 'Fehler beim Loeschen der Daten'; + return false; + } + } + else + { + $this->db_query('ROLLBACK'); + $this->errormsg = 'Fehler beim Speichern des Log-Eintrages'; + return false; + } + } + else + { + return false; + } + } + + public function bestaetige_rolle($prestudent_id, $status_kurzbz, $studiensemester_kurzbz, $ausbildungssemester, $user) + { + if(!is_numeric($prestudent_id)) + { + $this->errormsg = 'Prestudent_id ist ungueltig'; + return false; + } + + $qry = 'UPDATE public.tbl_prestudentstatus SET'. + ' bestaetigtam='.$this->db_add_param(date('Y-m-d')).','. + ' bestaetigtvon='.$this->db_add_param($user)." ". + ' WHERE + prestudent_id='.$this->db_add_param($prestudent_id, FHC_INTEGER).' + AND status_kurzbz='.$this->db_add_param($status_kurzbz).' + AND studiensemester_kurzbz='.$this->db_add_param($studiensemester_kurzbz).' + AND ausbildungssemester='.$this->db_add_param($ausbildungssemester); + + if($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg='Fehler beim Speichern der Daten'; + return false; + } + } + + /** + * Liefert den Letzten Status eines Prestudenten in einem Studiensemester + * Wenn kein Studiensemester angegeben wird, wird der letztgueltige Status ermittelt + * @param $prestudent_id + * @param $studiensemester_kurzbz + * @return boolean + */ + public function getLastStatus($prestudent_id, $studiensemester_kurzbz='', $status_kurzbz = '') + { + if($prestudent_id=='' || !is_numeric($prestudent_id)) + { + $this->errormsg = 'Prestudent_id ist ungueltig'; + return false; + } + + $qry = "SELECT tbl_prestudentstatus.*, bezeichnung AS studienplan_bezeichnung + FROM public.tbl_prestudentstatus LEFT JOIN lehre.tbl_studienplan USING (studienplan_id) + WHERE prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER); + + if($studiensemester_kurzbz!='') + $qry.=" AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); + + if($status_kurzbz !='') + $qry.= " AND status_kurzbz =".$this->db_add_param($status_kurzbz); + + $qry.=" ORDER BY datum DESC, insertamum DESC, ext_id DESC LIMIT 1"; + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->prestudent_id = $row->prestudent_id; + $this->status_kurzbz = $row->status_kurzbz; + $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $this->ausbildungssemester = $row->ausbildungssemester; + $this->datum = $row->datum; + $this->insertamum = $row->insertamum; + $this->insertvon = $row->insertvon; + $this->updateamum = $row->updateamum; + $this->updatevon = $row->updatevon; + $this->bestaetigtam = $row->bestaetigtam; + $this->bestaetigtvon = $row->bestaetigtvon; + $this->orgform_kurzbz = $row->orgform_kurzbz; + $this->studienplan_id = $row->studienplan_id; + $this->studienplan_bezeichnung = $row->studienplan_bezeichnung; + return true; + } + else + { + $this->errormsg = 'Keine Rolle vorhanden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der PrestudentDaten'; + return false; + } + } + + /** + * Liefert den Ersten Status eines Prestudenten mit der übergebenen Statuskurzbezeichnung + * @param $prestudent_id + * @param $studiensemester_kurzbz + * @return boolean + */ + public function getFirstStatus($prestudent_id, $status_kurzbz) + { + if($prestudent_id=='' || !is_numeric($prestudent_id)) + { + $this->errormsg = 'Prestudent_id ist ungueltig'; + return false; + } + + $qry = "SELECT * FROM public.tbl_prestudentstatus + WHERE + prestudent_id=".$this->db_add_param($prestudent_id, FHC_INTEGER)." + AND status_kurzbz = ".$this->db_add_param($status_kurzbz)." + ORDER BY datum ASC, insertamum ASC, ext_id ASC LIMIT 1"; + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->prestudent_id = $row->prestudent_id; + $this->status_kurzbz = $row->status_kurzbz; + $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $this->ausbildungssemester = $row->ausbildungssemester; + $this->datum = $row->datum; + $this->insertamum = $row->insertamum; + $this->insertvon = $row->insertvon; + $this->updateamum = $row->updateamum; + $this->updatevon = $row->updatevon; + $this->bestaetigtam = $row->bestaetigtam; + $this->bestaetigtvon = $row->bestaetigtvon; + $this->orgform_kurzbz = $row->orgform_kurzbz; + $this->studienplan_id = $row->studienplan_id; + return true; + } + else + { + $this->errormsg = 'Keine Rolle vorhanden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der PrestudentDaten'; + return false; + } + } + + /** + * Laedt alle Prestudenten der Person + * @return true wenn ok, false wenn Fehler + */ + public function getPrestudenten($person_id) + { + if(!is_numeric($person_id) || $person_id=='') + { + $this->errormsg='ID ist ungueltig'; + return false; + } + + $qry = "SELECT * FROM public.tbl_prestudent WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER)." ORDER BY prestudent_id"; + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $obj = new prestudent(); + + $obj->prestudent_id = $row->prestudent_id; + $obj->aufmerksamdurch_kurzbz = $row->aufmerksamdurch_kurzbz; + $obj->studiengang_kz = $row->studiengang_kz; + $obj->berufstaetigkeit_code = $row->berufstaetigkeit_code; + $obj->ausbildungcode = $row->ausbildungcode; + $obj->zgv_code = $row->zgv_code; + $obj->zgvort = $row->zgvort; + $obj->zgvdatum = $row->zgvdatum; + $obj->zgvmas_code = $row->zgvmas_code; + $obj->zgvmaort = $row->zgvmaort; + $obj->zgvmadatum = $row->zgvmadatum; + $obj->aufnahmeschluessel = $row->aufnahmeschluessel; + $obj->facheinschlberuf = $this->db_parse_bool($row->facheinschlberuf); + $obj->anmeldungreihungstest = $row->anmeldungreihungstest; + $obj->reihungstestangetreten = $this->db_parse_bool($row->reihungstestangetreten); + $obj->reihungstest_id = $row->reihungstest_id; + $obj->punkte = $row->rt_gesamtpunkte; + $obj->rt_punkte1 = $row->rt_punkte1; + $obj->rt_punkte2 = $row->rt_punkte2; + $obj->rt_punkte3 = $row->rt_punkte3; + $obj->bismelden = $this->db_parse_bool($row->bismelden); + $obj->person_id = $row->person_id; + $obj->anmerkung = $row->anmerkung; + $obj->mentor = $row->mentor; + $obj->ext_id_prestudent = $row->ext_id; + $obj->dual = $this->db_parse_bool($row->dual); + $obj->ausstellungsstaat = $row->ausstellungsstaat; + $obj->zgvdoktor_code = $row->zgvdoktor_code; + $obj->zgvdoktorort = $row->zgvdoktorort; + $obj->zgvdoktordatum = $row->zgvdoktordatum; + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg = "Fehler beim Laden"; + return false; + } + } + + /** + * Liefert die Anzahl der Bewerber im ausgewaehlten Bereich + * @param $studiensemester_kurzbz Studiensemester + * @param $studiengang_kz Kennzahl des Studienganges (optional) + * @param $orgform_kurzbz Organisationsform (optional) + * @param $ausbildungssemester Ausbildungssemester (optional) + * @return Anzahl der Bewerber oder false im Fehlerfall + */ + public function getAnzBewerber($studiensemester_kurzbz, $studiengang_kz=null, $orgform_kurzbz=null, $ausbildungssemester=null) + { + $qry = "SELECT + count(*) as anzahl + FROM + public.tbl_prestudent + JOIN public.tbl_prestudentstatus USING(prestudent_id) + WHERE + tbl_prestudentstatus.status_kurzbz='Bewerber' + AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); + + if(!is_null($studiengang_kz)) + $qry.=" AND tbl_prestudent.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER); + + if(!is_null($orgform_kurzbz)) + $qry.=" AND (tbl_prestudentstatus.orgform_kurzbz=".$this->db_add_param($orgform_kurzbz)." OR (tbl_prestudentstatus.orgform_kurzbz IS NULL AND EXISTS(SELECT 1 FROM public.tbl_studiengang WHERE studiengang_kz=tbl_prestudent.studiengang_kz AND orgform_kurzbz=".$this->db_add_param($orgform_kurzbz).")))"; + + if(!is_null($ausbildungssemester)) + $qry.=" AND tbl_prestudentstatus.ausbildungssemester=".$this->db_add_param($ausbildungssemester); + + if($result = $this->db_query($qry)) + { + if($row = $this->db_fetch_object($result)) + { + return $row->anzahl; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Liefert die Anzahl der Interessenten im ausgewaehlten Bereich + * @param $studiensemester_kurzbz Studiensemester + * @param $studiengang_kz Kennzahl des Studienganges (optional) + * @param $orgform_kurzbz Organisationsform (optional) + * @param $ausbildungssemester Ausbildungssemester (optional) + * @return Anzahl der Interessenten oder false im Fehlerfall + */ + public function getAnzInteressenten($studiensemester_kurzbz, $studiengang_kz=null, $orgform_kurzbz=null, $ausbildungssemester=null) + { + $qry = "SELECT + count(*) as anzahl + FROM + public.tbl_prestudent + JOIN public.tbl_prestudentstatus USING(prestudent_id) + WHERE + tbl_prestudentstatus.status_kurzbz='Interessent' + AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); + + if(!is_null($studiengang_kz)) + $qry.=" AND tbl_prestudent.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER); + + if(!is_null($orgform_kurzbz)) + $qry.=" AND (tbl_prestudentstatus.orgform_kurzbz=".$this->db_add_param($orgform_kurzbz)." OR (tbl_prestudentstatus.orgform_kurzbz IS NULL AND EXISTS(SELECT 1 FROM public.tbl_studiengang WHERE studiengang_kz=tbl_prestudent.studiengang_kz AND orgform_kurzbz=".$this->db_add_param($orgform_kurzbz).")))"; + + if(!is_null($ausbildungssemester)) + $qry.=" AND tbl_prestudentstatus.ausbildungssemester=".$this->db_add_param($ausbildungssemester); + + if($result = $this->db_query($qry)) + { + if($row = $this->db_fetch_object($result)) + { + return $row->anzahl; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Liefert die Anzahl der Interessenten mit Zugangsvoraussetzung im ausgewaehlten Bereich + * @param $studiensemester_kurzbz Studiensemester + * @param $studiengang_kz Kennzahl des Studienganges (optional) + * @param $orgform_kurzbz Organisationsform (optional) + * @param $ausbildungssemester Ausbildungssemester (optional) + * @return Anzahl der Interessenten mit ZGV oder false im Fehlerfall + */ + public function getAnzInteressentenZGV($studiensemester_kurzbz, $studiengang_kz=null, $orgform_kurzbz=null, $ausbildungssemester=null) + { + $qry = "SELECT + count(*) as anzahl + FROM + public.tbl_prestudent + JOIN public.tbl_prestudentstatus USING(prestudent_id) + JOIN public.tbl_studiengang USING(studiengang_kz) + WHERE + tbl_prestudentstatus.status_kurzbz='Interessent' + AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)." + AND ((tbl_studiengang.typ<>'m' AND zgv_code IS NOT NULL) OR zgvmas_code IS NOT NULL)"; + + if(!is_null($studiengang_kz)) + $qry.=" AND tbl_prestudent.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER); + + if(!is_null($orgform_kurzbz)) + $qry.=" AND (tbl_prestudentstatus.orgform_kurzbz=".$this->db_add_param($orgform_kurzbz)." OR (tbl_prestudentstatus.orgform_kurzbz IS NULL AND tbl_studiengang.orgform_kurzbz=".$this->db_add_param($orgform_kurzbz)."))"; + + if(!is_null($ausbildungssemester)) + $qry.=" AND tbl_prestudentstatus.ausbildungssemester=".$this->db_add_param($ausbildungssemester); + + if($result = $this->db_query($qry)) + { + if($row = $this->db_fetch_object($result)) + { + return $row->anzahl; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + + } + + /** + * Liefert ein Array mit den Bewerberzahlen + * @param $studiensemester_kurzbz (optional) + * @return true wenn ok, false im Fehlerfall DatenArray in $this->result + * Bsp: + * $prestudent->result[$stsem][$stg_kz]['anzahl'] + * $prestudent->result[$stsem][$stg_kz][$orgform][$semester]['anzahl'] + */ + public function listAnzBewerber($studiensemester_kurzbz=null) + { + $qry = "SELECT + tbl_prestudentstatus.studiensemester_kurzbz, + tbl_prestudent.studiengang_kz, + tbl_prestudentstatus.ausbildungssemester, + COALESCE(tbl_prestudentstatus.orgform_kurzbz, tbl_studiengang.orgform_kurzbz) as orgform_kurzbz + FROM + public.tbl_prestudent + JOIN public.tbl_prestudentstatus USING(prestudent_id) + JOIN public.tbl_studiengang USING(studiengang_kz) + WHERE + tbl_prestudentstatus.status_kurzbz='Bewerber'"; + + if(!is_null($studiensemester_kurzbz)) + $qry.=" AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); + + $this->result = array(); + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + // Studiensemester + if(!isset($this->result[$row->studiensemester_kurzbz]['anzahl'])) + $this->result[$row->studiensemester_kurzbz]['anzahl']=0; + + $this->result[$row->studiensemester_kurzbz]['anzahl']++; + + // Studiengang + if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl'])) + $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl']=0; + + $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl']++; + + // Orgform + if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl'])) + $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl']=0; + + $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl']++; + + // Ausbildungssemester + if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl'])) + $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl']=0; + + $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl']++; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + + + + + /** + * Liefert ein Array mit den Interessentenzahlen + * @param $studiensemester_kurzbz (optional) + * @return true wenn ok, false im Fehlerfall DatenArray in $this->result + * Bsp: + * $prestudent->result[$stsem][$stg_kz]['anzahl'] + * $prestudent->result[$stsem][$stg_kz][$orgform][$semester]['anzahl'] + */ + public function listAnzInteressenten($studiensemester_kurzbz=null) + { + $qry = "SELECT + tbl_prestudentstatus.studiensemester_kurzbz, + tbl_prestudent.studiengang_kz, + tbl_prestudentstatus.ausbildungssemester, + COALESCE(tbl_prestudentstatus.orgform_kurzbz, tbl_studiengang.orgform_kurzbz) as orgform_kurzbz + FROM + public.tbl_prestudent + JOIN public.tbl_prestudentstatus USING(prestudent_id) + JOIN public.tbl_studiengang USING(studiengang_kz) + WHERE + bismelden=true + AND tbl_prestudentstatus.status_kurzbz='Interessent'"; + + if(!is_null($studiensemester_kurzbz)) + $qry.=" AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); + + $this->result = array(); + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + // Studiensemester + if(!isset($this->result[$row->studiensemester_kurzbz]['anzahl'])) + $this->result[$row->studiensemester_kurzbz]['anzahl']=0; + + $this->result[$row->studiensemester_kurzbz]['anzahl']++; + + // Studiengang + if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl'])) + $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl']=0; + + $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl']++; + + // Orgform + if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl'])) + $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl']=0; + + $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl']++; + + // Ausbildungssemester + if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl'])) + $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl']=0; + + $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl']++; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + + public function listAnzAbbrecher($studiensemester_kurzbz=null) + { + $qry = "SELECT + tbl_prestudentstatus.studiensemester_kurzbz, + tbl_prestudent.studiengang_kz, + tbl_prestudentstatus.ausbildungssemester, + COALESCE(tbl_prestudentstatus.orgform_kurzbz, tbl_studiengang.orgform_kurzbz) as orgform_kurzbz + FROM + public.tbl_prestudent + JOIN public.tbl_prestudentstatus USING(prestudent_id) + JOIN public.tbl_studiengang USING(studiengang_kz) + WHERE + tbl_prestudentstatus.status_kurzbz='Abbrecher' + AND bismelden=true"; + + if(!is_null($studiensemester_kurzbz)) + $qry.=" AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); + + $this->result = array(); + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + // Studiensemester + if(!isset($this->result[$row->studiensemester_kurzbz]['anzahl'])) + $this->result[$row->studiensemester_kurzbz]['anzahl']=0; + + $this->result[$row->studiensemester_kurzbz]['anzahl']++; + + // Studiengang + if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl'])) + $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl']=0; + + $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl']++; + + // Orgform + if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl'])) + $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl']=0; + + $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl']++; + + // Ausbildungssemester + if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl'])) + $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl']=0; + + $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl']++; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + public function listAnzStudierende($studiensemester_kurzbz=null) + { + $qry = "SELECT + distinct on(prestudent_id) prestudent_id, + tbl_prestudentstatus.studiensemester_kurzbz, + tbl_prestudent.studiengang_kz, + tbl_prestudentstatus.ausbildungssemester, + COALESCE(tbl_prestudentstatus.orgform_kurzbz, tbl_studiengang.orgform_kurzbz) as orgform_kurzbz + FROM + public.tbl_prestudent + JOIN public.tbl_prestudentstatus USING(prestudent_id) + JOIN public.tbl_studiengang USING(studiengang_kz) + WHERE + tbl_prestudentstatus.status_kurzbz IN ('Student','Unterbrecher','Diplomand') + AND bismelden=true"; + + if(!is_null($studiensemester_kurzbz)) + $qry.=" AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); + + + + $this->result = array(); + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + // Studiensemester + if(!isset($this->result[$row->studiensemester_kurzbz]['anzahl'])) + $this->result[$row->studiensemester_kurzbz]['anzahl']=0; + + $this->result[$row->studiensemester_kurzbz]['anzahl']++; + + // Studiengang + if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl'])) + $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl']=0; + + $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz]['anzahl']++; + + // Orgform + if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl'])) + $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl']=0; + + $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz]['anzahl']++; + + // Ausbildungssemester + if(!isset($this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl'])) + $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl']=0; + + $this->result[$row->studiensemester_kurzbz][$row->studiengang_kz][$row->orgform_kurzbz][$row->ausbildungssemester]['anzahl']++; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Anzahl der Abbrecher liefern.
    + * WM: Kopie von getBewerber() => @TODO: überprüfen!!! + * @param type $studiensemester_kurzbz + * @param type $studiengang_kz + * @param type $orgform_kurzbz + * @param type $ausbildungssemester + * @return boolean + */ + public function getAnzAbbrecher($studiensemester_kurzbz, $studiengang_kz=null, $orgform_kurzbz=null, $ausbildungssemester=null) + { + $qry = "SELECT + count(*) as anzahl + FROM + public.tbl_prestudent + JOIN public.tbl_prestudentstatus USING(prestudent_id) + WHERE + tbl_prestudentstatus.status_kurzbz='Abbrecher' + AND bismelden=true + AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); + + if(!is_null($studiengang_kz)) + $qry.=" AND tbl_prestudent.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER); + + if(!is_null($orgform_kurzbz)) + $qry.=" AND (tbl_prestudentstatus.orgform_kurzbz=".$this->db_add_param($orgform_kurzbz)." OR (tbl_prestudentstatus.orgform_kurzbz IS NULL AND EXISTS(SELECT 1 FROM public.tbl_studiengang WHERE studiengang_kz=tbl_prestudent.studiengang_kz AND orgform_kurzbz=".$this->db_add_param($orgform_kurzbz).")))"; + + if(!is_null($ausbildungssemester)) + $qry.=" AND tbl_prestudentstatus.ausbildungssemester=".$this->db_add_param($ausbildungssemester); + + if($result = $this->db_query($qry)) + { + if($row = $this->db_fetch_object($result)) + { + return $row->anzahl; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Anzahl der Studierenden liefern.
    + * WM: Kopie von getBewerber() => @TODO: überprüfen!!! + * @param type $studiensemester_kurzbz + * @param type $studiengang_kz + * @param type $orgform_kurzbz + * @param type $ausbildungssemester + * @return boolean + */ + public function getAnzStudierende($studiensemester_kurzbz, $studiengang_kz=null, $orgform_kurzbz=null, $ausbildungssemester=null) + { + $qry = "SELECT count(*) as anzahl FROM ( + SELECT + distinct on(prestudent_id) prestudent_id + FROM + public.tbl_prestudent + JOIN public.tbl_prestudentstatus USING(prestudent_id) + WHERE + tbl_prestudentstatus.status_kurzbz IN ('Student','Unterbrecher','Diplomand') + AND bismelden=true + AND tbl_prestudentstatus.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); + + if(!is_null($studiengang_kz)) + $qry.=" AND tbl_prestudent.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER); + + if(!is_null($orgform_kurzbz)) + $qry.=" AND (tbl_prestudentstatus.orgform_kurzbz=".$this->db_add_param($orgform_kurzbz)." OR (tbl_prestudentstatus.orgform_kurzbz IS NULL AND EXISTS(SELECT 1 FROM public.tbl_studiengang WHERE studiengang_kz=tbl_prestudent.studiengang_kz AND orgform_kurzbz=".$this->db_add_param($orgform_kurzbz).")))"; + + if(!is_null($ausbildungssemester)) + $qry.=" AND tbl_prestudentstatus.ausbildungssemester=".$this->db_add_param($ausbildungssemester); + + $qry.=") as sub"; + + if($result = $this->db_query($qry)) + { + if($row = $this->db_fetch_object($result)) + { + return $row->anzahl; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + public function getSemesterZuUid($uid) { + + $qry = 'SELECT studiensemester_kurzbz, bezeichnung ' + . 'FROM public.tbl_prestudentstatus ' + . 'JOIN public.tbl_prestudent ' + . 'USING (prestudent_id) ' + . 'JOIN public.tbl_student ' + . 'USING (prestudent_id) ' + . 'JOIN public.tbl_studiensemester ' + . 'USING (studiensemester_kurzbz) ' + . 'WHERE status_kurzbz IN (' + . $this->db_add_param("Student") . ', ' + . $this->db_add_param("Diplomand") . ', ' + . $this->db_add_param("Incoming") . ')' + . ' AND student_uid = ' . $this->db_add_param($uid) + . ' ORDER BY ausbildungssemester'; + + $result = $this->db_query($qry); + $semester = array(); + + while($row = $this->db_fetch_object($result)) { + $semester[$row->studiensemester_kurzbz] = $row->bezeichnung; + } + + return $semester; + } +} diff --git a/include/student.class.php b/include/student.class.php index 311ace356..489d782cc 100644 --- a/include/student.class.php +++ b/include/student.class.php @@ -1,799 +1,835 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ -require_once(dirname(__FILE__).'/benutzer.class.php'); - -class student extends benutzer -{ - - //Tabellenspalten - public $matrikelnr; - public $prestudent_id; - public $studiengang_kz; - public $semester; - public $verband; - public $gruppe; - public $ext_id_student; - public $result; - - public $studiensemester_kurzbz; - - /** - * Konstruktor - Laedt optional einen Studenten - * @param $uid Student der geladen werden soll (default=null) - */ - public function __construct($uid=null) - { - parent::__construct(); - - //Student laden - if($uid!=null) - $this->load($uid); - } - - /** - * Laedt die Daten eines Studenten - * Wenn Studiensemester_kurzbz angegeben wird, dann werden - * Studiengang, Semester, Verband und Gruppe aus der Tabelle - * Studentlehrverband geholt. - * @param uid - * studiensemester_kurzbz - * @return true wenn ok, false im Fehlerfall - */ - public function load($uid, $studiensemester_kurzbz=null) - { - if(!benutzer::load($uid)) - return false; - if(is_null($studiensemester_kurzbz)) - $qry = "SELECT * FROM public.tbl_student WHERE student_uid=".$this->db_add_param($uid); - else - $qry = "SELECT *, tbl_studentlehrverband.studiengang_kz as studiengang_kz, tbl_studentlehrverband.semester as semester, - tbl_studentlehrverband.verband as verband, tbl_studentlehrverband.gruppe as gruppe - FROM public.tbl_student JOIN public.tbl_studentlehrverband USING(student_uid) - WHERE studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)." AND student_uid=".$this->db_add_param($uid); - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - $this->uid = $row->student_uid; - $this->matrikelnr = $row->matrikelnr; - $this->prestudent_id = $row->prestudent_id; - $this->studiengang_kz = $row->studiengang_kz; - $this->semester = $row->semester; - $this->verband = $row->verband; - $this->gruppe = $row->gruppe; - $this->updateamum = $row->updateamum; - $this->updatevon = $row->updatevon; - $this->insertamum = $row->insertamum; - $this->insertvon = $row->insertvon; - $this->ext_id = $row->ext_id; - - return true; - } - else - { - $this->errormsg = 'Kein Benutzer mit dieser UID vorhanden'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Auslesen des Studenten'; - return false; - } - } - - /** - * Prueft die Variablen vor dem Speichern - * auf Gueltigkeit. - * @return true wenn ok, false im Fehlerfall - */ - protected function validate() - { - if(mb_strlen($this->uid)>32) - { - $this->errormsg = 'UID darf nicht laenger als 32 Zeichen sein'; - return false; - } - if($this->uid=='') - { - $this->errormsg = 'UID muss eingegeben werden'; - return false; - } - if(mb_strlen($this->matrikelnr)>15) - { - $this->errormsg = 'Matrikelnummer darf nicht laenger als 15 Zeichen sein'; - return false; - } - if(mb_strlen($this->updatevon)>32) - { - $this->errormsg = 'Updatevon darf nicht laenger als 32 Zeichen sein'; - return false; - } - if($this->prestudent_id!='' && !is_numeric($this->prestudent_id)) - { - $this->errormsg = 'Prestudent_id muss eine gueltige Zahl sein'; - return false; - } - if(!is_numeric($this->studiengang_kz)) - { - $this->errormsg = 'Studiengang_id muss eine gueltige Zahl sein'; - return false; - } - if(!is_numeric($this->semester)) - { - $this->errormsg = 'Semester muss ein gueltige Zahl sein'; - return false; - } - if(mb_strlen($this->verband)>1) - { - $this->errormsg = 'Verband darf nicht laenger als 1 Zeichen sein'; - return false; - } - if(mb_strlen($this->gruppe)>1) - { - $this->errormsg = 'Gruppe darf nicht laenger als 1 Zeichen sein'; - return false; - } - - return true; - } - - - /** - * Speichert die Studentendaten in die Datenbank - * Wenn $new auf true gesetzt ist wird ein neuer Datensatz - * angelegt, ansonsten der Datensatz mit $person_id upgedated - * @return true wenn erfolgreich, false im Fehlerfall - */ - public function save($new=null, $savebenutzer=true) - { - //Variablen checken - if(!$this->validate()) - return false; - - $this->db_query('BEGIN;'); - - if($new==null) - $new = $this->new; - - if($savebenutzer) - { - //Basisdaten speichern - if(!benutzer::save()) - { - $this->db_query('ROLLBACK;'); - return false; - } - } - - if($new) - { - //Neuen Datensatz anlegen - $qry = "INSERT INTO public.tbl_student(student_uid, matrikelnr, updateamum, updatevon, prestudent_id, - studiengang_kz, semester, ext_id, verband, gruppe, insertamum, insertvon) - VALUES(".$this->db_add_param($this->uid).",". - $this->db_add_param($this->matrikelnr).",". - $this->db_add_param($this->updateamum).','. - $this->db_add_param($this->updatevon).','. - $this->db_add_param($this->prestudent_id, FHC_INTEGER).','. - $this->db_add_param($this->studiengang_kz).','. - $this->db_add_param($this->semester).','. - $this->db_add_param($this->ext_id_student).','. - $this->db_add_param(($this->verband==''?' ':$this->verband)).','. - $this->db_add_param(($this->gruppe==''?' ':$this->gruppe)).','. - $this->db_add_param($this->insertamum).','. - $this->db_add_param($this->insertvon).');'; - } - else - { - //Bestehenden Datensatz updaten - $qry = 'UPDATE public.tbl_student SET'. - ' matrikelnr='.$this->db_add_param($this->matrikelnr).','. - ' updateamum='.$this->db_add_param($this->updateamum).','. - ' updatevon='.$this->db_add_param($this->updatevon).','. - ' studiengang_kz='.$this->db_add_param($this->studiengang_kz).','. - ' semester='.$this->db_add_param($this->semester).','. - ' ext_id='.$this->db_add_param($this->ext_id_student).','. - ' verband='.$this->db_add_param(($this->verband==''?' ':$this->verband)).','. - ' gruppe='.$this->db_add_param(($this->gruppe==''?' ':$this->gruppe)). - " WHERE student_uid=".$this->db_add_param($this->uid).";"; - } - - if($this->db_query($qry)) - { - $this->db_query('COMMIT;'); - //Log schreiben - return true; - } - else - { - $this->db_query('ROLLBACK;'); - $this->errormsg = 'Fehler beim Speichern des Studenten-Datensatzes'; - return false; - } - } - - /** - * Rueckgabewert ist die Anzahl der Ergebnisse. Bei Fehler negativ und die - * Fehlermeldung liegt in errormsg. - * Wenn der Parameter stg_kz NULL ist tritt gruppe in Kraft. - * @param string $einheit_kurzbz Einheit - * @param string grp Gruppe - * @param string ver Verband - * @param integer sem Semester - * @param integer stg_kz Kennzahl des Studiengangs - * @return integer Anzahl der gefundenen Einträge; negativ bei Fehler - */ - public function getStudents($stg_kz,$sem=null,$ver=null,$grp=null,$gruppe=null, $stsem=null) - { - $where = ''; - if ($gruppe!=null) - { - $where=" gruppe_kurzbz=".$this->db_add_param($gruppe)." AND tbl_benutzer.uid=tbl_benutzergruppe.uid"; - if($stsem!=null) - $where.=" AND tbl_benutzergruppe.studiensemester_kurzbz=".$this->db_add_param($stsem); - } - else - { - $where.=" tbl_studentlehrverband.studiengang_kz=".$this->db_add_param($stg_kz); - if ($sem!=null) - $where.=" AND tbl_studentlehrverband.semester=".$this->db_add_param($sem); - if ($ver!=null) - $where.=" AND tbl_studentlehrverband.verband=".$this->db_add_param($ver); - if ($grp!=null) - $where.=" AND tbl_studentlehrverband.gruppe=".$this->db_add_param($grp); - } - - if($stsem!=null) - $where.=" AND tbl_studentlehrverband.studiensemester_kurzbz=".$this->db_add_param($stsem); - - $sql_query = "SELECT *, tbl_student.semester as std_semester, tbl_student.verband as std_verband, tbl_student.gruppe as std_gruppe, tbl_student.studiengang_kz as std_studiengang_kz, - tbl_studentlehrverband.studiengang_kz as lvb_studiengang_kz, tbl_studentlehrverband.semester as lvb_semester, tbl_studentlehrverband.verband as lvb_verband, tbl_studentlehrverband.gruppe as lvb_gruppe - FROM public.tbl_person, public.tbl_student, public.tbl_benutzer, public.tbl_studentlehrverband, public.tbl_prestudent"; - if($gruppe!=null) - $sql_query.= ",public.tbl_benutzergruppe"; - $sql_query.= " WHERE tbl_prestudent.prestudent_id=tbl_student.prestudent_id AND tbl_person.person_id=tbl_benutzer.person_id AND tbl_benutzer.uid = tbl_student.student_uid AND tbl_studentlehrverband.student_uid=tbl_student.student_uid AND $where ORDER BY nachname, vorname"; - //echo $sql_query; - if(!$this->db_query($sql_query)) - { - $this->errormsg=$this->db_last_error(); - return false; - } - $result=array(); - - while($row = $this->db_fetch_object()) - { - $l=new student(); - // Personendaten - $l->uid=$row->uid; - $l->person_id=$row->person_id; - $l->prestudent_id=$row->prestudent_id; - $l->titelpre=$row->titelpre; - $l->titelpost=$row->titelpost; - $l->vornamen=$row->vornamen; - $l->vorname=$row->vorname; - $l->nachname=$row->nachname; - $l->gebdatum=$row->gebdatum; - $l->gebort=$row->gebort; - $l->gebzeit=$row->gebzeit; - $l->familienstand = $row->familienstand; - $l->svnr=$row->svnr; - $l->foto=$row->foto; - $l->anmerkungen=$row->anmerkung; - $l->aktiv=$this->db_parse_bool($row->aktiv); - $l->alias=$row->alias; - $l->homepage=$row->homepage; - $l->updateamum=(isset($row->updateamum)?$row->updateamum:''); - $l->updatevon=(isset($row->updatevon)?$row->updatevon:''); - // Studentendaten - $l->matrikelnr=$row->matrikelnr; - $l->gruppe=$row->lvb_gruppe; - $l->verband=$row->lvb_verband; - $l->semester=$row->lvb_semester; - $l->studiengang_kz=$row->lvb_studiengang_kz; - $l->staatsbuergerschaft = $row->staatsbuergerschaft; - - $l->zgv_code = $row->zgv_code; - $l->zgvort = $row->zgvort; - $l->zgvdatum = $row->zgvdatum; - $l->zgvmas_code = $row->zgvmas_code; - $l->zgvmaort = $row->zgvmaort; - $l->zgvmadatum = $row->zgvmadatum; - //$l->stg_bezeichnung=$row->bezeichnung; - // student in Array speichern - $result[]=$l; - - } - return $result; - } - - - /** - * Gibt Studenten zurück die im übergebenen Studiengang und semester sind - * @param $studiengang_kz - * @param $semester - * @return boolean - */ - public function getStudentsStudiengang($studiengang_kz, $semester = null) - { - /* - if($studiengang_kz == '') - { - $this->errormsg ="Es wurde kein Studiengang übergeben"; - return false; - } - */ - $qry = "SELECT * FROM public.tbl_student - JOIN public.tbl_benutzer ON (student_uid = uid) - JOIN public.tbl_person USING (person_id) - WHERE tbl_benutzer.aktiv = 'true'"; - if($studiengang_kz!='') - $qry.=" AND studiengang_kz =".$this->db_add_param($studiengang_kz,FHC_INTEGER); - - if($semester != null) - $qry .= " AND semester =".$this->db_add_param($semester, FHC_INTEGER); - $qry.=" ORDER BY nachname, vorname"; - - - if($result = $this->db_query($qry)) - { - while($row = $this->db_fetch_object($result)) - { - $stud = new student(); - $stud->uid = $row->student_uid; - $stud->matrikelnr = $row->matrikelnr; - $stud->prestudent_id = $row->prestudent_id; - $stud->studiengang_kz = $row->studiengang_kz; - $stud->semester = $row->semester; - $stud->verband = $row->verband; - $stud->gruppe = $row->gruppe; - $stud->person_id = $row->person_id; - $stud->vorname = $row->vorname; - $stud->nachname = $row->nachname; - $stud->gebdatum = $row->gebdatum; - - $this->result[] = $stud; - } - return true; - } - else - { - $this->errormsg = "Fehler bei der Abfrage aufgetreten"; - return false; - } - } - - /** - * Prueft ob die StudentLehrverband Zuteilung - * bereits existiert - * @param student_uid - * @param studiensemester_kurzbz - * @return true wenn vorhanden, false wenn nicht - */ - public function studentlehrverband_exists($student_uid, $studiensemester_kurzbz) - { - $qry = "SELECT count(*) as anzahl FROM public.tbl_studentlehrverband - WHERE student_uid=".$this->db_add_param($student_uid)." AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); - - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - if($row->anzahl>0) - return true; - else - return false; - } - else - { - $this->errormsg = 'Fehler beim Ermitteln des Lehrverbandes'; - return false; - } - } - else - { - $this->errormsg ='Fehler beim Ermitteln des Lehrverbandes'; - return false; - } - } - - /** - * Prueft ob die StudentLehrverband Zuteilung - * bereits existiert - * @param student_uid - * studiensemester_kurzbz - * @return true wenn vorhanden, false wenn nicht - */ - public function load_studentlehrverband($student_uid, $studiensemester_kurzbz) - { - $qry = "SELECT * FROM public.tbl_studentlehrverband - WHERE student_uid=".$this->db_add_param($student_uid)." - AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); - - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - $this->uid = $row->student_uid; - $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; - $this->studiengang_kz = $row->studiengang_kz; - $this->semester = $row->semester; - $this->verband = $row->verband; - $this->gruppe = $row->gruppe; - $this->updateamum = $row->updateamum; - $this->updatevon = $row->updatevon; - $this->insertamum = $row->insertamum; - $this->insertvon = $row->insertvon; - - return true; - } - else - { - $this->errormsg = 'Fehler beim Ermitteln des Lehrverbandes'; - return false; - } - } - else - { - $this->errormsg ='Fehler beim Ermitteln des Lehrverbandes'; - return false; - } - } - - /** - * Speichert die Zuteilung von Student zu Lehrverband - * @param $new - * @return boolean - */ - public function save_studentlehrverband($new=null) - { - if($new==null) - $new = $this->new; - - if($new) - { - $qry = "INSERT INTO public.tbl_studentlehrverband (student_uid, studiensemester_kurzbz, studiengang_kz, semester, verband, gruppe, updateamum, updatevon, insertamum, insertvon) - VALUES(".$this->db_add_param($this->uid).','. - $this->db_add_param($this->studiensemester_kurzbz).','. - $this->db_add_param($this->studiengang_kz).','. - $this->db_add_param($this->semester).','. - $this->db_add_param(($this->verband==''?' ':$this->verband)).','. - $this->db_add_param(($this->gruppe==''?' ':$this->gruppe)).','. - $this->db_add_param($this->updateamum).','. - $this->db_add_param($this->updatevon).','. - $this->db_add_param($this->insertamum).','. - $this->db_add_param($this->insertvon).');'; - } - else - { - $qry = "UPDATE public.tbl_studentlehrverband SET". - " studiengang_kz=".$this->db_add_param($this->studiengang_kz).",". - " semester=".$this->db_add_param($this->semester).",". - " verband=".$this->db_add_param(($this->verband==''?' ':$this->verband)).",". - " gruppe=".$this->db_add_param(($this->gruppe==''?' ':$this->gruppe)).",". - " updateamum=".$this->db_add_param($this->updateamum).",". - " updatevon=".$this->db_add_param($this->updatevon). - " WHERE student_uid=".$this->db_add_param($this->uid)." AND studiensemester_kurzbz=".$this->db_add_param($this->studiensemester_kurzbz); - } - - if($this->db_query($qry)) - { - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern der Studentlehrverbandzuordnung'; - return false; - } - } - - /** - * Laedt die UID anhand der Prestudent_id - * @param prestudent_id - * @return uid wenn ok, false wenn Fehler - */ - public function getUid($prestudent_id) - { - if(!is_numeric($prestudent_id)) - { - $this->errormsg = 'PrestudentID ist ungueltig'; - return false; - } - - $qry = "SELECT student_uid FROM public.tbl_student WHERE prestudent_id=".$this->db_add_param($prestudent_id); - - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - return $row->student_uid; - } - else - { - $this->errormsg = 'Student nicht gefunden'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - /** - * Laedt die UID anhand der Matrikelnummer - * @param matrikelnummer - * @return uid wenn ok, false wenn Fehler - */ - public function getUidFromMatrikelnummer($matrikelnummer) - { - $qry = "SELECT student_uid FROM public.tbl_student WHERE matrikelnr=".$this->db_add_param($matrikelnummer); - - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - return $row->student_uid; - } - else - { - $this->errormsg = 'Student nicht gefunden'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Laden der Daten'; - return false; - } - } - - /** - * Laedt die Daten eines Studenten anhand der Person_id und des Studienganges - * Wenn mehrere Eintraege fuer diesen Studiengang vorhanden sind, dann wird der zuletzt eingetragene verwendet - * - * @param person_id - * @param studiengang_kz - * @return true wenn ok, false im Fehlerfall - */ - public function load_person($person_id, $studiengang_kz) - { - $qry = "SELECT tbl_student.* FROM public.tbl_benutzer JOIN public.tbl_student ON(uid=student_uid) - WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER)." AND studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER)." - ORDER BY prestudent_id DESC LIMIT 1"; - - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - $this->uid = $row->student_uid; - $this->matrikelnr = $row->matrikelnr; - $this->prestudent_id = $row->prestudent_id; - $this->studiengang_kz = $row->studiengang_kz; - $this->semester = $row->semester; - $this->verband = $row->verband; - $this->gruppe = $row->gruppe; - $this->updateamum = $row->updateamum; - $this->updatevon = $row->updatevon; - $this->insertamum = $row->insertamum; - $this->insertvon = $row->insertvon; - $this->ext_id = $row->ext_id; - - return true; - } - else - { - $this->errormsg = 'Kein Benutzer mit dieser UID vorhanden'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Auslesen des Studenten'; - return false; - } - } - - /** - * Liefert die Tabellenelemente die den Kriterien der Parameter entsprechen - * Ueberschreibt die Methode aus der Klasse Person - * @param $filter String mit Vorname oder Nachname - * @param $order Sortierkriterium - * @return array mit Personen oder false wenn ein Fehler auftritt - */ - public function getTab($filter, $order='person_id') - { - $sql_query = "SELECT - person_id, staatsbuergerschaft, geburtsnation, sprache, anrede, titelpost, titelpre, - nachname, vorname, vornamen, gebdatum, gebort, gebzeit, anmerkung, homepage, svnr, - ersatzkennzeichen, familienstand, geschlecht, anzahlkinder, tbl_person.aktiv, kurzbeschreibung, - tbl_benutzer.aktiv as bnaktiv, tbl_student.studiengang_kz, tbl_student.semester, tbl_student.verband, - tbl_student.gruppe, tbl_student.prestudent_id - FROM - public.tbl_person - JOIN public.tbl_benutzer USING(person_id) - JOIN public.tbl_student ON(student_uid=uid) - WHERE true "; - - if($filter!='') - { - $sql_query.=" AND nachname ~* ".$this->db_add_param($filter)." OR - vorname ~* ".$this->db_add_param($filter)." OR - (nachname || ' ' || vorname) ~* ".$this->db_add_param($filter)." OR - (vorname || ' ' || nachname) ~* ".$this->db_add_param($filter); - } - - $sql_query .= " ORDER BY $order"; - if($filter=='') - $sql_query .= " LIMIT 30"; - - if($this->db_query($sql_query)) - { - while($row = $this->db_fetch_object()) - { - $l = new student(); - $l->person_id = $row->person_id; - $l->staatsbuergerschaft = $row->staatsbuergerschaft; - $l->geburtsnation = $row->geburtsnation; - $l->sprache = $row->sprache; - $l->anrede = $row->anrede; - $l->titelpost = $row->titelpost; - $l->titelpre = $row->titelpre; - $l->nachname = $row->nachname; - $l->vorname = $row->vorname; - $l->vornamen = $row->vornamen; - $l->gebdatum = $row->gebdatum; - $l->gebort = $row->gebort; - $l->gebzeit = $row->gebzeit; - $l->anmerkungen = $row->anmerkung; - $l->homepage = $row->homepage; - $l->svnr = $row->svnr; - $l->ersatzkennzeichen = $row->ersatzkennzeichen; - $l->familienstand = $row->familienstand; - $l->geschlecht = $row->geschlecht; - $l->anzahlkinder = $row->anzahlkinder; - $l->aktiv = $this->db_parse_bool($row->aktiv); - $l->kurzbeschreibung = $row->kurzbeschreibung; - $l->bnaktiv = $this->db_parse_bool($row->bnaktiv); - $l->studiengang_kz = $row->studiengang_kz; - $l->semester = $row->semester; - $l->verband = $row->verband; - $l->gruppe = $row->gruppe; - $l->prestudent_id = $row->prestudent_id; - $this->result[]=$l; - } - } - else - { - $this->errormsg = $this->db_last_error(); - return false; - } - return true; - } - - /** - * Laedt alle Incoming - * @return boolean - */ - public function getIncoming() - { - $qry = " - SELECT - distinct tbl_student.*, tbl_benutzer.*, tbl_person.* - FROM - public.tbl_student - JOIN public.tbl_benutzer ON (student_uid = uid) - JOIN public.tbl_person USING (person_id) - JOIN public.tbl_prestudent USING (prestudent_id) - JOIN public.tbl_prestudentstatus USING(prestudent_id) - WHERE - tbl_benutzer.aktiv AND - tbl_prestudentstatus.status_kurzbz='Incoming' - "; - - if($result = $this->db_query($qry)) - { - while($row = $this->db_fetch_object($result)) - { - $stud = new student(); - $stud->uid = $row->student_uid; - $stud->matrikelnr = $row->matrikelnr; - $stud->prestudent_id = $row->prestudent_id; - $stud->studiengang_kz = $row->studiengang_kz; - $stud->semester = $row->semester; - $stud->verband = $row->verband; - $stud->gruppe = $row->gruppe; - $stud->person_id = $row->person_id; - $stud->vorname = $row->vorname; - $stud->nachname = $row->nachname; - $stud->gebdatum = $row->gebdatum; - - $this->result[] = $stud; - } - return true; - } - else - { - $this->errormsg = "Fehler bei der Abfrage aufgetreten"; - return false; - } - } - - public function getStudentUidsForMeldung($studiensemester1, $studiensemester2, $studiensemester3, $zeitraumStart, $zeitraumEnde) - { - $qry = "SELECT DISTINCT ON(student_uid)* FROM public.tbl_student - JOIN public.tbl_benutzer ON(student_uid = uid) - JOIN public.tbl_person USING(person_id) - JOIN public.tbl_prestudent USING(prestudent_id) - JOIN public.tbl_prestudentstatus ps USING(prestudent_id) - WHERE - bismelden - AND ps.studiensemester_kurzbz - IN(".$this->db_add_param($studiensemester1)."," - .$this->db_add_param($studiensemester2)."," - .$this->db_add_param($studiensemester3).") - AND ps.datum > ".$this->db_add_param($zeitraumStart)." - AND ps.datum <= ".$this->db_add_param($zeitraumEnde)." - AND ps.status_kurzbz IN('Student','Unterbrecher','Abbrecher','Absolvent');"; - - if($result = $this->db_query($qry)) - { - $uids = array(); - while($row = $this->db_fetch_object($result)) - { - array_push($uids, $row->student_uid); - } - return $uids; - } - return false; - } - - /** - * Löscht die Zuordnung eines Studenten zu einer Lehrverbandsgruppe - * @param type $uid - * @param type $studiengang_kz - * @param type $studiensemester - * @param type $semester - * @param type $verband - * @param type $gruppe - */ - public function delete_studentLehrverband($uid, $studiengang_kz, $studiensemester, $semester) - { - $qry = 'DELETE FROM public.tbl_studentlehrverband ' - . 'WHERE student_uid='.$this->db_add_param($uid) - . ' AND studiensemester_kurzbz='.$this->db_add_param($studiensemester) - . ' AND studiengang_kz='.$this->db_add_param($studiengang_kz) - . ' AND semester='.$this->db_add_param($semester).';'; - - if($this->db_query($qry)) - { - return true; - } - else - { - $this->errormsg = 'StudentLehrverband konnte nicht gelöscht werden.'; - return false; - } - } -} -?> +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ +require_once(dirname(__FILE__).'/benutzer.class.php'); + +class student extends benutzer +{ + + //Tabellenspalten + public $matrikelnr; + public $prestudent_id; + public $studiengang_kz; + public $semester; + public $verband; + public $gruppe; + public $ext_id_student; + public $result; + + public $studiensemester_kurzbz; + + /** + * Konstruktor - Laedt optional einen Studenten + * @param $uid Student der geladen werden soll (default=null) + */ + public function __construct($uid=null) + { + parent::__construct(); + + //Student laden + if($uid!=null) + $this->load($uid); + } + + /** + * Laedt die Daten eines Studenten + * Wenn Studiensemester_kurzbz angegeben wird, dann werden + * Studiengang, Semester, Verband und Gruppe aus der Tabelle + * Studentlehrverband geholt. + * @param uid + * studiensemester_kurzbz + * @return true wenn ok, false im Fehlerfall + */ + public function load($uid, $studiensemester_kurzbz=null) + { + if(!benutzer::load($uid)) + return false; + if(is_null($studiensemester_kurzbz)) + $qry = "SELECT * FROM public.tbl_student WHERE student_uid=".$this->db_add_param($uid); + else + $qry = "SELECT *, tbl_studentlehrverband.studiengang_kz as studiengang_kz, tbl_studentlehrverband.semester as semester, + tbl_studentlehrverband.verband as verband, tbl_studentlehrverband.gruppe as gruppe + FROM public.tbl_student JOIN public.tbl_studentlehrverband USING(student_uid) + WHERE studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)." AND student_uid=".$this->db_add_param($uid); + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->uid = $row->student_uid; + $this->matrikelnr = $row->matrikelnr; + $this->prestudent_id = $row->prestudent_id; + $this->studiengang_kz = $row->studiengang_kz; + $this->semester = $row->semester; + $this->verband = $row->verband; + $this->gruppe = $row->gruppe; + $this->updateamum = $row->updateamum; + $this->updatevon = $row->updatevon; + $this->insertamum = $row->insertamum; + $this->insertvon = $row->insertvon; + $this->ext_id = $row->ext_id; + + return true; + } + else + { + $this->errormsg = 'Kein Benutzer mit dieser UID vorhanden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Auslesen des Studenten'; + return false; + } + } + + /** + * Prueft die Variablen vor dem Speichern + * auf Gueltigkeit. + * @return true wenn ok, false im Fehlerfall + */ + protected function validate() + { + if(mb_strlen($this->uid)>32) + { + $this->errormsg = 'UID darf nicht laenger als 32 Zeichen sein'; + return false; + } + if($this->uid=='') + { + $this->errormsg = 'UID muss eingegeben werden'; + return false; + } + if(mb_strlen($this->matrikelnr)>15) + { + $this->errormsg = 'Matrikelnummer darf nicht laenger als 15 Zeichen sein'; + return false; + } + if(mb_strlen($this->updatevon)>32) + { + $this->errormsg = 'Updatevon darf nicht laenger als 32 Zeichen sein'; + return false; + } + if($this->prestudent_id!='' && !is_numeric($this->prestudent_id)) + { + $this->errormsg = 'Prestudent_id muss eine gueltige Zahl sein'; + return false; + } + if(!is_numeric($this->studiengang_kz)) + { + $this->errormsg = 'Studiengang_id muss eine gueltige Zahl sein'; + return false; + } + if(!is_numeric($this->semester)) + { + $this->errormsg = 'Semester muss ein gueltige Zahl sein'; + return false; + } + if(mb_strlen($this->verband)>1) + { + $this->errormsg = 'Verband darf nicht laenger als 1 Zeichen sein'; + return false; + } + if(mb_strlen($this->gruppe)>1) + { + $this->errormsg = 'Gruppe darf nicht laenger als 1 Zeichen sein'; + return false; + } + + return true; + } + + + /** + * Speichert die Studentendaten in die Datenbank + * Wenn $new auf true gesetzt ist wird ein neuer Datensatz + * angelegt, ansonsten der Datensatz mit $person_id upgedated + * @return true wenn erfolgreich, false im Fehlerfall + */ + public function save($new=null, $savebenutzer=true) + { + //Variablen checken + if(!$this->validate()) + return false; + + $this->db_query('BEGIN;'); + + if($new==null) + $new = $this->new; + + if($savebenutzer) + { + //Basisdaten speichern + if(!benutzer::save()) + { + $this->db_query('ROLLBACK;'); + return false; + } + } + + if($new) + { + //Neuen Datensatz anlegen + $qry = "INSERT INTO public.tbl_student(student_uid, matrikelnr, updateamum, updatevon, prestudent_id, + studiengang_kz, semester, ext_id, verband, gruppe, insertamum, insertvon) + VALUES(".$this->db_add_param($this->uid).",". + $this->db_add_param($this->matrikelnr).",". + $this->db_add_param($this->updateamum).','. + $this->db_add_param($this->updatevon).','. + $this->db_add_param($this->prestudent_id, FHC_INTEGER).','. + $this->db_add_param($this->studiengang_kz).','. + $this->db_add_param($this->semester).','. + $this->db_add_param($this->ext_id_student).','. + $this->db_add_param(($this->verband==''?' ':$this->verband)).','. + $this->db_add_param(($this->gruppe==''?' ':$this->gruppe)).','. + $this->db_add_param($this->insertamum).','. + $this->db_add_param($this->insertvon).');'; + } + else + { + //Bestehenden Datensatz updaten + $qry = 'UPDATE public.tbl_student SET'. + ' matrikelnr='.$this->db_add_param($this->matrikelnr).','. + ' updateamum='.$this->db_add_param($this->updateamum).','. + ' updatevon='.$this->db_add_param($this->updatevon).','. + ' studiengang_kz='.$this->db_add_param($this->studiengang_kz).','. + ' semester='.$this->db_add_param($this->semester).','. + ' ext_id='.$this->db_add_param($this->ext_id_student).','. + ' verband='.$this->db_add_param(($this->verband==''?' ':$this->verband)).','. + ' gruppe='.$this->db_add_param(($this->gruppe==''?' ':$this->gruppe)). + " WHERE student_uid=".$this->db_add_param($this->uid).";"; + } + + if($this->db_query($qry)) + { + $this->db_query('COMMIT;'); + //Log schreiben + return true; + } + else + { + $this->db_query('ROLLBACK;'); + $this->errormsg = 'Fehler beim Speichern des Studenten-Datensatzes'; + return false; + } + } + + /** + * Rueckgabewert ist die Anzahl der Ergebnisse. Bei Fehler negativ und die + * Fehlermeldung liegt in errormsg. + * Wenn der Parameter stg_kz NULL ist tritt gruppe in Kraft. + * @param string $einheit_kurzbz Einheit + * @param string grp Gruppe + * @param string ver Verband + * @param integer sem Semester + * @param integer stg_kz Kennzahl des Studiengangs + * @return integer Anzahl der gefundenen Einträge; negativ bei Fehler + */ + public function getStudents($stg_kz,$sem=null,$ver=null,$grp=null,$gruppe=null, $stsem=null) + { + $where = ''; + if ($gruppe!=null) + { + $where=" gruppe_kurzbz=".$this->db_add_param($gruppe)." AND tbl_benutzer.uid=tbl_benutzergruppe.uid"; + if($stsem!=null) + $where.=" AND tbl_benutzergruppe.studiensemester_kurzbz=".$this->db_add_param($stsem); + } + else + { + $where.=" tbl_studentlehrverband.studiengang_kz=".$this->db_add_param($stg_kz); + if ($sem!=null) + $where.=" AND tbl_studentlehrverband.semester=".$this->db_add_param($sem); + if ($ver!=null) + $where.=" AND tbl_studentlehrverband.verband=".$this->db_add_param($ver); + if ($grp!=null) + $where.=" AND tbl_studentlehrverband.gruppe=".$this->db_add_param($grp); + } + + if($stsem!=null) + $where.=" AND tbl_studentlehrverband.studiensemester_kurzbz=".$this->db_add_param($stsem); + + $sql_query = "SELECT *, tbl_student.semester as std_semester, tbl_student.verband as std_verband, tbl_student.gruppe as std_gruppe, tbl_student.studiengang_kz as std_studiengang_kz, + tbl_studentlehrverband.studiengang_kz as lvb_studiengang_kz, tbl_studentlehrverband.semester as lvb_semester, tbl_studentlehrverband.verband as lvb_verband, tbl_studentlehrverband.gruppe as lvb_gruppe + FROM public.tbl_person, public.tbl_student, public.tbl_benutzer, public.tbl_studentlehrverband, public.tbl_prestudent"; + if($gruppe!=null) + $sql_query.= ",public.tbl_benutzergruppe"; + $sql_query.= " WHERE tbl_prestudent.prestudent_id=tbl_student.prestudent_id AND tbl_person.person_id=tbl_benutzer.person_id AND tbl_benutzer.uid = tbl_student.student_uid AND tbl_studentlehrverband.student_uid=tbl_student.student_uid AND $where ORDER BY nachname, vorname"; + //echo $sql_query; + if(!$this->db_query($sql_query)) + { + $this->errormsg=$this->db_last_error(); + return false; + } + $result=array(); + + while($row = $this->db_fetch_object()) + { + $l=new student(); + // Personendaten + $l->uid=$row->uid; + $l->person_id=$row->person_id; + $l->prestudent_id=$row->prestudent_id; + $l->titelpre=$row->titelpre; + $l->titelpost=$row->titelpost; + $l->vornamen=$row->vornamen; + $l->vorname=$row->vorname; + $l->nachname=$row->nachname; + $l->gebdatum=$row->gebdatum; + $l->gebort=$row->gebort; + $l->gebzeit=$row->gebzeit; + $l->familienstand = $row->familienstand; + $l->svnr=$row->svnr; + $l->foto=$row->foto; + $l->anmerkungen=$row->anmerkung; + $l->aktiv=$this->db_parse_bool($row->aktiv); + $l->alias=$row->alias; + $l->homepage=$row->homepage; + $l->updateamum=(isset($row->updateamum)?$row->updateamum:''); + $l->updatevon=(isset($row->updatevon)?$row->updatevon:''); + // Studentendaten + $l->matrikelnr=$row->matrikelnr; + $l->gruppe=$row->lvb_gruppe; + $l->verband=$row->lvb_verband; + $l->semester=$row->lvb_semester; + $l->studiengang_kz=$row->lvb_studiengang_kz; + $l->staatsbuergerschaft = $row->staatsbuergerschaft; + + $l->zgv_code = $row->zgv_code; + $l->zgvort = $row->zgvort; + $l->zgvdatum = $row->zgvdatum; + $l->zgvmas_code = $row->zgvmas_code; + $l->zgvmaort = $row->zgvmaort; + $l->zgvmadatum = $row->zgvmadatum; + //$l->stg_bezeichnung=$row->bezeichnung; + // student in Array speichern + $result[]=$l; + + } + return $result; + } + + + /** + * Gibt Studenten zurück die im übergebenen Studiengang und semester sind + * @param $studiengang_kz + * @param $semester + * @return boolean + */ + public function getStudentsStudiengang($studiengang_kz, $semester = null) + { + /* + if($studiengang_kz == '') + { + $this->errormsg ="Es wurde kein Studiengang übergeben"; + return false; + } + */ + $qry = "SELECT * FROM public.tbl_student + JOIN public.tbl_benutzer ON (student_uid = uid) + JOIN public.tbl_person USING (person_id) + WHERE tbl_benutzer.aktiv = 'true'"; + if($studiengang_kz!='') + $qry.=" AND studiengang_kz =".$this->db_add_param($studiengang_kz,FHC_INTEGER); + + if($semester != null) + $qry .= " AND semester =".$this->db_add_param($semester, FHC_INTEGER); + $qry.=" ORDER BY nachname, vorname"; + + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $stud = new student(); + $stud->uid = $row->student_uid; + $stud->matrikelnr = $row->matrikelnr; + $stud->prestudent_id = $row->prestudent_id; + $stud->studiengang_kz = $row->studiengang_kz; + $stud->semester = $row->semester; + $stud->verband = $row->verband; + $stud->gruppe = $row->gruppe; + $stud->person_id = $row->person_id; + $stud->vorname = $row->vorname; + $stud->nachname = $row->nachname; + $stud->gebdatum = $row->gebdatum; + + $this->result[] = $stud; + } + return true; + } + else + { + $this->errormsg = "Fehler bei der Abfrage aufgetreten"; + return false; + } + } + + /** + * Prueft ob die StudentLehrverband Zuteilung + * bereits existiert + * @param student_uid + * @param studiensemester_kurzbz + * @return true wenn vorhanden, false wenn nicht + */ + public function studentlehrverband_exists($student_uid, $studiensemester_kurzbz) + { + $qry = "SELECT count(*) as anzahl FROM public.tbl_studentlehrverband + WHERE student_uid=".$this->db_add_param($student_uid)." AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + if($row->anzahl>0) + return true; + else + return false; + } + else + { + $this->errormsg = 'Fehler beim Ermitteln des Lehrverbandes'; + return false; + } + } + else + { + $this->errormsg ='Fehler beim Ermitteln des Lehrverbandes'; + return false; + } + } + + /** + * Prueft ob die StudentLehrverband Zuteilung + * bereits existiert + * @param student_uid + * studiensemester_kurzbz + * @return true wenn vorhanden, false wenn nicht + */ + public function load_studentlehrverband($student_uid, $studiensemester_kurzbz) + { + $qry = "SELECT * FROM public.tbl_studentlehrverband + WHERE student_uid=".$this->db_add_param($student_uid)." + AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->uid = $row->student_uid; + $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $this->studiengang_kz = $row->studiengang_kz; + $this->semester = $row->semester; + $this->verband = $row->verband; + $this->gruppe = $row->gruppe; + $this->updateamum = $row->updateamum; + $this->updatevon = $row->updatevon; + $this->insertamum = $row->insertamum; + $this->insertvon = $row->insertvon; + + return true; + } + else + { + $this->errormsg = 'Fehler beim Ermitteln des Lehrverbandes'; + return false; + } + } + else + { + $this->errormsg ='Fehler beim Ermitteln des Lehrverbandes'; + return false; + } + } + + /** + * Speichert die Zuteilung von Student zu Lehrverband + * @param $new + * @return boolean + */ + public function save_studentlehrverband($new=null) + { + if($new==null) + $new = $this->new; + + if($new) + { + $qry = "INSERT INTO public.tbl_studentlehrverband (student_uid, studiensemester_kurzbz, studiengang_kz, semester, verband, gruppe, updateamum, updatevon, insertamum, insertvon) + VALUES(".$this->db_add_param($this->uid).','. + $this->db_add_param($this->studiensemester_kurzbz).','. + $this->db_add_param($this->studiengang_kz).','. + $this->db_add_param($this->semester).','. + $this->db_add_param(($this->verband==''?' ':$this->verband)).','. + $this->db_add_param(($this->gruppe==''?' ':$this->gruppe)).','. + $this->db_add_param($this->updateamum).','. + $this->db_add_param($this->updatevon).','. + $this->db_add_param($this->insertamum).','. + $this->db_add_param($this->insertvon).');'; + } + else + { + $qry = "UPDATE public.tbl_studentlehrverband SET". + " studiengang_kz=".$this->db_add_param($this->studiengang_kz).",". + " semester=".$this->db_add_param($this->semester).",". + " verband=".$this->db_add_param(($this->verband==''?' ':$this->verband)).",". + " gruppe=".$this->db_add_param(($this->gruppe==''?' ':$this->gruppe)).",". + " updateamum=".$this->db_add_param($this->updateamum).",". + " updatevon=".$this->db_add_param($this->updatevon). + " WHERE student_uid=".$this->db_add_param($this->uid)." AND studiensemester_kurzbz=".$this->db_add_param($this->studiensemester_kurzbz); + } + + if($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern der Studentlehrverbandzuordnung'; + return false; + } + } + + /** + * Laedt die UID anhand der Prestudent_id + * @param prestudent_id + * @return uid wenn ok, false wenn Fehler + */ + public function getUid($prestudent_id) + { + if(!is_numeric($prestudent_id)) + { + $this->errormsg = 'PrestudentID ist ungueltig'; + return false; + } + + $qry = "SELECT student_uid FROM public.tbl_student WHERE prestudent_id=".$this->db_add_param($prestudent_id); + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + return $row->student_uid; + } + else + { + $this->errormsg = 'Student nicht gefunden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Laedt die UID anhand der Matrikelnummer + * @param matrikelnummer + * @return uid wenn ok, false wenn Fehler + */ + public function getUidFromMatrikelnummer($matrikelnummer) + { + $qry = "SELECT student_uid FROM public.tbl_student WHERE matrikelnr=".$this->db_add_param($matrikelnummer); + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + return $row->student_uid; + } + else + { + $this->errormsg = 'Student nicht gefunden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + + /** + * Laedt die Daten eines Studenten anhand der Person_id und des Studienganges + * Wenn mehrere Eintraege fuer diesen Studiengang vorhanden sind, dann wird der zuletzt eingetragene verwendet + * + * @param person_id + * @param studiengang_kz + * @return true wenn ok, false im Fehlerfall + */ + public function load_person($person_id, $studiengang_kz) + { + $qry = "SELECT tbl_student.* FROM public.tbl_benutzer JOIN public.tbl_student ON(uid=student_uid) + WHERE person_id=".$this->db_add_param($person_id, FHC_INTEGER)." AND studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER)." + ORDER BY prestudent_id DESC LIMIT 1"; + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->uid = $row->student_uid; + $this->matrikelnr = $row->matrikelnr; + $this->prestudent_id = $row->prestudent_id; + $this->studiengang_kz = $row->studiengang_kz; + $this->semester = $row->semester; + $this->verband = $row->verband; + $this->gruppe = $row->gruppe; + $this->updateamum = $row->updateamum; + $this->updatevon = $row->updatevon; + $this->insertamum = $row->insertamum; + $this->insertvon = $row->insertvon; + $this->ext_id = $row->ext_id; + + return true; + } + else + { + $this->errormsg = 'Kein Benutzer mit dieser UID vorhanden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Auslesen des Studenten'; + return false; + } + } + + /** + * Liefert die Tabellenelemente die den Kriterien der Parameter entsprechen + * Ueberschreibt die Methode aus der Klasse Person + * @param $filter String mit Vorname oder Nachname + * @param $order Sortierkriterium + * @return array mit Personen oder false wenn ein Fehler auftritt + */ + public function getTab($filter, $order='person_id') + { + $sql_query = "SELECT + person_id, staatsbuergerschaft, geburtsnation, sprache, anrede, titelpost, titelpre, + nachname, vorname, vornamen, gebdatum, gebort, gebzeit, anmerkung, homepage, svnr, + ersatzkennzeichen, familienstand, geschlecht, anzahlkinder, tbl_person.aktiv, kurzbeschreibung, + tbl_benutzer.aktiv as bnaktiv, tbl_student.studiengang_kz, tbl_student.semester, tbl_student.verband, + tbl_student.gruppe, tbl_student.prestudent_id + FROM + public.tbl_person + JOIN public.tbl_benutzer USING(person_id) + JOIN public.tbl_student ON(student_uid=uid) + WHERE true "; + + if($filter!='') + { + $sql_query.=" AND nachname ~* ".$this->db_add_param($filter)." OR + vorname ~* ".$this->db_add_param($filter)." OR + (nachname || ' ' || vorname) ~* ".$this->db_add_param($filter)." OR + (vorname || ' ' || nachname) ~* ".$this->db_add_param($filter); + } + + $sql_query .= " ORDER BY $order"; + if($filter=='') + $sql_query .= " LIMIT 30"; + + if($this->db_query($sql_query)) + { + while($row = $this->db_fetch_object()) + { + $l = new student(); + $l->person_id = $row->person_id; + $l->staatsbuergerschaft = $row->staatsbuergerschaft; + $l->geburtsnation = $row->geburtsnation; + $l->sprache = $row->sprache; + $l->anrede = $row->anrede; + $l->titelpost = $row->titelpost; + $l->titelpre = $row->titelpre; + $l->nachname = $row->nachname; + $l->vorname = $row->vorname; + $l->vornamen = $row->vornamen; + $l->gebdatum = $row->gebdatum; + $l->gebort = $row->gebort; + $l->gebzeit = $row->gebzeit; + $l->anmerkungen = $row->anmerkung; + $l->homepage = $row->homepage; + $l->svnr = $row->svnr; + $l->ersatzkennzeichen = $row->ersatzkennzeichen; + $l->familienstand = $row->familienstand; + $l->geschlecht = $row->geschlecht; + $l->anzahlkinder = $row->anzahlkinder; + $l->aktiv = $this->db_parse_bool($row->aktiv); + $l->kurzbeschreibung = $row->kurzbeschreibung; + $l->bnaktiv = $this->db_parse_bool($row->bnaktiv); + $l->studiengang_kz = $row->studiengang_kz; + $l->semester = $row->semester; + $l->verband = $row->verband; + $l->gruppe = $row->gruppe; + $l->prestudent_id = $row->prestudent_id; + $this->result[]=$l; + } + } + else + { + $this->errormsg = $this->db_last_error(); + return false; + } + return true; + } + + /** + * Laedt alle Incoming + * @return boolean + */ + public function getIncoming() + { + $qry = " + SELECT + distinct tbl_student.*, tbl_benutzer.*, tbl_person.* + FROM + public.tbl_student + JOIN public.tbl_benutzer ON (student_uid = uid) + JOIN public.tbl_person USING (person_id) + JOIN public.tbl_prestudent USING (prestudent_id) + JOIN public.tbl_prestudentstatus USING(prestudent_id) + WHERE + tbl_benutzer.aktiv AND + tbl_prestudentstatus.status_kurzbz='Incoming' + "; + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $stud = new student(); + $stud->uid = $row->student_uid; + $stud->matrikelnr = $row->matrikelnr; + $stud->prestudent_id = $row->prestudent_id; + $stud->studiengang_kz = $row->studiengang_kz; + $stud->semester = $row->semester; + $stud->verband = $row->verband; + $stud->gruppe = $row->gruppe; + $stud->person_id = $row->person_id; + $stud->vorname = $row->vorname; + $stud->nachname = $row->nachname; + $stud->gebdatum = $row->gebdatum; + + $this->result[] = $stud; + } + return true; + } + else + { + $this->errormsg = "Fehler bei der Abfrage aufgetreten"; + return false; + } + } + + public function getStudentUidsForMeldung($studiensemester1, $studiensemester2, $studiensemester3, $zeitraumStart, $zeitraumEnde) + { + $qry = "SELECT DISTINCT ON(student_uid)* FROM public.tbl_student + JOIN public.tbl_benutzer ON(student_uid = uid) + JOIN public.tbl_person USING(person_id) + JOIN public.tbl_prestudent USING(prestudent_id) + JOIN public.tbl_prestudentstatus ps USING(prestudent_id) + WHERE + bismelden + AND ps.studiensemester_kurzbz + IN(".$this->db_add_param($studiensemester1)."," + .$this->db_add_param($studiensemester2)."," + .$this->db_add_param($studiensemester3).") + AND ps.datum > ".$this->db_add_param($zeitraumStart)." + AND ps.datum <= ".$this->db_add_param($zeitraumEnde)." + AND ps.status_kurzbz IN('Student','Unterbrecher','Abbrecher','Absolvent');"; + + if($result = $this->db_query($qry)) + { + $uids = array(); + while($row = $this->db_fetch_object($result)) + { + array_push($uids, $row->student_uid); + } + return $uids; + } + return false; + } + + /** + * Löscht die Zuordnung eines Studenten zu einer Lehrverbandsgruppe + * @param type $uid + * @param type $studiengang_kz + * @param type $studiensemester + * @param type $semester + * @param type $verband + * @param type $gruppe + */ + public function delete_studentLehrverband($uid, $studiengang_kz, $studiensemester, $semester) + { + $qry = 'DELETE FROM public.tbl_studentlehrverband ' + . 'WHERE student_uid='.$this->db_add_param($uid) + . ' AND studiensemester_kurzbz='.$this->db_add_param($studiensemester) + . ' AND studiengang_kz='.$this->db_add_param($studiengang_kz) + . ' AND semester='.$this->db_add_param($semester).';'; + + if($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'StudentLehrverband konnte nicht gelöscht werden.'; + return false; + } + } + + /** + * Lädt alle LV eines Studenten für ein Semester (standardmäßig aktuelles Semester) + * + * @param string $uid + * @param string $studiensemester + * @return boolean + */ + public function get_lv($uid, $studiensemester = null) + { + + if(!$studiensemester) + { + $sem = new studiensemester; + $studiensemester = $sem->getNearest(); + } + + $qry = 'SELECT * ' + . 'FROM campus.vw_student_lehrveranstaltung ' + . 'WHERE uid = ' . $this->db_add_param($uid) + . 'AND studiensemester_kurzbz = ' . $this->db_add_param($studiensemester) + . ' ORDER BY bezeichnung'; + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $this->result[] = $row; + } + return true; + } + else + { + $this->errormsg = "Fehler bei der Abfrage aufgetreten"; + return false; + } + } +} diff --git a/include/stundenplan.class.php b/include/stundenplan.class.php index ddc83d84b..266571b9e 100644 --- a/include/stundenplan.class.php +++ b/include/stundenplan.class.php @@ -1,256 +1,274 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ -require_once(dirname(__FILE__).'/basis_db.class.php'); - -class stundenplan extends basis_db -{ - public $new; // boolean - public $stundenplan = array(); // stundenplan Objekt - public $stpl_table; - - //Tabellenspalten - public $stundenplan_id; - public $unr; - public $mitarbeiter_uid; - public $datum; - public $stunde; - public $ort_kurzbz; - public $gruppe_kurzbz; - public $titel; - public $anmerkung; - public $lehreinheit_id; - public $studiengang_kz; - public $semester; - public $verband; - public $gruppe; - public $fix; - public $updateamum; - public $updatevon; - public $insertamum; - public $insertvon; - - /** - * Konstruktor - Laedt optional einen Stundenplaneintrag - * @param $stundenplantabelle - * @param $stundenplan_id - */ - public function __construct($stundenplantabelle, $stundenplan_id=null) - { - parent::__construct(); - - $this->stpl_table = $stundenplantabelle; - - if($stundenplan_id!=null) - $this->load($stundenplan_id); - } - - /** - * Laedt einen Stundenplaneintrag - * @param stundenplan_id - */ - public function load($stundenplan_id) - { - $qry = "SELECT * FROM lehre.tbl_$this->stpl_table WHERE ".$this->stpl_table."_id=".$this->db_add_param($stundenplan_id); - - if($this->db_query($qry)) - { - if($row = $this->db_fetch_object()) - { - $id = $this->stpl_table.'_id'; - $this->stundenplan_id = $row->$id; - $this->lehreinheit_id = $row->lehreinheit_id; - $this->unr = $row->unr; - $this->studiengang_kz = $row->studiengang_kz; - $this->semester = $row->semester; - $this->verband = $row->verband; - $this->gruppe = $row->gruppe; - $this->gruppe_kurzbz = $row->gruppe_kurzbz; - $this->mitarbeiter_uid = $row->mitarbeiter_uid; - $this->ort_kurzbz = $row->ort_kurzbz; - $this->datum = $row->datum; - $this->stunde = $row->stunde; - $this->titel = $row->titel; - $this->anmerkung = $row->anmerkung; - $this->fix = $this->db_parse_bool($row->fix); - $this->updateamum = $row->updateamum; - $this->updatevon = $row->updatevon; - $this->insertamum = $row->insertamum; - $this->insetvon = $row->insertvon; - - return true; - } - else - { - $this->errormsg = 'Der Datensatz wurde nicht gefunden'; - return false; - } - } - else - { - $this->errormsg = 'Fehler beim Laden des Datensatzes'; - return false; - } - } - - /** - * Prueft die Variablen vor dem Speichern - * auf Gueltigkeit. - * @return true wenn ok, false im Fehlerfall - */ - protected function validate() - { - return true; - } - - /** - * Speichert Stundenplaneintrag in die Datenbank - * Wenn $new auf true gesetzt ist wird ein neuer Datensatz - * angelegt, ansonsten der Datensatz upgedated - * @return true wenn erfolgreich, false im Fehlerfall - */ - public function save($new=null) - { - if(is_null($new)) - $new = $this->new; - - //Variablen auf Gueltigkeit pruefen - if(!$this->validate()) - return false; - - if($new) - { - $qry = 'INSERT INTO lehre.tbl_'.$this->stpl_table.' (unr, mitarbeiter_uid, datum, stunde, ort_kurzbz, gruppe_kurzbz, - titel, anmerkung, lehreinheit_id, studiengang_kz, semester, verband, gruppe, fix, updateamum, updatevon, - insertamum, insertvon) - VALUES('. - $this->db_add_param($this->unr).','. - $this->db_add_param($this->mitarbeiter_uid).','. - $this->db_add_param($this->datum).','. - $this->db_add_param($this->stunde).','. - $this->db_add_param($this->ort_kurzbz).','. - $this->db_add_param($this->gruppe_kurzbz).','. - $this->db_add_param($this->titel).','. - $this->db_add_param($this->anmerkung).','. - $this->db_add_param($this->lehreinheit_id).','. - $this->db_add_param($this->studiengang_kz).','. - $this->db_add_param($this->semester).','. - $this->db_add_param(($this->verband!=''?$this->verband:' ')).','. - $this->db_add_param(($this->gruppe!=''?$this->gruppe:' ')).','. - $this->db_add_param($this->fix, FHC_BOOLEAN).','. - $this->db_add_param($this->updateamum).','. - $this->db_add_param($this->updatevon).','. - $this->db_add_param($this->insertamum).','. - $this->db_add_param($this->insertvon).');'; - } - else - { - $qry = 'UPDATE lehre.tbl_'.$this->stpl_table.' SET'. - ' unr='.$this->db_add_param($this->unr).','. - ' mitarbeiter_uid='.$this->db_add_param($this->mitarbeiter_uid).','. - ' datum='.$this->db_add_param($this->datum).','. - ' stunde='.$this->db_add_param($this->stunde).','. - ' ort_kurzbz='.$this->db_add_param($this->ort_kurzbz).','. - ' gruppe_kurzbz='.$this->db_add_param($this->gruppe_kurzbz).','. - ' titel='.$this->db_add_param($this->titel).','. - ' anmerkung='.$this->db_add_param($this->anmerkung).','. - ' lehreinheit_id='.$this->db_add_param($this->lehreinheit_id, FHC_INTEGER).','. - ' studiengang_kz='.$this->db_add_param($this->studiengang_kz, FHC_INTEGER).','. - ' semester='.$this->db_add_param($this->semester).','. - ' verband='.$this->db_add_param(($this->verband!=''?$this->verband:' ')).','. - ' gruppe='.$this->db_add_param(($this->gruppe!=''?$this->gruppe:' ')).','. - ' fix='.$this->db_add_param($this->fix, FHC_BOOLEAN).','. - ' updateamum='.$this->db_add_param($this->updateamum).','. - ' updatevon='.$this->db_add_param($this->updatevon). - " WHERE ".$this->stpl_table."_id=".$this->db_add_param($this->stundenplan_id, FHC_INTEGER, false).";"; - } - - if($this->db_query($qry)) - { - //Log schreiben - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern des Stundenplanes'; - return false; - } - } - - /** - * Loescht einen Eintrag aus der Stundenplantabelle - * @param id stundenplan_id - */ - public function delete($id) - { - if(!is_numeric($id)) - { - $this->errormsg = 'ID muss eine gueltige Zahl sein'; - return false; - } - - $qry = "DELETE FROM lehre.tbl_$this->stpl_table WHERE ".$this->stpl_table."_id=".$this->db_add_param($id, FHC_INTEGER, false); - - if($this->db_query($qry)) - { - return true; - } - else - { - $this->errormsg = 'Fehler beim Loeschen des Eintrages'; - return false; - } - } - - /** - * - * Prueft ob ein Stundenplaneintrag fuer den gewaehlten Ort/Datum/Stunde vorhanden ist - * @param $ort_kurzbz - * @param $datum - * @param $stunde - * @return true wenn belegt, false wenn frei, false+errormsg bei Fehler - */ - public function isBelegt($ort_kurzbz, $datum, $stunde) - { - $qry = "SELECT - 1 - FROM - lehre.tbl_$this->stpl_table - WHERE - ort_kurzbz=".$this->db_add_param($ort_kurzbz)." - AND datum=".$this->db_add_param($datum)." - AND stunde=".$this->db_add_param($stunde).";"; - - 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; - } - } -} -?> \ No newline at end of file +, + * Andreas Oesterreicher and + * Rudolf Hangl . + */ +require_once(dirname(__FILE__).'/basis_db.class.php'); + +class stundenplan extends basis_db +{ + public $new; // boolean + public $stundenplan = array(); // stundenplan Objekt + public $stpl_table; + + //Tabellenspalten + public $stundenplan_id; + public $unr; + public $mitarbeiter_uid; + public $datum; + public $stunde; + public $ort_kurzbz; + public $gruppe_kurzbz; + public $titel; + public $anmerkung; + public $lehreinheit_id; + public $studiengang_kz; + public $semester; + public $verband; + public $gruppe; + public $fix; + public $updateamum; + public $updatevon; + public $insertamum; + public $insertvon; + + /** + * Konstruktor - Laedt optional einen Stundenplaneintrag + * @param $stundenplantabelle + * @param $stundenplan_id + */ + public function __construct($stundenplantabelle, $stundenplan_id=null) + { + parent::__construct(); + + $this->stpl_table = $stundenplantabelle; + + if($stundenplan_id!=null) + $this->load($stundenplan_id); + } + + /** + * Laedt einen Stundenplaneintrag + * @param stundenplan_id + */ + public function load($stundenplan_id) + { + $qry = "SELECT * FROM lehre.tbl_$this->stpl_table WHERE ".$this->stpl_table."_id=".$this->db_add_param($stundenplan_id); + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $id = $this->stpl_table.'_id'; + $this->stundenplan_id = $row->$id; + $this->lehreinheit_id = $row->lehreinheit_id; + $this->unr = $row->unr; + $this->studiengang_kz = $row->studiengang_kz; + $this->semester = $row->semester; + $this->verband = $row->verband; + $this->gruppe = $row->gruppe; + $this->gruppe_kurzbz = $row->gruppe_kurzbz; + $this->mitarbeiter_uid = $row->mitarbeiter_uid; + $this->ort_kurzbz = $row->ort_kurzbz; + $this->datum = $row->datum; + $this->stunde = $row->stunde; + $this->titel = $row->titel; + $this->anmerkung = $row->anmerkung; + $this->fix = $this->db_parse_bool($row->fix); + $this->updateamum = $row->updateamum; + $this->updatevon = $row->updatevon; + $this->insertamum = $row->insertamum; + $this->insetvon = $row->insertvon; + + return true; + } + else + { + $this->errormsg = 'Der Datensatz wurde nicht gefunden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden des Datensatzes'; + return false; + } + } + + /** + * Prueft die Variablen vor dem Speichern + * auf Gueltigkeit. + * @return true wenn ok, false im Fehlerfall + */ + protected function validate() + { + return true; + } + + /** + * Speichert Stundenplaneintrag in die Datenbank + * Wenn $new auf true gesetzt ist wird ein neuer Datensatz + * angelegt, ansonsten der Datensatz upgedated + * @return true wenn erfolgreich, false im Fehlerfall + */ + public function save($new=null) + { + if(is_null($new)) + $new = $this->new; + + //Variablen auf Gueltigkeit pruefen + if(!$this->validate()) + return false; + + if($new) + { + $qry = 'INSERT INTO lehre.tbl_'.$this->stpl_table.' (unr, mitarbeiter_uid, datum, stunde, ort_kurzbz, gruppe_kurzbz, + titel, anmerkung, lehreinheit_id, studiengang_kz, semester, verband, gruppe, fix, updateamum, updatevon, + insertamum, insertvon) + VALUES('. + $this->db_add_param($this->unr).','. + $this->db_add_param($this->mitarbeiter_uid).','. + $this->db_add_param($this->datum).','. + $this->db_add_param($this->stunde).','. + $this->db_add_param($this->ort_kurzbz).','. + $this->db_add_param($this->gruppe_kurzbz).','. + $this->db_add_param($this->titel).','. + $this->db_add_param($this->anmerkung).','. + $this->db_add_param($this->lehreinheit_id).','. + $this->db_add_param($this->studiengang_kz).','. + $this->db_add_param($this->semester).','. + $this->db_add_param(($this->verband!=''?$this->verband:' ')).','. + $this->db_add_param(($this->gruppe!=''?$this->gruppe:' ')).','. + $this->db_add_param($this->fix, FHC_BOOLEAN).','. + $this->db_add_param($this->updateamum).','. + $this->db_add_param($this->updatevon).','. + $this->db_add_param($this->insertamum).','. + $this->db_add_param($this->insertvon).');'; + } + else + { + $qry = 'UPDATE lehre.tbl_'.$this->stpl_table.' SET'. + ' unr='.$this->db_add_param($this->unr).','. + ' mitarbeiter_uid='.$this->db_add_param($this->mitarbeiter_uid).','. + ' datum='.$this->db_add_param($this->datum).','. + ' stunde='.$this->db_add_param($this->stunde).','. + ' ort_kurzbz='.$this->db_add_param($this->ort_kurzbz).','. + ' gruppe_kurzbz='.$this->db_add_param($this->gruppe_kurzbz).','. + ' titel='.$this->db_add_param($this->titel).','. + ' anmerkung='.$this->db_add_param($this->anmerkung).','. + ' lehreinheit_id='.$this->db_add_param($this->lehreinheit_id, FHC_INTEGER).','. + ' studiengang_kz='.$this->db_add_param($this->studiengang_kz, FHC_INTEGER).','. + ' semester='.$this->db_add_param($this->semester).','. + ' verband='.$this->db_add_param(($this->verband!=''?$this->verband:' ')).','. + ' gruppe='.$this->db_add_param(($this->gruppe!=''?$this->gruppe:' ')).','. + ' fix='.$this->db_add_param($this->fix, FHC_BOOLEAN).','. + ' updateamum='.$this->db_add_param($this->updateamum).','. + ' updatevon='.$this->db_add_param($this->updatevon). + " WHERE ".$this->stpl_table."_id=".$this->db_add_param($this->stundenplan_id, FHC_INTEGER, false).";"; + } + + if($this->db_query($qry)) + { + //Log schreiben + return true; + } + else + { + $this->errormsg = 'Fehler beim Speichern des Stundenplanes'; + return false; + } + } + + /** + * Loescht einen Eintrag aus der Stundenplantabelle + * @param id stundenplan_id + */ + public function delete($id) + { + if(!is_numeric($id)) + { + $this->errormsg = 'ID muss eine gueltige Zahl sein'; + return false; + } + + $qry = "DELETE FROM lehre.tbl_$this->stpl_table WHERE ".$this->stpl_table."_id=".$this->db_add_param($id, FHC_INTEGER, false); + + if($this->db_query($qry)) + { + return true; + } + else + { + $this->errormsg = 'Fehler beim Loeschen des Eintrages'; + return false; + } + } + + /** + * + * Prueft ob ein Stundenplaneintrag fuer den gewaehlten Ort/Datum/Stunde vorhanden ist + * @param $ort_kurzbz + * @param $datum + * @param $stunde + * @return true wenn belegt, false wenn frei, false+errormsg bei Fehler + */ + public function isBelegt($ort_kurzbz, $datum, $stunde) + { + $qry = "SELECT + 1 + FROM + lehre.tbl_$this->stpl_table + WHERE + ort_kurzbz=".$this->db_add_param($ort_kurzbz)." + AND datum=".$this->db_add_param($datum)." + AND stunde=".$this->db_add_param($stunde).";"; + + 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; + } + } + + /** + * Liefert Gesamtstunden einer Lehreinheit + * + * @param int $lehreinheit_id + * @param string $uid + */ + public function getStunden($lehreinheit_id) + { + + $qry = 'SELECT count(*) AS stunden ' + . 'FROM lehre.tbl_stundenplan ' + . 'WHERE lehreinheit_id = ' . $this->db_add_param($lehreinheit_id); + + $result = $this->db_query($qry); + + $row = $this->db_fetch_object($result); + return $row->stunden; + } +} diff --git a/locale/de-AT/lvaliste.php b/locale/de-AT/lvaliste.php index c580e3719..377072373 100755 --- a/locale/de-AT/lvaliste.php +++ b/locale/de-AT/lvaliste.php @@ -1,33 +1,34 @@ -phrasen['lvaliste/titel']='Lehrveranstaltungsübersicht'; -$this->phrasen['lvaliste/hilfeText']='Erklärung\n\nStg-Sem: Studiengang-Semester\nGruppen: Teilnehmende Gruppen\nBlock: Blockung (1->Einzelstunden; 2->Doppelstunden; ...)\nWR: Wochenrhythmus (1->jede Woche; 2->jede 2. Woche; ...)\nStd: gesamte Semesterstunden\nKW: Kalenderwoche in der die Lehrveranstaltung startet'; -$this->phrasen['lvaliste/hilfeAnzeigen']='Hilfe anzeigen'; - -$this->phrasen['lvaliste/lehrfach']='Lehrfach'; -$this->phrasen['lvaliste/lehrform']='Lehrform'; -$this->phrasen['lvaliste/lvBezeichnung']='LV Bezeichnung'; -$this->phrasen['lvaliste/lehrfachBezeichnung']='Lehrfach Bezeichnung'; -$this->phrasen['lvaliste/lektor']='LektorIn'; -$this->phrasen['lvaliste/studiengang']='Stg'; -$this->phrasen['lvaliste/semester']='Sem'; -$this->phrasen['lvaliste/gruppen']='Gruppen'; -$this->phrasen['lvaliste/raumtyp']='Raumtyp'; -$this->phrasen['lvaliste/raumtypalternativ']='Alternativ'; -$this->phrasen['lvaliste/blockung']='Block'; -$this->phrasen['lvaliste/wochenrythmus']='WR'; -$this->phrasen['lvaliste/stunden']='Std'; -$this->phrasen['lvaliste/kalenderwoche']='KW'; -$this->phrasen['lvaliste/anmerkung']='Anmerkung'; -$this->phrasen['lvaliste/student']='StudentIn'; -$this->phrasen['lvaliste/titelProjektarbeit']='Titel der Projektarbeit'; -$this->phrasen['lvaliste/institut']='Institut'; - -$this->phrasen['lvaliste/fehlerAnStudiengang']='Fehler und Feedback bitte an den betreffenden Studiengang!'; -$this->phrasen['lvaliste/keineDatensaetze']='Für dieses Studiensemester sind keine Einträge vorhanden!'; -$this->phrasen['lvaliste/lehrveranstaltungen']='Lehrveranstaltungen'; -$this->phrasen['lvaliste/betreuungen']='Betreuungen'; -$this->phrasen['lvaliste/koordination']='Koordination'; -$this->phrasen['lvaliste/gesamtnote']='Noten eintragen'; -$this->phrasen['lvaliste/anzahl']='Anzahl'; -$this->phrasen['lvaliste/summe']='Summe'; -?> +phrasen['lvaliste/titel']='Lehrveranstaltungsübersicht'; +$this->phrasen['lvaliste/anwesenheit']='Anwesenheit'; +$this->phrasen['lvaliste/anwesenheit/studenten']='Anwesenheit der Studenten'; +$this->phrasen['lvaliste/hilfeText']='Erklärung\n\nStg-Sem: Studiengang-Semester\nGruppen: Teilnehmende Gruppen\nBlock: Blockung (1->Einzelstunden; 2->Doppelstunden; ...)\nWR: Wochenrhythmus (1->jede Woche; 2->jede 2. Woche; ...)\nStd: gesamte Semesterstunden\nKW: Kalenderwoche in der die Lehrveranstaltung startet'; +$this->phrasen['lvaliste/hilfeAnzeigen']='Hilfe anzeigen'; + +$this->phrasen['lvaliste/lehrfach']='Lehrfach'; +$this->phrasen['lvaliste/lehrform']='Lehrform'; +$this->phrasen['lvaliste/lvBezeichnung']='LV Bezeichnung'; +$this->phrasen['lvaliste/lehrfachBezeichnung']='Lehrfach Bezeichnung'; +$this->phrasen['lvaliste/lektor']='LektorIn'; +$this->phrasen['lvaliste/studiengang']='Stg'; +$this->phrasen['lvaliste/semester']='Sem'; +$this->phrasen['lvaliste/gruppen']='Gruppen'; +$this->phrasen['lvaliste/raumtyp']='Raumtyp'; +$this->phrasen['lvaliste/raumtypalternativ']='Alternativ'; +$this->phrasen['lvaliste/blockung']='Block'; +$this->phrasen['lvaliste/wochenrythmus']='WR'; +$this->phrasen['lvaliste/stunden']='Std'; +$this->phrasen['lvaliste/kalenderwoche']='KW'; +$this->phrasen['lvaliste/anmerkung']='Anmerkung'; +$this->phrasen['lvaliste/student']='StudentIn'; +$this->phrasen['lvaliste/titelProjektarbeit']='Titel der Projektarbeit'; +$this->phrasen['lvaliste/institut']='Institut'; + +$this->phrasen['lvaliste/fehlerAnStudiengang']='Fehler und Feedback bitte an den betreffenden Studiengang!'; +$this->phrasen['lvaliste/keineDatensaetze']='Für dieses Studiensemester sind keine Einträge vorhanden!'; +$this->phrasen['lvaliste/lehrveranstaltungen']='Lehrveranstaltungen'; +$this->phrasen['lvaliste/betreuungen']='Betreuungen'; +$this->phrasen['lvaliste/koordination']='Koordination'; +$this->phrasen['lvaliste/gesamtnote']='Noten eintragen'; +$this->phrasen['lvaliste/anzahl']='Anzahl'; +$this->phrasen['lvaliste/summe']='Summe'; diff --git a/locale/en-US/lvaliste.php b/locale/en-US/lvaliste.php index 5f2364886..a42c58421 100755 --- a/locale/en-US/lvaliste.php +++ b/locale/en-US/lvaliste.php @@ -1,32 +1,33 @@ -phrasen['lvaliste/titel']='Course Summary'; -$this->phrasen['lvaliste/hilfeText']='Legend\n\nDP-Sem: Degree-Program - Semester\nGroups: Student Groups\nBlock: (1->single Hour; 2->double Hour; ...)\nWR: Weekly rhythm (1->each week; 2->every second week; ...)\nHrs: Hours\nCW: Calendar Week where the Course starts'; -$this->phrasen['lvaliste/hilfeAnzeigen']='Show Legend'; - -$this->phrasen['lvaliste/lehrfach']='Subject'; -$this->phrasen['lvaliste/lehrform']='Lehrform'; -$this->phrasen['lvaliste/lvBezeichnung']='Course Title'; -$this->phrasen['lvaliste/lehrfachBezeichnung']='Subject Title'; -$this->phrasen['lvaliste/lektor']='Lector'; -$this->phrasen['lvaliste/studiengang']='DP'; -$this->phrasen['lvaliste/semester']='Sem'; -$this->phrasen['lvaliste/gruppen']='Groups'; -$this->phrasen['lvaliste/raumtyp']='Room'; -$this->phrasen['lvaliste/raumtypalternativ']='Alternative'; -$this->phrasen['lvaliste/blockung']='Block'; -$this->phrasen['lvaliste/wochenrythmus']='WR'; -$this->phrasen['lvaliste/stunden']='Hrs'; -$this->phrasen['lvaliste/kalenderwoche']='CW'; -$this->phrasen['lvaliste/anmerkung']='Notes'; -$this->phrasen['lvaliste/student']='Student'; -$this->phrasen['lvaliste/titelProjektarbeit']='Title of Project'; -$this->phrasen['lvaliste/institut']='Department'; - -$this->phrasen['lvaliste/fehlerAnStudiengang']='In case of Error or Feedback please contact your Department!'; -$this->phrasen['lvaliste/keineDatensaetze']='No Entrys for this Semester!'; -$this->phrasen['lvaliste/lehrveranstaltungen']='Courses'; -$this->phrasen['lvaliste/betreuungen']='Supervisor'; -$this->phrasen['lvaliste/koordination']='Coordination'; -$this->phrasen['lvaliste/anzahl']='Number'; -$this->phrasen['lvaliste/summe']='Total'; -?> +phrasen['lvaliste/titel']='Course Summary'; +$this->phrasen['lvaliste/anwesenheit']='Attendance'; +$this->phrasen['lvaliste/anwesenheit/studenten']='Attendance of students'; +$this->phrasen['lvaliste/hilfeText']='Legend\n\nDP-Sem: Degree-Program - Semester\nGroups: Student Groups\nBlock: (1->single Hour; 2->double Hour; ...)\nWR: Weekly rhythm (1->each week; 2->every second week; ...)\nHrs: Hours\nCW: Calendar Week where the Course starts'; +$this->phrasen['lvaliste/hilfeAnzeigen']='Show Legend'; + +$this->phrasen['lvaliste/lehrfach']='Subject'; +$this->phrasen['lvaliste/lehrform']='Lehrform'; +$this->phrasen['lvaliste/lvBezeichnung']='Course Title'; +$this->phrasen['lvaliste/lehrfachBezeichnung']='Subject Title'; +$this->phrasen['lvaliste/lektor']='Lector'; +$this->phrasen['lvaliste/studiengang']='DP'; +$this->phrasen['lvaliste/semester']='Sem'; +$this->phrasen['lvaliste/gruppen']='Groups'; +$this->phrasen['lvaliste/raumtyp']='Room'; +$this->phrasen['lvaliste/raumtypalternativ']='Alternative'; +$this->phrasen['lvaliste/blockung']='Block'; +$this->phrasen['lvaliste/wochenrythmus']='WR'; +$this->phrasen['lvaliste/stunden']='Hrs'; +$this->phrasen['lvaliste/kalenderwoche']='CW'; +$this->phrasen['lvaliste/anmerkung']='Notes'; +$this->phrasen['lvaliste/student']='Student'; +$this->phrasen['lvaliste/titelProjektarbeit']='Title of Project'; +$this->phrasen['lvaliste/institut']='Department'; + +$this->phrasen['lvaliste/fehlerAnStudiengang']='In case of Error or Feedback please contact your Department!'; +$this->phrasen['lvaliste/keineDatensaetze']='No Entrys for this Semester!'; +$this->phrasen['lvaliste/lehrveranstaltungen']='Courses'; +$this->phrasen['lvaliste/betreuungen']='Supervisor'; +$this->phrasen['lvaliste/koordination']='Coordination'; +$this->phrasen['lvaliste/anzahl']='Number'; +$this->phrasen['lvaliste/summe']='Total'; diff --git a/skin/styles/tw.css b/skin/styles/tw.css index 78ae2d336..e8d1515f5 100644 --- a/skin/styles/tw.css +++ b/skin/styles/tw.css @@ -5,7 +5,6 @@ body background-color: white; font-family: Arial, Helvetica, sans-serif; font-size: 13px; - height: 100%; width: 100%; margin:0px; border-width:0px; @@ -972,17 +971,21 @@ table.hoverbox } */ -body.bewerbung table { +body.bewerbung table, +body.anwesenheit table { border-collapse: collapse; width: 100%; } -body.bewerbung table.reihungstest { +body.bewerbung table.reihungstest, +body.anwesenheit table { table-layout: fixed; } body.bewerbung table th, -body.bewerbung table td { +body.bewerbung table td, +body.anwesenheit table th, +body.anwesenheit table td { padding: 3px; border: 1px solid black; text-align: center; @@ -1007,3 +1010,55 @@ body.bewerbung table.reihungstest th:nth-child(6) { body.bewerbung table.reihungstest th:nth-child(5) { width: 50%; } + +body.anwesenheit { + padding-bottom: 20px; +} + +body.anwesenheit div.lv { + margin: 10px; + padding-top: 10px; +} + +body.anwesenheit div.lv + div.lv { + border-top: 1px dashed rgb(193,193,193); +} + +body.anwesenheit div.lv > div { + width: 300px; + display: inline-block; + vertical-align: middle; +} + +body.anwesenheit div.progress-wrapper { + border: 1px solid black; +} + +body.anwesenheit div.progress { + height: 20px; +} + +body.anwesenheit div.progress.green { + background-color: lightgreen; +} + +body.anwesenheit div.progress.yellow { + background-color: yellow; +} + +body.anwesenheit div.progress.red { + background-color: red; +} + +body.anwesenheit span.fehlstunden-details { + cursor: pointer; + font-weight: bold; +} + +body.anwesenheit table { + margin: 5px; +} + +body.anwesenheit form { + margin: 10px; +}