From f75645b6c3eb01f6c14a8982872f178d3b302eaf Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= '.$p->t('studienplan/studienplan').": $studienplan->bezeichnung ($studienplan_id) - $student->vorname $student->nachname
";
+
+echo '
+
+
';
+echo '
+
+
+ ';
+
+// Lehrveranstaltungen anzeigen
+drawTree($tree,0);
+
+function drawTree($tree, $depth)
+{
+ global $uid, $stsem_arr, $noten_arr, $lvangebot_arr;
+ global $datum_obj, $db, $lv_arr, $p, $note_pruef_arr;
+
+ foreach($tree as $row_tree)
+ {
+ echo ''.$p->t('global/lehrveranstaltung').'
+ '.$p->t('studienplan/ects').'
+ '.$p->t('studienplan/status').' ';
+
+foreach($stsem_arr as $stsem)
+{
+ echo ''.$stsem.' ';
+}
+echo '
+ ';
+ echo ' ';
+
+ // Wenn Subtree vorhanden, dann anzeigen
+ if(isset($row_tree->childs))
+ drawTree($row_tree->childs, $depth+1);
+ }
+}
+echo '';
+
+ // Einrückung für Subtree
+ for($i=0;$i<$depth;$i++)
+ echo ' ';
+
+ // Bezeichnung der Lehrveranstaltung
+ echo $row_tree->bezeichnung;
+ echo ' ';
+
+ // ECTS Punkte
+ echo ''.$row_tree->ects.' ';
+
+ // Status der LV (absolviert, offen)
+ echo '';
+
+ // Note zu dieser LV vorhanden?
+ if(isset($noten_arr[$row_tree->lehrveranstaltung_id]))
+ {
+ // Positive Note fuer diese LV vorhanden?
+ $positiv=false;
+ foreach($noten_arr[$row_tree->lehrveranstaltung_id] as $note)
+ {
+ if($note_pruef_arr[$note]->positiv)
+ $positiv=true;
+ }
+ if($positiv)
+ echo ''.$p->t('studienplan/abgeschlossen').'';
+ else
+ echo ''.$p->t('studienplan/negativ').'';
+ }
+ else
+ {
+ echo ''.$p->t('studienplan/offen').'';
+ }
+ echo ' ';
+
+ // Spalten für die einzelnen Studiensemester
+ foreach($stsem_arr as $key=>$stsem)
+ {
+ $semester=$key+1;
+
+ $empfehlung="";
+ //Empfehlung holen
+ if(isset($lv_arr[$row_tree->lehrveranstaltung_id]))
+ {
+ $empfohlenesSemester = $lv_arr[$row_tree->lehrveranstaltung_id]->semester;
+ if($semester==$empfohlenesSemester)
+ $empfehlung='class="empfehlung"';
+ }
+
+ echo '';
+
+
+ // Ist bereits eine Note für diese LV in diesem Stsem vorhanden?
+ if(isset($noten_arr[$row_tree->lehrveranstaltung_id][$stsem]))
+ {
+ if($note_pruef_arr[$noten_arr[$row_tree->lehrveranstaltung_id][$stsem]]->positiv)
+ echo ''.$note_pruef_arr[$noten_arr[$row_tree->lehrveranstaltung_id][$stsem]]->anmerkung.'';
+ else
+ echo ''.$note_pruef_arr[$noten_arr[$row_tree->lehrveranstaltung_id][$stsem]]->anmerkung.'';
+ }
+ else
+ {
+ // Angebot der LV pruefen
+ if(isset($lvangebot_arr[$row_tree->lehrveranstaltung_id])
+ && isset($lvangebot_arr[$row_tree->lehrveranstaltung_id][$stsem]))
+ {
+ // LV findet statt
+ $angebot = $lvangebot_arr[$row_tree->lehrveranstaltung_id][$stsem];
+
+ // Pruefen ob eine Anmeldung möglich ist
+ $anmeldungmoeglich=true;
+
+ // Anmelde Zeitfenster pruefen
+ if(!$datum_obj->between($angebot->anmeldefenster_start, $angebot->anmeldefenster_ende, date('Y-m-d H:i:s')))
+ {
+ $anmeldeinformation=$p->t('studienplan/anmeldungvonbis',array($datum_obj->formatDatum($angebot->anmeldefenster_start,'d.m.Y H:i'),$datum_obj->formatDatum($angebot->anmeldefenster_ende,'d.m.Y H:i')));
+ $anmeldungmoeglich=false;
+ }
+
+ if($anmeldungmoeglich)
+ {
+ // Regeln Pruefen
+ $lvregel = new lvregel();
+
+ // Pruefen ob Semestersperre vorhanden ist
+ if(!$lvregel->checkSemester($row_tree->studienplan_lehrveranstaltung_id, $semester))
+ {
+ echo ' ';
+ }
+ echo '
';
+ }
+ else
+ {
+ if($lvregel->isZugangsberechtigt($uid, $row_tree->studienplan_lehrveranstaltung_id, $stsem))
+ {
+ echo ''.$p->t('studienplan/anmelden').'';
+ }
+ else
+ {
+ // LV wird angeboten, Regeln für Anmeldung nicht erfüllt
+ echo 'X';
+ }
+ }
+ }
+ else
+ {
+ // LV wird angeboten - Anmeldung aber noch nicht moeglich
+ echo 'X';
+ }
+ }
+ else
+ {
+ // LV wird in diesem Studiensemester nicht angeboten
+ echo '-';
+ }
+ }
+ echo '
'.$p->t('studienplan/legende').':
+
+
+';
+
+echo '
+';
+?>
diff --git a/include/datum.class.php b/include/datum.class.php
index e04535c8d..b288ecb96 100644
--- a/include/datum.class.php
+++ b/include/datum.class.php
@@ -160,7 +160,47 @@ class datum
return false;
}
+ public function DateDiff($datum1, $datum2)
+ {
+ $datetime1 = new DateTime($datum1);
+ $datetime2 = new DateTime($datum2);
+ $interval = $datetime1->diff($datetime2);
+ return $interval->format('%R%d');
+ }
+ /**
+ * Prueft ob ein Datum / Datum und Uhrzeit zwischen 2 anderen liegt
+ * Unterstuetzt auch offenes (leeres) Start und Ende Datum
+ *
+ * @param $start Startdatum
+ * @param $ende Endedatum
+ * @param $datum Datum das geprueft wird
+ * @return true wenn dazwischen sonst false
+ */
+ public function between($start, $ende, $datum)
+ {
+ $datestart = new DateTime($start);
+ $dateende = new DateTime($ende);
+ $dateref = new DateTime($datum);
+
+ // Start und Ende nicht gesetzt
+ if($start=='' && $ende=='')
+ return true;
+
+ // Start nicht gesetzt; Ende gesetzt
+ if($start=='' && $ende!='' && $dateende>=$dateref)
+ return true;
+
+ // Ende nicht gesetzt; Start gesetzt
+ if($ende=='' && $start!='' && $datestart<=$dateref)
+ return true;
+
+ // Start und Ende gesetzt
+ if($ende!='' && $start!='' && $datestart<=$dateref && $dateende>=$dateref)
+ return true;
+
+ return false;
+ }
#------------------------------------------------------------------------------------------------
/**
@@ -277,4 +317,4 @@ class datum
}
}
-?>
\ No newline at end of file
+?>
diff --git a/include/lvangebot.class.php b/include/lvangebot.class.php
index 041d3a580..13c59020f 100644
--- a/include/lvangebot.class.php
+++ b/include/lvangebot.class.php
@@ -328,5 +328,51 @@ class lvangebot extends basis_db
return false;
}
}
+
+ /**
+ * Laedt das LV-Angebot eines gesammten Studienplanes
+ * @param $studienplan_id ID des Studienplanes
+ */
+ public function getLVAngebotFromStudienplan($studienplan_id, $studiensemester_arr=null)
+ {
+ $qry = "SELECT
+ *
+ FROM
+ lehre.tbl_studienplan_lehrveranstaltung
+ JOIN lehre.tbl_lvangebot USING(lehrveranstaltung_id)
+ WHERE
+ tbl_studienplan_lehrveranstaltung.studienplan_id=".$this->db_add_param($studienplan_id);
+
+ if(!is_null($studiensemester_arr))
+ $qry.=" AND tbl_lvangebot.studiensemester_kurzbz IN(".$this->implode4SQL($studiensemester_arr).")";
+
+ if($this->db_query($qry))
+ {
+ while($row = $this->db_fetch_object())
+ {
+ $lvangebot=new lvangebot();
+ $lvangebot->lvangebot_id=$row->lvangebot_id;
+ $lvangebot->lehrveranstaltung_id=$row->lehrveranstaltung_id;
+ $lvangebot->studiensemester_kurzbz=$row->studiensemester_kurzbz;
+ $lvangebot->gruppe_kurzbz=$row->gruppe_kurzbz;
+ $lvangebot->incomingplaetze=$row->incomingplaetze;
+ $lvangebot->gesamtplaetze=$row->gesamtplaetze;
+ $lvangebot->anmeldefenster_start=$row->anmeldefenster_start;
+ $lvangebot->anmeldefenster_ende=$row->anmeldefenster_ende;
+ $lvangebot->insertamum=$row->insertamum;
+ $lvangebot->insertvon=$row->insertvon;
+ $lvangebot->updatenamum=$row->updateamum;
+ $lvangebot->updatevon=$row->updatevon;
+
+ $this->result[]=$lvangebot;
+ }
+ }
+ else
+ {
+ $this->errormsg = 'Datensätze konnten nicht geladen werden';
+ return false;
+ }
+ return true;
+ }
}
?>
diff --git a/include/lvregel.class.php b/include/lvregel.class.php
index 424da7778..b5b4d9198 100644
--- a/include/lvregel.class.php
+++ b/include/lvregel.class.php
@@ -483,6 +483,7 @@ class lvregel extends basis_db
{
return $this->TestRegeln($uid, $result, $studiensemester_kurzbz);
}
+ return true;
}
/**
@@ -572,7 +573,7 @@ class lvregel extends basis_db
$prestudent = new prestudent();
if($prestudent->getLastStatus($student->prestudent_id, $studiensemester_kurzbz))
{
- $this->cache[$uid][$studiensemester_kurzbz]=$prestudent->semester;
+ $this->cache[$uid][$studiensemester_kurzbz]=$prestudent->ausbildungssemester;
}
}
$ausbildungssemester = $this->cache[$uid][$studiensemester_kurzbz];
@@ -645,9 +646,40 @@ class lvregel extends basis_db
return $retval;
}
+ /**
+ * Prueft ob eine minimale Semesteranforderung für diese Lehrveranstaltungszuordnung benötigt wird
+ * @param $studienplan_lehrveranstaltung_id
+ * @param $semester
+ * @return boolean
+ */
+ public function checkSemester($studienplan_lehrveranstaltung_id, $semester)
+ {
+ $qry = "SELECT
+ 1
+ FROM
+ lehre.tbl_lvregel
+ WHERE
+ studienplan_lehrveranstaltung_id=".$this->db_add_param($studienplan_lehrveranstaltung_id)."
+ AND lvregeltyp_kurzbz='ausbsemmin'
+ AND parameter::integer>".$this->db_add_param($semester, FHC_INTEGER);
+
+ if($result = $this->db_query($qry))
+ {
+ if($this->db_num_rows($result)>0)
+ return false;
+ else
+ return true;
+ }
+ else
+ {
+ $this->errormsg='Fehler beim Laden der Daten';
+ return false;
+ }
+ }
+
public function debug($msg)
{
- echo ' '.$msg;
+ //echo ' '.$msg;
}
}
?>
diff --git a/include/studienplan.class.php b/include/studienplan.class.php
index fc414e8a6..f1c8e3fac 100644
--- a/include/studienplan.class.php
+++ b/include/studienplan.class.php
@@ -645,5 +645,40 @@ class studienplan extends basis_db
return false;
}
}
+
+ /**
+ * Holt den aktiven Studienplan eines Studiensemester / Ausbildungssemesters
+ * @param studiensemester_kurzbz
+ * @param $ausbuldungssemester
+ * @param $orgform_kurzbz
+ */
+ function getStudienplan($studiengang_kz, $studiensemester_kurzbz, $ausbildungssemester, $orgform_kurzbz)
+ {
+ $qry = "SELECT
+ tbl_studienplan.studienplan_id
+ FROM
+ lehre.tbl_studienplan
+ JOIN lehre.tbl_studienordnung USING(studienordnung_id)
+ JOIN lehre.tbl_studienordnung_semester USING(studienordnung_id)
+ WHERE
+ tbl_studienplan.aktiv
+ AND tbl_studienordnung.studiengang_kz=".$this->db_add_param($studiengang_kz, FHC_INTEGER)."
+ AND tbl_studienordnung_semester.studiensemester_kurzbz = ".$this->db_add_param($studiensemester_kurzbz)."
+ AND tbl_studienordnung_semester.semester=".$this->db_add_param($ausbildungssemester);
+
+ if($orgform_kurzbz!='')
+ {
+ $qry.=" AND orgform_kurzbz=".$this->db_add_param($orgform_kurzbz);
+ }
+
+ if($result = $this->db_query($qry))
+ {
+ if($row = $this->db_fetch_object($result))
+ {
+ return $row->studienplan_id;
+ }
+ }
+ }
+
}
?>
diff --git a/locale/de-AT/studienplan.php b/locale/de-AT/studienplan.php
new file mode 100644
index 000000000..7d48b1205
--- /dev/null
+++ b/locale/de-AT/studienplan.php
@@ -0,0 +1,16 @@
+phrasen['studienplan/studienplan']='Studienplan';
+$this->phrasen['studienplan/ects']='ECTS';
+$this->phrasen['studienplan/status']='Status';
+$this->phrasen['studienplan/offen']='offen';
+$this->phrasen['studienplan/abgeschlossen']='abgeschlossen';
+$this->phrasen['studienplan/negativ']='negativ';
+$this->phrasen['studienplan/anmelden']='anmelden';
+$this->phrasen['studienplan/anmeldungvonbis']='Die Anmeldung ist nur von %s bis %s möglich';
+$this->phrasen['studienplan/regelnichterfuellt']='Lehrveranstaltung wird angeboten. Regeln für die Anmeldung sind (noch) nicht erfüllt';
+$this->phrasen['studienplan/anmeldunggesperrt']='Anmeldung gesperrt für dieses Semester';
+$this->phrasen['studienplan/legende']='Legende';
+$this->phrasen['studienplan/legendeLVwirdAngeboten']='Lehrveranstaltung wird in diesem Semester angeboten';
+$this->phrasen['studienplan/legendeLock']='Lehrveranstaltung für dieses Semester gesperrt';
+$this->phrasen['studienplan/legendeEmpfehlung']='Empfehlung';
+?>
diff --git a/skin/images/lock.png b/skin/images/lock.png
new file mode 100644
index 0000000000000000000000000000000000000000..8886cfd471b4a40821fc304e50339d73af7493e2
GIT binary patch
literal 992
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf
+
+
+ '.$p->t('studienplan/legendeEmpfehlung').'
+
+
+X
+ '.$p->t('studienplan/legendeLVwirdAngeboten').'
+
+
+
+ 
'.$p->t('studienplan/legendeLock').'
+
Klicken Sie auf eine Lehrveranstaltung um dei Regeln anzuzeigen
+Klicken Sie auf eine Lehrveranstaltung um die Regeln anzuzeigen
Kompatibilität