From cac1aae2351eb191f4f23242dbc45189e46ebee4 Mon Sep 17 00:00:00 2001 From: Andreas Moik Date: Thu, 18 Aug 2016 11:20:02 +0200 Subject: [PATCH] implemented cascading deletion of persons/employees/students --- vilesci/personen/suche.php | 1312 +++++++++++++++++++++++++++++++++++- 1 file changed, 1307 insertions(+), 5 deletions(-) diff --git a/vilesci/personen/suche.php b/vilesci/personen/suche.php index 35500dd50..a60c90676 100644 --- a/vilesci/personen/suche.php +++ b/vilesci/personen/suche.php @@ -29,6 +29,7 @@ require_once('../../include/person.class.php'); require_once('../../include/benutzer.class.php'); require_once('../../include/student.class.php'); require_once('../../include/prestudent.class.php'); +require_once('../../include/mitarbeiter.class.php'); require_once('../../include/datum.class.php'); require_once('../../include/authentication.class.php'); require_once('../../include/benutzerberechtigung.class.php'); @@ -47,6 +48,9 @@ if(isset($_GET['searchstr'])) else $searchstr = ''; +$msgString = ""; +$errString = ""; + if(isset($_GET['filter'])) $filter = $_GET['filter']; else @@ -54,12 +58,129 @@ else $datum_obj = new datum(); +$admin = false; +if($rechte->isBerechtigt('admin')) + $admin = true; + +if($admin) +{ + if(isset($_REQUEST["delete"])) + { + if(isset($_REQUEST["mitarbeiter"])) + { + $mita = new mitarbeiter(); + $mita->load($_REQUEST["mitarbeiter"]); + + if(!casDeleteMitarbeiter($db, $_REQUEST["mitarbeiter"])) + $errString = 'Fehler beim Loeschen des Mitarbeiter-Datensatzes'; + else + { + $msgString = ($mita->geschlecht == "w" ? "Mitarbeiterin '" : "Mitarbeiter '") . $mita->vorname . " " . $mita->nachname . "' wurde erfolgreich geloescht"; + } + } + else if(isset($_REQUEST["prestudent"])) + { + $pres = new prestudent(); + $pres->load($_REQUEST["prestudent"]); + + if(!casDeletePrestudent($db, $_REQUEST["prestudent"])) + $errString = 'Fehler beim Loeschen des Prestudent-Datensatzes'; + else + { + $msgString = ($pres->geschlecht == "w" ? "Studentin '" : "Student '") . $pres->vorname . " " . $pres->nachname . "' wurde erfolgreich geloescht"; + } + } + else if(isset($_REQUEST["person"])) + { + $pers = new person(); + $pers->load($_REQUEST["person"]); + + if(!casDeletePerson($db, $_REQUEST["person"])) + $errString = 'Fehler beim Loeschen des Person-Datensatzes'; + else + { + $msgString = "Person '" . $pers->vorname . " " . $pers->nachname . "' wurde erfolgreich geloescht"; + } + } + } +} + echo ' Suchergebnis + @@ -68,6 +189,7 @@ echo ' $stg = new studiengang(); $stg->getAll('typ, kurzbz', false); + $stg_arr = array(); foreach ($stg->result as $row) $stg_arr[$row->studiengang_kz]=$row->kuerzel; @@ -80,6 +202,9 @@ echo ' '; +echo "

$errString

"; +echo "

$msgString

"; + if($searchstr!='') { $qry = "SELECT @@ -112,6 +237,7 @@ if($searchstr!='') echo "Benutzer"; echo "Mitarbeiter"; echo "Student"; + if($admin){echo "";} echo ''; echo ''; echo "Nachname"; @@ -131,6 +257,7 @@ if($searchstr!='') echo "Gruppe"; echo "updateAmUm"; echo "updateVon"; + if($admin){echo "";} echo ''; while($row = $db->db_fetch_object($result)) @@ -144,7 +271,7 @@ if($searchstr!='') echo "$row_person->nachname"; echo "$row_person->vorname"; echo "".($row_person->gebdatum!=''?$datum_obj->convertISODate($row_person->gebdatum):'').""; - echo "".($row_person->updateamum!=''?date('d.m.Y H:i:s', $datum_obj->mktime_fromtimestamp($row_person->updateamum)):'').""; + echo "".($row_person->updateamum!=''?date('d.m.Y H:i:s', $datum_obj->mktime_FROMtimestamp($row_person->updateamum)):'').""; echo "$row_person->updatevon"; echo ""; echo ""; @@ -158,6 +285,7 @@ if($searchstr!='') echo ""; echo ""; echo ""; + if($admin){echo 'Löschen';} echo ''; $content = ''; @@ -189,15 +317,18 @@ if($searchstr!='') else $content.="Nein"; $content.= ""; - //$content.= "".($row_mitarbeiter->bnupdateamum!=''?date('d.m.Y H:i:s', $datum_obj->mktime_fromtimestamp($row_mitarbeiter->bnupdateamum)):'').""; + //$content.= "".($row_mitarbeiter->bnupdateamum!=''?date('d.m.Y H:i:s', $datum_obj->mktime_FROMtimestamp($row_mitarbeiter->bnupdateamum)):'').""; //$content.= "$row_mitarbeiter->bnupdatevon"; $content.= "$row_mitarbeiter->telefonklappe"; $content.= "$row_mitarbeiter->ort_kurzbz"; - $content.= "".($row_mitarbeiter->mupdateamum!=''?date('d.m.Y H:i:s', $datum_obj->mktime_fromtimestamp($row_mitarbeiter->mupdateamum)):'').""; + $content.= "".($row_mitarbeiter->mupdateamum!=''?date('d.m.Y H:i:s', $datum_obj->mktime_FROMtimestamp($row_mitarbeiter->mupdateamum)):'').""; $content.= "$row_mitarbeiter->mupdatevon"; $content.= ""; $content.= ""; + $content.= ""; + $content.= ""; + if($admin){$content.= 'Löschen';} $content.= ''; } } @@ -233,7 +364,7 @@ if($searchstr!='') else $content.="Nein"; $content.= ""; - //$content.= "".($row_student->bnupdateamum!=''?date('d.m.Y H:i:s', $datum_obj->mktime_fromtimestamp($row_student->bnupdateamum)):'').""; + //$content.= "".($row_student->bnupdateamum!=''?date('d.m.Y H:i:s', $datum_obj->mktime_FROMtimestamp($row_student->bnupdateamum)):'').""; //$content.= "$row_student->bnupdatevon"; $content.= ""; @@ -242,8 +373,9 @@ if($searchstr!='') $content.= ""; $content.= "".$stg_arr[$row_student->studiengang_kz].""; $content.= "$row_student->semester$row_student->verband$row_student->gruppe"; - $content.= "".($row_student->supdateamum!=''?date('d.m.Y H:i:s', $datum_obj->mktime_fromtimestamp($row_student->supdateamum)):'').""; + $content.= "".($row_student->supdateamum!=''?date('d.m.Y H:i:s', $datum_obj->mktime_FROMtimestamp($row_student->supdateamum)):'').""; $content.= "$row_student->supdatevon"; + if($admin){$content.= 'Löschen';} $content.= ''; } } @@ -257,6 +389,1176 @@ if($searchstr!='') } } + +/* + * Cascading delete functions + */ +function casDeleteMitarbeiter($db, $mitarbeiter_uid, $trans=true) +{ + /* + * Init + */ + if($trans){$db->db_query("BEGIN;");} + $error = false; + + $projektphase_ids = array(); + + // get all projektphase_ids, where the employee is involved with + if(!$error) + { + $qry = ' + SELECT projektphase_id FROM fue.tbl_projektphase + WHERE ressource_id IN (SELECT ressource_id FROM fue.tbl_ressource WHERE mitarbeiter_uid='.$db->db_add_param($mitarbeiter_uid).')'; + $res = $db->db_query($qry); + if(!$res) + { + $error = true; + } + else + { + while($row = $db->db_fetch_object($res)) + { + // and get FROM this projektphase_ids all other projekphase_ids recursively + $add = recursiveGetAllProjektphase_id($db, $row->projektphase_id); + if($add) + $projektphase_ids = array_merge($projektphase_ids, $add); + } + } + } + + if(!$error && !empty($projektphase_ids)) + { + $qry = ' + DELETE FROM fue.tbl_projekt_ressource + WHERE projektphase_id IN ('.$db->implode4SQL($projektphase_ids).')'; + if(!$db->db_query($qry)) + { + $error = true; + } + } + + if(!$error) + { + $qry = ' + DELETE FROM fue.tbl_projekttask + WHERE ressource_id IN (SELECT ressource_id FROM fue.tbl_ressource WHERE mitarbeiter_uid='.$db->db_add_param($mitarbeiter_uid).')'; + if(!$db->db_query($qry)) + { + $error = true; + } + } + + if(!$error && !empty($projektphase_ids)) + { + $qry = ' + DELETE FROM fue.tbl_projekt_dokument + WHERE projektphase_id IN ('.$db->implode4SQL($projektphase_ids).')'; + if(!$db->db_query($qry)) + { + $error = true; + } + } + + if(!$error && !empty($projektphase_ids)) + { + $qry = ' + DELETE FROM fue.tbl_projekttask + WHERE projektphase_id IN ('.$db->implode4SQL($projektphase_ids).')'; + if(!$db->db_query($qry)) + { + $error = true; + } + } + + if(!$error && !empty($projektphase_ids)) + { + $qry = ' + DELETE FROM fue.tbl_projektphase + WHERE projektphase_id IN ('.$db->implode4SQL($projektphase_ids).')'; + if(!$db->db_query($qry)) + { + $error = true; + } + } + + if(!$error) + { + $qry = ' + DELETE FROM addon.tbl_lvevaluierung_selbstevaluierung + WHERE lvevaluierung_id IN (SELECT lvevaluierung_id FROM addon.tbl_lvevaluierung_antwort + WHERE lvevaluierung_code_id IN (SELECT lvevaluierung_code_id FROM addon.tbl_lvevaluierung_code + WHERE lvevaluierung_id IN (SELECT lvevaluierung_id FROM addon.tbl_lvevaluierung + WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM campus.tbl_studentbeispiel + WHERE beispiel_id IN (SELECT beispiel_id FROM campus.tbl_beispiel + WHERE uebung_id IN (SELECT uebung_id FROM campus.tbl_uebung + WHERE lehreinheit_id IN (SELECT lehreinheit_id FROM lehre.tbl_lehreinheit + WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM lehre.tbl_lehrveranstaltung + WHERE koordinator='.$db->db_add_param($mitarbeiter_uid).'))))))))'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM addon.tbl_lvevaluierung_antwort + WHERE lvevaluierung_code_id IN (SELECT lvevaluierung_code_id FROM addon.tbl_lvevaluierung_code + WHERE lvevaluierung_id IN (SELECT lvevaluierung_id FROM addon.tbl_lvevaluierung + WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM campus.tbl_studentbeispiel + WHERE beispiel_id IN (SELECT beispiel_id FROM campus.tbl_beispiel + WHERE uebung_id IN (SELECT uebung_id FROM campus.tbl_uebung + WHERE lehreinheit_id IN (SELECT lehreinheit_id FROM lehre.tbl_lehreinheit + WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM lehre.tbl_lehrveranstaltung + WHERE koordinator='.$db->db_add_param($mitarbeiter_uid).')))))))'; + if(!$db->db_query($qry)) + $error = true; + } + + + if(!$error) + { + $qry = ' + DELETE FROM addon.tbl_lvevaluierung_code + WHERE lvevaluierung_id IN (SELECT lvevaluierung_id FROM addon.tbl_lvevaluierung + WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM campus.tbl_studentbeispiel + WHERE beispiel_id IN (SELECT beispiel_id FROM campus.tbl_beispiel + WHERE uebung_id IN (SELECT uebung_id FROM campus.tbl_uebung + WHERE lehreinheit_id IN (SELECT lehreinheit_id FROM lehre.tbl_lehreinheit + WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM lehre.tbl_lehrveranstaltung + WHERE koordinator='.$db->db_add_param($mitarbeiter_uid).'))))))'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM addon.tbl_lvevaluierung + WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM campus.tbl_studentbeispiel + WHERE beispiel_id IN (SELECT beispiel_id FROM campus.tbl_beispiel + WHERE uebung_id IN (SELECT uebung_id FROM campus.tbl_uebung + WHERE lehreinheit_id IN (SELECT lehreinheit_id FROM lehre.tbl_lehreinheit + WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM lehre.tbl_lehrveranstaltung + WHERE koordinator='.$db->db_add_param($mitarbeiter_uid).')))))'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_studentbeispiel + WHERE beispiel_id IN (SELECT beispiel_id FROM campus.tbl_beispiel + WHERE uebung_id IN (SELECT uebung_id FROM campus.tbl_uebung + WHERE lehreinheit_id IN (SELECT lehreinheit_id FROM lehre.tbl_lehreinheit + WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM lehre.tbl_lehrveranstaltung + WHERE koordinator='.$db->db_add_param($mitarbeiter_uid).'))))'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_beispiel + WHERE uebung_id IN (SELECT uebung_id FROM campus.tbl_uebung + WHERE lehreinheit_id IN (SELECT lehreinheit_id FROM lehre.tbl_lehreinheit + WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM lehre.tbl_lehrveranstaltung + WHERE koordinator='.$db->db_add_param($mitarbeiter_uid).')))'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_studentuebung + WHERE uebung_id IN (SELECT uebung_id FROM campus.tbl_uebung + WHERE lehreinheit_id IN (SELECT lehreinheit_id FROM lehre.tbl_lehreinheit + WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM lehre.tbl_lehrveranstaltung + WHERE koordinator='.$db->db_add_param($mitarbeiter_uid).')))'; + if(!$db->db_query($qry)) + { + $error = true; + } + } + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_uebung + WHERE lehreinheit_id IN (SELECT lehreinheit_id FROM lehre.tbl_lehreinheit + WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM lehre.tbl_lehrveranstaltung + WHERE koordinator='.$db->db_add_param($mitarbeiter_uid).'))'; + if(!$db->db_query($qry)) + { + $error = true; + } + } + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_legesamtnote + WHERE lehreinheit_id IN (SELECT lehreinheit_id FROM lehre.tbl_lehreinheit + WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM lehre.tbl_lehrveranstaltung + WHERE koordinator='.$db->db_add_param($mitarbeiter_uid).'))'; + if(!$db->db_query($qry)) + { + $error = true; + } + } + + if(!$error) + { + $qry = ' + DELETE FROM lehre.tbl_moodle + WHERE lehreinheit_id IN (SELECT lehreinheit_id FROM lehre.tbl_lehreinheit + WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM lehre.tbl_lehrveranstaltung + WHERE koordinator='.$db->db_add_param($mitarbeiter_uid).'))'; + if(!$db->db_query($qry)) + { + $error = true; + } + } + + if(!$error) + { + $qry = ' + DELETE FROM public.tbl_preincoming_lehrveranstaltung + WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM lehre.tbl_lehrveranstaltung + WHERE koordinator='.$db->db_add_param($mitarbeiter_uid).')'; + if(!$db->db_query($qry)) + { + $error = true; + } + } + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_benutzerlvstudiensemester + WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM lehre.tbl_lehrveranstaltung + WHERE koordinator='.$db->db_add_param($mitarbeiter_uid).')'; + if(!$db->db_query($qry)) + { + $error = true; + } + } + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_feedback + WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM lehre.tbl_lehrveranstaltung + WHERE koordinator='.$db->db_add_param($mitarbeiter_uid).')'; + if(!$db->db_query($qry)) + { + $error = true; + } + } + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_feedback + WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM lehre.tbl_lehrveranstaltung + WHERE koordinator='.$db->db_add_param($mitarbeiter_uid).')'; + if(!$db->db_query($qry)) + { + $error = true; + } + } + + if(!$error) + { + $qry = ' + DELETE FROM lehre.tbl_moodle + WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM lehre.tbl_lehrveranstaltung + WHERE koordinator='.$db->db_add_param($mitarbeiter_uid).')'; + if(!$db->db_query($qry)) + { + $error = true; + } + } + + if(!$error) + { + $qry = ' + DELETE FROM lehre.tbl_projektbetreuer + WHERE projektarbeit_id IN (SELECT projektarbeit_id FROM lehre.tbl_projektarbeit + WHERE lehreinheit_id IN (SELECT lehreinheit_id FROM lehre.tbl_lehreinheit + WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM lehre.tbl_lehrveranstaltung + WHERE koordinator='.$db->db_add_param($mitarbeiter_uid).')))'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM bis.tbl_bisfunktion + WHERE bisverwendung_id IN (SELECT bisverwendung_id FROM bis.tbl_bisverwendung WHERE mitarbeiter_uid='.$db->db_add_param($mitarbeiter_uid).')'; + if(!$db->db_query($qry)) + { + $error = true; + } + } + + if(!$error) + { + $qry = ' + DELETE FROM fue.tbl_projektphase + WHERE ressource_id IN (SELECT ressource_id FROM fue.tbl_ressource WHERE mitarbeiter_uid='.$db->db_add_param($mitarbeiter_uid).')'; + if(!$db->db_query($qry)) + { + $error = true; + } + } + + if(!$error) + { + $qry = ' + DELETE FROM fue.tbl_projekt_ressource + WHERE ressource_id IN (SELECT ressource_id FROM fue.tbl_ressource WHERE mitarbeiter_uid='.$db->db_add_param($mitarbeiter_uid).')'; + if(!$db->db_query($qry)) + { + $error = true; + } + } + + if(!$error) + { + $qry = ' + DELETE FROM lehre.tbl_stundenplan + WHERE lehreinheit_id IN (SELECT lehreinheit_id FROM lehre.tbl_lehreinheit + WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM lehre.tbl_lehrveranstaltung + WHERE koordinator='.$db->db_add_param($mitarbeiter_uid).'))'; + if(!$db->db_query($qry)) + { + $error = true; + } + } + + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_paabgabe + WHERE projektarbeit_id IN (SELECT projektarbeit_id FROM lehre.tbl_projektarbeit + WHERE lehreinheit_id IN (SELECT lehreinheit_id FROM lehre.tbl_lehreinheit + WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM lehre.tbl_lehrveranstaltung + WHERE koordinator='.$db->db_add_param($mitarbeiter_uid).')))'; + if(!$db->db_query($qry)) + { + $error = true; + } + } + + if(!$error) + { + $qry = ' + DELETE FROM lehre.tbl_projektarbeit + WHERE lehreinheit_id IN (SELECT lehreinheit_id FROM lehre.tbl_lehreinheit WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM lehre.tbl_lehrveranstaltung WHERE koordinator='.$db->db_add_param($mitarbeiter_uid).'))'; + if(!$db->db_query($qry)) + { + $error = true; + } + } + + if(!$error) + { + $qry = ' + DELETE FROM lehre.tbl_pruefung + WHERE lehreinheit_id IN (SELECT lehreinheit_id FROM lehre.tbl_lehreinheit WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM lehre.tbl_lehrveranstaltung WHERE koordinator='.$db->db_add_param($mitarbeiter_uid).'))'; + if(!$db->db_query($qry)) + { + $error = true; + } + } + + if(!$error) + { + $qry = ' + DELETE FROM lehre.tbl_stundenplandev + WHERE lehreinheit_id IN (SELECT lehreinheit_id FROM lehre.tbl_lehreinheit WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM lehre.tbl_lehrveranstaltung WHERE koordinator='.$db->db_add_param($mitarbeiter_uid).'))'; + if(!$db->db_query($qry)) + { + $error = true; + } + } + + if(!$error) + { + $qry = ' + DELETE FROM lehre.tbl_studienplan_lehrveranstaltung + WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM lehre.tbl_lehrveranstaltung WHERE koordinator='.$db->db_add_param($mitarbeiter_uid).')'; + if(!$db->db_query($qry)) + { + $error = true; + } + } + + if(!$error) + { + $qry = ' + DELETE FROM lehre.tbl_zeugnisnote + WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM lehre.tbl_lehrveranstaltung WHERE koordinator='.$db->db_add_param($mitarbeiter_uid).')'; + if(!$db->db_query($qry)) + { + $error = true; + } + } + + if(!$error) + { + $qry = ' + DELETE FROM lehre.tbl_lehreinheit + WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM lehre.tbl_lehrveranstaltung WHERE koordinator='.$db->db_add_param($mitarbeiter_uid).')'; + if(!$db->db_query($qry)) + { + $error = true; + } + } + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_lvgesamtnote + WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM lehre.tbl_lehrveranstaltung WHERE koordinator='.$db->db_add_param($mitarbeiter_uid).')'; + if(!$db->db_query($qry)) + { + $error = true; + } + } + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_lvinfo + WHERE lehrveranstaltung_id IN (SELECT lehrveranstaltung_id FROM lehre.tbl_lehrveranstaltung WHERE koordinator='.$db->db_add_param($mitarbeiter_uid).')'; + if(!$db->db_query($qry)) + { + $error = true; + } + } + + if(!$error) + { + if(!deleteWithFirstlevelDeps($db, 'mitarbeiter_uid', 'public', 'tbl_mitarbeiter', $mitarbeiter_uid, FHC_STRING)) + { + $error = true; + } + } + + /* + * Delete the tbl_mitarbeiter entry + */ + $qry = 'DELETE FROM public.tbl_mitarbeiter where mitarbeiter_uid='.$db->db_add_param($mitarbeiter_uid); + if(!$error && !$db->db_query($qry)) + $error = true; + + /* + * Rollback if an + * error occoured + */ + if(!$error) + { + + if($trans){$db->db_query("COMMIT;");} + return true; + } + + + if($trans){$db->db_query("ROLLBACK;");} + return false; +} + + + + + + +function casDeletePrestudent($db, $prestudent_id, $trans=true) +{ + /* + * Init + */ + if($trans){$db->db_query("BEGIN;");} + $error = false; + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_studentbeispiel + WHERE student_uid IN (SELECT student_uid FROM public.tbl_student WHERE prestudent_id='.$db->db_add_param($prestudent_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM bis.tbl_bisio + WHERE student_uid IN (SELECT student_uid FROM public.tbl_student WHERE prestudent_id='.$db->db_add_param($prestudent_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_legesamtnote + WHERE student_uid IN (SELECT student_uid FROM public.tbl_student WHERE prestudent_id='.$db->db_add_param($prestudent_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_lvgesamtnote + WHERE student_uid IN (SELECT student_uid FROM public.tbl_student WHERE prestudent_id='.$db->db_add_param($prestudent_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_studentuebung + WHERE student_uid IN (SELECT student_uid FROM public.tbl_student WHERE prestudent_id='.$db->db_add_param($prestudent_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM lehre.tbl_abschlusspruefung + WHERE student_uid IN (SELECT student_uid FROM public.tbl_student WHERE prestudent_id='.$db->db_add_param($prestudent_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM lehre.tbl_projektbetreuer + WHERE projektarbeit_id IN (SELECT projektarbeit_id FROM lehre.tbl_projektarbeit WHERE student_uid IN (SELECT student_uid FROM tbl_student WHERE prestudent_id='.$db->db_add_param($prestudent_id, FHC_INTEGER).'))'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_paabgabe + WHERE projektarbeit_id IN (SELECT projektarbeit_id FROM lehre.tbl_projektarbeit WHERE student_uid IN (SELECT student_uid FROM tbl_student WHERE prestudent_id='.$db->db_add_param($prestudent_id, FHC_INTEGER).'))'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM lehre.tbl_projektarbeit + WHERE student_uid IN (SELECT student_uid FROM public.tbl_student WHERE prestudent_id='.$db->db_add_param($prestudent_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM lehre.tbl_zeugnisnote + WHERE student_uid IN (SELECT student_uid FROM public.tbl_student WHERE prestudent_id='.$db->db_add_param($prestudent_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM public.tbl_studentlehrverband + WHERE student_uid IN (SELECT student_uid FROM public.tbl_student WHERE prestudent_id='.$db->db_add_param($prestudent_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM lehre.tbl_pruefung + WHERE student_uid IN (SELECT student_uid FROM public.tbl_student WHERE prestudent_id='.$db->db_add_param($prestudent_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM fue.tbl_projekt_ressource + WHERE ressource_id IN(SELECT ressource_id FROM fue.tbl_ressource + WHERE student_uid IN (SELECT student_uid FROM public.tbl_student WHERE prestudent_id='.$db->db_add_param($prestudent_id, FHC_INTEGER).'))'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM fue.tbl_ressource + WHERE student_uid IN (SELECT student_uid FROM public.tbl_student WHERE prestudent_id='.$db->db_add_param($prestudent_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + if(!deleteWithFirstlevelDeps($db, 'prestudent_id', 'public', 'tbl_prestudent', $prestudent_id, FHC_INTEGER)) + { + $error = true; + } + } + + /* + * Delete the tbl_student entry + */ + $qry = 'DELETE FROM public.tbl_student where prestudent_id='.$db->db_add_param($prestudent_id, FHC_INTEGER); + if(!$error && !$db->db_query($qry)) + $error = true; + + /* + * Delete the tbl_prestudent entry + */ + $qry = 'DELETE FROM public.tbl_prestudent where prestudent_id='.$db->db_add_param($prestudent_id, FHC_INTEGER); + if(!$error && !$db->db_query($qry)) + $error = true; + + /* + * Rollback if an + * error occoured + */ + if(!$error) + { + + if($trans){$db->db_query("COMMIT;");} + return true; + } + + + if($trans){$db->db_query("ROLLBACK;");} + return false; +} + + + + + + +function casDeletePerson($db, $person_id, $trans=true) +{ + /* + * Init + */ + if($trans){$db->db_query("BEGIN;");} + $error = false; + + if(!$error) + { + $qry = ' + DELETE FROM public.tbl_prestudentstatus + WHERE prestudent_id IN (SELECT prestudent_id FROM public.tbl_prestudent WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM public.tbl_dokumentprestudent + WHERE prestudent_id IN (SELECT prestudent_id FROM public.tbl_prestudent WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_feedback + WHERE uid IN (SELECT uid FROM public.tbl_benutzer WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM lehre.tbl_studienplan_lehrveranstaltung + WHERE koordinator IN (SELECT uid FROM public.tbl_benutzer WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM public.tbl_akte + WHERE uid IN (SELECT uid FROM public.tbl_benutzer WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM addon.tbl_casetime_gruppen + WHERE uid IN (SELECT uid FROM public.tbl_benutzer WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM addon.tbl_casetime_zeitaufzeichnung + WHERE uid IN (SELECT uid FROM public.tbl_benutzer WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM addon.tbl_casetime_zeitsperre + WHERE uid IN (SELECT uid FROM public.tbl_benutzer WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_zeitaufzeichnung + WHERE uid IN (SELECT uid FROM public.tbl_benutzer WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_contentlog + WHERE uid IN (SELECT uid FROM public.tbl_benutzer WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_coodle_ressource_termin + WHERE coodle_ressource_id IN (SELECT coodle_ressource_id FROM campus.tbl_coodle_ressource + WHERE coodle_id IN (SELECT coodle_id FROM campus.tbl_coodle + WHERE ersteller_uid IN(SELECT uid FROM public.tbl_benutzer + WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).' + ) + ) + )'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_coodle_ressource + WHERE coodle_id IN (SELECT coodle_id FROM campus.tbl_coodle WHERE ersteller_uid IN(SELECT uid FROM public.tbl_benutzer WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).'))'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_coodle_termin + WHERE coodle_id IN (SELECT coodle_id FROM campus.tbl_coodle + WHERE ersteller_uid IN(SELECT uid FROM public.tbl_benutzer + WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).'))'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_coodle + WHERE ersteller_uid IN (SELECT uid FROM public.tbl_benutzer WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_coodle_ressource_termin + WHERE coodle_ressource_id IN (SELECT coodle_ressource_id FROM campus.tbl_coodle_ressource + WHERE uid IN (SELECT uid FROM public.tbl_benutzer + WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).' + ) + )'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_coodle_ressource + WHERE uid IN (SELECT uid FROM public.tbl_benutzer WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_zeitaufzeichnung + WHERE uid IN (SELECT uid FROM public.tbl_benutzer WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_zeitaufzeichnung + WHERE kunde_uid IN (SELECT uid FROM public.tbl_benutzer WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_news + WHERE uid IN (SELECT uid FROM public.tbl_benutzer WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM public.tbl_variable + WHERE uid IN (SELECT uid FROM public.tbl_benutzer WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM public.tbl_prestudentstatus + WHERE bestaetigtvon IN (SELECT uid FROM public.tbl_benutzer WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM wawi.tbl_betriebsmittelperson + WHERE uid IN (SELECT uid FROM public.tbl_benutzer WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM wawi.tbl_bestellung_bestellstatus + WHERE uid IN (SELECT uid FROM public.tbl_benutzer WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM wawi.tbl_rechnung + WHERE bestellung_id IN (SELECT bestellung_id FROM wawi.tbl_bestellung + WHERE besteller_uid IN(SELECT uid FROM public.tbl_benutzer + WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).'))'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = 'DELETE FROM wawi.tbl_betriebsmittelperson + WHERE betriebsmittel_id IN ( SELECT betriebsmittel_id FROM wawi.tbl_betriebsmittel + WHERE bestellung_id IN (SELECT bestellung_id FROM wawi.tbl_bestellung + WHERE besteller_uid IN(SELECT uid FROM public.tbl_benutzer + WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).')))'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM wawi.tbl_betriebsmittel + WHERE bestellung_id IN (SELECT bestellung_id FROM wawi.tbl_bestellung + WHERE besteller_uid IN(SELECT uid FROM public.tbl_benutzer + WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).'))'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM wawi.tbl_bestellung + WHERE besteller_uid IN (SELECT uid FROM public.tbl_benutzer WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM wawi.tbl_bestellung_bestellstatus + WHERE uid IN (SELECT uid FROM public.tbl_benutzer WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM public.tbl_preinteressentstudiengang + WHERE preinteressent_id IN (SELECT preinteressent_id FROM public.tbl_preinteressent WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_reservierung + WHERE veranstaltung_id IN (SELECT veranstaltung_id FROM campus.tbl_veranstaltung + WHERE freigabevon IN (SELECT uid FROM public.tbl_benutzer WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).'))'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM campus.tbl_veranstaltung + WHERE freigabevon IN (SELECT uid FROM public.tbl_benutzer WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM public.tbl_preoutgoing + WHERE uid IN (SELECT uid FROM public.tbl_benutzer WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM addon.tbl_lvevaluierung_selbstevaluierung + WHERE uid IN (SELECT uid FROM public.tbl_benutzer WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + $error = true; + } + + if(!$error) + { + $qry = ' + DELETE FROM addon.tbl_software + WHERE ansprechperson_uid IN (SELECT uid FROM public.tbl_benutzer WHERE person_id='.$db->db_add_param($person_id, FHC_INTEGER).')'; + if(!$db->db_query($qry)) + { + $error = true; + } + } + + + + + + /* + * delete all prestudent entries + */ + if(!$error) + { + $queryPs = ' + SELECT tbl_prestudent.prestudent_id FROM tbl_prestudent + JOIN tbl_student ON (tbl_prestudent.prestudent_id = tbl_student.prestudent_id) + JOIN tbl_benutzer ON (tbl_student.student_uid = tbl_benutzer.uid) + WHERE tbl_benutzer.person_id = ' . $db->db_add_param($person_id, FHC_INTEGER).' + '; + $resultPs = $db->db_query($queryPs); + if(!$resultPs) + { + $error = true; + } + else + { + while($row = $db->db_fetch_object($resultPs)) + { + if(!$error) + { + if(!casDeletePrestudent($db, $row->prestudent_id, false)) + { + $error = true; + } + } + else { break; } + } + } + } + + /* + * delete all mitarbeiter entries + */ + if(!$error) + { + $queryMa = ' + SELECT tbl_mitarbeiter.mitarbeiter_uid FROM tbl_mitarbeiter + JOIN tbl_benutzer ON (tbl_mitarbeiter.mitarbeiter_uid = tbl_benutzer.uid) + WHERE tbl_benutzer.person_id = ' . $db->db_add_param($person_id, FHC_INTEGER).' + '; + $resultMa = $db->db_query($queryMa); + if(!$resultMa) + { + $error = true; + } + else + { + while($row = $db->db_fetch_object($resultMa)) + { + if(!$error) + { + if(!casDeleteMitarbeiter($db, $row->mitarbeiter_uid, false)) + $error = true; + } + else { break; } + } + } + } + + + + if(!$error) + { + if(!deleteWithFirstlevelDeps($db, 'person_id', 'public', 'tbl_person', $person_id, FHC_INTEGER)) + { + $error = true; + } + } + + /* + * Delete the tbl_person entry + */ + $qry = 'DELETE FROM public.tbl_person where person_id='.$db->db_add_param($person_id, FHC_INTEGER); + if(!$error && !$db->db_query($qry)) + { + $error = true; + } + + /* + * Rollback, if an + * error occoured + */ + if(!$error) + { + + if($trans){$db->db_query("COMMIT;");} + return true; + } + + + if($trans){$db->db_query("ROLLBACK;");} + return false; +} + + + + + +function deleteWithFirstlevelDeps($db, $column_name, $table_schema, $table_name, $data, $dataType) +{ + /* + * Resolve all neede Tables + */ + $qryResolve = ' + SELECT R.TABLE_NAME, R.TABLE_SCHEMA, R.COLUMN_NAME + FROM INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE u + INNER JOIN INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS FK + on U.CONSTRAINT_CATALOG = FK.UNIQUE_CONSTRAINT_CATALOG + AND U.CONSTRAINT_SCHEMA = FK.UNIQUE_CONSTRAINT_SCHEMA + AND U.CONSTRAINT_NAME = FK.UNIQUE_CONSTRAINT_NAME + INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE R + ON R.CONSTRAINT_CATALOG = FK.CONSTRAINT_CATALOG + AND R.CONSTRAINT_SCHEMA = FK.CONSTRAINT_SCHEMA + AND R.CONSTRAINT_NAME = FK.CONSTRAINT_NAME + WHERE U.COLUMN_NAME = ' . $db->db_add_param($column_name) . ' + AND U.TABLE_SCHEMA = ' . $db->db_add_param($table_schema) . ' + AND U.TABLE_NAME = ' . $db->db_add_param($table_name) . ';'; + + $resultResolve = $db->db_query($qryResolve); + if(!$resultResolve) + return false; + + while($rowResolve = $db->db_fetch_object($resultResolve)) + { + $qryDelete = ' + DELETE FROM '.$rowResolve->table_schema.'.'.$rowResolve->table_name.' + WHERE '.$rowResolve->column_name.'='.$db->db_add_param($data, $dataType); + $resultDelete = $db->db_query($qryDelete); + if(!$resultDelete) + { + return false; + } + } + return true; +} + + + +function recursiveGetAllProjektphase_id($db, $projektphase_id, $arr = null) +{ + if(is_null($arr)) + $arr = array(); + + + $qry = 'SELECT projektphase_id FROM fue.tbl_projektphase WHERE projektphase_fk='.$db->db_add_param($projektphase_id, FHC_INTEGER).';'; + + $res = $db->db_query($qry); + if(!$res) + return false; + + while($row = $db->db_fetch_object($res)) + { + if(!is_null($row->projektphase_id)) + $arr = array_merge($arr, recursiveGetAllProjektphase_id($db, $row->projektphase_id, $arr)); + } + + $arr[] = $projektphase_id; + + return $arr; +} + ?>