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 "";
+ }
+
+
+
+
+ $ct = countIntArray($array_stg_without_studienplan);
+ if($ct)
+ {
+ echo $ct . " Einträge ohne Studienplan ";
+ echo "";
+ echo "Anzahl Studiengang Studiengang Kennzahl Kurzbezeichnung ";
+ foreach($array_stg_without_studienplan as $k => $i)
+ {
+ $stg = new studiengang();
+ $stg->load($i["stg_kz"]);
+ echo "".$i["count"]." ".$stg->bezeichnung." ".$i["stg_kz"]." ".$stg->kurzbzlang." ";
+ }
+ echo "
";
+ }
+
+ $ct = countIntArray($array_orgform);
+ if($ct)
+ {
+ echo $ct . " Einträge mit unbekannter Orgform ";
+ echo "";
+ }
+
+
+ $ct = countIntArray($array_studienplan_semester);
+ if($ct)
+ {
+ echo $ct . " Einträge ohne Studienplan - Semester Zuordnung ";
+ echo "";
+ echo "Gruppierung findet hier nach Studiengang und Prestudentstatus statt";
+ echo "
";
+ echo "Anzahl Studiengang Studiengang Kennzahl Ausbildungssemester Semester Kurzbezeichnung Status ";
+ foreach($array_studienplan_semester as $k => $i)
+ {
+ $stg = new studiengang();
+ $stg->load($i["stg_kz"]);
+ echo "".$i["count"]." ".$stg->bezeichnung." ".$i["stg_kz"]." ".$i["ausbildungssemester"]." ".$i["studiensemester_kurzbz"]." ".$stg->kurzbzlang." ".$i["status_kurzbz"]." ";
+ }
+ echo "
";
+ echo "
";
+ }
+
+
+ $ct = countIntArray($array_not_unique);
+ if($ct)
+ {
+ echo $ct . " Einträge, welche nicht eindeutig ermittelt werden konnten ";
+ echo "";
+ echo "Anzahl Prestudent_id Vorname Nachname UID Studiengang ";
+ foreach($array_not_unique as $k => $i)
+ {
+ $stg = new studiengang();
+ $stg->load($i["stg_kz"]);
+ echo "".$i["count"]." ".$i["prestudent_id"]." ".$i["vorname"]." ".$i["nachname"]." ".$i["uid"]." ".$stg->bezeichnung." ";
+ }
+ 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!
-
+