mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-27 00:49:28 +00:00
Analyzation for studienplan_id detection
This commit is contained in:
@@ -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 '<html>
|
||||
<title>Studienplan_id prestudentstatus</title>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<link rel="stylesheet" href="../skin/vilesci.css" type="text/css" />
|
||||
<script>
|
||||
function hideStartButton()
|
||||
<style>
|
||||
th, td
|
||||
{
|
||||
document.getElementById("startButton").disabled=true;
|
||||
document.getElementById("startButton").value="Bitte warten...";
|
||||
border: 1px solid black;
|
||||
padding: 5px;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
function startScript()
|
||||
{
|
||||
var startButton = document.getElementById("startButton")
|
||||
startButton.disabled=true;
|
||||
startButton.value="Bitte warten...";
|
||||
|
||||
var form = document.createElement("form");
|
||||
form.setAttribute("method", "post");
|
||||
form.setAttribute("action", "prestudentstatus_studienplan_id.php");
|
||||
|
||||
var hiddenField = document.createElement("input");
|
||||
hiddenField.setAttribute("type", "hidden");
|
||||
hiddenField.setAttribute("name", "start");
|
||||
hiddenField.setAttribute("value", "start");
|
||||
form.appendChild(hiddenField);
|
||||
|
||||
document.body.appendChild(form);
|
||||
|
||||
form.submit();
|
||||
}
|
||||
|
||||
function showDetails(id)
|
||||
{
|
||||
var ele = document.getElementById(id);
|
||||
if(ele.style.display == "none")
|
||||
ele.style.display="block";
|
||||
else
|
||||
ele.style.display="none";
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
@@ -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 <span style='color:red;'>" . $all_count . "</span> zu bearbeitende Einträge<br>";
|
||||
|
||||
@@ -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 <span style='color:red;'>" . $rest_count . "</span> Einträge eingetragen<br>";
|
||||
echo $entries_not_found." nicht gefunden<br>";
|
||||
echo $entries_not_unique." nicht eindeutig<br>";
|
||||
echo $entries_not_found." wurden nicht gefunden<br>";
|
||||
echo $entries_not_unique." sind nicht eindeutig<br>";
|
||||
echo $entries_with_error." konnten aufgrund eines Fehlers nicht eingetragen werden<br>";
|
||||
echo "Es wurde eine quote von " . round($quote,2) . "% erreicht<br>";
|
||||
echo "Es wurde eine quote von <span style='color:$color;'>" . round($quote,2) . "%</span> erreicht<br>";
|
||||
|
||||
|
||||
echo "<h2 style='margin-top:20px;'>Details</h2>";
|
||||
|
||||
|
||||
|
||||
|
||||
$ct = countIntArray($array_no_orgform);
|
||||
if($ct)
|
||||
{
|
||||
echo $ct . " Einträge ohne Orgform(Prestudentstatus/Studiengang) <input type='button' value='Details' onclick='showDetails(\"no_orgform\")'/><br>";
|
||||
echo "<table style='margin-left:10px;display:none;' id='no_orgform'>";
|
||||
echo "<th>Anzahl</th><th>Vorname</th><th>Nachname</th><th>UID</th><th>Studiengang</th><th>Studiengang_kz</th>";
|
||||
foreach($array_no_orgform as $k => $i)
|
||||
{
|
||||
$stg = new studiengang();
|
||||
$stg->load($i["stg_kz"]);
|
||||
echo "<tr><td>".$i["count"]."</td><td>".$i["vorname"]."</td><td>".$i["nachname"]."</td><td>".$i["uid"]."</td><td>".$stg->bezeichnung."</td><td>".$i["stg_kz"]."</td></tr>";
|
||||
}
|
||||
echo "</table>";
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
$ct = countIntArray($array_stg_without_studienplan);
|
||||
if($ct)
|
||||
{
|
||||
echo $ct . " Einträge ohne Studienplan <input type='button' value='Details' onclick='showDetails(\"stg_without_studienplan\")'/><br>";
|
||||
echo "<table style='margin-left:10px;display:none;' id='stg_without_studienplan'>";
|
||||
echo "<th>Anzahl</th><th>Studiengang</th><th>Studiengang Kennzahl</th><th>Kurzbezeichnung</th>";
|
||||
foreach($array_stg_without_studienplan as $k => $i)
|
||||
{
|
||||
$stg = new studiengang();
|
||||
$stg->load($i["stg_kz"]);
|
||||
echo "<tr><td>".$i["count"]."</td><td>".$stg->bezeichnung."</td><td>".$i["stg_kz"]."</td><td>".$stg->kurzbzlang."</td></tr>";
|
||||
}
|
||||
echo "</table>";
|
||||
}
|
||||
|
||||
$ct = countIntArray($array_orgform);
|
||||
if($ct)
|
||||
{
|
||||
echo $ct . " Einträge mit unbekannter Orgform <input type='button' value='Details' onclick='showDetails(\"orgform\")'/><br>";
|
||||
echo "<table style='margin-left:10px;display:none;' id='orgform'>";
|
||||
echo "<th>Anzahl</th><th>Bezeichnung</th>";
|
||||
foreach($array_orgform as $k => $i)
|
||||
{
|
||||
echo "<tr><td>".$i["count"]."</td><td>".$i["orgform_kurzbz"]."</td></tr>";
|
||||
}
|
||||
echo "</table>";
|
||||
}
|
||||
|
||||
|
||||
$ct = countIntArray($array_studienplan_semester);
|
||||
if($ct)
|
||||
{
|
||||
echo $ct . " Einträge ohne Studienplan - Semester Zuordnung <input type='button' value='Details' onclick='showDetails(\"studienplan_semester\")'/><br>";
|
||||
echo "<div style='margin-left:10px;display:none;' id='studienplan_semester'>";
|
||||
echo "Gruppierung findet hier nach Studiengang und Prestudentstatus statt";
|
||||
echo "<table>";
|
||||
echo "<th>Anzahl</th><th>Studiengang</th><th>Studiengang Kennzahl</th><th>Ausbildungssemester</th><th>Semester</th><th>Kurzbezeichnung</th><th>Status</th>";
|
||||
foreach($array_studienplan_semester as $k => $i)
|
||||
{
|
||||
$stg = new studiengang();
|
||||
$stg->load($i["stg_kz"]);
|
||||
echo "<tr><td>".$i["count"]."</td><td>".$stg->bezeichnung."</td><td>".$i["stg_kz"]."</td><td>".$i["ausbildungssemester"]."</td><td>".$i["studiensemester_kurzbz"]."</td><td>".$stg->kurzbzlang."</td><td>".$i["status_kurzbz"]."</td></tr>";
|
||||
}
|
||||
echo "</table>";
|
||||
echo "</div>";
|
||||
}
|
||||
|
||||
|
||||
$ct = countIntArray($array_not_unique);
|
||||
if($ct)
|
||||
{
|
||||
echo $ct . " Einträge, welche nicht eindeutig ermittelt werden konnten <input type='button' value='Details' onclick='showDetails(\"not_unique\")'/><br>";
|
||||
echo "<table style='margin-left:10px;display:none;' id='not_unique'>";
|
||||
echo "<th>Anzahl</th><th>Prestudent_id</th><th>Vorname</th><th>Nachname</th><th>UID</th><th>Studiengang</th>";
|
||||
foreach($array_not_unique as $k => $i)
|
||||
{
|
||||
$stg = new studiengang();
|
||||
$stg->load($i["stg_kz"]);
|
||||
echo "<tr><td>".$i["count"]."</td><td>".$i["prestudent_id"]."</td><td>".$i["vorname"]."</td><td>".$i["nachname"]."</td><td>".$i["uid"]."</td><td>".$stg->bezeichnung."</td></tr>";
|
||||
}
|
||||
echo "</table>";
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -141,14 +410,29 @@ else
|
||||
<p>Es wird versucht anhand der orgform_kurzbz, der prestudent_id, der studiensemester_kurzbz und des ausbildungssemesters die studienplan_id des prestudentstatus zu ermitteln</p>
|
||||
<p>Es werden nur Einträge mit studienplan_id IS NULL geändert</p>
|
||||
<p>Hinweis:</p>
|
||||
<p>Die Tabelle lehre.tbl_studienplan_semester muss hierfür bereits durch CHECKSYSTEM angelegt UND befüllt sein. Andernfalls kann keine studienplan_id gefunden werden!</p>
|
||||
<p style="color:orange;">Vor diesem Skript sollte <a style="color:red;text-decoration: underline;" href="checksystem.php">Checksystem</a> ausgeführt werden!</p>
|
||||
|
||||
<form onclick="hideStartButton()" action='prestudentstatus_studienplan_id.php' method='POST'>
|
||||
<input type="hidden" name="start" value="start" />
|
||||
<input id="startButton" type="submit" value="Start" />
|
||||
</form>
|
||||
<input type="button" id="startButton" value="Starten" onclick="startScript()"/>
|
||||
<?php
|
||||
}
|
||||
|
||||
echo '</body></html>';
|
||||
|
||||
|
||||
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;
|
||||
}
|
||||
?>
|
||||
|
||||
Reference in New Issue
Block a user