diff --git a/include/statistik.class.php b/include/statistik.class.php new file mode 100644 index 000000000..513bf3625 --- /dev/null +++ b/include/statistik.class.php @@ -0,0 +1,476 @@ +, + * Andreas Oesterreicher + */ +require_once(dirname(__FILE__).'/basis_db.class.php'); + +class statistik extends basis_db +{ + public $new; // boolean + public $statistik_obj=array();// Statistik Objekt + + public $studiengang_kz; // integer + public $prestudent_id; // integer + 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"; + } + + /** + * Laedt bestimmte PreStudenten + * @param studiengang_kz KZ des Studienganges der zu Laden ist + * @param studiensemester_kurzbz Studiensemester + * @param ausbildungssemester KZ Ausbildungssemester + * @param datum_stichtag Stichtag im ISO-Format, Ergebniss filtert auf <= (kleiner,gleich) + * @return true wenn ok, false im Fehlerfall + */ + public function get_prestudenten($studiengang_kz, $studiensemester_kurzbz, $ausbildungssemester=null,$datum_stichtag=null) + { + if(!is_numeric($studiengang_kz)) + { + $this->errormsg = 'Studiengang_kz muss eine gueltige Zahl sein'; + return false; + } + + if(!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."'"; + if (!is_null($datum_stichtag)) + $qry.=" AND datum <='".$datum_stichtag."'"; + $qry.=")"; + $qry.=OR (studiensemester_kurzbz='".$studiensemester_kurzbz."'"; + if (!is_null($datum_stichtag)) + $qry.=" AND datum <='".$datum_stichtag."'"; + $qry.="))"; + $qry.=" ORDER BY prestudent_id;"; + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $stg_obj = new studiengang(); + $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; + } + } + else + { + $this->errormsg = 'Datensatz konnte nicht geladen werden'; + return false; + } + var_dump( + 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; + } + return $stgl; + } + else + { + $this->errormsg = 'Fehler beim Laden der Studiengangsleiter'; + return false; + } + } +} +?> \ No newline at end of file