From baa0e38e57e75c9d4b325877bdfee6d0ffbdff78 Mon Sep 17 00:00:00 2001 From: Nikolaus Krondraf Date: Tue, 8 Sep 2015 13:23:26 +0200 Subject: [PATCH] Outgoing Studenten aus Anwesenheitsliste entfernt --- rdf/anwesenheitsliste.xml.php | 433 +++++++++++++++++----------------- 1 file changed, 220 insertions(+), 213 deletions(-) diff --git a/rdf/anwesenheitsliste.xml.php b/rdf/anwesenheitsliste.xml.php index eacef60f6..4349a6935 100644 --- a/rdf/anwesenheitsliste.xml.php +++ b/rdf/anwesenheitsliste.xml.php @@ -1,213 +1,220 @@ - - */ -/** - * Erstellt das XML fuer die Anwesenheitsliste - */ -// content type setzen -header("Content-type: application/xhtml+xml"); -require_once('../../../config/vilesci.config.inc.php'); -require_once('../../../include/functions.inc.php'); -require_once('../../../include/basis_db.class.php'); -require_once('../../../include/ean13.function.php'); - -// Optionen abfragen -isset($_GET['von']) ? $von = date('Y-m-d', strtotime($_GET['von'])) : $von = NULL; -isset($_GET['bis']) ? $bis = date('Y-m-d', strtotime($_GET['bis'])) : $bis = $von; -isset($_GET['stundevon']) ? $stundevon = $_GET['stundevon'] : $stundevon = null; -isset($_GET['stundebis']) ? $stundebis = $_GET['stundebis'] : $stundebis = null; -isset($_GET['stg_kz']) ? $studiengang = $_GET['stg_kz'] : $studiengang = NULL; -isset($_GET['semester']) ? $semester = $_GET['semester'] : $semester = NULL; -isset($_GET['lehreinheit']) ? $lehreinheit = $_GET['lehreinheit'] : $lehreinheit = NULL; - -if($von) - $studiensemester = getStudiensemesterFromDatum($von); - -$db = new basis_db(); -$data = array(); - -/*if(!$studiengang) - die('Die ID des Studiengangs muss uebergeben werden'); -*/ -// Daten der Lehreinheiten ermitteln -$qry = "SELECT le.lehreinheit_id, le.lehrveranstaltung_id, lv.lvnr, lv.bezeichnung AS lvbez, stg.bezeichnung AS stgbez, " - . "sp.ort_kurzbz, datum, beginn, ende, studiensemester_kurzbz, lv.semester, lv.orgform_kurzbz " - . "FROM lehre.tbl_lehreinheit le " - . "JOIN lehre.tbl_lehrveranstaltung lv ON lv.lehrveranstaltung_id = le.lehrveranstaltung_id " - . "JOIN public.tbl_studiengang stg ON stg.studiengang_kz = lv.studiengang_kz " - . "JOIN lehre.tbl_stundenplan sp ON (sp.lehreinheit_id=le.lehreinheit_id) " - . "JOIN lehre.tbl_stunde stu ON stu.stunde = sp.stunde " - . "WHERE 1=1"; -//echo "".var_dump($qry).""; -if($studiengang!='') - $qry.=" AND stg.studiengang_kz = " . $db->db_add_param($studiengang) . " "; - -// Optionen zu Query hinzufügen -if($lehreinheit) - $qry .= " AND le.lehreinheit_id = " . $db->db_add_param($lehreinheit); -if($semester) - $qry .= " AND lv.semester = " . $db->db_add_param($semester); -if($von) - $qry .= " AND (sp.datum >= " . $db->db_add_param($von) . "::DATE AND sp.datum <= " . $db->db_add_param($bis) . "::DATE) "; - -if(!is_null($stundevon) && !is_null($stundebis)) -{ - // Unterricht zwischen 4. und 8. Stunde - //$qry.=" AND EXISTS (SELECT 1 FROM lehre.tbl_stundenplan WHERE datum=sp.datum AND lehreinheit_id=sp.lehreinheit_id AND stunde BETWEEN ".$db->db_add_param($stundevon)." AND ".$db->db_add_param($stundebis).")"; - - // Beginn zwischen 4. und 8. Stunde - $qry.=" AND (SELECT min(stunde) FROM lehre.tbl_stundenplan WHERE datum=sp.datum AND lehreinheit_id=sp.lehreinheit_id) BETWEEN ".$db->db_add_param($stundevon)." AND ".$db->db_add_param($stundebis); -} -else -{ - if(!is_null($stundevon)) - $qry.=" AND stu.stunde>=".$db->db_add_param($stundevon); - if(!is_null($stundebis)) - $qry.=" AND stu.stunde<=".$db->db_add_param($stundebis); -} -$qry .= " ORDER BY datum, beginn"; - -if($db->db_query($qry)) -{ - while($row = $db->db_fetch_object()) - { - if(empty($row)) - die("Lehreinheit $lehreinheit am $von nicht gefunden"); - - $data[$row->lehreinheit_id]['tage'][$row->datum][] = $row; - } -} -//echo $qry; -foreach($data as $key => $value) -{ - // Daten der Vortragenden ermitteln - $qry = "SELECT vorname, nachname, titelpre, titelpost " - . "FROM lehre.tbl_lehreinheitmitarbeiter lema " - . "JOIN public.tbl_benutzer be ON be.uid = lema.mitarbeiter_uid " - . "JOIN public.tbl_person pe ON pe.person_id = be.person_id " - . "WHERE lehreinheit_id = " . $db->db_add_param($key); - - if($db->db_query($qry)) - { - while($row = $db->db_fetch_object()) - { - $data[$key]['vortragende'][] = $row; - } - } - - // Daten der Studenten ermitteln - $qry = "SELECT pe.person_id, vorname, nachname, titelpre, titelpost, note, " - . "get_rolle_prestudent(tbl_student.prestudent_id, " . $db->db_add_param($studiensemester) . ") AS laststatus " - . "FROM campus.vw_student_lehrveranstaltung stlv " - . "JOIN public.tbl_benutzer be ON be.uid = stlv.uid " - . "JOIN public.tbl_person pe ON pe.person_id = be.person_id " - . "JOIN public.tbl_student ON be.uid = tbl_student.student_uid " - . "LEFT JOIN lehre.tbl_zeugnisnote zn ON (zn.lehrveranstaltung_id = stlv.lehrveranstaltung_id AND zn.student_uid = stlv.uid AND zn.studiensemester_kurzbz = " . $db->db_add_param($studiensemester) . ") " - . "WHERE stlv.lehreinheit_id = " . $db->db_add_param($key) . " " - . "AND get_rolle_prestudent(tbl_student.prestudent_id, " . $db->db_add_param($studiensemester) . ") NOT IN ('Abbrecher', 'Unterbrecher', 'Outgoings') " - . "ORDER BY nachname ASC"; - - if($db->db_query($qry)) - { - while($row = $db->db_fetch_object()) - { - $data[$key]['studenten'][] = $row; - } - } -} - -// AUSGABE -echo ""; -echo ""; - -foreach($data as $lehreinheit_id => $value) -{ - foreach($value['tage'] as $tag) - { - echo ""; - - // Barcode erstellen - $paddedLehreinheitId = str_pad($lehreinheit_id, 6, "0", STR_PAD_LEFT); - $convertableString = date('ymd', strtotime($tag[0]->datum)) . $paddedLehreinheitId; - $barcode = ean13($convertableString); - - // Ausgabe der Lehrveranstaltung - echo "\n "; - echo "\n lehreinheit_id."]]>"; - echo "\n stgbez."]]>"; - echo "\n semester."]]>"; - echo "\n orgform_kurzbz."]]>"; - echo "\n studiensemester_kurzbz."]]>"; - echo "\n lvbez."]]>"; - echo "\n "; - echo "\n lvnr."]]>"; - echo "\n "; - echo "\n ort_kurzbz."]]>"; - echo "\n datum))."]]>"; - echo "\n beginn, 0, 5)."]]>"; - echo "\n ende, 0, 5)."]]>"; - echo "\n "; - - // Ausgabe der Vortragenden - echo ""; - foreach($value['vortragende'] as $vortragender) - { - echo "\n "; - echo "\n vorname."]]>"; - echo "\n nachname."]]>"; - echo "\n titelpre."]]>"; - echo "\n titelpost."]]>"; - echo "\n "; - } - echo ""; - - // Ausgabe der Studenten - echo ""; - if(isset($value['studenten']) && is_array($value['studenten'])) - { - foreach($value['studenten'] as $student) - { - // Barcode erstellen - $paddedPersonId = str_pad($student->person_id, 12, "0", STR_PAD_LEFT); - $barcode = ean13($paddedPersonId); - // Anzeigename generieren - $namegesamt = (strlen($student->titelpre) > 0) ? $student->titelpre." " : ""; - $namegesamt .= $student->nachname." ".$student->vorname; - $namegesamt .= (strlen($student->titelpost) > 0) ? ", ".$student->titelpost : ""; - - echo "\n "; - echo "\n "; - echo "\n vorname."]]>"; - echo "\n nachname."]]>"; - echo "\n titelpre."]]>"; - echo "\n titelpost."]]>"; - echo "\n "; - echo "\n note."]]>"; - echo "\n laststatus."]]>"; - echo "\n "; - } - } - echo ""; - echo ""; - } -} - -echo ""; - -?> + + */ +/** + * Erstellt das XML fuer die Anwesenheitsliste + */ +// content type setzen +header("Content-type: application/xhtml+xml"); +require_once('../config/vilesci.config.inc.php'); +require_once('../include/functions.inc.php'); +require_once('../include/basis_db.class.php'); +require_once('../include/ean13.function.php'); + +// Optionen abfragen +isset($_GET['von']) ? $von = date('Y-m-d', strtotime($_GET['von'])) : $von = NULL; +isset($_GET['bis']) ? $bis = date('Y-m-d', strtotime($_GET['bis'])) : $bis = $von; +isset($_GET['stundevon']) ? $stundevon = $_GET['stundevon'] : $stundevon = null; +isset($_GET['stundebis']) ? $stundebis = $_GET['stundebis'] : $stundebis = null; +isset($_GET['stg_kz']) ? $studiengang = $_GET['stg_kz'] : $studiengang = NULL; +isset($_GET['semester']) ? $semester = $_GET['semester'] : $semester = NULL; +isset($_GET['lehreinheit']) ? $lehreinheit = $_GET['lehreinheit'] : $lehreinheit = NULL; + +if($von) + $studiensemester = getStudiensemesterFromDatum($von); + +$db = new basis_db(); +$data = array(); + +/*if(!$studiengang) + die('Die ID des Studiengangs muss uebergeben werden'); +*/ +// Daten der Lehreinheiten ermitteln +$qry = "SELECT le.lehreinheit_id, le.lehrveranstaltung_id, lv.lvnr, lv.bezeichnung AS lvbez, stg.bezeichnung AS stgbez, " + . "sp.ort_kurzbz, datum, beginn, ende, studiensemester_kurzbz, lv.semester, lv.orgform_kurzbz " + . "FROM lehre.tbl_lehreinheit le " + . "JOIN lehre.tbl_lehrveranstaltung lv ON lv.lehrveranstaltung_id = le.lehrveranstaltung_id " + . "JOIN public.tbl_studiengang stg ON stg.studiengang_kz = lv.studiengang_kz " + . "JOIN lehre.tbl_stundenplan sp ON (sp.lehreinheit_id=le.lehreinheit_id) " + . "JOIN lehre.tbl_stunde stu ON stu.stunde = sp.stunde " + . "WHERE 1=1"; +//echo "".var_dump($qry).""; +if($studiengang!='') + $qry.=" AND stg.studiengang_kz = " . $db->db_add_param($studiengang) . " "; + +// Optionen zu Query hinzufügen +if($lehreinheit) + $qry .= " AND le.lehreinheit_id = " . $db->db_add_param($lehreinheit); +if($semester) + $qry .= " AND lv.semester = " . $db->db_add_param($semester); +if($von) + $qry .= " AND (sp.datum >= " . $db->db_add_param($von) . "::DATE AND sp.datum <= " . $db->db_add_param($bis) . "::DATE) "; + +if(!is_null($stundevon) && !is_null($stundebis)) +{ + // Unterricht zwischen 4. und 8. Stunde + //$qry.=" AND EXISTS (SELECT 1 FROM lehre.tbl_stundenplan WHERE datum=sp.datum AND lehreinheit_id=sp.lehreinheit_id AND stunde BETWEEN ".$db->db_add_param($stundevon)." AND ".$db->db_add_param($stundebis).")"; + + // Beginn zwischen 4. und 8. Stunde + $qry.=" AND (SELECT min(stunde) FROM lehre.tbl_stundenplan WHERE datum=sp.datum AND lehreinheit_id=sp.lehreinheit_id) BETWEEN ".$db->db_add_param($stundevon)." AND ".$db->db_add_param($stundebis); +} +else +{ + if(!is_null($stundevon)) + $qry.=" AND stu.stunde>=".$db->db_add_param($stundevon); + if(!is_null($stundebis)) + $qry.=" AND stu.stunde<=".$db->db_add_param($stundebis); +} +$qry .= " ORDER BY datum, beginn"; + +if($db->db_query($qry)) +{ + while($row = $db->db_fetch_object()) + { + if(empty($row)) + die("Lehreinheit $lehreinheit am $von nicht gefunden"); + + $data[$row->lehreinheit_id]['tage'][$row->datum][] = $row; + } +} +//echo $qry; +foreach($data as $key => $value) +{ + $currentDay = key($value['tage']); + + // Daten der Vortragenden ermitteln + $qry = "SELECT vorname, nachname, titelpre, titelpost " + . "FROM lehre.tbl_lehreinheitmitarbeiter lema " + . "JOIN public.tbl_benutzer be ON be.uid = lema.mitarbeiter_uid " + . "JOIN public.tbl_person pe ON pe.person_id = be.person_id " + . "WHERE lehreinheit_id = " . $db->db_add_param($key); + + if($db->db_query($qry)) + { + while($row = $db->db_fetch_object()) + { + $data[$key]['vortragende'][] = $row; + } + } + + // Daten der Studenten ermitteln + $qry = "SELECT pe.person_id, vorname, nachname, titelpre, titelpost, note, " + . "get_rolle_prestudent(tbl_student.prestudent_id, " . $db->db_add_param($studiensemester) . ") AS laststatus " + . "FROM campus.vw_student_lehrveranstaltung stlv " + . "JOIN public.tbl_benutzer be ON be.uid = stlv.uid " + . "JOIN public.tbl_person pe ON pe.person_id = be.person_id " + . "JOIN public.tbl_student ON be.uid = tbl_student.student_uid " + . "LEFT JOIN lehre.tbl_zeugnisnote zn ON (zn.lehrveranstaltung_id = stlv.lehrveranstaltung_id AND zn.student_uid = stlv.uid AND zn.studiensemester_kurzbz = " . $db->db_add_param($studiensemester) . ") " + . "WHERE stlv.lehreinheit_id = " . $db->db_add_param($key) . " " + . "AND get_rolle_prestudent(tbl_student.prestudent_id, " . $db->db_add_param($studiensemester) . ") NOT IN ('Abbrecher', 'Unterbrecher') " + . "AND tbl_student.student_uid NOT IN (" + . "SELECT stud.student_uid " + . "FROM bis.tbl_bisio bis " + . "JOIN public.tbl_student stud ON bis.student_uid = stud.student_uid " + . "WHERE bis.von <= " . $db->db_add_param($currentDay) . "::DATE AND bis.bis >= " . $db->db_add_param($currentDay) . "::DATE) " + . "ORDER BY nachname ASC"; + + if($db->db_query($qry)) + { + while($row = $db->db_fetch_object()) + { + $data[$key]['studenten'][] = $row; + } + } +} + +// AUSGABE +echo ""; +echo ""; + +foreach($data as $lehreinheit_id => $value) +{ + foreach($value['tage'] as $tag) + { + echo ""; + + // Barcode erstellen + $paddedLehreinheitId = str_pad($lehreinheit_id, 6, "0", STR_PAD_LEFT); + $convertableString = date('ymd', strtotime($tag[0]->datum)) . $paddedLehreinheitId; + $barcode = ean13($convertableString); + + // Ausgabe der Lehrveranstaltung + echo "\n "; + echo "\n lehreinheit_id."]]>"; + echo "\n stgbez."]]>"; + echo "\n semester."]]>"; + echo "\n orgform_kurzbz."]]>"; + echo "\n studiensemester_kurzbz."]]>"; + echo "\n lvbez."]]>"; + echo "\n "; + echo "\n lvnr."]]>"; + echo "\n "; + echo "\n ort_kurzbz."]]>"; + echo "\n datum))."]]>"; + echo "\n beginn, 0, 5)."]]>"; + echo "\n ende, 0, 5)."]]>"; + echo "\n "; + + // Ausgabe der Vortragenden + echo ""; + foreach($value['vortragende'] as $vortragender) + { + echo "\n "; + echo "\n vorname."]]>"; + echo "\n nachname."]]>"; + echo "\n titelpre."]]>"; + echo "\n titelpost."]]>"; + echo "\n "; + } + echo ""; + + // Ausgabe der Studenten + echo ""; + if(isset($value['studenten']) && is_array($value['studenten'])) + { + foreach($value['studenten'] as $student) + { + // Barcode erstellen + $paddedPersonId = str_pad($student->person_id, 12, "0", STR_PAD_LEFT); + $barcode = ean13($paddedPersonId); + // Anzeigename generieren + $namegesamt = (strlen($student->titelpre) > 0) ? $student->titelpre." " : ""; + $namegesamt .= $student->nachname." ".$student->vorname; + $namegesamt .= (strlen($student->titelpost) > 0) ? ", ".$student->titelpost : ""; + + echo "\n "; + echo "\n "; + echo "\n vorname."]]>"; + echo "\n nachname."]]>"; + echo "\n titelpre."]]>"; + echo "\n titelpost."]]>"; + echo "\n "; + echo "\n note."]]>"; + echo "\n laststatus."]]>"; + echo "\n "; + } + } + echo ""; + echo ""; + } +} + +echo ""; + +?>