diff --git a/vilesci/personen/student_vorrueckung_manuell.php b/vilesci/personen/student_vorrueckung_manuell.php new file mode 100644 index 000000000..4f095823f --- /dev/null +++ b/vilesci/personen/student_vorrueckung_manuell.php @@ -0,0 +1,322 @@ +, + * Andreas Oesterreicher , + * Rudolf Hangl and + * Gerald Raab . + */ +/* +Vorrückung aller AKTIVEN Studenten ins nächste Semester. +*/ +require_once('../config.inc.php'); +require_once('../../include/studiengang.class.php'); +require_once('../../include/studiensemester.class.php'); +require_once('../../include/functions.inc.php'); + +if(!$conn=pg_pconnect(CONN_STRING)) + die("Konnte Verbindung zur Datenbank nicht herstellen"); + +function myaddslashes($var) +{ + return ($var!=''?"'".addslashes($var)."'":'null'); +} + +$ausbildungssemester=0; +$s=new studiengang($conn); +$s->getAll('typ, kurzbz', true); +$studiengang=$s->result; + +//Einlesen der studiensemester in einen Array +$ss = new studiensemester($conn); +$ss->getAll(); +foreach($ss->studiensemester as $studiensemester) +{ + $ss_arr[] = $studiensemester->studiensemester_kurzbz; +} + +$user = get_uid(); + +//Übergabeparameter +if (isset($_GET['stg_kz']) || isset($_POST['stg_kz'])) + $stg_kz=(isset($_GET['stg_kz'])?$_GET['stg_kz']:$_POST['stg_kz']); +else + $stg_kz=0; +if (isset($_GET['semester']) || isset($_POST['semester'])) + $semester=(isset($_GET['semester'])?$_GET['semester']:$_POST['semester']); +else + $semester=100; +if (isset($_GET['studiensemester_kurzbz']) || isset($_POST['studiensemester_kurzbz'])) + $studiensemester_kurzbz=(isset($_GET['studiensemester_kurzbz'])?$_GET['studiensemester_kurzbz']:$_POST['studiensemester_kurzbz']); +else + $studiensemester_kurzbz=null; +if (is_null($studiensemester_kurzbz)) +{ + $studiensemester_kurzbz=$ss->getakt(); +} +//$studiensemester_kurzbz_akt=$ss->getakt(); //aktuelles Semester +if (isset($_GET['studiensemester_kurzbz_akt']) || isset($_POST['studiensemester_kurzbz_akt'])) + $studiensemester_kurzbz_akt=(isset($_GET['studiensemester_kurzbz_akt'])?$_GET['studiensemester_kurzbz_akt']:$_POST['studiensemester_kurzbz_akt']); +else + die("Aktuelles Studiensemester wurde nicht übergeben."); + +/*$ss->getNextStudiensemester(); +$studiensemester_kurzbz_zk=$ss->studiensemester_kurzbz; //nächstes Semester*/ +if (isset($_GET['studiensemester_kurzbz_zk']) || isset($_POST['studiensemester_kurzbz_zk'])) + $studiensemester_kurzbz_zk=(isset($_GET['studiensemester_kurzbz_zk'])?$_GET['studiensemester_kurzbz_zk']:$_POST['studiensemester_kurzbz_zk']); +else + die("Nächstes Studiensemester wurde nicht übergeben."); + +if(!is_numeric($stg_kz)) + $stg_kz=0; +//semester=100 bedeutet die Auswahl aller Semester +if(!is_numeric($semester)) + $semester=100; + +//Einlesen der maximalen, regulären Dauer der Studiengänge in einen Array +$qry_stg="SELECT * FROM public.tbl_studiengang"; +if ($result_stg=pg_query($conn, $qry_stg)) +{ + while($row_stg=pg_fetch_object($result_stg)) + { + $max[$row_stg->studiengang_kz]=$row_stg->max_semester; + } +} + +//select für die Anzeige +$sql_query="SELECT tbl_student.*,tbl_person.*, tbl_studentlehrverband.semester as semester_stlv, tbl_studentlehrverband.verband as verband_stlv, + tbl_studentlehrverband.gruppe as gruppe_stlv FROM tbl_studentlehrverband JOIN tbl_student USING (student_uid) + JOIN tbl_benutzer ON (student_uid=uid) + JOIN tbl_person USING (person_id) + WHERE tbl_benutzer.aktiv AND tbl_studentlehrverband.studiengang_kz='$stg_kz' + AND studiensemester_kurzbz='$studiensemester_kurzbz' "; +if($semester<100) +{ + $sql_query.="AND tbl_studentlehrverband.semester='$semester' "; //semester = 100 wählt alle aus +} +$sql_query.="ORDER BY semester, nachname"; + +//echo $sql_query; +if (!$result_std=pg_query($conn, $sql_query)) + error("Studenten not found!"); +$outp=''; + +// ****************************** Vorrücken ****************************** +if (isset($_POST['vorr'])) +{ +//select für die Vorrückung +$sql_query="SELECT tbl_student.*,tbl_person.*, tbl_studentlehrverband.semester as semester_stlv, tbl_studentlehrverband.verband as verband_stlv, + tbl_studentlehrverband.gruppe as gruppe_stlv FROM tbl_studentlehrverband JOIN tbl_student USING (student_uid) + JOIN tbl_benutzer ON (student_uid=uid) + JOIN tbl_person USING (person_id) + WHERE tbl_benutzer.aktiv AND tbl_studentlehrverband.studiengang_kz='$stg_kz' + AND studiensemester_kurzbz='$studiensemester_kurzbz_akt'"; + if($semester<100) + { + $sql_query.="AND tbl_studentlehrverband.semester='$semester' "; //semester = 100 wählt alle aus + } + $sql_query.="ORDER BY semester, nachname"; + + //echo $sql_query; + if (!$result_std=pg_query($conn, $sql_query)) + error("Studenten not found!"); + $next_ss=$studiensemester_kurzbz_zk; + while($row=pg_fetch_object($result_std)) + { + //aktuelle Rolle laden + $qry_status="SELECT rolle_kurzbz, ausbildungssemester FROM public.tbl_prestudentrolle JOIN public.tbl_prestudent USING(prestudent_id) + WHERE person_id=".myaddslashes($row->person_id)." + AND studiengang_kz=".$row->studiengang_kz." + AND studiensemester_kurzbz=".myaddslashes($studiensemester_kurzbz_akt)." + ORDER BY datum desc, tbl_prestudentrolle.insertamum desc, tbl_prestudentrolle.ext_id desc LIMIT 1;"; + if ($result_status=pg_query($conn, $qry_status)) + { + if($row_status=pg_fetch_object($result_status)) + { + //Studenten im letzten Semester bleiben dort, wenn aktiv + if($row->semester_stlv>=$max[$stg_kz] || $row->semester_stlv==0) + { + $s=$row->semester_stlv; + } + else + { + $s=$row->semester_stlv+1; + } + if($row_status->ausbildungssemester>=$max[$stg_kz] || $row_status->rolle_kurzbz=="Unterbrecher") + { + $ausbildungssemester=$row_status->ausbildungssemester; + } + else + { + $ausbildungssemester=$row_status->ausbildungssemester+1; + } + //Lehrverbandgruppe anlegen, wenn noch nicht vorhanden + $qry_lvb="SELECT * FROM public.tbl_lehrverband + WHERE studiengang_kz=".myaddslashes($row->studiengang_kz)." AND semester=".myaddslashes($s)." + AND verband=".myaddslashes($row->verband_stlv)." AND gruppe=".myaddslashes($row->gruppe_stlv).";"; + if(pg_num_rows(pg_query($conn, $qry_lvb))<1) + { + $lvb_ins="INSERT INTO public.tbl_lehrverband VALUES (". + myaddslashes($row->studiengang_kz).", ". + myaddslashes($s).", ". + myaddslashes($row->verband_stlv).", ". + myaddslashes($row->gruppe_stlv).", + TRUE, NULL, NULL);"; + if (!$r=pg_query($conn, $lvb_ins)) + die(pg_last_error($conn)); + } + //Überprüfen ob Eintrag schon vorhanden + $qry_chk="SELECT * FROM public.tbl_studentlehrverband + WHERE student_uid=".myaddslashes($row->student_uid)." + AND studiensemester_kurzbz=".myaddslashes($next_ss)." + AND studiengang_kz=".myaddslashes($row->studiengang_kz)." + AND semester=".$s.";"; + $sql=''; + if(pg_num_rows(pg_query($conn, $qry_chk))<1) + { + //Eintragen der neuen Gruppe + $sql="INSERT INTO tbl_studentlehrverband + VALUES ('$row->student_uid','$next_ss','$row->studiengang_kz', + '$s','$row->verband_stlv','$row->gruppe_stlv',NULL,NULL,now(),'$user',NULL);"; + } + $qry_chk="SELECT * FROM public.tbl_prestudentrolle + WHERE prestudent_id=".myaddslashes($row->prestudent_id)." + AND studiensemester_kurzbz=".myaddslashes($next_ss).";"; + if(pg_num_rows(pg_query($conn, $qry_chk))<1) + { + //Eintragen des neuen Status + $sql.="INSERT INTO tbl_prestudentrolle + VALUES ($row->prestudent_id, '$row_status->rolle_kurzbz', '$next_ss', + $ausbildungssemester, now(), now(), '$user', + NULL, NULL, NULL, NULL);"; + } + if($sql!='') + { + if (!$r=pg_query($conn, $sql)) + { + die(pg_last_error($conn)."
".$sql); + } + } + } + } + } + +} + +// **************** Ausgabe vorbereiten ****************************** +$s=array(); +$outp.="'; +//Auswahl Studiensemester +$outp.="\n"; +$outp.="
Vorrückung von ".$studiensemester_kurzbz_akt." / Semester ".($semester<100?$semester:'alle')." -> ".$studiensemester_kurzbz_zk; +$outp.= '
-- '; +for ($i=0;$i<=$s[$stg_kz]->max_sem;$i++) + $outp.= ''.$i.' -- '; +$outp.= 'alle -- '; +//Aufbau Ausgabe +?> + + +Studenten Vorrueckung + + + + + + +Studenten Vorrückung (".$s[$stg_kz]->kurzbz." - ".($semester<100?$semester:'alle')." - ". + $studiensemester_kurzbz."), DB:".substr(CONN_STRING,strpos(CONN_STRING,'dbname=')+7, + strpos(CONN_STRING,'user=')-strpos(CONN_STRING,'dbname=')-7).""; + +echo '
'; +echo '
'; +echo $outp; +echo ''; +echo ''; +echo ' 
'; +echo '
'; + +echo "

Übersicht

+ + + "; + +if ($result_std!=0) +{ + $num_rows=pg_num_rows($result_std); + echo 'Anzahl: '.$num_rows; + echo "\n"; + echo ""; + echo ""; + for($i=0;$i<$num_rows;$i++) + { + $row=pg_fetch_object($result_std,$i); + $qry_status="SELECT rolle_kurzbz, ausbildungssemester FROM public.tbl_prestudentrolle + JOIN public.tbl_prestudent USING(prestudent_id) WHERE person_id=".myaddslashes($row->person_id)." + AND studiengang_kz=".$row->studiengang_kz." + AND studiensemester_kurzbz=".myaddslashes($studiensemester_kurzbz)." + ORDER BY datum desc, tbl_prestudentrolle.insertamum desc, tbl_prestudentrolle.ext_id desc LIMIT 1;"; + if ($result_status=pg_query($conn, $qry_status)) + { + if($row_status=pg_fetch_object($result_status)) + { + echo ""; + echo ""; + echo "\n"; + } + else + { + echo ""; + echo ""; + echo "\n"; + } + } + else + { + error("Roles not found!"); + } + } +} +else + echo "Kein Eintrag gefunden!"; +?> + +
NachnameVornameSTGSemVerGrpStatusAusbSem
$row->nachname$row->vorname$row->studiengang_kz$row->semester_stlv$row->verband_stlv$row->gruppe_stlv$row_status->rolle_kurzbz$row_status->ausbildungssemester
$row->nachname$row->vorname$row->studiengang_kz$row->semester_stlv$row->verband_stlv$row->gruppe_stlv
+ +
+ + \ No newline at end of file