*/ require_once('../config/system.config.inc.php'); require_once('../include/basis_db.class.php'); require_once('../version.php'); require_once('../include/benutzerberechtigung.class.php'); require_once('../include/studiengang.class.php'); require_once('../include/prestudent.class.php'); require_once('../include/student.class.php'); // Datenbank Verbindung $db = new basis_db(); echo ' Studienplan_id prestudentstatus

Studienplan_id Update

'; $uid = get_uid(); $rechte = new benutzerberechtigung(); $rechte->getBerechtigungen($uid); if(!$rechte->isBerechtigt('admin')) { exit('Sie haben keine Berechtigung'); } $startString = "Starten"; if(isset($_POST["start"]) && $_POST["start"] == "start") { set_time_limit(10000); if($result = $db->db_query(" SELECT prestudent_id, orgform_kurzbz, studiengang_kz, studiensemester_kurzbz, ausbildungssemester, status_kurzbz FROM public.tbl_prestudentstatus JOIN public.tbl_prestudent USING(prestudent_id) WHERE studienplan_id IS NULL;")) { $all_count = $db->db_num_rows($result); $entries_not_unique = 0; $entries_not_found = 0; $entries_with_error = 0; $array_stg_without_studienplan = array(); $array_orgform = array(); $array_no_orgform = array(); $array_studienplan_semester = array(); $array_not_unique = array(); echo "Es gibt " . $all_count . " zu bearbeitende Einträge
"; while($row = $db->db_fetch_object($result)) { $qry_search=" SELECT studienplan_id FROM lehre.tbl_studienplan JOIN lehre.tbl_studienordnung USING(studienordnung_id) WHERE tbl_studienordnung.studiengang_kz=".$db->db_add_param($row->studiengang_kz)." AND lehre.tbl_studienplan.orgform_kurzbz= ( SELECT COALESCE ( ".$db->db_add_param($row->orgform_kurzbz).", ( SELECT orgform_kurzbz FROM public.tbl_studiengang WHERE studiengang_kz=(SELECT studiengang_kz FROM public.tbl_prestudent WHERE prestudent_id=".$db->db_add_param($row->prestudent_id,FHC_INTEGER).") ) ) ) AND EXISTS ( SELECT 1 FROM lehre.tbl_studienplan_semester WHERE studienplan_id=tbl_studienplan.studienplan_id AND studiensemester_kurzbz=".$db->db_add_param($row->studiensemester_kurzbz)." AND semester=".$db->db_add_param($row->ausbildungssemester,FHC_INTEGER)." LIMIT 1 ); "; $result_search = $db->db_query($qry_search); $ct = $db->db_num_rows($result_search); if($ct < 1) { $entries_not_found++; /* load informations about the student */ $ps = new prestudent(); $ps->load($row->prestudent_id); $stud = new student(); $uid = $stud->getUid($row->prestudent_id); $qry_analyze1=" SELECT studienplan_id FROM lehre.tbl_studienplan JOIN lehre.tbl_studienordnung USING(studienordnung_id) WHERE lehre.tbl_studienplan.orgform_kurzbz= ( SELECT COALESCE ( ".$db->db_add_param($row->orgform_kurzbz).", ( SELECT orgform_kurzbz FROM public.tbl_studiengang WHERE studiengang_kz=(SELECT studiengang_kz FROM public.tbl_prestudent WHERE prestudent_id=".$db->db_add_param($row->prestudent_id,FHC_INTEGER).") ) ) ); "; $result_analyze1 = $db->db_query($qry_analyze1); if($db->db_num_rows($result_analyze1) == 0) { $orgform = $row->orgform_kurzbz; if($orgform == null) { $qry_analyze1_2=" SELECT orgform_kurzbz FROM public.tbl_studiengang WHERE studiengang_kz=(SELECT studiengang_kz FROM public.tbl_prestudent WHERE prestudent_id=".$db->db_add_param($row->prestudent_id,FHC_INTEGER).")"; $result_analyze1_2 = $db->db_query($qry_analyze1_2); if($row3 = $db->db_fetch_object($result_analyze1_2)) $orgform = $row3->orgform_kurzbz; } if($orgform == null) { if(!isset($array_no_orgform[$row->prestudent_id])) { $info = array("uid" => $uid, "vorname" => $ps->vorname, "nachname" => $ps->nachname, "stg_kz" => $row->studiengang_kz, "count" => 0); $array_no_orgform[$row->prestudent_id] = $info; } $array_no_orgform[$row->prestudent_id]["count"] ++; } else { $key = $orgform; if(!isset($array_orgform[$key])) { $info = array("orgform_kurzbz" => $orgform, "count" => 0); $array_orgform[$key] = $info; } $array_orgform[$key]["count"] ++; } } $qry_analyze2=" SELECT studienplan_id FROM lehre.tbl_studienplan JOIN lehre.tbl_studienordnung USING(studienordnung_id) WHERE tbl_studienordnung.studiengang_kz=".$db->db_add_param($row->studiengang_kz); $result_analyze2 = $db->db_query($qry_analyze2); if($db->db_num_rows($result_analyze2) == 0) { $key = $row->studiengang_kz; if(!isset($array_stg_without_studienplan[$key])) { $info = array("stg_kz" => $row->studiengang_kz, "count" => 0); $array_stg_without_studienplan[$key] = $info; } $array_stg_without_studienplan[$key]["count"] ++; } $qry_analyze3=" SELECT studienplan_id FROM lehre.tbl_studienplan JOIN lehre.tbl_studienordnung USING(studienordnung_id) WHERE EXISTS ( SELECT 1 FROM lehre.tbl_studienplan_semester WHERE studienplan_id=tbl_studienplan.studienplan_id AND studiensemester_kurzbz=".$db->db_add_param($row->studiensemester_kurzbz)." AND semester=".$db->db_add_param($row->ausbildungssemester,FHC_INTEGER)." LIMIT 1 ) AND studiengang_kz = ( SELECT studiengang_kz FROM public.tbl_prestudent WHERE prestudent_id=".$db->db_add_param($row->prestudent_id)." );"; $result_analyze3 = $db->db_query($qry_analyze3); if($db->db_num_rows($result_analyze3) == 0) { $key = $row->studiengang_kz." ".$row->status_kurzbz; if(!isset($array_studienplan_semester[$key])) { $info = array("stg_kz" => $row->studiengang_kz, "ausbildungssemester" => $row->ausbildungssemester, "studiensemester_kurzbz" => $row->studiensemester_kurzbz, "status_kurzbz" => $row->status_kurzbz, "count" => 0); $array_studienplan_semester[$key] = $info; } $array_studienplan_semester[$key]["count"] ++; } } else if($ct > 1) { if(!isset($array_not_unique[$row->prestudent_id])) { $info = array("prestudent_id" => $row->prestudent_id, "uid" => $uid, "vorname" => $ps->vorname, "nachname" => $ps->nachname, "stg_kz" => $row->studiengang_kz, "count" => 0); $array_not_unique[$row->prestudent_id] = $info; } $array_not_unique[$row->prestudent_id]["count"] ++; $entries_not_unique++; } else { $sp = $db->db_fetch_object($result_search); if(!$db->db_query("UPDATE public.tbl_prestudentstatus SET studienplan_id=".$db->db_add_param($sp->studienplan_id, FHC_INTEGER). " WHERE prestudent_id=".$db->db_add_param($row->prestudent_id, FHC_INTEGER). " AND status_kurzbz=".$db->db_add_param($row->status_kurzbz). " AND studiensemester_kurzbz=".$db->db_add_param($row->studiensemester_kurzbz). " AND ausbildungssemester=".$db->db_add_param($row->ausbildungssemester, FHC_INTEGER) )) $entries_with_error ++; } } $rest_count = $all_count - $entries_not_found - $entries_not_unique - $entries_with_error; $quote = 100/$all_count*$rest_count; $color = "black"; if($quote < 33.3) $color = "red"; else if($quote > 33.3 && $quote < 66.6) $color = "orange"; else $color = "green"; echo "Es wurden " . $rest_count . " Einträge eingetragen
"; echo $entries_not_found." wurden nicht gefunden
"; echo $entries_not_unique." sind nicht eindeutig
"; echo $entries_with_error." konnten aufgrund eines Fehlers nicht eingetragen werden
"; echo "Es wurde eine quote von " . round($quote,2) . "% erreicht
"; echo "

Details

"; $ct = countIntArray($array_no_orgform); if($ct) { echo $ct . " Einträge ohne Orgform(Prestudentstatus/Studiengang)
"; echo ""; echo ""; foreach($array_no_orgform as $k => $i) { $stg = new studiengang(); $stg->load($i["stg_kz"]); echo ""; } echo ""; } $ct = countIntArray($array_stg_without_studienplan); if($ct) { echo $ct . " Einträge ohne Studienplan
"; echo ""; echo ""; foreach($array_stg_without_studienplan as $k => $i) { $stg = new studiengang(); $stg->load($i["stg_kz"]); echo ""; } echo ""; } $ct = countIntArray($array_orgform); if($ct) { echo $ct . " Einträge mit unbekannter Orgform
"; echo ""; echo ""; foreach($array_orgform as $k => $i) { echo ""; } echo ""; } $ct = countIntArray($array_studienplan_semester); if($ct) { echo $ct . " Einträge ohne Studienplan - Semester Zuordnung
"; echo ""; } $ct = countIntArray($array_not_unique); if($ct) { echo $ct . " Einträge, welche nicht eindeutig ermittelt werden konnten
"; echo ""; echo ""; foreach($array_not_unique as $k => $i) { $stg = new studiengang(); $stg->load($i["stg_kz"]); echo ""; } echo ""; } } $startString = "Neu Starten"; } else { ?>

Der folgende Vorgang kann unter Umständen mehrere Minuten dauern!

Es wird versucht anhand der orgform_kurzbz, der prestudent_id, der studiensemester_kurzbz und des ausbildungssemesters die studienplan_id des prestudentstatus zu ermitteln

Es werden nur Einträge mit studienplan_id IS NULL geändert

Hinweis:

Vor diesem Skript sollte Checksystem ausgeführt werden!

'; function countIntArray($arr) { $count = 0; foreach($arr as $k => $i) { if(is_array($i)) { $count += countIntArray($i); } else if($k == "count" && is_numeric($i)) { $count += $i; } } return $count; } ?>