diff --git a/cis/private/lehre/upload.php b/cis/private/lehre/upload.php
index aad50cc72..e3a7d0845 100644
--- a/cis/private/lehre/upload.php
+++ b/cis/private/lehre/upload.php
@@ -627,14 +627,14 @@
{
if(copy($_FILES[$file]['tmp_name'], $uploadfile))
{
- exec('chmod 664 "'.$uploadfile.'"');
+ exec('chmod 664 '.escapeshellarg($uploadfile));
if($islector)
{
- exec('sudo chown :teacher "'.$uploadfile.'"');
+ exec('sudo chown :teacher '.escapeshellarg($uploadfile));
}
else
{
- exec('sudo chown :student "'.$uploadfile.'"');
+ exec('sudo chown :student '.escapeshellarg($uploadfile));
}
}
}
@@ -650,14 +650,14 @@
{
if(copy($_FILES[$file]['tmp_name'], $uploadfile))
{
- exec('chmod 664 "'.$uploadfile.'"');
+ exec('chmod 664 '.escapeshellarg($uploadfile));
if($islector)
{
- exec('sudo chown :teacher "'.$uploadfile.'"');
+ exec('sudo chown :teacher '.escapeshellarg($uploadfile));
}
else
{
- exec('sudo chown :student "'.$uploadfile.'"');
+ exec('sudo chown :student '.escapeshellarg($uploadfile));
}
}
}
@@ -683,14 +683,14 @@
{
if(copy($_FILES[$file]['tmp_name'], $uploadfile))
{
- exec('chmod 664 "'.$uploadfile.'"');
+ exec('chmod 664 '.escapeshellarg($uploadfile));
if($islector)
{
- exec('sudo chown :teacher "'.$uploadfile.'"');
+ exec('sudo chown :teacher '.escapeshellarg($uploadfile));
}
else
{
- exec('sudo chown :student "'.$uploadfile.'"');
+ exec('sudo chown :student '.escapeshellarg($uploadfile));
}
}
}
@@ -706,14 +706,14 @@
{
if(copy($_FILES[$file]['tmp_name'], $uploadfile))
{
- exec('chmod 664 "'.$uploadfile.'"');
+ exec('chmod 664 '.escapeshellarg($uploadfile));
if($islector)
{
- exec('sudo chown :teacher "'.$uploadfile.'"');
+ exec('sudo chown :teacher '.escapeshellarg($uploadfile));
}
else
{
- exec('sudo chown :student "'.$uploadfile.'"');
+ exec('sudo chown :student '.escapeshellarg($uploadfile));
}
}
}
@@ -848,15 +848,15 @@
if(!@is_dir($dest_create_dir->path.'/'.$new_dir_name_text) && !@file_exists($dest_create_dir->path.'/'.$new_dir_name_text) && $new_dir_name_text != "")
{
@mkdir($dest_create_dir->path.'/'.$new_dir_name_text);
- exec('chmod 775 "'.$dest_create_dir->path.'/'.$new_dir_name_text.'"');
+ exec('chmod 775 '.escapeshellarg($dest_create_dir->path.'/'.$new_dir_name_text));
if($islector)
{
- exec('sudo chown :teacher "'.$dest_create_dir->path.'/'.$new_dir_name_text.'"');
+ exec('sudo chown :teacher '.escapeshellarg($dest_create_dir->path.'/'.$new_dir_name_text));
}
else
{
- exec('sudo chown :student "'.$dest_create_dir->path.'/'.$new_dir_name_text.'"');
+ exec('sudo chown :student '.escapeshellarg($dest_create_dir->path.'/'.$new_dir_name_text));
}
}
}
@@ -1112,7 +1112,7 @@
if(@is_dir($dest_dir->path.'/'.$entry))
{
writeCISlog('DELETE', 'rm -r "'.$dest_dir->path.'/'.$entry.'"');
- exec('rm -r "'.$dest_dir->path.'/'.$entry.'"');
+ exec('rm -r '.escapeshellarg($dest_dir->path.'/'.$entry));
}
unset($check_state);
@@ -1359,7 +1359,7 @@
if(!@is_dir($dest_dir->path.'/'.$entry))
{
writeCISlog('DELETE', 'rm -r "'.$dest_dir->path.'/'.$entry.'"');
- exec('rm -r "'.$dest_dir->path.'/'.$entry.'"');
+ exec('rm -r '.escapeshellarg($dest_dir->path.'/'.$entry));
}
unset($check_state);
diff --git a/cis/private/tools/zeitaufzeichnung.php b/cis/private/tools/zeitaufzeichnung.php
index bf3d00a77..b46371df7 100755
--- a/cis/private/tools/zeitaufzeichnung.php
+++ b/cis/private/tools/zeitaufzeichnung.php
@@ -48,6 +48,9 @@ if (!$db = new basis_db())
$user = get_uid();
$datum = new datum();
+// definiert bis zu welchem Datum die Eintragung nicht mehr möglich ist
+$gesperrt_bis = '2015-01-31';
+$sperrdatum = date('c', strtotime($gesperrt_bis));
$zeitaufzeichnung_id = (isset($_GET['zeitaufzeichnung_id'])?$_GET['zeitaufzeichnung_id']:'');
$projekt_kurzbz = (isset($_POST['projekt'])?$_POST['projekt']:'');
@@ -353,54 +356,61 @@ if(isset($_POST['save']) || isset($_POST['edit']))
{
$zeit = new zeitaufzeichnung();
- if(isset($_POST['edit']))
- {
- if(!$zeit->load($zeitaufzeichnung_id))
- die($p->t("global/fehlerBeimLadenDesDatensatzes"));
-
- $zeit->new = false;
- }
+ if ($datum->formatDatum($von, $format='Y-m-d H:i:s') < $sperrdatum)
+ echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum';
else
{
- $zeit->new = true;
- $zeit->insertamum = date('Y-m-d H:i:s');
- $zeit->insertvon = $user;
- }
-
- $zeit->uid = $user;
- $zeit->aktivitaet_kurzbz = $aktivitaet_kurzbz;
- $zeit->start = $datum->formatDatum($von, $format='Y-m-d H:i:s');
- $zeit->ende = $datum->formatDatum($bis, $format='Y-m-d H:i:s');
- $zeit->beschreibung = $beschreibung;
- $zeit->oe_kurzbz_1 = $oe_kurzbz_1;
- $zeit->oe_kurzbz_2 = $oe_kurzbz_2;
- $zeit->updateamum = date('Y-m-d H:i:s');
- $zeit->updatevon = $user;
- $zeit->projekt_kurzbz = $projekt_kurzbz;
- $zeit->service_id = $service_id;
- $zeit->kunde_uid = $kunde_uid;
-
- if(!$zeit->save())
- {
- echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$zeit->errormsg.'';
- }
- else
- {
- echo ''.$p->t("global/datenWurdenGespeichert").'';
- // Nach dem Speichern in den neu Modus springen und als Von Zeit
- // das Ende des letzten Eintrages eintragen
- $zeitaufzeichnung_id = '';
- $uid = $zeit->uid;
- $aktivitaet_kurzbz = '';
- $von = date('d.m.Y H:i', $datum->mktime_fromtimestamp($zeit->ende));
- $bis = date('d.m.Y H:i', $datum->mktime_fromtimestamp($zeit->ende)+3600);
- $beschreibung = '';
- $oe_kurzbz_1 = '';
- $oe_kurzbz_2 = '';
- $projekt_kurzbz = '';
- $service_id = '';
- $kunde_uid = '';
+ if(isset($_POST['edit']))
+ {
+ if(!$zeit->load($zeitaufzeichnung_id))
+ die($p->t("global/fehlerBeimLadenDesDatensatzes"));
+
+ $zeit->new = false;
+ }
+ else
+ {
+ $zeit->new = true;
+ $zeit->insertamum = date('Y-m-d H:i:s');
+ $zeit->insertvon = $user;
+ }
+
+ $zeit->uid = $user;
+ $zeit->aktivitaet_kurzbz = $aktivitaet_kurzbz;
+ $zeit->start = $datum->formatDatum($von, $format='Y-m-d H:i:s');
+ $zeit->ende = $datum->formatDatum($bis, $format='Y-m-d H:i:s');
+ $zeit->beschreibung = $beschreibung;
+ $zeit->oe_kurzbz_1 = $oe_kurzbz_1;
+ $zeit->oe_kurzbz_2 = $oe_kurzbz_2;
+ $zeit->updateamum = date('Y-m-d H:i:s');
+ $zeit->updatevon = $user;
+ $zeit->projekt_kurzbz = $projekt_kurzbz;
+ $zeit->service_id = $service_id;
+ $zeit->kunde_uid = $kunde_uid;
+
+ if(!$zeit->save())
+ {
+ echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': '.$zeit->errormsg.'';
+ }
+ else
+ {
+ echo ''.$p->t("global/datenWurdenGespeichert").'';
+
+ // Nach dem Speichern in den neu Modus springen und als Von Zeit
+ // das Ende des letzten Eintrages eintragen
+ $zeitaufzeichnung_id = '';
+ $uid = $zeit->uid;
+ $aktivitaet_kurzbz = '';
+ $von = date('d.m.Y H:i', $datum->mktime_fromtimestamp($zeit->ende));
+ $bis = date('d.m.Y H:i', $datum->mktime_fromtimestamp($zeit->ende)+3600);
+ $beschreibung = '';
+ $oe_kurzbz_1 = '';
+ $oe_kurzbz_2 = '';
+ $projekt_kurzbz = '';
+ $service_id = '';
+ $kunde_uid = '';
+ }
+
}
}
@@ -411,15 +421,21 @@ if(isset($_GET['type']) && $_GET['type']=='delete')
if($zeit->load($zeitaufzeichnung_id))
{
- if($zeit->uid==$user)
- {
- if($zeit->delete($zeitaufzeichnung_id))
- echo ''.$p->t("global/eintragWurdeGeloescht").'';
- else
- echo ''.$p->t("global/fehlerBeimLoeschenDesEintrags").'';
- }
+
+ if ($zeit->start < $sperrdatum)
+ echo ''.$p->t("global/fehlerBeimSpeichernDerDaten").': Eingabe nicht möglich da vor dem Sperrdatum';
else
- echo ''.$p->t("global/keineBerechtigung").'!';
+ {
+ if($zeit->uid==$user)
+ {
+ if($zeit->delete($zeitaufzeichnung_id))
+ echo ''.$p->t("global/eintragWurdeGeloescht").'';
+ else
+ echo ''.$p->t("global/fehlerBeimLoeschenDesEintrags").'';
+ }
+ else
+ echo ''.$p->t("global/keineBerechtigung").'!';
+ }
}
else
echo ''.$p->t("global/datensatzWurdeNichtGefunden").'';
@@ -774,7 +790,11 @@ if($projekt->getProjekteMitarbeiter($user))
'.$p->t("zeitaufzeichnung/pause").' '.($pflichtpause==false?$p->t("zeitaufzeichnung/inklusivePflichtpause"):'').':
'.$tagessaldo.' '.date('H:i', ($pausesumme-3600)).' |
- <- | ';
+ ';
+ if ($tag > $sperrdatum)
+ echo '<-';
+
+ echo ' | ';
$tag=$datumtag;
$tagessumme='00:00';
@@ -874,11 +894,11 @@ if($projekt->getProjekteMitarbeiter($user))
'.$db->convert_html_chars($row->diff).' |
beschreibung)).'">'.StringCut($db->convert_html_chars($row->beschreibung),20,null,'...').' |
';
- if(!isset($_GET['filter']) || $row->uid==$user)
+ if(!isset($_GET['filter']) && ($row->uid==$user && $row->datum > $sperrdatum))
echo ''.$p->t("global/bearbeiten").'';
echo " | \n";
echo " ";
- if(!isset($_GET['filter']) || $row->uid==$user)
+ if(!isset($_GET['filter']) && ($row->uid==$user && $row->start > $sperrdatum))
echo ''.$p->t("global/loeschen").'';
echo " | \n";
echo " \n";
diff --git a/content/student/studentnotenoverlay.xul.php b/content/student/studentnotenoverlay.xul.php
index 3d20ec071..c979fa4cd 100644
--- a/content/student/studentnotenoverlay.xul.php
+++ b/content/student/studentnotenoverlay.xul.php
@@ -110,6 +110,14 @@ echo "
+
+
+
+
@@ -140,6 +148,8 @@ echo "
+
+
diff --git a/include/statistik.class.php b/include/statistik.class.php
index 5e6b2bbea..c66ddb503 100644
--- a/include/statistik.class.php
+++ b/include/statistik.class.php
@@ -543,7 +543,7 @@ class statistik extends basis_db
$anzahl_spalten = $this->db_num_fields($this->data);
for($spalte=0;$spalte<$anzahl_spalten;$spalte++)
{
- $this->html.= ''.$this->db_field_name($this->data,$spalte).' | ';
+ $this->html.= ''.$this->convert_html_chars($this->db_field_name($this->data,$spalte)).' | ';
$this->csv.='"'.$this->db_field_name($this->data,$spalte).'",';
}
$this->html.= '';
@@ -556,7 +556,7 @@ class statistik extends basis_db
for($spalte=0;$spalte<$anzahl_spalten;$spalte++)
{
$name = $this->db_field_name($this->data,$spalte);
- $this->html.= ''.$row->$name.' | ';
+ $this->html.= ''.$this->convert_html_chars($row->$name).' | ';
$this->csv.= '"'.$row->$name.'",';
}
diff --git a/include/studiengang.class.php b/include/studiengang.class.php
index 27e6992dd..69f2e8ae2 100644
--- a/include/studiengang.class.php
+++ b/include/studiengang.class.php
@@ -230,6 +230,31 @@ class studiengang extends basis_db
return true;
}
+
+ /**
+ * Gibt alle Studiengaenge zurueck, fuer die man sich online bewerben kann
+ * @return boolean
+ */
+ public function getAllForBewerbung()
+ {
+ $qry = 'SELECT DISTINCT studiengang_kz, typ, organisationseinheittyp_kurzbz, studiengangbezeichnung '
+ . 'FROM lehre.vw_studienplan '
+ . 'WHERE onlinebewerbung IS TRUE '
+ . 'ORDER BY studiengangbezeichnung ASC';
+
+ if(!$result = $this->db_query($qry))
+ {
+ $this->errormsg = 'Datensatz konnte nicht geladen werden';
+ return false;
+ }
+
+ while($row = $this->db_fetch_object($result))
+ {
+ $this->result[] = $row;
+ }
+
+ return true;
+ }
/**
* Laedt alle Studientypen in das Attribut studiengang_typ_array
diff --git a/rdf/zeugnisnote.rdf.php b/rdf/zeugnisnote.rdf.php
index 882ea8463..92ec80cb3 100644
--- a/rdf/zeugnisnote.rdf.php
+++ b/rdf/zeugnisnote.rdf.php
@@ -114,6 +114,8 @@ foreach ($obj->result as $row)
studiengang_kz].']]>
studiengang_kz.']]>
studiengang_kz].']]>
+ semester.']]>
+ ects.']]>
semester.']]>
punkte!=''?(float)$row->punkte:'').']]>
diff --git a/skin/fhcomplete.css b/skin/fhcomplete.css
index c68eef22d..252750708 100644
--- a/skin/fhcomplete.css
+++ b/skin/fhcomplete.css
@@ -28,8 +28,12 @@
{
color: green;
}
+.warning
+{
+ color: #ffa500;;
+}
.marked
{
text-decoration: underline;
-}
\ No newline at end of file
+}
diff --git a/system/checksystem.php b/system/checksystem.php
index 63a0417b0..2287f7a7c 100644
--- a/system/checksystem.php
+++ b/system/checksystem.php
@@ -2910,6 +2910,39 @@ if($result = @$db->db_query("SELECT 1 FROM system.tbl_berechtigung WHERE berecht
}
}
+// View lehre.vw_studienplan erstellen
+if(!$result = @$db->db_query("SELECT * FROM lehre.vw_studienplan LIMIT 1"))
+{
+ $qry = "CREATE VIEW lehre.vw_studienplan AS
+ SELECT
+ organisationseinheittyp_kurzbz, oe_kurzbz, studiengang_kz, studienordnung_id, studienplan_id,
+ tbl_studienplan.orgform_kurzbz, tbl_studienplan.version, tbl_studienplan.bezeichnung, regelstudiendauer,
+ tbl_studienplan.sprache, tbl_studienplan.aktiv, semesterwochen, tbl_studienplan.testtool_sprachwahl,
+ tbl_studienplan.insertamum, tbl_studienplan.insertvon, tbl_studienplan.updateamum, tbl_studienplan.updatevon,
+ gueltigvon, gueltigbis, ects, studiengangbezeichnung, studiengangbezeichnung_englisch, studiengangkurzbzlang,
+ akadgrad_id, kurzbz, kurzbzlang, typ, english, farbe, email, telefon, max_semester, max_verband, max_gruppe,
+ erhalter_kz, bescheid, bescheidbgbl1, bescheidbgbl2, bescheidgz, bescheidvom, titelbescheidvom, zusatzinfo_html,
+ moodle, studienplaetze, lgartcode, mischform, projektarbeit_note_anzeige, onlinebewerbung, oe_parent_kurzbz,
+ mailverteiler, freigabegrenze, kurzzeichen, lehre, beschreibung, studienordnung_semester_id, studiensemester_kurzbz,
+ semester
+ FROM
+ lehre.tbl_studienplan
+ JOIN lehre.tbl_studienordnung USING (studienordnung_id)
+ JOIN tbl_studiengang USING (studiengang_kz)
+ JOIN tbl_organisationseinheit USING (oe_kurzbz)
+ JOIN tbl_organisationseinheittyp USING (organisationseinheittyp_kurzbz)
+ JOIN lehre.tbl_studienordnung_semester USING (studienordnung_id);
+
+ GRANT SELECT ON lehre.vw_studienplan TO admin;
+ GRANT SELECT ON lehre.vw_studienplan TO vilesci;
+ GRANT SELECT ON lehre.vw_studienplan TO web;";
+
+ if(!$db->db_query($qry))
+ echo '
lehre.vw_studienplan: '.$db->db_last_error().'
';
+ else
+ echo '
lehre.vw_studienplan: View erstellt';
+}
+
echo '
';
diff --git a/system/konsistenzpruefung.php b/system/konsistenzpruefung.php
new file mode 100644
index 000000000..6db223163
--- /dev/null
+++ b/system/konsistenzpruefung.php
@@ -0,0 +1,729 @@
+
+ */
+/*
+ * Prueft die Daten in der Datenbank auf konsistenz und gibt Hinweise
+ * bei fehlerhafter Datenmigration oder Datenmanipulation direkt auf Datenbankebene
+ */
+require_once('../config/vilesci.config.inc.php');
+require_once('../include/functions.inc.php');
+require_once('../include/benutzerberechtigung.class.php');
+
+$uid = get_uid();
+$rechte = new benutzerberechtigung();
+$rechte->getBerechtigungen($uid);
+
+if(!$rechte->isBerechtigt('admin'))
+{
+ die('Sie haben keine Berechtigung fuer diese Seite (admin)');
+}
+
+$db = new basis_db();
+
+$error_kritisch=0;
+$error_warning=0;
+
+echo '
+
+
+ Konsistenzpruefung
+
+
+
+
+
+
+';
+
+/************************************************************************************
+ * Pruefung auf falschen Personenkreislauf
+ * tbl_person->tbl_benutzer->tbl_student->tbl_prestudent->tbl_person
+ */
+
+$qry = "SELECT
+ vorname, nachname, tbl_benutzer.uid, tbl_prestudent.prestudent_id,
+ tbl_person.person_id as pers_person_id, tbl_prestudent.person_id pre_person_id
+ FROM
+ public.tbl_person
+ JOIN public.tbl_benutzer USING(person_id)
+ JOIN public.tbl_student ON(uid=student_uid)
+ JOIN public.tbl_prestudent USING(prestudent_id)
+ WHERE
+ tbl_person.person_id<>tbl_prestudent.person_id
+ ORDER BY nachname, vorname, uid";
+
+if($result = $db->db_query($qry))
+{
+ echo 'Inkonsistenter Personenkreislauf tbl_person->tbl_benutzer->tbl_student->tbl_prestudent->tbl_person
';
+ $anzahl = $db->db_num_rows($result);
+ echo ''.$anzahl.' Probleme gefunden';
+
+ if($anzahl>0)
+ {
+ echo '
Anzeigen >>';
+ echo '
+
+
+
+
+ | Nachname |
+ Vorname |
+ UID |
+ PrestudentID |
+ tbl_person.person_id |
+ tbl_prestudent.person_id |
+
+
+ ';
+
+ while($row = $db->db_fetch_object($result))
+ {
+ $error_kritisch++;
+ echo '
+ | '.$db->convert_html_chars($row->nachname).' |
+ '.$db->convert_html_chars($row->vorname).' |
+ '.$db->convert_html_chars($row->uid).' |
+ '.$db->convert_html_chars($row->prestudent_id).' |
+ '.$db->convert_html_chars($row->pers_person_id).' |
+ '.$db->convert_html_chars($row->pre_person_id).' |
+
';
+ }
+ echo '
';
+ }
+}
+flush();
+
+
+/**************************************************************************************
+ * UIDs ohne Student und ohne Mitarbeiter
+ *
+ */
+$qry = "SELECT
+ tbl_benutzer.uid, tbl_benutzer.person_id, tbl_person.vorname, tbl_person.nachname
+ FROM
+ public.tbl_benutzer
+ LEFT JOIN public.tbl_person USING(person_id)
+ WHERE
+ NOT EXISTS (SELECT 1 FROM public.tbl_student WHERE student_uid=tbl_benutzer.uid)
+ AND NOT EXISTS (SELECT 1 FROM public.tbl_mitarbeiter WHERE mitarbeiter_uid=tbl_benutzer.uid)";
+
+if($result = $db->db_query($qry))
+{
+ echo 'Benutzer ohne Student und ohne Mitarbeiter Eintrag
';
+
+ $anzahl = $db->db_num_rows($result);
+
+ echo ''.$anzahl.' Probleme gefunden';
+ if($anzahl>0)
+ {
+ echo '
Anzeigen >>';
+ echo '
+
+
+
+
+ | Nachname |
+ Vorname |
+ UID |
+ PersonID |
+
+
+ ';
+ while($row = $db->db_fetch_object($result))
+ {
+ $error_warning++;
+ echo '
+
+ | '.$db->convert_html_chars($row->nachname).' |
+ '.$db->convert_html_chars($row->vorname).' |
+ '.$db->convert_html_chars($row->uid).' |
+ '.$db->convert_html_chars($row->person_id).' |
+
';
+ }
+ echo '
';
+ }
+}
+
+/**************************************************************************************
+ * Studentenstatus ohne UID
+ *
+ */
+$qry = "SELECT
+ distinct tbl_person.person_id, tbl_person.vorname, tbl_person.nachname, tbl_prestudent.prestudent_id
+ FROM
+ public.tbl_prestudentstatus
+ JOIN public.tbl_prestudent USING(prestudent_id)
+ JOIN public.tbl_person USING(person_id)
+ WHERE
+ status_kurzbz IN('Student','Absolvent','Diplomand','Incoming')
+ AND NOT EXISTS (SELECT 1 FROM public.tbl_student WHERE prestudent_id=tbl_prestudent.prestudent_id)";
+
+if($result = $db->db_query($qry))
+{
+ echo 'Prestudenten mit Studenten/Absolventen/Diplomanden/Incoming Status aber ohne StudentUID
';
+
+ $anzahl = $db->db_num_rows($result);
+
+ echo ''.$anzahl.' Probleme gefunden';
+
+ if($anzahl>0)
+ {
+ echo '
Anzeigen >>';
+ echo '
+
+
+
+
+ | Nachname |
+ Vorname |
+ PrestudentID |
+ PersonID |
+
+
+ ';
+ while($row = $db->db_fetch_object($result))
+ {
+ $error_kritisch++;
+ echo '
+
+ | '.$db->convert_html_chars($row->nachname).' |
+ '.$db->convert_html_chars($row->vorname).' |
+ '.$db->convert_html_chars($row->prestudent_id).' |
+ '.$db->convert_html_chars($row->person_id).' |
+
';
+ }
+ echo '
';
+ }
+}
+
+/**************************************************************************************
+ * StgKz von Stunent und Prestudent unterschiedlich
+ *
+ */
+$qry = "SELECT
+ tbl_person.vorname, tbl_person.nachname, tbl_prestudent.prestudent_id, tbl_student.student_uid,
+ tbl_student.studiengang_kz as stud_studiengang_kz, tbl_prestudent.studiengang_kz as pre_studiengang_kz
+ FROM
+ public.tbl_student
+ JOIN public.tbl_prestudent USING(prestudent_id)
+ JOIN public.tbl_person USING(person_id)
+ WHERE
+ tbl_student.studiengang_kz<>tbl_prestudent.studiengang_kz";
+
+if($result = $db->db_query($qry))
+{
+ echo 'Studiengangskennzahl von tbl_student ungleich tbl_prestudent
';
+
+ $anzahl = $db->db_num_rows($result);
+
+ echo ''.$anzahl.' Probleme gefunden';
+
+ if($anzahl>0)
+ {
+ echo '
Anzeigen >>';
+ echo '
+
+
+
+
+ | Nachname |
+ Vorname |
+ PrestudentID |
+ StudentStgKZ |
+ PrestudentStgKZ |
+
+
+ ';
+ while($row = $db->db_fetch_object($result))
+ {
+ $error_kritisch++;
+ echo '
+
+ | '.$db->convert_html_chars($row->nachname).' |
+ '.$db->convert_html_chars($row->vorname).' |
+ '.$db->convert_html_chars($row->prestudent_id).' |
+ '.$db->convert_html_chars($row->stud_studiengang_kz).' |
+ '.$db->convert_html_chars($row->pre_studiengang_kz).' |
+
';
+ }
+ echo '
';
+ }
+}
+
+/**************************************************************************************
+ * Studenten ohne passenden Status
+ *
+ */
+$qry = "SELECT
+ tbl_person.vorname, tbl_person.nachname, tbl_prestudent.prestudent_id, tbl_student.student_uid,
+ get_rolle_prestudent(prestudent_id, null) as laststatus
+ FROM
+ public.tbl_student
+ JOIN public.tbl_prestudent USING(prestudent_id)
+ JOIN public.tbl_person USING(person_id)
+ WHERE
+ NOT EXISTS(SELECT 1 FROM public.tbl_prestudentstatus WHERE prestudent_id=tbl_prestudent.prestudent_id AND status_kurzbz in('Student','Incoming','Diplomand','Absolvent'))";
+
+if($result = $db->db_query($qry))
+{
+ echo 'Studenten ohne Status Student/Diplomand/Incoming/Absolvent
';
+
+ $anzahl = $db->db_num_rows($result);
+
+ echo ''.$anzahl.' Probleme gefunden';
+
+ if($anzahl>0)
+ {
+ echo '
Anzeigen >>';
+ echo '
+
+
+
+
+ | Nachname |
+ Vorname |
+ prestudent_id |
+ UID |
+ Letzter Status |
+
+
+ ';
+ while($row = $db->db_fetch_object($result))
+ {
+ $error_warning++;
+ echo '
+
+ | '.$db->convert_html_chars($row->nachname).' |
+ '.$db->convert_html_chars($row->vorname).' |
+ '.$db->convert_html_chars($row->prestudent_id).' |
+ '.$db->convert_html_chars($row->student_uid).' |
+ '.$db->convert_html_chars($row->laststatus).' |
+
';
+ }
+ echo '
';
+ }
+}
+
+/**************************************************************************************
+ * Prestudenten ohne Status
+ *
+ */
+$qry = "SELECT
+ tbl_person.vorname, tbl_person.nachname, tbl_prestudent.prestudent_id
+ FROM
+ public.tbl_prestudent
+ JOIN public.tbl_person USING(person_id)
+ WHERE
+ NOT EXISTS(SELECT 1 FROM public.tbl_prestudentstatus WHERE prestudent_id=tbl_prestudent.prestudent_id)";
+
+if($result = $db->db_query($qry))
+{
+ echo 'Prestudenten ohne Status
';
+
+ $anzahl = $db->db_num_rows($result);
+
+ echo ''.$anzahl.' Probleme gefunden';
+
+ if($anzahl>0)
+ {
+ echo '
Anzeigen >>';
+ echo '
+
+
+
+
+ | Nachname |
+ Vorname |
+ prestudent_id |
+
+
+ ';
+ while($row = $db->db_fetch_object($result))
+ {
+ $error_warning++;
+ echo '
+
+ | '.$db->convert_html_chars($row->nachname).' |
+ '.$db->convert_html_chars($row->vorname).' |
+ '.$db->convert_html_chars($row->prestudent_id).' |
+
';
+ }
+ echo '
';
+ }
+}
+
+/**************************************************************************************
+ * Studenten ohne Studentlehrverband eintrag
+ *
+ */
+$qry = "SELECT
+ tbl_person.vorname, tbl_person.nachname, tbl_student.student_uid
+ FROM
+ public.tbl_student
+ JOIN public.tbl_benutzer ON(uid=student_uid)
+ JOIN public.tbl_person USING(person_id)
+ WHERE
+ NOT EXISTS(SELECT 1 FROM public.tbl_studentlehrverband WHERE student_uid=tbl_student.student_uid)";
+
+if($result = $db->db_query($qry))
+{
+ echo 'Studenten ohne Studentlehrverband Eintrag
';
+
+ $anzahl = $db->db_num_rows($result);
+
+ echo ''.$anzahl.' Probleme gefunden';
+
+ if($anzahl>0)
+ {
+ echo '
Anzeigen >>';
+ echo '
+
+
+
+
+ | Nachname |
+ Vorname |
+ UID |
+
+
+ ';
+ while($row = $db->db_fetch_object($result))
+ {
+ $error_warning++;
+ echo '
+
+ | '.$db->convert_html_chars($row->nachname).' |
+ '.$db->convert_html_chars($row->vorname).' |
+ '.$db->convert_html_chars($row->student_uid).' |
+
';
+ }
+ echo '
';
+ }
+}
+
+/**************************************************************************************
+ * Incoming ohne IO Datensatz
+ *
+ */
+$qry = "SELECT
+ tbl_person.vorname, tbl_person.nachname, tbl_student.student_uid
+ FROM
+ public.tbl_student
+ JOIN public.tbl_prestudent USING(prestudent_id)
+ JOIN public.tbl_person USING(person_id)
+ WHERE
+ NOT EXISTS(SELECT 1 FROM bis.tbl_bisio WHERE student_uid=tbl_student.student_uid)
+ AND EXISTS(SELECT 1 FROM public.tbl_prestudentstatus WHERE prestudent_id=tbl_student.prestudent_id AND status_kurzbz='Incoming')";
+
+if($result = $db->db_query($qry))
+{
+ echo 'Incoming ohne IO-Datensatz
';
+
+ $anzahl = $db->db_num_rows($result);
+
+ echo ''.$anzahl.' Probleme gefunden';
+
+ if($anzahl>0)
+ {
+ echo '
Anzeigen >>';
+ echo '
+
+
+
+
+ | Nachname |
+ Vorname |
+ UID |
+
+
+ ';
+ while($row = $db->db_fetch_object($result))
+ {
+ $error_warning++;
+ echo '
+
+ | '.$db->convert_html_chars($row->nachname).' |
+ '.$db->convert_html_chars($row->vorname).' |
+ '.$db->convert_html_chars($row->student_uid).' |
+
';
+ }
+ echo '
';
+ }
+}
+
+/**************************************************************************************
+ * Personenkennzeichen passt nicht zur Studiengangskennzahl
+ *
+ */
+$qry = "SELECT
+ tbl_person.vorname, tbl_person.nachname, tbl_student.student_uid, tbl_student.matrikelnr, tbl_student.studiengang_kz
+ FROM
+ public.tbl_student
+ JOIN public.tbl_prestudent USING(prestudent_id)
+ JOIN public.tbl_person USING(person_id)
+ WHERE
+ tbl_student.studiengang_kz<1000 AND tbl_student.studiengang_kz>0
+ AND tbl_student.studiengang_kz::text!=trim(leading '0' from substring(matrikelnr,5,3))";
+
+if($result = $db->db_query($qry))
+{
+ echo 'Personenkennzeichen passt nicht zum Studiengang
';
+
+ $anzahl = $db->db_num_rows($result);
+
+ echo ''.$anzahl.' Probleme gefunden';
+
+ if($anzahl>0)
+ {
+ echo '
Anzeigen >>';
+ echo '
+
+
+
+
+ | Nachname |
+ Vorname |
+ UID |
+ Personenkennzeichen |
+ StudiengangKZ |
+
+
+ ';
+ while($row = $db->db_fetch_object($result))
+ {
+ $error_warning++;
+ echo '
+
+ | '.$db->convert_html_chars($row->nachname).' |
+ '.$db->convert_html_chars($row->vorname).' |
+ '.$db->convert_html_chars($row->student_uid).' |
+ '.$db->convert_html_chars($row->matrikelnr).' |
+ '.$db->convert_html_chars($row->studiengang_kz).' |
+
';
+ }
+ echo '
';
+ }
+}
+
+/**************************************************************************************
+ * Absolventen ohne Abschlusspruefung
+ *
+ */
+$qry = "SELECT
+ tbl_person.vorname, tbl_person.nachname, tbl_student.student_uid
+ FROM
+ public.tbl_student
+ JOIN public.tbl_prestudent USING(prestudent_id)
+ JOIN public.tbl_person USING(person_id)
+ WHERE
+ tbl_student.studiengang_kz<1000 AND tbl_student.studiengang_kz>0
+ AND EXISTS (SELECT 1 FROM public.tbl_prestudentstatus WHERE status_kurzbz='Absolvent' AND prestudent_id=tbl_student.prestudent_id)
+ AND NOT EXISTS(SELECT 1 FROM lehre.tbl_abschlusspruefung WHERE student_uid=tbl_student.student_uid)";
+
+if($result = $db->db_query($qry))
+{
+ echo 'Absolventen ohne Abschlusspruefung
';
+
+ $anzahl = $db->db_num_rows($result);
+
+ echo ''.$anzahl.' Probleme gefunden';
+
+ if($anzahl>0)
+ {
+ echo '
Anzeigen >>';
+ echo '
+
+
+
+
+ | Nachname |
+ Vorname |
+ UID |
+
+
+ ';
+ while($row = $db->db_fetch_object($result))
+ {
+ $error_warning++;
+ echo '
+
+ | '.$db->convert_html_chars($row->nachname).' |
+ '.$db->convert_html_chars($row->vorname).' |
+ '.$db->convert_html_chars($row->student_uid).' |
+
';
+ }
+ echo '
';
+ }
+}
+
+/**************************************************************************************
+ * Studenten mit mind. 2 Stati ohne Noten
+ *
+ */
+$qry = "SELECT
+ tbl_person.vorname, tbl_person.nachname, tbl_student.student_uid
+ FROM
+ public.tbl_student
+ JOIN public.tbl_prestudent USING(prestudent_id)
+ JOIN public.tbl_person USING(person_id)
+ WHERE
+ tbl_student.studiengang_kz<1000 AND tbl_student.studiengang_kz>0
+ AND 1<(SELECT count(*) FROM public.tbl_prestudentstatus WHERE status_kurzbz='Student' AND prestudent_id=tbl_student.prestudent_id)
+ AND NOT EXISTS(SELECT 1 FROM lehre.tbl_zeugnisnote WHERE student_uid=tbl_student.student_uid)";
+
+if($result = $db->db_query($qry))
+{
+ echo 'Studenten mit mind. 2 Studentenstati aber ohne Noten
';
+
+ $anzahl = $db->db_num_rows($result);
+
+ echo ''.$anzahl.' Probleme gefunden';
+
+ if($anzahl>0)
+ {
+ echo '
Anzeigen >>';
+ echo '
+
+
+
+
+ | Nachname |
+ Vorname |
+ UID |
+
+
+ ';
+ while($row = $db->db_fetch_object($result))
+ {
+ $error_warning++;
+ echo '
+
+ | '.$db->convert_html_chars($row->nachname).' |
+ '.$db->convert_html_chars($row->vorname).' |
+ '.$db->convert_html_chars($row->student_uid).' |
+
';
+ }
+ echo '
';
+ }
+}
+// ************************************************************************************
+echo '
';
+echo '
Kritische Fehler: '.($error_kritisch>0?'':'').$error_kritisch.'';
+echo '
Warnungen: '.($error_warning>0?'':'').$error_warning.'';
+echo '
';
+?>
diff --git a/vilesci/lehre/lehrveranstaltung_details.php b/vilesci/lehre/lehrveranstaltung_details.php
index 6c00149a5..cef83a0bc 100644
--- a/vilesci/lehre/lehrveranstaltung_details.php
+++ b/vilesci/lehre/lehrveranstaltung_details.php
@@ -479,7 +479,7 @@
-
+