diff --git a/cis/private/profile/studienplan.php b/cis/private/profile/studienplan.php index 92728df42..8545b2e34 100644 --- a/cis/private/profile/studienplan.php +++ b/cis/private/profile/studienplan.php @@ -69,6 +69,8 @@ if(isset($_GET['getAnmeldung'])) $lehrveranstaltung_id=$_GET['lehrveranstaltung_id']; $stsem = $_GET['stsem']; + $semester = $_GET['semester']; + $studienplan_id = $_GET['studienplan_id']; echo $p->t('studienplan/LehrveranstalungWaehlen').'
@@ -83,6 +85,10 @@ if(isset($_GET['getAnmeldung'])) $datum = new datum(); $kompatibel[]=$lehrveranstaltung_id; $kompatibel = array_unique($kompatibel); + $stsem_obj = new studiensemester(); + $aktornext = $stsem_obj->getaktorNext(); + + $lvregel = new lvregel(); foreach($kompatibel as $lvid) { $lvangebot = new lvangebot(); @@ -95,20 +101,58 @@ if(isset($_GET['getAnmeldung'])) $angebot = $lvangebot->result[0]; if($angebot->AnmeldungMoeglich()) { - $anzahl++; - // LV wird angeboten und Anmeldefenster ist offen + $kompatible_lv = $lehrveranstaltung->getStudienplanLehrveranstaltung($lvid, $studienplan_id); - $bngruppe = new benutzergruppe(); - if(!$bngruppe->load($uid, $lvangebot->result[0]->gruppe_kurzbz, $stsem)) + $lvregelExists = false; + $abgeschlossen = false; + $semesterlock = false; + $regelerfuellt = true; + if ($kompatible_lv) { - // User ist noch nicht angemeldet - echo '
'.$lv->bezeichnung.' (Anmeldung bis '.$datum->formatDatum($angebot->anmeldefenster_ende,"d.m.Y").')'; + $lvregelExists = $lvregel->exists($kompatible_lv); + if($lvregelExists) + { + if($lvregel->isAbgeschlossen($uid, $kompatible_lv)) + $abgeschlossen=true; + else + $abgeschlossen=false; + } + + if(!$lvregel->checkSemester($kompatible_lv, $semester)) + { + $semesterlock=true; + } + else + { + if($stsem === $aktornext) + { + $result = $lvregel->isZugangsberechtigt($uid, $kompatible_lv, $stsem); + if((is_array($result)) && ($result[0] !== true)) + { + $regelerfuellt=false; + } + } + } } - else + + if (!(($lvregelExists && !$abgeschlossen) || $semesterlock || !$regelerfuellt)) { - // Bereits angemeldet - echo '
'.$lv->bezeichnung.''; + $anzahl++; + // LV wird angeboten und Anmeldefenster ist offen + + $bngruppe = new benutzergruppe(); + if(!$bngruppe->load($uid, $lvangebot->result[0]->gruppe_kurzbz, $stsem)) + { + // User ist noch nicht angemeldet + echo '
'.$lv->bezeichnung.' (Anmeldung bis '.$datum->formatDatum($angebot->anmeldefenster_ende,"d.m.Y").')'; + } + else + { + // Bereits angemeldet + echo '
'.$lv->bezeichnung.''; + } } + } /* else { @@ -170,9 +214,9 @@ echo ' $("#dialog").dialog({ autoOpen: false, width: "auto" }); }); - function OpenAnmeldung(lehrveranstaltung_id, stsem) + function OpenAnmeldung(lehrveranstaltung_id, stsem, semester, studienplan_id) { - $("#dialog").load("studienplan.php?getAnmeldung=true&lehrveranstaltung_id="+lehrveranstaltung_id+"&stsem="+stsem+"&uid='.$db->convert_html_chars($uid).'"); + $("#dialog").load("studienplan.php?getAnmeldung=true&lehrveranstaltung_id="+lehrveranstaltung_id+"&stsem="+stsem+"&semester="+semester+"&studienplan_id="+studienplan_id+"&uid='.$db->convert_html_chars($uid).'"); $("#dialog").dialog("open"); } @@ -359,7 +403,7 @@ drawTree($tree,0); function drawTree($tree, $depth) { - global $uid, $stsem_arr, $noten_arr, $lvangebot_arr, $aktornext; + global $uid, $stsem_arr, $noten_arr, $lvangebot_arr, $aktornext, $studienplan_id; global $datum_obj, $db, $lv_arr, $p, $note_pruef_arr, $student; global $anrechnung; @@ -639,12 +683,12 @@ function drawTree($tree, $depth) $tdclass[]='angebot'; if($angemeldet) { - $tdinhalt.= ''; + $tdinhalt.= ''; } else { if($anmeldungmoeglich) - $tdinhalt.= ''; + $tdinhalt.= ''; else $tdinhalt.= '-'; diff --git a/include/lehrveranstaltung.class.php b/include/lehrveranstaltung.class.php index 48edd9d0a..26f846f8e 100644 --- a/include/lehrveranstaltung.class.php +++ b/include/lehrveranstaltung.class.php @@ -2861,5 +2861,33 @@ class lehrveranstaltung extends basis_db return false; } } + + public function getStudienplanLehrveranstaltung($lehrveranstaltung_id, $studienplan_id) + { + $qry = "SELECT studienplan_lehrveranstaltung_id + FROM lehre.tbl_lehrveranstaltung + JOIN lehre.tbl_studienplan_lehrveranstaltung USING(lehrveranstaltung_id) + WHERE lehrveranstaltung_id = ".$this->db_add_param($lehrveranstaltung_id)." + AND tbl_studienplan_lehrveranstaltung.studienplan_id = ".$this->db_add_param($studienplan_id);""; + + if($result = $this->db_query($qry)) + { + if($row = $this->db_fetch_object($result)) + { + return $row->studienplan_lehrveranstaltung_id; + } + else + { + $this->errormsg = 'Fehler beim Ermitteln der studienplan_lehrveranstaltung_id'; + return false; + } + } + else + { + $this->errormsg='Fehler bei Datenbankabfrage ' .$this->db_last_error(); + } + return null; + + } } ?>