Script angepasst damit mehr als nur eine Anwesenheitsliste abgerufen werden kann

This commit is contained in:
Nikolaus Krondraf
2014-10-16 04:41:38 +00:00
parent d7b886c8b3
commit 823d2e113a
+111 -97
View File
@@ -27,134 +27,148 @@ require_once('../include/functions.inc.php');
require_once('../include/basis_db.class.php');
require_once('ean13.php');
if(isset($_GET['typ']) && $_GET['typ'] == 'lehreinheit')
// Optionen abfragen
isset($_GET['von']) ? $von = $_GET['von'] : $von = date('Y-m-d', time());
isset($_GET['bis']) ? $bis = $_GET['bis'] : $bis = $von;
isset($_GET['studiengang']) ? $studiengang = $_GET['studiengang'] : $studiengang = NULL;
isset($_GET['semester']) ? $semester = $_GET['semester'] : $semester = NULL;
isset($_GET['lehreinheit']) ? $lehreinheit = $_GET['lehreinheit'] : $lehreinheit = NULL;
$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 "
. "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.unr = le.unr "
. "JOIN lehre.tbl_stunde stu ON stu.stunde = sp.stunde "
. "WHERE stg.studiengang_kz = " . $db->db_add_param($studiengang) . " "
. "AND (sp.datum <= " . $db->db_add_param($von) . "::DATE AND sp.datum >= " . $db->db_add_param($bis) . "::DATE) ";
// 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);
$qry .= " ORDER BY stu.stunde ASC";
if($db->db_query($qry))
{
if(isset($_GET['lehreinheit']) && isset($_GET['datum']) && isset($_GET['lv']))
while($row = $db->db_fetch_object())
{
$lehreinheit_id = $_GET['lehreinheit'];
$datum = $_GET['datum'];
$lv = $_GET['lv'];
if(empty($row))
die("Lehreinheit $lehreinheit am $von nicht gefunden");
$data[$row->lehreinheit_id]['einheiten'][] = $row;
}
else
die('Die ID der Lehreinheit, die ID der Lehrveranstaltung und das Datum muessen uebergeben werden');
echo "<?xml version='1.0' encoding='UTF-8' standalone='yes'?>";
echo '<anwesenheitslisten>';
$db = new basis_db();
// Daten der Lehreinheit ermitteln
$qry = "SELECT le.lehrveranstaltung_id, lv.lvnr, lv.bezeichnung AS lvbez, stg.bezeichnung AS stgbez, "
. "sp.ort_kurzbz, datum, beginn, ende "
. "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.unr = le.unr "
. "JOIN lehre.tbl_stunde stu ON stu.stunde = sp.stunde "
. "WHERE le.lehreinheit_id = " . $db->db_add_param($lehreinheit_id) . " "
. "AND sp.datum = " . $db->db_add_param($datum);
if($db->db_query($qry))
{
$einheiten = $db->db_num_rows();
}
while($row = $db->db_fetch_object())
{
if(empty($row))
die("Lehreinheit $lehreinheit_id am $datum nicht gefunden");
$lehreinheiten[] = $row;
}
// Barcode erstellen
$paddedLehreinheitId = str_pad($lehreinheit_id, 6, "0", STR_PAD_LEFT);
$convertableString = date('ymd', strtotime($datum)) . $paddedLehreinheitId;
$barcode = ean13($convertableString);
// Ausgabe der Lehrveranstaltung
echo "\n <lehreinheit>";
echo "\n <studiengang><![CDATA[".$lehreinheiten[0]->stgbez."]]></studiengang>";
echo "\n <bezeichnung><![CDATA[".$lehreinheiten[0]->lvbez."]]></bezeichnung>";
echo "\n <barcode><![CDATA[".ean13($convertableString)."]]></barcode>";
echo "\n <kuerzel><![CDATA[".$lehreinheiten[0]->lvnr."]]></kuerzel>";
echo "\n <einheiten><![CDATA[".$einheiten."]]></einheiten>";
echo "\n <ort><![CDATA[".$lehreinheiten[0]->ort_kurzbz."]]></ort>";
echo "\n <datum><![CDATA[".date('d.m.Y', strtotime($lehreinheiten[0]->datum))."]]></datum>";
echo "\n <beginn><![CDATA[".mb_substr($lehreinheiten[0]->beginn, 0, 5)."]]></beginn>";
echo "\n <ende><![CDATA[".mb_substr($lehreinheiten[count($lehreinheiten) - 1]->ende, 0, 5)."]]></ende>";
echo "\n </lehreinheit>";
}
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($lehreinheit_id);
. "WHERE lehreinheit_id = " . $db->db_add_param($key);
if($db->db_query($qry))
{
echo "\n <vortragende>";
while($row = $db->db_fetch_object())
{
// Ausgabe der Vortragenden
echo "\n <vortragender>";
echo "\n <vorname><![CDATA[".$row->vorname."]]></vorname>";
echo "\n <nachname><![CDATA[".$row->nachname."]]></nachname>";
echo "\n <titelpre><![CDATA[".$row->titelpre."]]></titelpre>";
echo "\n <titelpost><![CDATA[".$row->titelpost."]]></titelpost>";
echo "\n </vortragender>";
$data[$key]['vortragende'][] = $row;
}
echo "\n </vortragende>";
}
// Daten der Studenten ermitteln
$qry = "SELECT pe.person_id, vorname, nachname, titelpre, titelpost, note, "
. "CASE WHEN preincoming_id IS NULL THEN '0' "
. "ELSE '1' "
. "END AS incoming "
. "get_rolle_prestudent(pre.prestudent_id, null) 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 "
. "LEFT JOIN public.tbl_preincoming inc ON inc.person_id = pe.person_id "
. "JOIN public.tbl_prestudent pre ON pre.person_id = pe.person_id "
. "LEFT JOIN lehre.tbl_zeugnisnote zn ON (zn.lehrveranstaltung_id = stlv.lehrveranstaltung_id AND zn.student_uid = stlv.uid) "
. "WHERE stlv.lehreinheit_id = " . $db->db_add_param($lehreinheit_id);
. "WHERE stlv.lehreinheit_id = " . $db->db_add_param($key);
if($db->db_query($qry))
{
echo "\n <studenten>";
while($row = $db->db_fetch_object())
{
// Barcode erstellen
$paddedPersonId = str_pad($row->person_id, 12, "0", STR_PAD_LEFT);
$barcode = ean13($paddedPersonId);
// Ausgabe der Studenten
echo "\n <student>";
echo "\n <barcode><![CDATA[".$barcode."]]></barcode>";
echo "\n <vorname><![CDATA[".$row->vorname."]]></vorname>";
echo "\n <nachname><![CDATA[".$row->nachname."]]></nachname>";
echo "\n <titelpre><![CDATA[".$row->titelpre."]]></titelpre>";
echo "\n <titelpost><![CDATA[".$row->titelpost."]]></titelpost>";
echo "\n <note><![CDATA[".$row->note."]]></note>";
echo "\n <incoming><![CDATA[".$row->incoming."]]></incoming>";
echo "\n </student>";
$data[$key]['studenten'][] = $row;
}
echo "\n </studenten>";
}
}
echo '</anwesenheitslisten>';
}
else if(isset($_GET['typ']) && $_GET['typ'] == 'studiengang')
// AUSGABE
echo "<?xml version='1.0' encoding='UTF-8' standalone='yes'?>";
echo "<anwesenheitslisten>";
foreach($data as $lehreinheit_id => $value)
{
echo "<anwesenheitsliste>";
// Barcode erstellen
$paddedLehreinheitId = str_pad($lehreinheit_id, 6, "0", STR_PAD_LEFT);
$convertableString = date('ymd', strtotime($value['einheiten'][0]->datum)) . $paddedLehreinheitId;
$barcode = ean13($convertableString);
// Ausgabe der Lehrveranstaltung
echo "\n <lehreinheit>";
echo "\n <lehreinheit_id><![CDATA[".$value['einheiten'][0]->lehreinheit_id."]]></lehreinheit_id>";
echo "\n <studiengang><![CDATA[".$value['einheiten'][0]->stgbez."]]></studiengang>";
echo "\n <bezeichnung><![CDATA[".$value['einheiten'][0]->lvbez."]]></bezeichnung>";
echo "\n <barcode><![CDATA[".ean13($convertableString)."]]></barcode>";
echo "\n <kuerzel><![CDATA[".$value['einheiten'][0]->lvnr."]]></kuerzel>";
echo "\n <einheiten><![CDATA[".count($value['einheiten'])."]]></einheiten>";
echo "\n <ort><![CDATA[".$value['einheiten'][0]->ort_kurzbz."]]></ort>";
echo "\n <datum><![CDATA[".date('d.m.Y', strtotime($value['einheiten'][0]->datum))."]]></datum>";
echo "\n <beginn><![CDATA[".mb_substr($value['einheiten'][0]->beginn, 0, 5)."]]></beginn>";
echo "\n <ende><![CDATA[".mb_substr($value['einheiten'][count($value['einheiten']) - 1]->ende, 0, 5)."]]></ende>";
echo "\n </lehreinheit>";
// Ausgabe der Vortragenden
echo "<vortragende>";
foreach($value['vortragende'] as $vortragender)
{
echo "\n <vortragender>";
echo "\n <vorname><![CDATA[".$vortragender->vorname."]]></vorname>";
echo "\n <nachname><![CDATA[".$vortragender->nachname."]]></nachname>";
echo "\n <titelpre><![CDATA[".$vortragender->titelpre."]]></titelpre>";
echo "\n <titelpost><![CDATA[".$vortragender->titelpost."]]></titelpost>";
echo "\n </vortragender>";
}
echo "</vortragende>";
// Ausgabe der Studenten
echo "<studenten>";
foreach($value['studenten'] as $student)
{
// Barcode erstellen
$paddedPersonId = str_pad($student->person_id, 12, "0", STR_PAD_LEFT);
$barcode = ean13($paddedPersonId);
echo "\n <student>";
echo "\n <barcode><![CDATA[".$barcode."]]></barcode>";
echo "\n <vorname><![CDATA[".$student->vorname."]]></vorname>";
echo "\n <nachname><![CDATA[".$student->nachname."]]></nachname>";
echo "\n <titelpre><![CDATA[".$student->titelpre."]]></titelpre>";
echo "\n <titelpost><![CDATA[".$student->titelpost."]]></titelpost>";
echo "\n <note><![CDATA[".$student->note."]]></note>";
echo "\n <status><![CDATA[".$student->laststatus."]]></status>";
echo "\n </student>";
}
echo "</studenten>";
echo "</anwesenheitsliste>";
}
else
die("Der gewuenschte Typ muss angegeben werden");
echo "</anwesenheitslisten>";
?>