diff --git a/include/statistik.class.php b/include/statistik.class.php index 594d0aa30..0361bd339 100644 --- a/include/statistik.class.php +++ b/include/statistik.class.php @@ -30,50 +30,13 @@ class statistik extends basis_db public $geschlecht; // char(1) public $studiensemester_kurzbz;// varchar(16) public $ausbildungssemester;// smallint - public $typ; // char(1) - public $farbe; // char(6) - public $email; // varchar(64) - public $max_semester; // smallint - public $max_verband; // char(1) - public $max_gruppe; // char(1) - public $erhalter_kz; // smallint - public $bescheid; // varchar(256) - public $bescheidbgbl1; // varchar(16) - public $bescheidbgbl2; // varchar(16) - public $bescheidgz; // varchar(16) - public $bescheidvom; // Date - public $titelbescheidvom; // Date - public $ext_id; // bigint - public $orgform_kurzbz; // varchar(3) - public $zusatzinfo_html; // text - public $sprache; // varchar(16) - public $testtool_sprachwahl;// boolean - public $studienplaetze; // smallint - public $oe_kurzbz; // varchar(32) - - public $kuerzel; // = typ + kurzbz (Bsp: BBE) - public $studiengang_typ_arr = array(); // Array mit den Studiengangstypen - public $kuerzel_arr = array(); // Array mit allen Kurzeln Index=studiengangs_kz - public $moodle; // boolean - public $lgartcode; //integer - public $mischform; // boolean /** * Konstruktor - * @param studiengang_kz Kennzahl des zu ladenden Studienganges */ public function __construct($studiengang_kz=null) { - parent::__construct(); - - if(!is_null($studiengang_kz)) - $this->load($studiengang_kz); - - $this->studiengang_typ_arr["b"] = "Bachelor"; - $this->studiengang_typ_arr["d"] = "Diplom"; - $this->studiengang_typ_arr["m"] = "Master"; - $this->studiengang_typ_arr["l"] = "LLL"; - $this->studiengang_typ_arr["e"] = "Erhalter"; + parent::__construct(); } /** @@ -92,386 +55,117 @@ class statistik extends basis_db return false; } - if(!is_numeric($ausbildungssemester)) + if($ausbildungssemester!='' && !is_numeric($ausbildungssemester)) { $this->errormsg = 'Ausbildungssemester muss eine gueltige Zahl sein'; return false; } - //$qry = "SELECT * FROM public.tbl_studiengang WHERE studiengang_kz='".addslashes($studiengang_kz)."'"; // Neue Studenten ermitteln - $qry="SELECT DISTINCT prestudent_id, geschlecht, studiengang_kz, ausbildungssemester, studiensemester_kurzbz - FROM tbl_prestudent JOIN tbl_prestudentstatus USING (prestudent_id) JOIN tbl_person USING (person_id) - WHERE (status_kurzbz='Abbrecher') - AND studiengang_kz=".$studiengang_kz." - AND ausbildungssemester=".$ausbildungssemester." - AND ((studiensemester_kurzbz='".$studiensemester_kurzbz."'"; + $qry=" + SELECT + DISTINCT prestudent_id, geschlecht, studiengang_kz, ausbildungssemester, studiensemester_kurzbz + FROM + public.tbl_prestudent + JOIN public.tbl_prestudentstatus status USING (prestudent_id) + JOIN public.tbl_person USING (person_id) + WHERE + status_kurzbz='Student' + AND NOT EXISTS(SELECT 1 FROM public.tbl_prestudentstatus WHERE status_kurzbz='Student' AND datumdb_query($qry)) - { - while($row = $this->db_fetch_object()) - { - $stat_obj = new statistik(); - $this->studiengang_kz=$row->studiengang_kz; - $this->ausbildungssemester=$row->ausbildungssemester; - $this->prestudent_id=$row->prestudent_id; - $this->geschlecht=$row->geschlecht; - $this->studiensemester_kurzbz=$row->studiensemester_kurzbz; - $this->statistik_obj=$stat_obj; - } - } - else - { - $this->errormsg = 'Datensatz konnte nicht geladen werden'; - return false; - } - var_dump($this); - return true; - } - - /** - * Liefert alle Studiengaenge - * @param $order Sortierreihenfolge - * @param $aktiv wenn true dann nur aktive sonst alle - * @return true wenn ok, false im Fehlerfall - */ - public function getAll($order=null, $aktiv=true) - { - $qry = 'SELECT * FROM public.tbl_studiengang'; - if ($aktiv) - $qry.=' WHERE aktiv=true'; - - if($order!=null) - $qry .=" ORDER BY $order"; - - if(!$result = $this->db_query($qry)) - { - $this->errormsg = 'Datensatz konnte nicht geladen werden'; - return false; - } - - while($row = $this->db_fetch_object($result)) - { - $stg_obj = new studiengang(); - - $stg_obj->studiengang_kz=$row->studiengang_kz; - $stg_obj->kurzbz=$row->kurzbz; - $stg_obj->kurzbzlang=$row->kurzbzlang; - $stg_obj->bezeichnung=$row->bezeichnung; - $stg_obj->english=$row->english; - $stg_obj->typ=$row->typ; - $stg_obj->farbe=$row->farbe; - $stg_obj->email=$row->email; - $stg_obj->max_semester=$row->max_semester; - $stg_obj->max_verband=$row->max_verband; - $stg_obj->max_gruppe=$row->max_gruppe; - $stg_obj->erhalter_kz=$row->erhalter_kz; - $stg_obj->bescheid=$row->bescheid; - $stg_obj->bescheidbgbl1=$row->bescheidbgbl1; - $stg_obj->bescheidbgbl2=$row->bescheidbgbl2; - $stg_obj->bescheidgz=$row->bescheidgz; - $stg_obj->bescheidvom=$row->bescheidvom; - $stg_obj->ext_id=$row->ext_id; - $stg_obj->kuerzel = mb_strtoupper($row->typ.$row->kurzbz); - $stg_obj->orgform_kurzbz = $row->orgform_kurzbz; - $stg_obj->zusatzinfo_html = $row->zusatzinfo_html; - $stg_obj->sprache = $row->sprache; - $stg_obj->testtool_sprachwahl = ($row->testtool_sprachwahl=='t'?true:false); - $stg_obj->studienplaetze = $row->studienplaetze; - $stg_obj->oe_kurzbz = $row->oe_kurzbz; - $stg_obj->lgartcode = $row->lgartcode; - $stg_obj->telefon=$row->telefon; - $stg_obj->titelbescheidvom=$row->titelbescheidvom; - $stg_obj->aktiv=($row->aktiv=='t'?true:false); - $stg_obj->moodle=($row->moodle=='t'?true:false); - $stg_obj->mischform=($row->mischform=='t'?true:false); - - $this->result[] = $stg_obj; - $this->kuerzel_arr[$row->studiengang_kz]=$stg_obj->kuerzel; - } - - return true; - } - - /** - * Laedt die Studiengaenge die als Array uebergeben werden - * @param $stgs Array mit den Kennzahlen - * @param $order Sortierreihenfolge - * @param $aktiv wenn true dann nur aktive sonst alle - * @return true wenn ok, false im Fehlerfall - */ - public function loadArray($kennzahlen, $order=null, $aktiv=true) - { - if(count($kennzahlen)==0) - return true; - - $kennzahlen = "'".implode("','",$kennzahlen)."'"; - - $qry = 'SELECT * FROM public.tbl_studiengang WHERE studiengang_kz in('.$kennzahlen.')'; - if ($aktiv) - $qry.=' AND aktiv=true'; - - if($order!=null) - $qry .=" ORDER BY $order"; - - if(!$result = $this->db_query($qry)) - { - $this->errormsg = 'Datensatz konnte nicht geladen werden'; - return false; - } - - while($row = $this->db_fetch_object($result)) - { - $stg_obj = new studiengang(); - - $stg_obj->studiengang_kz=$row->studiengang_kz; - $stg_obj->kurzbz=$row->kurzbz; - $stg_obj->kurzbzlang=$row->kurzbzlang; - $stg_obj->bezeichnung=$row->bezeichnung; - $stg_obj->english=$row->english; - $stg_obj->typ=$row->typ; - $stg_obj->farbe=$row->farbe; - $stg_obj->email=$row->email; - $stg_obj->max_semester=$row->max_semester; - $stg_obj->max_verband=$row->max_verband; - $stg_obj->max_gruppe=$row->max_gruppe; - $stg_obj->erhalter_kz=$row->erhalter_kz; - $stg_obj->bescheid=$row->bescheid; - $stg_obj->bescheidbgbl1=$row->bescheidbgbl1; - $stg_obj->bescheidbgbl2=$row->bescheidbgbl2; - $stg_obj->bescheidgz=$row->bescheidgz; - $stg_obj->bescheidvom=$row->bescheidvom; - $stg_obj->ext_id=$row->ext_id; - $stg_obj->kuerzel = mb_strtoupper($row->typ.$row->kurzbz); - $stg_obj->orgform_kurzbz = $row->orgform_kurzbz; - $stg_obj->zusatzinfo_html = $row->zusatzinfo_html; - $stg_obj->sprache = $row->sprache; - $stg_obj->testtool_sprachwahl = ($row->testtool_sprachwahl=='t'?true:false); - $stg_obj->studienplaetze = $row->studienplaetze; - $stg_obj->oe_kurzbz = $row->oe_kurzbz; - $stg_obj->lgartcode = $row->lgartcode; - $stg_obj->telefon=$row->telefon; - $stg_obj->titelbescheidvom=$row->titelbescheidvom; - $stg_obj->aktiv=($row->aktiv=='t'?true:false); - $stg_obj->moodle=($row->moodle=='t'?true:false); - $stg_obj->mischform=($row->mischform=='t'?true:false); - - $this->result[] = $stg_obj; - $this->kuerzel_arr[$row->studiengang_kz]=$stg_obj->kuerzel; - } - - return true; - } - - /** - * Prueft die Gueltigkeit der Variablen - * @return true wenn ok, false im Fehlerfall - */ - private function validate() - { - //Laenge Pruefen - if(mb_strlen($this->bezeichnung)>128) - { - $this->errormsg = 'Bezeichnung darf nicht laenger als 128 Zeichen sein.'; - return false; - } - if(mb_strlen($this->kurzbz)>5) - { - $this->errormsg = 'Kurzbez darf nicht laenger als 5 Zeichen sein.'; - return false; - } - if(mb_strlen($this->kurzbzlang)>10) - { - $this->errormsg = 'Kurzbezlang darf nicht laenger als 10 Zeichen sein'; - return false; - } - if(mb_strlen($this->english)>128) - { - $this->errormsg = 'english darf nicht laenger als 128 Zeichen sein'; - return false; - } - if(!is_numeric($this->studiengang_kz)) - { - $this->errormsg = 'studiengang_kz ungueltig! ('.$this->studiengang_kz.'/'.$this->ext_id.')'; - return false; - } - $this->errormsg = ''; - return true; - } - - /** - * Speichert den aktuellen Datensatz - * @param $new boolean Legt fest ob der Datensatz neu angelegt wird oder nicht - * @return true wenn ok, false im Fehlerfall - */ - public function save($new=null) - { - if(is_null($new)) - $new = $this->new; - - //Gueltigkeit der Variablen pruefen - if(!$this->validate()) - { - return false; - } - - if($new) - { - //Neuen Datensatz anlegen - $qry = 'INSERT INTO public.tbl_studiengang (studiengang_kz, kurzbz, kurzbzlang, bezeichnung, english, - typ, farbe, email, telefon, max_verband, max_semester, max_gruppe, erhalter_kz, bescheid, bescheidbgbl1, - bescheidbgbl2, bescheidgz, bescheidvom, titelbescheidvom, aktiv, ext_id, orgform_kurzbz, zusatzinfo_html, - oe_kurzbz, moodle, sprache, testtool_sprachwahl, studienplaetze, lgartcode, mischform) VALUES ('. - $this->addslashes($this->studiengang_kz).', '. - $this->addslashes($this->kurzbz).', '. - $this->addslashes($this->kurzbzlang).', '. - $this->addslashes($this->bezeichnung).', '. - $this->addslashes($this->english).', '. - $this->addslashes($this->typ).', '. - $this->addslashes($this->farbe).', '. - $this->addslashes($this->email).', '. - $this->addslashes($this->telefon).', '. - $this->addslashes($this->max_verband).', '. - $this->addslashes($this->max_semester).', '. - $this->addslashes($this->max_gruppe).', '. - $this->addslashes($this->erhalter_kz).', '. - $this->addslashes($this->bescheid).', '. - $this->addslashes($this->bescheidbgbl1).', '. - $this->addslashes($this->bescheidbgbl2).', '. - $this->addslashes($this->bescheidgz).', '. - $this->addslashes($this->bescheidvom).', '. - $this->addslashes($this->titelbescheidvom).', '. - ($this->aktiv?'true':'false').', '. - $this->addslashes($this->ext_id).', '. - $this->addslashes($this->orgform_kurzbz).', '. - $this->addslashes($this->zusatzinfo_html).', '. - $this->addslashes($this->oe_kurzbz).', '. - ($this->moodle?'true':'false').', '. - $this->addslashes($this->sprache).', '. - ($this->testtool_sprachwahl?'true':'false').', '. - $this->addslashes($this->studienplaetze).', '. - $this->addslashes($this->lgartcode).', '. - ($this->mischform?'true':'false').');'; - } - else - { - //bestehenden Datensatz akualisieren - - $qry = 'UPDATE public.tbl_studiengang SET '. - 'studiengang_kz='.$this->addslashes($this->studiengang_kz).', '. - 'kurzbz='.$this->addslashes($this->kurzbz).', '. - 'kurzbzlang='.$this->addslashes($this->kurzbzlang).', '. - 'bezeichnung='.$this->addslashes($this->bezeichnung).', '. - 'english='.$this->addslashes($this->english).', '. - 'typ='.$this->addslashes($this->typ).', '. - 'farbe='.$this->addslashes($this->farbe).', '. - 'email='.$this->addslashes($this->email).', '. - 'max_verband='.$this->addslashes($this->max_verband).', '. - 'max_semester='.$this->addslashes($this->max_semester).', '. - 'max_gruppe='.$this->addslashes($this->max_gruppe).', '. - 'erhalter_kz='.$this->addslashes($this->erhalter_kz).', '. - 'bescheid='.$this->addslashes($this->bescheid).', '. - 'bescheidbgbl1='.$this->addslashes($this->bescheidbgbl1).', '. - 'bescheidbgbl2='.$this->addslashes($this->bescheidbgbl2).', '. - 'bescheidgz='.$this->addslashes($this->bescheidgz).', '. - 'bescheidvom='.$this->addslashes($this->bescheidvom).', '. - 'titelbescheidvom='.$this->addslashes($this->titelbescheidvom).', '. - 'ext_id='.$this->addslashes($this->ext_id).', '. - 'telefon='.$this->addslashes($this->telefon).', '. - 'orgform_kurzbz='.$this->addslashes($this->orgform_kurzbz).', '. - 'aktiv='.($this->aktiv?'true':'false').', '. - 'oe_kurzbz='.$this->addslashes($this->oe_kurzbz).','. - 'zusatzinfo_html='.$this->addslashes($this->zusatzinfo_html).', '. - 'moodle='.($this->moodle?'true':'false').', '. - 'sprache='.$this->addslashes($this->sprache).', '. - 'testtool_sprachwahl='.($this->testtool_sprachwahl?'true':'false').', '. - 'studienplaetze='.$this->addslashes($this->studienplaetze).', '. - 'lgartcode='.$this->addslashes($this->lgartcode).', '. - 'mischform='.($this->mischform?'true':'false').' '. - 'WHERE studiengang_kz='.$this->addslashes($this->studiengang_kz).';'; - } - - if($this->db_query($qry)) - { - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern des Datensatzes'; - return false; - } - } - - /** - * Setzt Studiengaenge aktiv/inaktiv - * benoetigt studiengang_kz und 'on'/'off' - * @return true wenn ok, false im Fehlerfall - */ - public function toggleAktiv($studiengang_kz) - { - if(!is_numeric($studiengang_kz)) - { - $this->errormsg = 'Studiengang_kz muss eine gueltige Zahl sein'; - return false; - } - $qry = "UPDATE public.tbl_studiengang SET aktiv = NOT aktiv WHERE studiengang_kz='".addslashes($studiengang_kz)."'"; - - if($this->db_query($qry)) - { - return true; - } - else - { - $this->errormsg = 'Fehler beim Speichern des Datensatzes'; - return false; - } - - } - - /** - * Liefert die UIDs der Studiengangsleiter - * - * @param $studiengang_kz wenn gesetzt werden die Leiter dieses Studienganges geliefert - * wenn null werden alle Stgl zurueckgeliefert - */ - public function getLeitung($studiengang_kz=null) - { - $stgl = array(); - - $qry = "SELECT - uid - FROM - public.tbl_benutzerfunktion - JOIN public.tbl_studiengang USING(oe_kurzbz) - WHERE - funktion_kurzbz='Leitung' AND - (datum_von is null OR datum_von<=now()) AND - (datum_bis is null OR datum_bis>=now())"; - - if(!is_null($studiengang_kz)) - $qry.=" AND studiengang_kz='".addslashes($studiengang_kz)."'"; if($result = $this->db_query($qry)) { while($row = $this->db_fetch_object($result)) { - $stgl[] = $row->uid; + $stat_obj = new statistik(); + $stat_obj->studiengang_kz=$row->studiengang_kz; + $stat_obj->ausbildungssemester=$row->ausbildungssemester; + $stat_obj->prestudent_id=$row->prestudent_id; + $stat_obj->geschlecht=$row->geschlecht; + $stat_obj->studiensemester_kurzbz=$row->studiensemester_kurzbz; + $this->statistik_obj[]=$stat_obj; } - return $stgl; } - else + else { - $this->errormsg = 'Fehler beim Laden der Studiengangsleiter'; + $this->errormsg = 'Datensatz konnte nicht geladen werden'; return false; } + + return true; + } + + /** + * + * Liefert die DropOut Rate + * @param unknown_type $studiengang_kz + * @param unknown_type $studiensemester_kurzbz + * @param unknown_type $ausbildungssemester + * @param unknown_type $datum_stichtag + */ + public function get_DropOut($studiengang_kz, $studiensemester_kurzbz, $ausbildungssemester=null, $datum_stichtag=null) + { + $this->statistik_obj=array(); + + if(!is_numeric($studiengang_kz)) + { + $this->errormsg = 'Studiengang_kz muss eine gueltige Zahl sein'; + return false; + } + + if($ausbildungssemester!='' && !is_numeric($ausbildungssemester)) + { + $this->errormsg = 'Ausbildungssemester muss eine gueltige Zahl sein'; + return false; + } + + // Neue Studenten ermitteln + $qry="SELECT DISTINCT prestudent_id, geschlecht, studiengang_kz, ausbildungssemester, studiensemester_kurzbz + FROM tbl_prestudent JOIN tbl_prestudentstatus USING (prestudent_id) JOIN tbl_person USING (person_id) + WHERE (status_kurzbz='Abbrecher') + AND studiengang_kz=".$studiengang_kz; + if($ausbildungssemester!='') + $qry.=" AND ausbildungssemester=".$ausbildungssemester; + + $qry.=" AND (studiensemester_kurzbz='".$studiensemester_kurzbz."'"; + if (!is_null($datum_stichtag)) + $qry.=" AND datum <='".$datum_stichtag."'"; + $qry.=') '; + $qry.=" ORDER BY prestudent_id;"; + + if($result = $this->db_query($qry)) + { + while($row = $this->db_fetch_object($result)) + { + $stat_obj = new statistik(); + $stat_obj->studiengang_kz=$row->studiengang_kz; + $stat_obj->ausbildungssemester=$row->ausbildungssemester; + $stat_obj->prestudent_id=$row->prestudent_id; + $stat_obj->geschlecht=$row->geschlecht; + $stat_obj->studiensemester_kurzbz=$row->studiensemester_kurzbz; + $this->statistik_obj[]=$stat_obj; + } + } + else + { + $this->errormsg = 'Datensatz konnte nicht geladen werden'; + return false; + } + + return true; } } ?> \ No newline at end of file diff --git a/vilesci/statistik/studenten_historie.php b/vilesci/statistik/studenten_historie.php index 13bb6f72b..85b5717ed 100644 --- a/vilesci/statistik/studenten_historie.php +++ b/vilesci/statistik/studenten_historie.php @@ -40,18 +40,15 @@ $fb_obj->getAll(); $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen(get_uid()); -echo ' - - - - Institutsliste - - - - - - -

Liste der MitarbeiterInnen der Institute an der Fachhochschule Technikum Wien

'; +echo ' + + + Studenten Historie + + + + +

Studenten Historie

'; $stsem = new studiensemester(); if(isset($_GET['ws']) && check_stsem($_GET['ws'])) @@ -64,74 +61,83 @@ if(isset($_GET['ss']) && check_stsem($_GET['ss'])) else $ss = $stsem->getNearest(2); -if($rechte->isBerechtigt('admin', 0) || $rechte->isBerechtigt('mitarbeiter', 0)) - $where = ''; +if(isset($_POST['show'])) +{ + $studiengang_kz=$_POST['studiengang_kz']; + $ausbildungssemester = $_POST['ausbildungssemester']; +} else { - $fb = $rechte->getFbKz(); - if(count($fb)>0) - { - $where = " AND EXISTS (SELECT * FROM lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) JOIN lehre.tbl_lehrfach USING(lehrfach_id) WHERE - tbl_lehreinheit.studiensemester_kurzbz in('$ws','$ss') AND mitarbeiter_uid=tbl_mitarbeiter.mitarbeiter_uid AND - fachbereich_kurzbz IN("; - foreach ($fb as $fachbereich_kurzbz) - { - $where.="'$fachbereich_kurzbz',"; - } - $where.="''))"; - } - else - echo 'Sie haben keine Berechtigung fuer diese Seite'; //die + $studiengang_kz=335; + $ausbildungssemester=1; } - -$statistik = new statistik(); -$result=$statistik->get_prestudenten(335,'WS2008',1); - -if($result) +echo '
'; +$stg_obj = new studiengang(); +$stg_obj->getAll(); +echo "\n",'Studiengang '; +/* +$stsem_obj = new studiensemester(); +$stsem_obj->getAll(); +echo "\n",'Studiensemester '; +*/ +echo "\n",'Ausbildungssemester '; + +echo '  
'; + +echo " + + + + + +"; + +$stsem_obj = new studiensemester(); +$stsem_obj->getAll(); +foreach($stsem_obj->studiensemester as $row_stsem) +{ + $statistik = new statistik(); + + echo ''; + echo ''; + + $statistik->get_prestudenten($studiengang_kz, $row_stsem->studiensemester_kurzbz, $ausbildungssemester); + echo ''; + + $statistik->get_DropOut($studiengang_kz, $row_stsem->studiensemester_kurzbz, $ausbildungssemester); + echo ''; + echo ''; +} +echo '
GesamtAnfängerDropout
'.$row_stsem->studiensemester_kurzbz.''.count($statistik->statistik_obj).''.count($statistik->statistik_obj).'
'; + echo ''; ?> \ No newline at end of file