db changes for eine_uid

-lehre.tbl_abschlusspruefung.student_uid -> prestudent_id
	-public.tbl_studentlehrverband.student_uid -> prestudent_id
This commit is contained in:
Andreas Moik
2016-04-19 15:31:15 +02:00
parent 48e0ea2124
commit b3a77052f7
40 changed files with 2358 additions and 2042 deletions
+5 -4
View File
@@ -16,8 +16,9 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Karl Burkhart <burkhart@technikum-wien.at>
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>,
* Karl Burkhart <burkhart@technikum-wien.at> and
* Andreas Moik <moik@technikum-wien.at>.
*/
require_once('../config/vilesci.config.inc.php');
@@ -188,7 +189,7 @@ $student = new student();
$prestudent = new prestudent();
$qry = "select distinct(student.student_uid), prestudent.prestudent_id, status.ausbildungssemester, lv.semester, student.studiengang_kz studiengang
from public.tbl_student student
join public.tbl_studentlehrverband lv using(student_uid)
join public.tbl_studentlehrverband lv ON(public.tbl_student.prestudent_id = public.tbl_studentlehrverband.prestudent_id)
join public.tbl_prestudent prestudent using(prestudent_id)
join public.tbl_prestudentstatus status using(prestudent_id)
WHERE status.studiensemester_kurzbz = '$aktSem'
@@ -520,4 +521,4 @@ function getDateForInscription ($semester)
}
?>
</body>
</html>
</html>
+260 -260
View File
@@ -1,260 +1,260 @@
<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>,
* Rudolf Hangl <rudolf.hangl@technikum-wien.at> and
* Gerald Simane-Sequens <gerald.simane-sequens@technikum-wien.at>
*/
// ************************************
// * Script zur Pruefung und Korrektur
// * moeglicher Inkonsistenzen
// *
// * - Studenten ohne Prestudent_id werden korrigiert
// * - Inkonsistenzen der Tabellen tbl_studentlehrverband, tbl_student werden korrigiert
// **********************************
require_once(dirname(__FILE__).'/../config/vilesci.config.inc.php');
require_once(dirname(__FILE__).'/../include/studiensemester.class.php');
require_once(dirname(__FILE__).'/../include/person.class.php');
require_once(dirname(__FILE__).'/../include/benutzer.class.php');
require_once(dirname(__FILE__).'/../include/student.class.php');
require_once(dirname(__FILE__).'/../include/prestudent.class.php');
require_once(dirname(__FILE__).'/../include/lehrverband.class.php');
require_once(dirname(__FILE__).'/../include/mail.class.php');
$db = new basis_db();
$anzahl_neue_prestudent_id=0;
$anzahl_fehler_prestudent=0;
$anzahl_gruppenaenderung=0;
$anzahl_gruppenaenderung_fehler=0;
$text='';
$statistik ='';
$abunterbrecher_verschoben_error=0;
$abunterbrecher_verschoben=0;
// ****
// * Bei Studenten mit fehlener Prestudent_id wird die passende id ermittelt und Eingetragen
// ****
$qry = "SELECT student_uid, studiengang_kz FROM public.tbl_student WHERE prestudent_id is null";
if($result = $db->db_query($qry))
{
$text.="Suche Studenten mit fehlender Prestudent_id ...\n\n";
while($row = $db->db_fetch_object($result))
{
$qry_id = "SELECT tbl_prestudent.prestudent_id FROM campus.vw_student JOIN public.tbl_prestudent USING(person_id) WHERE uid=".$db->db_add_param($row->student_uid)." AND tbl_prestudent.studiengang_kz=".$db->db_add_param($row->studiengang_kz);
if($result_id = $db->db_query($qry_id))
{
if($db->db_num_rows($result_id)==1)
{
if($row_id = $db->db_fetch_object($result_id))
{
$qry_upd = "UPDATE public.tbl_student SET prestudent_id=".$db->db_add_param($row_id->prestudent_id)." WHERE student_uid=".$db->db_add_param($row->student_uid);
if($db->db_query($qry_upd))
{
$text .= "Prestudent_id von $row->student_uid wurde auf $row_id->prestudent_id gesetzt\n";
$anzahl_neue_prestudent_id++;
}
}
else
{
$text .= "unbekannter Fehler\n";
$anzahl_fehler_prestudent++;
}
}
elseif($db->db_num_rows($result_id)>1)
{
$text .= "Student $row->student_uid hat keine Prestudent_id und MEHRERE passende Prestudenteintraege\n";
$anzahl_fehler_prestudent++;
}
elseif($db->db_num_rows($result_id)==0)
{
$text .= "Student $row->student_uid hat keine Prestudent_id und KEINE passenden Prestudenteintraege\n";
$anzahl_fehler_prestudent++;
}
}
else
{
$text.="Fehler bei Abfrage:".$db->db_last_error()."\n";
$anzahl_fehler_prestudent++;
}
}
}
// *****
// * Gruppenzuteilung von Abbrechern und Unterbrechern korrigieren.
// * Abbrecher werden in die Gruppe 0A verschoben
// * Unterbrecher in die Gruppe 0B
// *****
$text.="\n\nKorrigiere Gruppenzuteilungen von Ab-/Unterbrechern\n";
//Alle Ab-/Unterbrecher holen die nicht im 0. Semester sind
$qry = "SELECT
student_uid,
tbl_student.studiengang_kz,
tbl_prestudent.prestudent_id,
status_kurzbz,
studiensemester_kurzbz
FROM
public.tbl_student,
public.tbl_prestudent,
public.tbl_prestudentstatus
WHERE
tbl_student.prestudent_id=tbl_prestudent.prestudent_id AND
tbl_prestudent.prestudent_id=tbl_prestudentstatus.prestudent_id AND
(
tbl_prestudentstatus.status_kurzbz='Unterbrecher' OR
tbl_prestudentstatus.status_kurzbz='Abbrecher'
)
AND
EXISTS (SELECT
*
FROM
public.tbl_studentlehrverband
WHERE
student_uid=tbl_student.student_uid AND
studiensemester_kurzbz=tbl_prestudentstatus.studiensemester_kurzbz AND
semester<>0
)
";
if($result = $db->db_query($qry))
{
while($row = $db->db_fetch_object($result))
{
//Eintrag nur korrigieren wenn der Abbrecher/Unterbrecher Status der letzte in diesem Studiensemester ist
$prestd = new prestudent();
$prestd->getLastStatus($row->prestudent_id, $row->studiensemester_kurzbz);
if($prestd->status_kurzbz=='Unterbrecher' || $prestd->status_kurzbz=='Abbrecher')
{
//Studentlehrverbandeintrag aktualisieren
$student = new student();
if($student->studentlehrverband_exists($row->student_uid, $row->studiensemester_kurzbz))
$student->new = false;
else
{
$student->new = true;
$student->insertamum = date('Y-m-d H:i:s');
$student->insertvon = 'chkstudentlvb';
}
$student->uid = $row->student_uid;
$student->studiensemester_kurzbz=$row->studiensemester_kurzbz;
$student->studiengang_kz = $row->studiengang_kz;
$student->semester = '0';
$student->verband = ($prestd->status_kurzbz=='Unterbrecher'?'B':'A');
$student->gruppe = ' ';
$student->updateamum = date('Y-m-d H:i:s');
$student->updatevon = 'chkstudentlvb';
//Pruefen ob der Lehrverband exisitert, wenn nicht dann wird er angelegt
$lehrverband = new lehrverband();
if(!$lehrverband->exists($student->studiengang_kz, $student->semester, $student->verband, $student->gruppe))
{
$lehrverband->studiengang_kz = $student->studiengang_kz;
$lehrverband->semester = $student->semester;
$lehrverband->verband = $student->verband;
$lehrverband->gruppe = $student->gruppe;
$lehrverband->bezeichnung = ($student->verband=='A'?'Abbrecher':'Unterbrecher');
$lehrverband->save(true);
}
if($student->save_studentlehrverband())
{
$text.="Student $student->uid wurde im $row->studiensemester_kurzbz in die Gruppe $student->semester$student->verband verschoben\n";
$abunterbrecher_verschoben++;
}
else
{
$text.="Fehler biem Speichern des Lehrverbandeintrages bei $student->student_uid:".$student->errormsg."\n";
$abunterbrecher_verschoben_error++;
}
}
}
}
// *****
// * Unterschiedliche Gruppenzuteilungen in tbl_studentlehrverband - tbl_student korrigieren
// *****
$stsem = new studiensemester();
$stsem = $stsem->getNearest();
$text.="\n\nKorrigiere Inkonsitenzen in den Tabellen tbl_studentlehrverband, tbl_student (Verwendetes Studiensemester: $stsem)\n\n";
$qry = "SELECT
tbl_student.studiengang_kz as studiengang_kz_old,
tbl_student.semester as semester_old,
tbl_student.verband as verband_old,
tbl_student.gruppe as gruppe_old,
tbl_studentlehrverband.student_uid,
tbl_studentlehrverband.studiengang_kz,
tbl_studentlehrverband.semester,
tbl_studentlehrverband.verband,
tbl_studentlehrverband.gruppe
FROM
public.tbl_student JOIN public.tbl_studentlehrverband USING(student_uid)
WHERE
tbl_studentlehrverband.studiensemester_kurzbz=".$db->db_add_param($stsem)." AND
(
tbl_student.studiengang_kz<>tbl_studentlehrverband.studiengang_kz OR
tbl_student.semester<>tbl_studentlehrverband.semester OR
tbl_student.verband<>tbl_studentlehrverband.verband OR
tbl_student.gruppe<>tbl_studentlehrverband.gruppe
)";
if($result = $db->db_query($qry))
{
while($row = $db->db_fetch_object($result))
{
$qry = "UPDATE public.tbl_student SET studiengang_kz=".$db->db_add_param($row->studiengang_kz).", semester=".$db->db_add_param($row->semester).", verband=".$db->db_add_param($row->verband).", gruppe=".$db->db_add_param($row->gruppe)." WHERE student_uid=".$db->db_add_param($row->student_uid);
if($db->db_query($qry))
{
$text .= "Bei Student $row->student_uid wurde die Gruppenzuordnung von $row->studiengang_kz_old/$row->semester_old/$row->verband_old/$row->gruppe_old auf $row->studiengang_kz/$row->semester/$row->verband/$row->gruppe geaendert\n";
$anzahl_gruppenaenderung++;
}
else
{
$text.="Fehler beim Aendern der Gruppe: ".$db->db_last_error()."\n";
$anzahl_gruppenaenderung_fehler++;
}
}
}
else
$text.="Fehler bei Abfrage".$db->db_last_error();
$statistik .= "Prestudent_id wurde bei $anzahl_neue_prestudent_id Studenten korrigiert\n";
$statistik .= "$anzahl_fehler_prestudent Fehler sind bei der Korrektur der Prestudent_id aufgetreten\n";
$statistik .= "$abunterbrecher_verschoben Studenten wurden ins 0. Semester verschoben\n ";
$statistik .= "$abunterbrecher_verschoben_error Fehler sind beim Verschieben aufgetreten\n ";
$statistik .= "Bei $anzahl_gruppenaenderung Studenten wurde die Gruppenzuordnung korrigiert\n";
$statistik .= "$anzahl_gruppenaenderung_fehler Fehler sind bei der Korrektur der Gruppenzuordnung aufgetreten\n";
$statistik .= "\n\n";
$mail = new mail(MAIL_ADMIN, 'vilesci@'.DOMAIN, 'CHECK Studentlehrverband', $statistik.$text);
if($mail->send())
echo 'Mail an '.MAIL_ADMIN.' wurde versandt';
else
echo 'Fehler beim Versenden des Mails an '.MAIL_ADMIN;
echo nl2br("\n\n".$statistik.$text);
?>
<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>,
* Rudolf Hangl <rudolf.hangl@technikum-wien.at> and
* Gerald Simane-Sequens <gerald.simane-sequens@technikum-wien.at>
*/
// ************************************
// * Script zur Pruefung und Korrektur
// * moeglicher Inkonsistenzen
// *
// * - Studenten ohne Prestudent_id werden korrigiert
// * - Inkonsistenzen der Tabellen tbl_studentlehrverband, tbl_student werden korrigiert
// **********************************
require_once(dirname(__FILE__).'/../config/vilesci.config.inc.php');
require_once(dirname(__FILE__).'/../include/studiensemester.class.php');
require_once(dirname(__FILE__).'/../include/person.class.php');
require_once(dirname(__FILE__).'/../include/benutzer.class.php');
require_once(dirname(__FILE__).'/../include/student.class.php');
require_once(dirname(__FILE__).'/../include/prestudent.class.php');
require_once(dirname(__FILE__).'/../include/lehrverband.class.php');
require_once(dirname(__FILE__).'/../include/mail.class.php');
$db = new basis_db();
$anzahl_neue_prestudent_id=0;
$anzahl_fehler_prestudent=0;
$anzahl_gruppenaenderung=0;
$anzahl_gruppenaenderung_fehler=0;
$text='';
$statistik ='';
$abunterbrecher_verschoben_error=0;
$abunterbrecher_verschoben=0;
// ****
// * Bei Studenten mit fehlener Prestudent_id wird die passende id ermittelt und Eingetragen
// ****
$qry = "SELECT student_uid, studiengang_kz FROM public.tbl_student WHERE prestudent_id is null";
if($result = $db->db_query($qry))
{
$text.="Suche Studenten mit fehlender Prestudent_id ...\n\n";
while($row = $db->db_fetch_object($result))
{
$qry_id = "SELECT tbl_prestudent.prestudent_id FROM campus.vw_student JOIN public.tbl_prestudent USING(person_id) WHERE uid=".$db->db_add_param($row->student_uid)." AND tbl_prestudent.studiengang_kz=".$db->db_add_param($row->studiengang_kz);
if($result_id = $db->db_query($qry_id))
{
if($db->db_num_rows($result_id)==1)
{
if($row_id = $db->db_fetch_object($result_id))
{
$qry_upd = "UPDATE public.tbl_student SET prestudent_id=".$db->db_add_param($row_id->prestudent_id)." WHERE student_uid=".$db->db_add_param($row->student_uid);
if($db->db_query($qry_upd))
{
$text .= "Prestudent_id von $row->student_uid wurde auf $row_id->prestudent_id gesetzt\n";
$anzahl_neue_prestudent_id++;
}
}
else
{
$text .= "unbekannter Fehler\n";
$anzahl_fehler_prestudent++;
}
}
elseif($db->db_num_rows($result_id)>1)
{
$text .= "Student $row->student_uid hat keine Prestudent_id und MEHRERE passende Prestudenteintraege\n";
$anzahl_fehler_prestudent++;
}
elseif($db->db_num_rows($result_id)==0)
{
$text .= "Student $row->student_uid hat keine Prestudent_id und KEINE passenden Prestudenteintraege\n";
$anzahl_fehler_prestudent++;
}
}
else
{
$text.="Fehler bei Abfrage:".$db->db_last_error()."\n";
$anzahl_fehler_prestudent++;
}
}
}
// *****
// * Gruppenzuteilung von Abbrechern und Unterbrechern korrigieren.
// * Abbrecher werden in die Gruppe 0A verschoben
// * Unterbrecher in die Gruppe 0B
// *****
$text.="\n\nKorrigiere Gruppenzuteilungen von Ab-/Unterbrechern\n";
//Alle Ab-/Unterbrecher holen die nicht im 0. Semester sind
$qry = "SELECT
student_uid,
tbl_student.studiengang_kz,
tbl_prestudent.prestudent_id,
status_kurzbz,
studiensemester_kurzbz
FROM
public.tbl_student,
public.tbl_prestudent,
public.tbl_prestudentstatus
WHERE
tbl_student.prestudent_id=tbl_prestudent.prestudent_id AND
tbl_prestudent.prestudent_id=tbl_prestudentstatus.prestudent_id AND
(
tbl_prestudentstatus.status_kurzbz='Unterbrecher' OR
tbl_prestudentstatus.status_kurzbz='Abbrecher'
)
AND
EXISTS (SELECT
*
FROM
public.tbl_studentlehrverband
WHERE
prestudent_id=tbl_student.prestudent_id AND
studiensemester_kurzbz=tbl_prestudentstatus.studiensemester_kurzbz AND
semester<>0
)
";
if($result = $db->db_query($qry))
{
while($row = $db->db_fetch_object($result))
{
//Eintrag nur korrigieren wenn der Abbrecher/Unterbrecher Status der letzte in diesem Studiensemester ist
$prestd = new prestudent();
$prestd->getLastStatus($row->prestudent_id, $row->studiensemester_kurzbz);
if($prestd->status_kurzbz=='Unterbrecher' || $prestd->status_kurzbz=='Abbrecher')
{
//Studentlehrverbandeintrag aktualisieren
$student = new student();
if($student->studentlehrverband_exists($row->prestudent_id, $row->studiensemester_kurzbz))
$student->new = false;
else
{
$student->new = true;
$student->insertamum = date('Y-m-d H:i:s');
$student->insertvon = 'chkstudentlvb';
}
$student->uid = $row->student_uid;
$student->studiensemester_kurzbz=$row->studiensemester_kurzbz;
$student->studiengang_kz = $row->studiengang_kz;
$student->semester = '0';
$student->verband = ($prestd->status_kurzbz=='Unterbrecher'?'B':'A');
$student->gruppe = ' ';
$student->updateamum = date('Y-m-d H:i:s');
$student->updatevon = 'chkstudentlvb';
//Pruefen ob der Lehrverband exisitert, wenn nicht dann wird er angelegt
$lehrverband = new lehrverband();
if(!$lehrverband->exists($student->studiengang_kz, $student->semester, $student->verband, $student->gruppe))
{
$lehrverband->studiengang_kz = $student->studiengang_kz;
$lehrverband->semester = $student->semester;
$lehrverband->verband = $student->verband;
$lehrverband->gruppe = $student->gruppe;
$lehrverband->bezeichnung = ($student->verband=='A'?'Abbrecher':'Unterbrecher');
$lehrverband->save(true);
}
if($student->save_studentlehrverband())
{
$text.="Student $student->uid wurde im $row->studiensemester_kurzbz in die Gruppe $student->semester$student->verband verschoben\n";
$abunterbrecher_verschoben++;
}
else
{
$text.="Fehler biem Speichern des Lehrverbandeintrages bei $student->student_uid:".$student->errormsg."\n";
$abunterbrecher_verschoben_error++;
}
}
}
}
// *****
// * Unterschiedliche Gruppenzuteilungen in tbl_studentlehrverband - tbl_student korrigieren
// *****
$stsem = new studiensemester();
$stsem = $stsem->getNearest();
$text.="\n\nKorrigiere Inkonsitenzen in den Tabellen tbl_studentlehrverband, tbl_student (Verwendetes Studiensemester: $stsem)\n\n";
$qry = "SELECT
tbl_student.studiengang_kz as studiengang_kz_old,
tbl_student.semester as semester_old,
tbl_student.verband as verband_old,
tbl_student.gruppe as gruppe_old,
tbl_student.student_uid,
tbl_studentlehrverband.studiengang_kz,
tbl_studentlehrverband.semester,
tbl_studentlehrverband.verband,
tbl_studentlehrverband.gruppe
FROM
public.tbl_student JOIN public.tbl_studentlehrverband USING(prestudent_id)
WHERE
tbl_studentlehrverband.studiensemester_kurzbz=".$db->db_add_param($stsem)." AND
(
tbl_student.studiengang_kz<>tbl_studentlehrverband.studiengang_kz OR
tbl_student.semester<>tbl_studentlehrverband.semester OR
tbl_student.verband<>tbl_studentlehrverband.verband OR
tbl_student.gruppe<>tbl_studentlehrverband.gruppe
)";
if($result = $db->db_query($qry))
{
while($row = $db->db_fetch_object($result))
{
$qry = "UPDATE public.tbl_student SET studiengang_kz=".$db->db_add_param($row->studiengang_kz).", semester=".$db->db_add_param($row->semester).", verband=".$db->db_add_param($row->verband).", gruppe=".$db->db_add_param($row->gruppe)." WHERE student_uid=".$db->db_add_param($row->student_uid);
if($db->db_query($qry))
{
$text .= "Bei Student $row->student_uid wurde die Gruppenzuordnung von $row->studiengang_kz_old/$row->semester_old/$row->verband_old/$row->gruppe_old auf $row->studiengang_kz/$row->semester/$row->verband/$row->gruppe geaendert\n";
$anzahl_gruppenaenderung++;
}
else
{
$text.="Fehler beim Aendern der Gruppe: ".$db->db_last_error()."\n";
$anzahl_gruppenaenderung_fehler++;
}
}
}
else
$text.="Fehler bei Abfrage".$db->db_last_error();
$statistik .= "Prestudent_id wurde bei $anzahl_neue_prestudent_id Studenten korrigiert\n";
$statistik .= "$anzahl_fehler_prestudent Fehler sind bei der Korrektur der Prestudent_id aufgetreten\n";
$statistik .= "$abunterbrecher_verschoben Studenten wurden ins 0. Semester verschoben\n ";
$statistik .= "$abunterbrecher_verschoben_error Fehler sind beim Verschieben aufgetreten\n ";
$statistik .= "Bei $anzahl_gruppenaenderung Studenten wurde die Gruppenzuordnung korrigiert\n";
$statistik .= "$anzahl_gruppenaenderung_fehler Fehler sind bei der Korrektur der Gruppenzuordnung aufgetreten\n";
$statistik .= "\n\n";
$mail = new mail(MAIL_ADMIN, 'vilesci@'.DOMAIN, 'CHECK Studentlehrverband', $statistik.$text);
if($mail->send())
echo 'Mail an '.MAIL_ADMIN.' wurde versandt';
else
echo 'Fehler beim Versenden des Mails an '.MAIL_ADMIN;
echo nl2br("\n\n".$statistik.$text);
?>
+222 -2
View File
@@ -40,6 +40,7 @@ array
array("schema" => "campus", "name" => "tbl_studentuebung", "from" => "student_uid", "to" => "uid", "datatype" => "varchar(32)", "newTarget" => "tbl_benutzer", "newTargetSchema" => "public", "pickDataFrom" => "tbl_benutzer", "pickDataFromCol" => "uid" ),
array("schema" => "campus", "name" => "tbl_legesamtnote", "from" => "student_uid", "to" => "prestudent_id", "datatype" => "int", "newTarget" => "tbl_prestudent", "newTargetSchema" => "public", "pickDataFrom" => "tbl_student", "pickDataFromCol" => "student_uid"),
array("schema" => "lehre", "name" => "tbl_abschlusspruefung", "from" => "student_uid", "to" => "prestudent_id", "datatype" => "int", "newTarget" => "tbl_prestudent", "newTargetSchema" => "public", "pickDataFrom" => "tbl_student", "pickDataFromCol" => "student_uid"),
array("schema" => "public", "name" => "tbl_studentlehrverband", "from" => "student_uid", "to" => "prestudent_id", "datatype" => "int", "newTarget" => "tbl_prestudent", "newTargetSchema" => "public", "pickDataFrom" => "tbl_student", "pickDataFromCol" => "student_uid"),
);
if(!isset($_POST["action"]))
@@ -85,6 +86,7 @@ else if($_POST["action"] == "Starten")
//********************************DROP ALL VIEWS********************************
//bis.vw_bisio
if($result = @$db->db_query("SELECT 1 FROM bis.vw_bisio LIMIT 1;"))
{
if(!$db->db_query("DROP VIEW bis.vw_bisio"))
@@ -93,6 +95,33 @@ else if($_POST["action"] == "Starten")
}
}
//campus.vw_student_lehrveranstaltung
if($result = @$db->db_query("SELECT 1 FROM campus.vw_student_lehrveranstaltung LIMIT 1;"))
{
if(!$db->db_query("DROP VIEW campus.vw_student_lehrveranstaltung"))
{
echo "<p>Could not DROP view campus.vw_student_lehrveranstaltung: " . $create_view_qry."</p>";
}
}
//lehre.vw_stundenplandev_student_unr
if($result = @$db->db_query("SELECT 1 FROM lehre.vw_stundenplandev_student_unr LIMIT 1;"))
{
if(!$db->db_query("DROP VIEW lehre.vw_stundenplandev_student_unr"))
{
echo "<p>Could not DROP view lehre.vw_stundenplandev_student_unr: " . $create_view_qry."</p>";
}
}
//public.vw_gruppen
if($result = @$db->db_query("SELECT 1 FROM public.vw_gruppen LIMIT 1;"))
{
if(!$db->db_query("DROP VIEW public.vw_gruppen"))
{
echo "<p>Could not DROP view public.vw_gruppen: " . $create_view_qry."</p>";
}
}
//modify all tables
foreach($all_tables_to_update as $t)
@@ -103,9 +132,11 @@ else if($_POST["action"] == "Starten")
//********************************CREATE ALL VIEWS********************************
//bis.vw_bisio
if(!$result = @$db->db_query("SELECT 1 FROM bis.vw_bisio LIMIT 1;"))
{
//********************************CREATE ALL VIEWS AGAIN********************************
$create_view_qry = "
CREATE VIEW bis.vw_bisio AS SELECT tbl_prestudentstatus.studiensemester_kurzbz,
tbl_prestudentstatus.status_kurzbz,
@@ -171,10 +202,199 @@ else if($_POST["action"] == "Starten")
echo "<p>Could not CREATE view bis.vw_bisio: " . $create_view_qry."</p>";
}
}
}
//campus.vw_student_lehrveranstaltung
if(!$result = @$db->db_query("SELECT 1 FROM campus.vw_student_lehrveranstaltung LIMIT 1;"))
{
$create_view_qry = "
CREATE VIEW campus.vw_student_lehrveranstaltung AS
SELECT tbl_benutzergruppe.uid,
tbl_lehrveranstaltung.zeugnis,
tbl_lehrveranstaltung.sort,
tbl_lehrveranstaltung.lehrveranstaltung_id,
tbl_lehrveranstaltung.kurzbz,
tbl_lehrveranstaltung.bezeichnung,
tbl_lehrveranstaltung.bezeichnung_english,
tbl_lehrveranstaltung.studiengang_kz,
tbl_lehrveranstaltung.semester,
tbl_lehrveranstaltung.sprache,
tbl_lehrveranstaltung.ects,
tbl_lehrveranstaltung.semesterstunden,
tbl_lehrveranstaltung.anmerkung,
tbl_lehrveranstaltung.lehre,
tbl_lehrveranstaltung.lehreverzeichnis,
tbl_lehrveranstaltung.aktiv,
tbl_lehrveranstaltung.planfaktor,
tbl_lehrveranstaltung.planlektoren,
tbl_lehrveranstaltung.planpersonalkosten,
tbl_lehrveranstaltung.plankostenprolektor,
tbl_lehrveranstaltung.updateamum,
tbl_lehrveranstaltung.updatevon,
tbl_lehrveranstaltung.insertamum,
tbl_lehrveranstaltung.insertvon,
tbl_lehrveranstaltung.ext_id,
tbl_lehreinheit.lehreinheit_id,
tbl_lehreinheit.studiensemester_kurzbz,
tbl_lehreinheit.lehrfach_id,
tbl_lehreinheit.lehrform_kurzbz,
tbl_lehreinheit.stundenblockung,
tbl_lehreinheit.wochenrythmus,
tbl_lehreinheit.start_kw,
tbl_lehreinheit.raumtyp,
tbl_lehreinheit.raumtypalternativ,
tbl_lehrveranstaltung.lehrform_kurzbz AS lv_lehrform_kurzbz
FROM lehre.tbl_lehreinheitgruppe,
tbl_benutzergruppe,
lehre.tbl_lehreinheit,
lehre.tbl_lehrveranstaltung
WHERE tbl_lehreinheitgruppe.gruppe_kurzbz::text = tbl_benutzergruppe.gruppe_kurzbz::text AND tbl_lehrveranstaltung.lehrveranstaltung_id = tbl_lehreinheit.lehrveranstaltung_id AND tbl_lehreinheit.lehreinheit_id = tbl_lehreinheitgruppe.lehreinheit_id AND tbl_lehreinheit.studiensemester_kurzbz::text = tbl_benutzergruppe.studiensemester_kurzbz::text
UNION
SELECT tbl_studentlehrverband.prestudent_id AS prestudent_id,
tbl_lehrveranstaltung.zeugnis,
tbl_lehrveranstaltung.sort,
tbl_lehrveranstaltung.lehrveranstaltung_id,
tbl_lehrveranstaltung.kurzbz,
tbl_lehrveranstaltung.bezeichnung,
tbl_lehrveranstaltung.bezeichnung_english,
tbl_lehrveranstaltung.studiengang_kz,
tbl_lehrveranstaltung.semester,
tbl_lehrveranstaltung.sprache,
tbl_lehrveranstaltung.ects,
tbl_lehrveranstaltung.semesterstunden,
tbl_lehrveranstaltung.anmerkung,
tbl_lehrveranstaltung.lehre,
tbl_lehrveranstaltung.lehreverzeichnis,
tbl_lehrveranstaltung.aktiv,
tbl_lehrveranstaltung.planfaktor,
tbl_lehrveranstaltung.planlektoren,
tbl_lehrveranstaltung.planpersonalkosten,
tbl_lehrveranstaltung.plankostenprolektor,
tbl_lehrveranstaltung.updateamum,
tbl_lehrveranstaltung.updatevon,
tbl_lehrveranstaltung.insertamum,
tbl_lehrveranstaltung.insertvon,
tbl_lehrveranstaltung.ext_id,
tbl_lehreinheit.lehreinheit_id,
tbl_lehreinheit.studiensemester_kurzbz,
tbl_lehreinheit.lehrfach_id,
tbl_lehreinheit.lehrform_kurzbz,
tbl_lehreinheit.stundenblockung,
tbl_lehreinheit.wochenrythmus,
tbl_lehreinheit.start_kw,
tbl_lehreinheit.raumtyp,
tbl_lehreinheit.raumtypalternativ,
tbl_lehrveranstaltung.lehrform_kurzbz AS lv_lehrform_kurzbz
FROM lehre.tbl_lehreinheitgruppe,
tbl_studentlehrverband,
lehre.tbl_lehreinheit,
lehre.tbl_lehrveranstaltung
WHERE tbl_lehreinheit.lehreinheit_id = tbl_lehreinheitgruppe.lehreinheit_id AND tbl_lehreinheit.studiensemester_kurzbz::text = tbl_studentlehrverband.studiensemester_kurzbz::text AND tbl_lehrveranstaltung.lehrveranstaltung_id = tbl_lehreinheit.lehrveranstaltung_id AND tbl_studentlehrverband.studiengang_kz = tbl_lehreinheitgruppe.studiengang_kz AND tbl_studentlehrverband.semester = tbl_lehreinheitgruppe.semester AND (btrim(tbl_studentlehrverband.verband::text) = btrim(tbl_lehreinheitgruppe.verband::text) OR (tbl_lehreinheitgruppe.verband IS NULL OR btrim(tbl_lehreinheitgruppe.verband::text) = ''::text) AND tbl_lehreinheitgruppe.gruppe_kurzbz IS NULL) AND (btrim(tbl_studentlehrverband.gruppe::text) = btrim(tbl_lehreinheitgruppe.gruppe::text) OR (tbl_lehreinheitgruppe.gruppe IS NULL OR btrim(tbl_lehreinheitgruppe.gruppe::text) = ''::text) AND tbl_lehreinheitgruppe.gruppe_kurzbz IS NULL);
";
if(!$db->db_query($create_view_qry))
{
echo "<p>Could not CREATE view campus.vw_student_lehrveranstaltung: " . $create_view_qry."</p>";
}
}
//lehre.vw_stundenplandev_student_unr
if(!$result = @$db->db_query("SELECT 1 FROM lehre.vw_stundenplandev_student_unr LIMIT 1;"))
{
$create_view_qry = "
CREATE VIEW lehre.vw_stundenplandev_student_unr AS
SELECT sub_stpl_uid.unr,
sub_stpl_uid.datum,
sub_stpl_uid.stunde,
sub_stpl_uid.student_uid
FROM ( SELECT stpl.unr,
stpl.datum,
stpl.stunde,
tbl_benutzergruppe.uid AS student_uid
FROM tbl_stundenplandev stpl
JOIN tbl_benutzergruppe USING (gruppe_kurzbz)
WHERE tbl_benutzergruppe.studiensemester_kurzbz::text = ((( SELECT tbl_studiensemester.studiensemester_kurzbz
FROM tbl_studiensemester
WHERE stpl.datum <= tbl_studiensemester.ende AND stpl.datum >= tbl_studiensemester.start))::text)
GROUP BY stpl.unr, stpl.datum, stpl.stunde, tbl_benutzergruppe.uid
UNION
SELECT stpl.unr,
stpl.datum,
stpl.stunde,
tbl_studentlehrverband.student_uid
FROM tbl_stundenplandev stpl
JOIN tbl_studentlehrverband ON stpl.gruppe_kurzbz IS NULL AND stpl.studiengang_kz = tbl_studentlehrverband.studiengang_kz AND stpl.semester = tbl_studentlehrverband.semester AND (stpl.verband = tbl_studentlehrverband.verband OR stpl.verband = ' '::bpchar AND stpl.verband <> tbl_studentlehrverband.verband) AND (stpl.gruppe = tbl_studentlehrverband.gruppe OR stpl.gruppe = ' '::bpchar AND stpl.gruppe <> tbl_studentlehrverband.gruppe)
WHERE tbl_studentlehrverband.studiensemester_kurzbz::text = ((( SELECT tbl_studiensemester.studiensemester_kurzbz
FROM tbl_studiensemester
WHERE stpl.datum <= tbl_studiensemester.ende AND stpl.datum >= tbl_studiensemester.start))::text)
GROUP BY stpl.unr, stpl.datum, stpl.stunde, tbl_studentlehrverband.student_uid) sub_stpl_uid
GROUP BY sub_stpl_uid.unr, sub_stpl_uid.datum, sub_stpl_uid.stunde, sub_stpl_uid.student_uid;
";
if(!$db->db_query($create_view_qry))
{
echo "<p>Could not CREATE view lehre.vw_stundenplandev_student_unr: " . $create_view_qry."</p>";
}
}
//public.vw_gruppen
if(!$result = @$db->db_query("SELECT 1 FROM public.vw_gruppen LIMIT 1;"))
{
$create_view_qry = "
CREATE VIEW public.vw_gruppen AS
SELECT tbl_gruppe.gid,
tbl_gruppe.gruppe_kurzbz,
tbl_benutzergruppe.uid,
tbl_gruppe.mailgrp,
tbl_gruppe.beschreibung,
tbl_gruppe.studiengang_kz,
tbl_gruppe.semester,
tbl_benutzergruppe.studiensemester_kurzbz,
NULL::bpchar AS verband,
NULL::bpchar AS gruppe
FROM tbl_gruppe
LEFT JOIN tbl_benutzergruppe USING (gruppe_kurzbz)
UNION
SELECT tbl_lehrverband.gid,
upper(btrim((((( SELECT tbl_studiengang.typ::text || tbl_studiengang.kurzbz::text
FROM tbl_studiengang
WHERE tbl_studiengang.studiengang_kz = tbl_lehrverband.studiengang_kz)) || tbl_lehrverband.semester) || tbl_lehrverband.verband::text) || tbl_lehrverband.gruppe::text)) AS gruppe_kurzbz,
tbl_studentlehrverband.student_uid AS uid,
true AS mailgrp,
tbl_lehrverband.bezeichnung AS beschreibung,
tbl_lehrverband.studiengang_kz,
tbl_lehrverband.semester,
tbl_studentlehrverband.studiensemester_kurzbz,
tbl_lehrverband.verband,
tbl_lehrverband.gruppe
FROM tbl_lehrverband
LEFT JOIN tbl_studentlehrverband USING (studiengang_kz, semester)
WHERE (tbl_lehrverband.verband = tbl_studentlehrverband.verband OR tbl_lehrverband.verband IS NULL OR btrim(tbl_lehrverband.verband::text) = ''::text OR tbl_studentlehrverband.verband IS NULL) AND (tbl_lehrverband.gruppe = tbl_studentlehrverband.gruppe OR tbl_lehrverband.gruppe IS NULL OR btrim(tbl_lehrverband.gruppe::text) = ''::text OR tbl_studentlehrverband.gruppe IS NULL);
";
if(!$db->db_query($create_view_qry))
{
echo "<p>Could not CREATE view public.vw_gruppen: " . $create_view_qry."</p>";
}
}
}
echo '</body></html>';
+4 -3
View File
@@ -15,7 +15,8 @@
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
Andreas Moik <moik@technikum-wien.at>.
*/
/*
* Prueft die Daten in der Datenbank auf konsistenz und gibt Hinweise
@@ -433,7 +434,7 @@ $qry = "SELECT
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)";
NOT EXISTS(SELECT 1 FROM public.tbl_studentlehrverband WHERE prestudent_id=tbl_student.prestudent_id)";
if($result = $db->db_query($qry))
{
@@ -615,7 +616,7 @@ $qry = "SELECT
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)";
AND NOT EXISTS(SELECT 1 FROM lehre.tbl_abschlusspruefung WHERE prestudent_id=tbl_student.prestudent_id)";
if($result = $db->db_query($qry))
{
+3 -3
View File
@@ -128,11 +128,11 @@ function getStudentsFromGroup($studiengang_kz, $semester, $verband, $gruppe, $gr
if($gruppe_kurzbz=='')
{
$qry = "SELECT
distinct student_uid
distinct prestudent_id
FROM
public.tbl_studentlehrverband
LEFT JOIN
public.tbl_benutzer ON (uid=student_uid)
JOIN public.tbl_prestudent USING(prestudent_id)
LEFT JOIN public.tbl_benutzer USING(person_id)
WHERE
tbl_benutzer.aktiv=true AND
studiensemester_kurzbz=".$db->db_add_param($studiensemester_kurzbz)." AND