From da4ab6bf493742791e8d65e60abbb062d90259d3 Mon Sep 17 00:00:00 2001 From: nkrondraf Date: Tue, 13 Jun 2023 14:06:57 +0200 Subject: [PATCH 1/2] performance optimizations --- cis/private/profile/studienplan.php | 37 ++++++++++++++++------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/cis/private/profile/studienplan.php b/cis/private/profile/studienplan.php index 6097ed136..f66b66197 100644 --- a/cis/private/profile/studienplan.php +++ b/cis/private/profile/studienplan.php @@ -321,6 +321,10 @@ $lv->loadLehrveranstaltungStudienplan($studienplan_id); foreach($lv->lehrveranstaltungen as $row_lva) $lv_arr[$row_lva->lehrveranstaltung_id]=$row_lva; +// Anrechnungen laden +$anrechnung = new anrechnung(); +$anrechnung->getAnrechnungPrestudent($student->prestudent_id); + echo '

'.$p->t('studienplan/studienplan').": $studienplan->bezeichnung ($studienplan_id) - $student->vorname $student->nachname ( $student->uid )

"; echo ' @@ -357,6 +361,7 @@ function drawTree($tree, $depth) { global $uid, $stsem_arr, $noten_arr, $lvangebot_arr, $aktornext; global $datum_obj, $db, $lv_arr, $p, $note_pruef_arr, $student; + global $anrechnung; foreach($tree as $row_tree) { @@ -425,7 +430,7 @@ function drawTree($tree, $depth) echo $icon." ".$termine." lehrveranstaltung_id&language=$sprache','Lehrveranstaltungsinformation','width=700,height=750,resizable=yes,menuebar=no,toolbar=no,status=yes,scrollbars=yes');\">".$row_tree->kurzbz.' - '.$row_tree->bezeichnung.""; else // Bezeichnung der Lehrveranstaltung - echo $icon." ".$termine." ".$row_tree->kurzbz.' - '.$row_tree->bezeichnung.'('.$row_tree->lehrveranstaltung_id.')'; + echo $icon." ".$termine." ".$row_tree->kurzbz.' - '.$row_tree->bezeichnung.' ('.$row_tree->lehrveranstaltung_id.')'; echo $bende.''; // Semester @@ -534,26 +539,26 @@ function drawTree($tree, $depth) } elseif(count($kompatibleLVs) > 0) { - $i = 0; - while(!$found && $i < count($kompatibleLVs)) + while(!$found && $i < count($kompatibleLVs)) { foreach($kompatibleLVs as $komp) { - $anrechnung = new anrechnung(); - $anrechnung->getAnrechnungPrestudent($student->prestudent_id, $row_tree->lehrveranstaltung_id, $komp); - - if(count($anrechnung->result) == 1) + if(count($anrechnung->result)) { - $lv = $anrechnung->result[0]->lehrveranstaltung_id_kompatibel; - if(isset($noten_arr[$lv][$stsem])) - { - $found = true; - if($note_pruef_arr[$noten_arr[$lv][$stsem]]->positiv) - $tdinhalt .= ''.$note_pruef_arr[$noten_arr[$lv][$stsem]]->anmerkung.''; - else - $tdinhalt .= ''.$note_pruef_arr[$noten_arr[$lv][$stsem]]->anmerkung.''; - } + foreach($anrechnung->result as $row) + { + $lv = $row->lehrveranstaltung_id_kompatibel; + if(isset($noten_arr[$lv][$stsem]) && $lv == $komp && $row_tree->lehrveranstaltung_id == $row->lehrveranstaltung_id) + { + $found = true; + if($note_pruef_arr[$noten_arr[$lv][$stsem]]->positiv) + $tdinhalt .= ''.$note_pruef_arr[$noten_arr[$lv][$stsem]]->anmerkung.''; + else + $tdinhalt .= ''.$note_pruef_arr[$noten_arr[$lv][$stsem]]->anmerkung.''; + } + } + } $i++; } From fb3247c91e94ae40eaad2c4bcc7086e8c15f4680 Mon Sep 17 00:00:00 2001 From: nkrondraf Date: Tue, 13 Jun 2023 14:44:01 +0200 Subject: [PATCH 2/2] performance optimizations --- cis/private/profile/studienplan.php | 43 +++++++++++++++-------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/cis/private/profile/studienplan.php b/cis/private/profile/studienplan.php index f66b66197..8caf7f65d 100644 --- a/cis/private/profile/studienplan.php +++ b/cis/private/profile/studienplan.php @@ -674,38 +674,39 @@ function drawTree($tree, $depth) function checkKompatibleLvs($kompatibleLVs, $student, $row_tree, $noten_arr, $note_pruef_arr, $p, $uid, $negativeNote= null) { + global $anrechnung; $positiv = false; $found = false; $i = 0; + while(!$found && $i < count($kompatibleLVs)) { foreach($kompatibleLVs as $komp) { - - $anrechnung = new anrechnung(); - $anrechnung->getAnrechnungPrestudent($student->prestudent_id, $row_tree->lehrveranstaltung_id, $komp); - - if(count($anrechnung->result) == 1) + if(count($anrechnung->result)) { - $lv = $anrechnung->result[0]->lehrveranstaltung_id_kompatibel; - if(isset($noten_arr[$lv])) + foreach($anrechnung->result as $row) { - $positiv=false; - foreach($noten_arr[$lv] as $note) + $lv = $row->lehrveranstaltung_id_kompatibel; + if(isset($noten_arr[$lv]) && $lv == $komp && $row_tree->lehrveranstaltung_id == $row->lehrveranstaltung_id) { - if($note_pruef_arr[$note]->positiv) - $positiv=true; - } + $positiv=false; + foreach($noten_arr[$lv] as $note) + { + if($note_pruef_arr[$note]->positiv) + $positiv=true; + } - $found = true; - } - else - { - /* wenn zu mehreren kompatiblen lvs eine Anrechnung existiert - * darf found nicht auf false gesetzt werden wenn es zuvor bereits auf true gesetzt wurde - */ - if(!$found) - $found = false; + $found = true; + } + else + { + /* wenn zu mehreren kompatiblen lvs eine Anrechnung existiert + * darf found nicht auf false gesetzt werden wenn es zuvor bereits auf true gesetzt wurde + */ + if(!$found) + $found = false; + } } } $i++;