diff --git a/system/prestudentstatus_studienplan_id.php b/system/prestudentstatus_studienplan_id.php index 1381801fc..84705290a 100644 --- a/system/prestudentstatus_studienplan_id.php +++ b/system/prestudentstatus_studienplan_id.php @@ -23,6 +23,9 @@ 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(); @@ -31,11 +34,42 @@ echo ' Studienplan_id prestudentstatus - @@ -54,12 +88,23 @@ if(!$rechte->isBerechtigt('admin')) if(isset($_POST["start"]) && $_POST["start"] == "start") { - if($result = $db->db_query("SELECT prestudent_id, orgform_kurzbz, studiensemester_kurzbz, ausbildungssemester, status_kurzbz FROM public.tbl_prestudentstatus WHERE studienplan_id IS NULL")) + 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
"; @@ -71,44 +116,174 @@ if(isset($_POST["start"]) && $_POST["start"] == "start") FROM lehre.tbl_studienplan JOIN lehre.tbl_studienordnung USING(studienordnung_id) - WHERE tbl_studienordnung.studiengang_kz= - ( - SELECT studiengang_kz - FROM public.tbl_prestudent - WHERE prestudent_id=".$db->db_add_param($row->prestudent_id,FHC_INTEGER)." - ) - AND lehre.tbl_studienplan.orgform_kurzbz= - ( - SELECT COALESCE + WHERE tbl_studienordnung.studiengang_kz=".$db->db_add_param($row->studiengang_kz)." + AND lehre.tbl_studienplan.orgform_kurzbz= ( - ".$db->db_add_param($row->orgform_kurzbz).", + SELECT COALESCE ( - 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).") - ) + ".$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 * 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)." - ); + 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 @@ -126,12 +301,106 @@ if(isset($_POST["start"]) && $_POST["start"] == "start") $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." nicht gefunden
"; - echo $entries_not_unique." nicht eindeutig
"; + 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 "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 ""; + } } } else @@ -141,14 +410,29 @@ else

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:

-

Die Tabelle lehre.tbl_studienplan_semester muss hierfür bereits durch CHECKSYSTEM angelegt UND befüllt sein. Andernfalls kann keine studienplan_id gefunden werden!

+

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; +} ?>