diff --git a/include/prestudent.class.php b/include/prestudent.class.php index f03b5f67e..8f7d38d56 100755 --- a/include/prestudent.class.php +++ b/include/prestudent.class.php @@ -522,8 +522,13 @@ class prestudent extends person /** * Laedt die Interessenten und Bewerber fuer ein bestimmtes Studiensemester - * @param $studiensemester_kurzbz Studiensemester fuer das die Int. und Bewerber - * geladen werden sollen + * + * @param $studiensemester_kurzbz Studiensemester fuer das die Int. und Bewerber geladen werden sollen. + * @param $studiengang_kz Kennzahl des Studiengangs. + * @param $semester Ausbildungssemester. + * @param $typ Filter fuer Typ von Interessenten/Bewerber + * @param $orgform Organisationsform. + * @return boolean true wenn erfolgreich, false im Fehlerfall */ public function loadIntessentenUndBewerber($studiensemester_kurzbz, $studiengang_kz, $semester=null, $typ=null, $orgform=null) { @@ -577,10 +582,27 @@ class prestudent extends person $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"; + $qry.=" + AND a.rolle='Interessent' + AND EXISTS(SELECT 1 FROM public.tbl_rt_person + WHERE + person_id=a.person_id + AND studienplan_id IN( + SELECT studienplan_id FROM lehre.tbl_studienplan + JOIN lehre.tbl_studienordnung USING(studienordnung_id) + WHERE tbl_studienordnung.studiengang_kz=a.studiengang_kz) + )"; break; case "reihungstestnichtangemeldet": - $qry.=" AND a.rolle='Interessent' AND a.anmeldungreihungstest is null"; + $qry.=" AND a.rolle='Interessent' + AND NOT EXISTS(SELECT 1 FROM public.tbl_rt_person + WHERE + person_id=a.person_id + AND studienplan_id IN( + SELECT studienplan_id FROM lehre.tbl_studienplan + JOIN lehre.tbl_studienordnung USING(studienordnung_id) + WHERE tbl_studienordnung.studiengang_kz=a.studiengang_kz) + )"; break; case "bewerber": $qry.=" AND a.rolle='Bewerber'"; diff --git a/rdf/student.rdf.php b/rdf/student.rdf.php index 9e524a079..c86168f84 100755 --- a/rdf/student.rdf.php +++ b/rdf/student.rdf.php @@ -67,8 +67,8 @@ function checkfilter($row, $filter2, $buchungstyp = null) // Alle Personen die noch nicht alle Dokumente gebracht haben $qry = "SELECT count(*) as anzahl FROM public.tbl_dokumentstudiengang WHERE dokument_kurzbz NOT IN( - SELECT dokument_kurzbz FROM tbl_dokumentprestudent WHERE prestudent_id='$row->prestudent_id') - AND studiengang_kz='$row->studiengang_kz'"; + SELECT dokument_kurzbz FROM tbl_dokumentprestudent WHERE prestudent_id=".$db->db_add_param($row->prestudent_id).") + AND studiengang_kz=".$db->db_add_param($row->studiengang_kz); if($db->db_query($qry)) if($row_filter = $db->db_fetch_object()) if($row_filter->anzahl==0) @@ -77,11 +77,11 @@ function checkfilter($row, $filter2, $buchungstyp = null) elseif($filter2=='konto') { // Alle Personen die offene Buchungen haben - $qry = "SELECT sum(betrag) as summe FROM tbl_konto WHERE person_id='$row->person_id'"; + $qry = "SELECT sum(betrag) as summe FROM tbl_konto WHERE person_id=".$db->db_add_param($row->person_id, FHC_INTEGER); if($kontofilterstg=='true') - $qry.=" AND studiengang_kz='$row->studiengang_kz'"; + $qry.=" AND studiengang_kz=".$db->db_add_param($row->studiengang_kz); if($buchungstyp != null && $buchungstyp != "alle") - $qry.=" AND buchungstyp_kurzbz='$buchungstyp'"; + $qry.=" AND buchungstyp_kurzbz=".$db->db_add_param($buchungstyp); if($db->db_query($qry)) if($row_filter = $db->db_fetch_object()) @@ -96,8 +96,8 @@ function checkfilter($row, $filter2, $buchungstyp = null) $prestudent->getLastStatus($row->prestudent_id); $qry = "SELECT count(*) as anzahl FROM public.tbl_konto WHERE - studiensemester_kurzbz='".addslashes($studiensemester_kurzbz)."' AND - person_id='".addslashes($row->person_id)."' AND + studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz)." AND + person_id=".$db->db_add_param($row->person_id, FHC_INTEGER)." AND buchungstyp_kurzbz='Studiengebuehr'"; if($db->db_query($qry)) if($row_filter = $db->db_fetch_object()) @@ -113,9 +113,9 @@ function checkfilter($row, $filter2, $buchungstyp = null) $prestudent->getLastStatus($row->prestudent_id); $qry = "SELECT count(*) as anzahl FROM public.tbl_konto WHERE - studiensemester_kurzbz='".addslashes($studiensemester_kurzbz)."' AND - person_id='".addslashes($row->person_id)."' AND - buchungstyp_kurzbz='$buchungstyp'"; + studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz)." AND + person_id=".$db->db_add_param($row->person_id, FHC_INTEGER)." AND + buchungstyp_kurzbz=".$db->db_add_param($buchungstyp); if($db->db_query($qry)) if($row_filter = $db->db_fetch_object()) if($row_filter->anzahl>0 || $prestudent->status_kurzbz=='Incoming') @@ -124,14 +124,15 @@ function checkfilter($row, $filter2, $buchungstyp = null) elseif($filter2=='zgvohnedatum') { //Alle Personen die den ZGV Typ eingetragen haben aber noch kein Datum - $qry = "SELECT zgv_code, zgvdatum, zgvmas_code, zgvmadatum FROM public.tbl_prestudent WHERE prestudent_id='$row->prestudent_id'"; + $qry = "SELECT zgv_code, zgvdatum, zgvmas_code, zgvmadatum + FROM public.tbl_prestudent WHERE prestudent_id=".$db->db_add_param($row->prestudent_id); if($db->db_query($qry)) { if($row_filter = $db->db_fetch_object()) { - if(($row_filter->zgv_code!='' && $row_filter->zgvdatum=='') || - ($row_filter->zgvmas_code!='' && $row_filter->zgvmadatum=='')) - return true; + if(($row_filter->zgv_code!='' && $row_filter->zgvdatum=='') + || ($row_filter->zgvmas_code!='' && $row_filter->zgvmadatum=='')) + return true; else return false; } @@ -150,8 +151,6 @@ function draw_content_liste($row) $status = $prestudent->status_kurzbz; $orgform = $prestudent->orgform_kurzbz; $studienplan_bezeichnung=$prestudent->studienplan_bezeichnung; - $reihungstest = new reihungstest($row->reihungstest_id); - $rt_datum = $reihungstest->datum; echo ' @@ -189,11 +188,6 @@ function draw_content_liste($row) studienplan_id.']]> aufmerksamdurch_kurzbz.']]> punkte.']]> - rt_punkte1.']]> - rt_punkte2.']]> - rt_punkte3.']]> - - anmeldungreihungstest.']]> dual=='t'?'true':'false').']]> dual=='t'?'Ja':'Nein').']]> matr_nr.']]> @@ -211,7 +205,7 @@ function draw_content($row) $status=''; $mail_privat = ''; - $qry_mail = "SELECT kontakt FROM public.tbl_kontakt WHERE kontakttyp='email' AND person_id='$row->person_id' AND zustellung=true ORDER BY kontakt_id DESC LIMIT 1"; + $qry_mail = "SELECT kontakt FROM public.tbl_kontakt WHERE kontakttyp='email' AND person_id=".$db->db_add_param($row->person_id)." AND zustellung=true ORDER BY kontakt_id DESC LIMIT 1"; if($db->db_query($qry_mail)) { if($row_mail = $db->db_fetch_object()) @@ -223,17 +217,17 @@ function draw_content($row) $aktiv = "-"; if(isset($row->bnaktiv)) { - switch($row->bnaktiv) - { - case "t": - $aktiv = "true"; - break; - case "f": - $aktiv = "false"; - break; - default: - $aktiv = "-"; - } + switch($row->bnaktiv) + { + case "t": + $aktiv = "true"; + break; + case "f": + $aktiv = "false"; + break; + default: + $aktiv = "-"; + } } $studiengang = new studiengang(); @@ -341,19 +335,14 @@ function draw_prestudent($row) anmeldungreihungstest.']]> reihungstestangetreten?'true':'false').']]> punkte.']]> - rt_punkte1.']]> - rt_punkte2.']]> - rt_punkte3.']]> - - anmeldungreihungstest.']]> bismelden?'true':'false').']]> dual?'true':'false').']]> dual?'Ja':'Nein').']]> anmerkung.']]> mentor.']]> gsstudientyp_kurzbz.']]> - - '; + + '; } } @@ -431,19 +420,19 @@ if($xmlformat=='rdf') $where = ''; if ($gruppe_kurzbz!=null) { - $where=" gruppe_kurzbz='".$gruppe_kurzbz."' "; + $where=" gruppe_kurzbz=".$db->db_add_param($gruppe_kurzbz)." "; if($studiensemester_kurzbz!=null) - $where.=" AND tbl_benutzergruppe.studiensemester_kurzbz='$studiensemester_kurzbz'"; + $where.=" AND tbl_benutzergruppe.studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz); } else { - $where.=" tbl_studentlehrverband.studiengang_kz=$studiengang_kz"; + $where.=" tbl_studentlehrverband.studiengang_kz=".$db->db_add_param($studiengang_kz); if ($semester!=null) - $where.=" AND tbl_studentlehrverband.semester=$semester"; + $where.=" AND tbl_studentlehrverband.semester=".$db->db_add_param($semester); if ($verband!=null) - $where.=" AND tbl_studentlehrverband.verband='".$verband."'"; + $where.=" AND tbl_studentlehrverband.verband=".$db->db_add_param($verband); if ($gruppe!=null) - $where.=" AND tbl_studentlehrverband.gruppe='".$gruppe."'"; + $where.=" AND tbl_studentlehrverband.gruppe=".$db->db_add_param($gruppe); //Wenn eine Orgform uebergeben wird nur das Semester ausgewaehlt ist, dann //nach der Orgform filtern. Bei Verbaenden, Gruppen und Spezialgruppen wird auf @@ -452,36 +441,37 @@ if($xmlformat=='rdf') { $where.=" AND '$orgform' = (SELECT orgform_kurzbz FROM public.tbl_prestudentstatus WHERE prestudent_id=tbl_prestudent.prestudent_id"; if($studiensemester_kurzbz!=null) - $where.=" AND studiensemester_kurzbz='$studiensemester_kurzbz'"; + $where.=" AND studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz); $where.=" ORDER BY datum desc, insertamum desc, ext_id desc LIMIT 1)"; } } //$where.=" AND tbl_studentlehrverband.studiensemester_kurzbz='$studiensemester_kurzbz'"; - $sql_query="SELECT p.person_id, tbl_student.prestudent_id, tbl_benutzer.uid, titelpre, titelpost, vorname, vornamen, geschlecht, - nachname, gebdatum, tbl_prestudent.anmerkung,ersatzkennzeichen,svnr, tbl_student.matrikelnr, p.anmerkung as anmerkungen, - tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe, - tbl_student.studiengang_kz, aufmerksamdurch_kurzbz, mentor, public.tbl_benutzer.aktiv AS bnaktiv, - ( SELECT kontakt - FROM public.tbl_kontakt - WHERE kontakttyp='email' AND person_id=p.person_id AND zustellung - LIMIT 1 - ) - AS email_privat, - (SELECT rt_gesamtpunkte as punkte FROM public.tbl_prestudent WHERE prestudent_id=tbl_student.prestudent_id) as punkte, - (SELECT rt_punkte1 as punkte FROM public.tbl_prestudent WHERE prestudent_id=tbl_student.prestudent_id) as rt_punkte1, - (SELECT rt_punkte2 as punkte FROM public.tbl_prestudent WHERE prestudent_id=tbl_student.prestudent_id) as rt_punkte2, - (SELECT rt_punkte3 as punkte FROM public.tbl_prestudent WHERE prestudent_id=tbl_student.prestudent_id) as rt_punkte3, - tbl_prestudent.dual as dual, tbl_prestudent.reihungstest_id, tbl_prestudent.anmeldungreihungstest, p.matr_nr, tbl_prestudent.gsstudientyp_kurzbz - FROM public.tbl_student - JOIN public.tbl_benutzer ON (student_uid=uid) JOIN public.tbl_person p USING (person_id) JOIN public.tbl_prestudent USING(prestudent_id) "; + $sql_query=" + SELECT + p.person_id, tbl_student.prestudent_id, tbl_benutzer.uid, titelpre, titelpost,vorname, vornamen, geschlecht, + nachname, gebdatum, tbl_prestudent.anmerkung,ersatzkennzeichen,svnr, tbl_student.matrikelnr, p.anmerkung as anmerkungen, + tbl_studentlehrverband.semester, tbl_studentlehrverband.verband, tbl_studentlehrverband.gruppe, + tbl_student.studiengang_kz, aufmerksamdurch_kurzbz, mentor, public.tbl_benutzer.aktiv AS bnaktiv, + ( SELECT kontakt + FROM public.tbl_kontakt + WHERE kontakttyp='email' AND person_id=p.person_id AND zustellung + LIMIT 1 + ) + AS email_privat, + (SELECT rt_gesamtpunkte as punkte FROM public.tbl_prestudent WHERE prestudent_id=tbl_student.prestudent_id) as punkte, + tbl_prestudent.dual as dual, tbl_prestudent.reihungstest_id, tbl_prestudent.anmeldungreihungstest, p.matr_nr, tbl_prestudent.gsstudientyp_kurzbz + FROM + public.tbl_student + JOIN public.tbl_benutzer ON (student_uid=uid) + JOIN public.tbl_person p USING (person_id) + JOIN public.tbl_prestudent USING(prestudent_id) "; if($gruppe_kurzbz!=null) $sql_query.= "JOIN public.tbl_benutzergruppe USING (uid) "; - $sql_query.="LEFT JOIN public.tbl_studentlehrverband ON (tbl_studentlehrverband.student_uid=tbl_student.student_uid AND tbl_studentlehrverband.studiensemester_kurzbz='$studiensemester_kurzbz')"; + $sql_query.="LEFT JOIN public.tbl_studentlehrverband ON (tbl_studentlehrverband.student_uid=tbl_student.student_uid AND tbl_studentlehrverband.studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz).")"; $sql_query.="WHERE ".$where.' ORDER BY nachname, vorname'; - if($db->db_query($sql_query)) { while($row = $db->db_fetch_object()) @@ -497,7 +487,7 @@ if($xmlformat=='rdf') $studiensemester_kurzbz=$semester_aktuell; if($typ=='incoming') { - $qry = "SELECT prestudent_id FROM public.tbl_prestudentstatus WHERE status_kurzbz='Incoming' AND studiensemester_kurzbz='".addslashes($studiensemester_kurzbz)."'"; + $qry = "SELECT prestudent_id FROM public.tbl_prestudentstatus WHERE status_kurzbz='Incoming' AND studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz); } else { @@ -508,11 +498,11 @@ if($xmlformat=='rdf') bis.tbl_bisio JOIN public.tbl_student USING(student_uid) WHERE ( - (tbl_bisio.von>='".$stsem_obj->start."' AND tbl_bisio.von<='".$stsem_obj->ende."') + (tbl_bisio.von>=".$db->db_add_param($stsem_obj->start)." AND tbl_bisio.von<=".$db->db_add_param($stsem_obj->ende).") OR - (tbl_bisio.bis>='".$stsem_obj->start."' AND tbl_bisio.bis<='".$stsem_obj->ende."') + (tbl_bisio.bis>=".$db->db_add_param($stsem_obj->start)." AND tbl_bisio.bis<=".$db->db_add_param($stsem_obj->ende).") OR - (tbl_bisio.von<='".$stsem_obj->start."' AND tbl_bisio.bis>='".$stsem_obj->ende."') + (tbl_bisio.von<=".$db->db_add_param($stsem_obj->start)." AND tbl_bisio.bis>=".$db->db_add_param($stsem_obj->ende).") ) AND NOT EXISTS(SELECT 1 FROM public.tbl_prestudentstatus WHERE status_kurzbz='Incoming' AND prestudent_id=tbl_student.prestudent_id) "; @@ -582,9 +572,9 @@ if($xmlformat=='rdf') } } } - elseif(in_array($typ, array('prestudent', 'interessenten','bewerber','aufgenommen', - 'warteliste','absage','zgv','reihungstestangemeldet', - 'reihungstestnichtangemeldet','absolvent','diplomand','bewerbungnichtabgeschickt','bewerbungabgeschickt','statusbestaetigt'))) + elseif(in_array($typ, array('prestudent', 'interessenten', 'bewerber', 'aufgenommen', + 'warteliste', 'absage', 'zgv', 'reihungstestangemeldet', 'reihungstestnichtangemeldet', 'absolvent', + 'diplomand', 'bewerbungnichtabgeschickt', 'bewerbungabgeschickt', 'statusbestaetigt'))) { $prestd = new prestudent(); @@ -629,77 +619,76 @@ if($xmlformat=='rdf') { if($filter!='') { - if(substr_compare($filter, "#ref", 0, 4,true)==0) - { - $zahlungsreferenz = explode(" ", $filter); - unset($zahlungsreferenz[0]); - - foreach($zahlungsreferenz as $ref) + if(substr_compare($filter, "#ref", 0, 4,true)==0) { - $konto = new konto(); - $konto->loadFromZahlungsreferenz($ref); - $prestudent=new prestudent(); - $prestudent->getPrestudenten($konto->person_id); - if(!empty($prestudent->result)) - { - $prestudent_temp = new prestudent($prestudent->result[0]->prestudent_id); - $student = new student(); - $uid = $student->getUid($prestudent_temp->prestudent_id); + $zahlungsreferenz = explode(" ", $filter); + unset($zahlungsreferenz[0]); - if($uid!='' && $uid != false) + foreach($zahlungsreferenz as $ref) { - if(!$student->load($uid, $studiensemester_kurzbz)) - $student->load($uid); - draw_content($student); - draw_prestudent($prestudent_temp); + $konto = new konto(); + $konto->loadFromZahlungsreferenz($ref); + $prestudent=new prestudent(); + $prestudent->getPrestudenten($konto->person_id); + if(!empty($prestudent->result)) + { + $prestudent_temp = new prestudent($prestudent->result[0]->prestudent_id); + $student = new student(); + $uid = $student->getUid($prestudent_temp->prestudent_id); + + if($uid!='' && $uid != false) + { + if(!$student->load($uid, $studiensemester_kurzbz)) + $student->load($uid); + draw_content($student); + draw_prestudent($prestudent_temp); + } + else + { + draw_content($prestudent_temp); + draw_prestudent($prestudent_temp); + } + } } - else - { - draw_content($prestudent_temp); - draw_prestudent($prestudent_temp); - } - } } - } - else - { - //$filter = utf8_decode($filter); - $qry = "SELECT prestudent_id - FROM - public.tbl_person JOIN tbl_prestudent USING (person_id) LEFT JOIN tbl_student using(prestudent_id) - WHERE - COALESCE(nachname,'')||' '||COALESCE(vorname,'') ~* '".addslashes($filter)."' OR - COALESCE(vorname,'')||' '||COALESCE(nachname,'') ~* '".addslashes($filter)."' OR - student_uid ~* '".addslashes($filter)."' OR - matrikelnr = '".addslashes($filter)."' OR - svnr = '".addslashes($filter)."';"; - if($db->db_query($qry)) + else { - while($row = $db->db_fetch_object()) - { - $student=new student(); - if($uid = $student->getUid($row->prestudent_id)) + $qry = "SELECT prestudent_id + FROM + public.tbl_person JOIN tbl_prestudent USING (person_id) LEFT JOIN tbl_student using(prestudent_id) + WHERE + COALESCE(nachname,'')||' '||COALESCE(vorname,'') ~* ".$db->db_add_param($filter)." OR + COALESCE(vorname,'')||' '||COALESCE(nachname,'') ~* ".$db->db_add_param($filter)." OR + student_uid ~* ".$db->db_add_param($filter)." OR + matrikelnr = ".$db->db_add_param($filter)." OR + svnr = ".$db->db_add_param($filter).";"; + if($db->db_query($qry)) { - //Wenn kein Eintrag fuers aktuelle Studiensemester da ist, dann - //nochmal laden aber ohne studiensemester - if(!$student->load($uid, $studiensemester_kurzbz)) - $student->load($uid); + while($row = $db->db_fetch_object()) + { + $student=new student(); + if($uid = $student->getUid($row->prestudent_id)) + { + //Wenn kein Eintrag fuers aktuelle Studiensemester da ist, dann + //nochmal laden aber ohne studiensemester + if(!$student->load($uid, $studiensemester_kurzbz)) + $student->load($uid); + } + $prestd = new prestudent(); + $prestd->load($row->prestudent_id); + if($uid!='') + { + draw_content($student); + draw_prestudent($prestd); + } + else + { + draw_content($prestd); + draw_prestudent($prestd); + } + } } - $prestd = new prestudent(); - $prestd->load($row->prestudent_id); - if($uid!='') - { - draw_content($student); - draw_prestudent($prestd); - } - else - { - draw_content($prestd); - draw_prestudent($prestd); - } - } } - } } elseif(isset($prestudent_id)) { @@ -852,8 +841,7 @@ else $lv_studiengang->load($lv_studiengang_kz); $lv_studiengang_bezeichnung=$lv_studiengang->bezeichnung; $lv_studiengang_typ=$lv_studiengang->typ; -// $stg_typ->getStudiengangTyp($lv_studiengang->typ); -// $lv_studiengang_art=$stg_typ->bezeichnung; + switch($lv_studiengang->typ) { case 'd': $lv_studiengang_art = 'Diplom'; @@ -918,19 +906,19 @@ else gruppe.']]> orgform_kurzbz.']]> - bezeichnung.']]> + bezeichnung.']]> bezeichnung.']]> - typ.']]> - orgform_kurzbz.']]> - bezeichnung.']]> - + typ.']]> + orgform_kurzbz.']]> + bezeichnung.']]> + - + anrede.']]> geschlecht.']]> @@ -948,7 +936,7 @@ else max_semester.']]> anmerkung.']]> aktiv.']]> - '; + '; } } echo '';