diff --git a/system/mlists/mlists_generate.php b/system/mlists/mlists_generate.php
index b13acc3dc..ad6ec7288 100644
--- a/system/mlists/mlists_generate.php
+++ b/system/mlists/mlists_generate.php
@@ -34,6 +34,7 @@ require_once('../../include/studiensemester.class.php');
require_once('../../include/organisationseinheit.class.php');
require_once('../../include/gruppe.class.php');
require_once('../../include/basis_db.class.php');
+require_once('../../include/mail.class.php');
$error_msg='';
?>
@@ -75,383 +76,406 @@ $error_msg='';
$qry = "UPDATE public.tbl_gruppe SET generiert=true WHERE UPPER(gruppe_kurzbz)=UPPER('".addslashes($gruppe)."')";
$db->db_query($qry);
}
+
+ /**
+ * Einfache Verteiler, deren Erstellung ohne Schleifen-Logik moeglich ist, werden ueber dieses Array erstellt
+ * Benoetigt werden die 3 Attribute:
+ * $verteilerArray['name_des_verteilers']['bezeichnung'] = 'Bezeichnung des Verteilers';
+ * $verteilerArray['name_des_verteilers']['beschreibung'] = 'Beschreibung des Verteilers (Anzeige im CIS)';
+ * $verteilerArray['name_des_verteilers']['sql'] = 'UIDs, die im Verteiler enthalten sein sollen (kein Semikolon am Ende)';
+ *
+ * Die Verteiler werden dann alle gleich erstellt:
+ * - Pruefen, ob Gruppe existiert, wenn nicht, anlegen mit Default-Werten
+ * - Gruppe auf generiert setzen
+ * - UIDs loeschen, die nicht mehr in den Verteiler gehoeren
+ * - UIDs hinzufuegen, die im Verteiler fehlen
+ */
+
+ $verteilerArray = array();
+
+ // Sql-Schema: SELECT foo AS uid FROM bar WHERE foobar
+
+ //Aktive MitarbeiterInnen mit Personalnummer > 0
+ $verteilerArray['tw_ma']['bezeichnung'] = 'Alle aktiven MitarbeiterInnen';
+ $verteilerArray['tw_ma']['beschreibung'] = 'Alle aktiven MitarbeiterInnen';
+ $verteilerArray['tw_ma']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid
+ FROM public.tbl_mitarbeiter
+ JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
+ WHERE aktiv
+ AND personalnummer >= 0";
+ //Aktive weibliche MitarbeiterInnen mit Personalnummer > 0
+ $verteilerArray['tw_ma_w']['bezeichnung'] = 'Weibliche Mitarbeiterinnen';
+ $verteilerArray['tw_ma_w']['beschreibung'] = 'Weibliche Mitarbeiterinnen';
+ $verteilerArray['tw_ma_w']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid
+ FROM public.tbl_mitarbeiter
+ JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
+ JOIN public.tbl_person USING(person_id)
+ WHERE tbl_benutzer.aktiv
+ AND geschlecht='w'
+ AND personalnummer >=0";
+ //Alle aktiven MitarbeiterInnen mit Attribut lektor=true
+ $verteilerArray['tw_lkt']['bezeichnung'] = 'Alle LektorInnen';
+ $verteilerArray['tw_lkt']['beschreibung'] = 'Alle LektorInnen an der FH Technikum Wien';
+ $verteilerArray['tw_lkt']['sql'] = " SELECT mitarbeiter_uid AS uid
+ FROM public.tbl_mitarbeiter
+ JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
+ WHERE lektor
+ AND aktiv";
+ //MitarbeiterInnen mit gueltiger Funktion "ass" (assistenz)
+ $verteilerArray['tw_sek']['bezeichnung'] = 'Alle Sekretariate';
+ $verteilerArray['tw_sek']['beschreibung'] = 'Alle Sekretariate an der FH Technikum Wien';
+ $verteilerArray['tw_sek']['sql'] = " SELECT mitarbeiter_uid AS uid
+ FROM
+ public.tbl_mitarbeiter
+ JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
+ JOIN public.tbl_benutzerfunktion USING(uid)
+ WHERE aktiv AND funktion_kurzbz='ass' AND
+ (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von<=now()) AND
+ (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis>=now()) AND
+ mitarbeiter_uid NOT LIKE '\\\\_%' ";
+ //Aktive MitarbeiterInnen mit gueltiger Funktion "Leitung", "gLtg" oder "stvLtg" in aktiven Studiengaengen
+ $verteilerArray['tw_stgl']['bezeichnung'] = 'Alle StudiengangsleiterInnen';
+ $verteilerArray['tw_stgl']['beschreibung'] = 'Alle StudiengangsleiterInnen und deren StellvertreterInnen';
+ $verteilerArray['tw_stgl']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid
+ FROM
+ public.tbl_mitarbeiter
+ JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
+ JOIN public.tbl_benutzerfunktion USING(uid)
+ JOIN public.tbl_studiengang USING(oe_kurzbz)
+ WHERE
+ tbl_benutzer.aktiv
+ AND (tbl_benutzerfunktion.funktion_kurzbz='Leitung' OR funktion_kurzbz='gLtg' OR funktion_kurzbz='stvLtg')
+ AND (tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now())
+ AND (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now())
+ AND mitarbeiter_uid NOT LIKE '\\\\_%'
+ AND tbl_studiengang.aktiv=true";
+ //Aktive MitarbeiterInnen mit gueltiger Funktion "Leitung", "gLtg" oder "stvLtg" in aktiven Bachelor- oder Master-Studiengaengen mit Kennzahl>0 und Kennzahl<10000
+ $verteilerArray['tw_stgl_bama']['bezeichnung'] = 'Studiengangsleitung BAMA';
+ $verteilerArray['tw_stgl_bama']['beschreibung'] = 'Studiengangsleitung und Stellvertretung von Bachelor und Master Studiengängen';
+ $verteilerArray['tw_stgl_bama']['sql'] = " SELECT DISTINCT mitarbeiter_uid AS uid
+ FROM
+ public.tbl_mitarbeiter
+ JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
+ JOIN public.tbl_benutzerfunktion USING(uid)
+ JOIN public.tbl_studiengang USING(oe_kurzbz)
+ WHERE
+ tbl_benutzer.aktiv
+ AND (tbl_benutzerfunktion.funktion_kurzbz='Leitung' OR funktion_kurzbz='gLtg' OR funktion_kurzbz='stvLtg')
+ AND (tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now())
+ AND (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now())
+ AND mitarbeiter_uid NOT LIKE '\\\\_%'
+ AND tbl_studiengang.aktiv=true
+ AND tbl_studiengang.typ in('b','m')
+ AND tbl_studiengang.studiengang_kz>0
+ AND tbl_studiengang.studiengang_kz<10000";
+ //Alle aktiven MitarbeiterInnen mit Attribut fixangestellt=true
+ $verteilerArray['tw_fix']['bezeichnung'] = 'Alle Fix-Angestellten';
+ $verteilerArray['tw_fix']['beschreibung'] = 'Alle Fix-Angestellten an der FH Technikum Wien';
+ $verteilerArray['tw_fix']['sql'] = " SELECT mitarbeiter_uid AS uid
+ FROM public.tbl_mitarbeiter
+ JOIN public.tbl_benutzer ON(uid=mitarbeiter_uid)
+ WHERE fixangestellt
+ AND aktiv
+ AND mitarbeiter_uid NOT LIKE '\\\\_%'";
+ //Alle aktiven MitarbeiterInnen mit Attribut fixangestellt=true und lektor=true
+ $verteilerArray['tw_fix_lkt']['bezeichnung'] = 'Alle fixangestellten LektorInnen';
+ $verteilerArray['tw_fix_lkt']['beschreibung'] = 'Alle fixangestellten LektorInnen an der FH Technikum Wien';
+ $verteilerArray['tw_fix_lkt']['sql'] = " SELECT mitarbeiter_uid AS uid
+ FROM public.tbl_mitarbeiter
+ JOIN public.tbl_benutzer ON(uid=mitarbeiter_uid)
+ WHERE fixangestellt
+ AND lektor
+ AND aktiv
+ AND mitarbeiter_uid NOT LIKE '\\\\_%'";
+ //Alle aktiven MitarbeiterInnen mit Attribut fixangestellt=false und lektor=true
+ $verteilerArray['tw_ext_lkt']['bezeichnung'] = 'Externe LektorInnen';
+ $verteilerArray['tw_ext_lkt']['beschreibung'] = 'Alle externen LektorInnen an der FH Technikum Wien';
+ $verteilerArray['tw_ext_lkt']['sql'] = " SELECT mitarbeiter_uid AS uid
+ FROM public.tbl_mitarbeiter
+ JOIN public.tbl_benutzer ON(uid=mitarbeiter_uid)
+ WHERE NOT fixangestellt
+ AND lektor
+ AND aktiv
+ AND mitarbeiter_uid NOT LIKE '\\\\_%'";
+ //Hochschulvertretung. Studierende mit gueltiger Funktion 'hsv'.
+ $verteilerArray['tw_hsv']['bezeichnung'] = 'Hochschulvertretung FHTW';
+ $verteilerArray['tw_hsv']['beschreibung'] = 'Hochschulvertretung FHTW';
+ $verteilerArray['tw_hsv']['sql'] = " SELECT uid
+ FROM
+ public.tbl_benutzerfunktion
+ JOIN public.tbl_benutzer USING(uid)
+ WHERE
+ funktion_kurzbz='hsv'
+ AND tbl_benutzer.aktiv AND
+ (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von<=now()) AND
+ (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis>=now())";
+ //Studienvertretung. Studierende mit gueltiger Funktion 'stdv'.
+ $verteilerArray['tw_stdv']['bezeichnung'] = 'Alle StudierendenvertreterInnen';
+ $verteilerArray['tw_stdv']['beschreibung'] = 'Alle StudierendenvertreterInnen';
+ $verteilerArray['tw_stdv']['sql'] = " SELECT uid
+ FROM
+ public.tbl_benutzerfunktion
+ JOIN public.tbl_benutzer USING(uid)
+ WHERE
+ funktion_kurzbz='stdv'
+ AND tbl_benutzer.aktiv AND
+ (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von<=now()) AND
+ (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis>=now())";
+ //Jahrgangsvertretung. Studierende mit gueltiger Funktion 'jgv'.
+ $verteilerArray['tw_jgv']['bezeichnung'] = 'Alle JahrgangsvertreterInnen';
+ $verteilerArray['tw_jgv']['beschreibung'] = 'Alle JahrgangsvertreterInnen';
+ $verteilerArray['tw_jgv']['sql'] = " SELECT uid
+ FROM
+ public.tbl_benutzerfunktion
+ JOIN public.tbl_benutzer USING(uid)
+ WHERE
+ funktion_kurzbz='jgv'
+ AND tbl_benutzer.aktiv AND
+ (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von<=now()) AND
+ (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis>=now())";
+ //Alle aktiven Studierenden
+ //Abbrecher bleiben noch 3 Wochen im Verteiler andere inaktive noch fuer 20 Wochen
+ //damit im CIS die Menuepunkte fuer Studierende richtig angezeigt werden
+ $verteilerArray['tw_std']['bezeichnung'] = 'Alle Studierenden';
+ $verteilerArray['tw_std']['beschreibung'] = 'Alle ordentlichen, außerordentlichen und fiktiven Studierenden';
+ $verteilerArray['tw_std']['sql'] = " SELECT uid
+ FROM campus.vw_student
+ WHERE (
+ aktiv
+ OR
+ (aktiv=false AND get_rolle_prestudent(vw_student.prestudent_id, null)='Abbrecher' AND updateaktivam>now()-'3 weeks'::interval)
+ OR
+ (aktiv=false AND get_rolle_prestudent(vw_student.prestudent_id, null)!='Abbrecher' AND updateaktivam>now()-'20 weeks'::interval)
+ )";
+ //Alle aktiven männlichen Studierenden
+ //Abbrecher bleiben noch 3 Wochen im Verteiler andere inaktive noch fuer 20 Wochen
+ $verteilerArray['tw_std_m']['bezeichnung'] = 'Alle männlichen Studenten';
+ $verteilerArray['tw_std_m']['beschreibung'] = 'Alle männlichen Studenten an der FHTW';
+ $verteilerArray['tw_std_m']['sql'] = " SELECT uid
+ FROM campus.vw_student
+ WHERE (
+ aktiv
+ AND geschlecht='m'
+ OR
+ (aktiv=false AND geschlecht='m' AND get_rolle_prestudent(vw_student.prestudent_id, null)='Abbrecher' AND updateaktivam>now()-'3 weeks'::interval)
+ OR
+ (aktiv=false AND geschlecht='m' AND get_rolle_prestudent(vw_student.prestudent_id, null)!='Abbrecher' AND updateaktivam>now()-'20 weeks'::interval)
+ )";
+ //Alle aktiven weiblichen Studierenden
+ //Abbrecher bleiben noch 3 Wochen im Verteiler andere inaktive noch fuer 20 Wochen
+ $verteilerArray['tw_std_w']['bezeichnung'] = 'Alle weiblichen Studentinnen';
+ $verteilerArray['tw_std_w']['beschreibung'] = 'Alle weiblichen Studentinnen an der FHTW';
+ $verteilerArray['tw_std_w']['sql'] = " SELECT uid
+ FROM campus.vw_student
+ WHERE (
+ aktiv
+ AND geschlecht='w'
+ OR
+ (aktiv=false AND geschlecht='w' AND get_rolle_prestudent(vw_student.prestudent_id, null)='Abbrecher' AND updateaktivam>now()-'3 weeks'::interval)
+ OR
+ (aktiv=false AND geschlecht='w' AND get_rolle_prestudent(vw_student.prestudent_id, null)!='Abbrecher' AND updateaktivam>now()-'20 weeks'::interval)
+ )";
+ //Alle ordentlichen, aktiven Bachelor- und Master-Studierenden
+ //Absolventen bleiben noch 20 Wochen im Verteiler
+ $verteilerArray['tw_bama']['bezeichnung'] = 'Alle BaMa-Studierenden';
+ $verteilerArray['tw_bama']['beschreibung'] = 'Alle ordentlichen Bachelor- und Master-Studierenden';
+ $verteilerArray['tw_bama']['sql'] = " SELECT uid
+ FROM campus.vw_student
+ WHERE (
+ aktiv
+ OR
+ (aktiv=false AND get_rolle_prestudent(vw_student.prestudent_id, null)='Absolvent' AND updateaktivam>now()-'20 weeks'::interval)
+ AND studiengang_kz IN (SELECT studiengang_kz FROM public.tbl_studiengang WHERE typ IN ('b','m'))
+ )";
+ //Moodle-LektorenVerteiler
+ $verteilerArray['moodle_lkt']['bezeichnung'] = 'Moodle Lektoren';
+ $verteilerArray['moodle_lkt']['beschreibung'] = 'Moodle Lektoren';
+ $verteilerArray['moodle_lkt']['sql'] = " SELECT distinct mitarbeiter_uid AS uid
+ FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, addon.tbl_moodle ,campus.vw_lehreinheit
+ WHERE tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id
+ AND vw_lehreinheit.studiengang_kz=tbl_lehrveranstaltung.studiengang_kz
+ AND vw_lehreinheit.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id
+ AND vw_lehreinheit.lehreinheit_id=tbl_lehreinheit.lehreinheit_id
+ AND vw_lehreinheit.studiensemester_kurzbz=tbl_lehreinheit.studiensemester_kurzbz
+ AND vw_lehreinheit.studiensemester_kurzbz=tbl_lehreinheit.studiensemester_kurzbz
+ AND ((tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_moodle.lehrveranstaltung_id
+ AND tbl_moodle.studiensemester_kurzbz=tbl_lehreinheit.studiensemester_kurzbz)
+ OR (tbl_lehreinheit.lehreinheit_id=tbl_moodle.lehreinheit_id))";
+ //Serviceabteilungen. Aktive MitarbeiterInnen mit gueltiger Leitungsfunktion in einer Abteilung
+ $verteilerArray['serviceabteilungen']['bezeichnung'] = 'LeiterInnen sonst. OEen';
+ $verteilerArray['serviceabteilungen']['beschreibung'] = 'LeiterInnen der Abteilungen und Gruppen';
+ $verteilerArray['serviceabteilungen']['sql'] = " SELECT distinct mitarbeiter_uid AS uid
+ FROM
+ public.tbl_mitarbeiter
+ JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
+ JOIN public.tbl_benutzerfunktion USING(uid)
+ JOIN public.tbl_organisationseinheit USING(oe_kurzbz)
+ WHERE tbl_benutzer.aktiv AND (funktion_kurzbz='Leitung')
+ AND (tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now())
+ AND (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now())
+ AND tbl_organisationseinheit.organisationseinheittyp_kurzbz='Abteilung'";
+ //Aktive MitarbeiterInnen der OE "Sprachen"
+ $verteilerArray['sprachen']['bezeichnung'] = 'Sprachen';
+ $verteilerArray['sprachen']['beschreibung'] = 'MitarbeiterInnen des Instituts Sprachen und Kulturwissenschaften ';
+ $verteilerArray['sprachen']['sql'] = " SELECT distinct uid
+ FROM
+ public.tbl_benutzer
+ JOIN public.tbl_benutzerfunktion USING(uid)
+ JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid)
+ WHERE oe_kurzbz in('Sprachen')
+ AND tbl_benutzer.aktiv
+ AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null)
+ AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)";
+ // Aktive MitarbeiterInnen der OE "Sprachen"
+ $verteilerArray['humanities']['bezeichnung'] = 'MA Institut Sprachen';
+ $verteilerArray['humanities']['beschreibung'] = 'MitarbeiterInnen des Instituts Sprachen und Kulturwissenschaften ';
+ $verteilerArray['humanities']['sql'] = "SELECT distinct uid
+ FROM
+ public.tbl_benutzer
+ JOIN public.tbl_benutzerfunktion USING(uid)
+ JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid)
+ WHERE oe_kurzbz in('Sprachen')
+ AND tbl_benutzer.aktiv
+ AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null)
+ AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)";
+ //Aktive BenutzerInnen mit der Funktion "kollegium"
+ $verteilerArray['kollegium']['bezeichnung'] = 'Kollegium der FH Technikum Wien';
+ $verteilerArray['kollegium']['beschreibung'] = 'Kollegium der FH Technikum Wien';
+ $verteilerArray['kollegium']['sql'] = " SELECT distinct uid
+ FROM
+ public.tbl_benutzer
+ JOIN public.tbl_benutzerfunktion USING(uid)
+ WHERE funktion_kurzbz='kollegium'
+ AND tbl_benutzer.aktiv
+ AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null)
+ AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)";
+ //Aktive BenutzerInnen mit der Funktion "managementteam"
+ $verteilerArray['tw_managementteam']['bezeichnung'] = 'Akademisches Managementteam';
+ $verteilerArray['tw_managementteam']['beschreibung'] = 'Akademisches Managementteam';
+ $verteilerArray['tw_managementteam']['sql'] = " SELECT distinct uid
+ FROM
+ public.tbl_benutzer
+ JOIN public.tbl_benutzerfunktion USING(uid)
+ WHERE funktion_kurzbz='managementteam'
+ AND tbl_benutzer.aktiv
+ AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null)
+ AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)";
+ //Aktive BenutzerInnen mit der Funktion "fue"
+ $verteilerArray['tw_fue']['bezeichnung'] = 'Forschung und Entwicklung';
+ $verteilerArray['tw_fue']['beschreibung'] = 'Forschung und Entwicklung';
+ $verteilerArray['tw_fue']['sql'] = " SELECT distinct uid
+ FROM
+ public.tbl_benutzer
+ JOIN public.tbl_benutzerfunktion USING(uid)
+ WHERE funktion_kurzbz='fue'
+ AND tbl_benutzer.aktiv
+ AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null)
+ AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)";
+ //Aktive weiblichen Benutzerinnen mit der Funktion "fue"
+ $verteilerArray['tw_fue_frauen']['bezeichnung'] = 'Weibliche Mitarbeiterinnen FuE';
+ $verteilerArray['tw_fue_frauen']['beschreibung'] = 'Weibliche Mitarbeiterinnen in Forschung und Entwicklung';
+ $verteilerArray['tw_fue_frauen']['sql'] = " SELECT distinct uid
+ FROM
+ public.tbl_benutzer
+ JOIN public.tbl_benutzerfunktion USING(uid)
+ JOIN public.tbl_person USING (person_id)
+ WHERE funktion_kurzbz='fue'
+ AND geschlecht='w'
+ AND tbl_benutzer.aktiv
+ AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null)
+ AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)";
+ //Alle aktiven MitarbeiterInnen mit Funktion Leitung oder stvLeitung oder gfLtg
+ $verteilerArray['tw_leitung']['bezeichnung'] = 'Alle MA mit Leitungsfunktion';
+ $verteilerArray['tw_leitung']['beschreibung'] = 'Alle MA mit Funktion Leitung, stellvertretende Leitung oder geschäftsführende Leitung';
+ $verteilerArray['tw_leitung']['sql'] = " SELECT DISTINCT uid
+ FROM
+ public.tbl_person
+ JOIN public.tbl_benutzer USING (person_id)
+ JOIN tbl_benutzerfunktion USING (uid)
+ WHERE funktion_kurzbz IN('Leitung','stvLtg','gLtg')
+ AND tbl_benutzer.aktiv
+ AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null)
+ AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)";
- // **************************************************************
- // MitarbeiterInnenVerteiler abgleichen
- $mlist_name='tw_ma';
- setGeneriert($mlist_name);
- // MitarbeiterInnen holen die nicht mehr in den Verteiler gehoeren
- echo $mlist_name.' wird abgeglichen!
';
- flush();
- $sql_query="SELECT uid FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('".addslashes($mlist_name)."') AND uid NOT IN (SELECT mitarbeiter_uid FROM public.tbl_mitarbeiter JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid) WHERE aktiv AND personalnummer >=0)";
+ foreach ($verteilerArray AS $listname => $data)
+ {
+ $grp = new gruppe();
+ // Pruefen, ob die Gruppe existert, wenn nicht, anlegen
+ if(!$grp->exists($listname))
+ {
+ //$error_msg .= 'Die Gruppe '.$listname.' existiert nicht
';
+
+ $grp->gruppe_kurzbz = $listname;
+ $grp->studiengang_kz = '0';
+ $grp->semester = '0';
+ $grp->bezeichnung = $data['bezeichnung'];
+ $grp->beschreibung = $data['beschreibung'];
+ $grp->mailgrp = true;
+ $grp->sichtbar = true;
+ $grp->generiert = true;
+ $grp->aktiv = true;
+ $grp->lehre = false;
+ $grp->content_visible = false;
+ $grp->gesperrt = false;
+ $grp->zutrittssystem = false;
+ $grp->aufnahmegruppe = false;
+ $grp->insertamum = date('Y-m-d H:i:s');
+ $grp->insertvon = 'mlists_generate';
+
+ if(!$grp->save(true, true))
+ {
+ $error_msg .= 'Fehler beim Anlegen der Gruppe '.$listname.': '.$grp->errormsg;
+ continue;
+ }
+ }
+ else
+ {
+ setGeneriert($listname);
+ }
+ echo strtoupper($listname).' wird abgeglichen...
';
+ flush();
+ //Eventuelles Semikolon am Ende des SQLs entfernen
+ if (substr($data['sql'], -1) == ';')
+ $data['sql'] = substr($data['sql'], 0, strlen($data['sql'])-1);
- if(!($result = $db->db_query($sql_query)))
- $error_msg.=$db->db_last_error();
+ $qry_delete = " DELETE FROM
+ public.tbl_benutzergruppe
+ WHERE
+ UPPER(gruppe_kurzbz)=UPPER(".$db->db_add_param($listname).")
+ AND
+ uid NOT IN (".$data['sql'].");";
- while($row = $db->db_fetch_object($result))
- {
- $sql_query="DELETE FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$mlist_name') AND uid='$row->uid'";
- if(!$db->db_query($sql_query))
- $error_msg.=$db->db_last_error().$sql_query;
- echo '-';
+ if(!($result = $db->db_query($qry_delete)))
+ $error_msg .= $db->db_last_error().$qry_delete.'
';
+
+ echo strtoupper($listname).' '.$db->db_affected_rows($result).' Einträge gelöscht
';
+
flush();
- }
- // MitarbeiterInnen holen die nicht im Verteiler sind
- echo '
';
- $sql_query="SELECT mitarbeiter_uid AS uid FROM public.tbl_mitarbeiter JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid) WHERE aktiv AND personalnummer >=0 AND mitarbeiter_uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$mlist_name'))";
- if(!($result = $db->db_query($sql_query)))
- $error_msg.= $db->db_last_error();
- while($row = $db->db_fetch_object($result))
- {
- $sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row->uid','".strtoupper($mlist_name)."', now(), 'mlists_generate')";
- if(!$db->db_query($sql_query))
- $error_msg.=$db->db_last_error().$sql_query;
- echo '-';
- flush();
- }
- // **************************************************************
- // Weibliche Mitarbeiterinnen Verteiler abgleichen
- $mlist_name='tw_ma_w';
- setGeneriert($mlist_name);
- // MitarbeiterInnen holen die nicht mehr in den Verteiler gehoeren
- echo $mlist_name.' wird abgeglichen!
';
- flush();
- $sql_query="SELECT uid FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER(".$db->db_add_param($mlist_name).") AND uid NOT IN (SELECT mitarbeiter_uid FROM public.tbl_mitarbeiter JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid) JOIN public.tbl_person USING(person_id) WHERE tbl_benutzer.aktiv AND geschlecht='w' AND personalnummer >=0)";
+ $qry_insert = " WITH
+ uids AS (".$data['sql'].")
+ INSERT INTO
+ public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon)
+ SELECT
+ *, UPPER(".$db->db_add_param($listname)."), now(), 'mlists_generate'
+ FROM
+ uids
+ WHERE
+ uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER(".$db->db_add_param($listname)."));";
- if(!($result = $db->db_query($sql_query)))
- $error_msg.=$db->db_last_error();
-
- while($row = $db->db_fetch_object($result))
- {
- $sql_query="DELETE FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER(".$db->db_add_param($mlist_name).") AND uid=".$db->db_add_param($row->uid);
- if(!$db->db_query($sql_query))
- $error_msg.=$db->db_last_error().$sql_query;
- echo '-';
- flush();
- }
- // MitarbeiterInnen holen die nicht im Verteiler sind
- echo '
';
- $sql_query="SELECT mitarbeiter_uid AS uid FROM public.tbl_mitarbeiter JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid) JOIN public.tbl_person USING(person_id) WHERE tbl_benutzer.aktiv AND geschlecht='w' AND personalnummer >=0 AND mitarbeiter_uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER(".$db->db_add_param($mlist_name)."))";
- if(!($result = $db->db_query($sql_query)))
- $error_msg.= $db->db_last_error();
- while($row = $db->db_fetch_object($result))
- {
- $sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon) VALUES (".$db->db_add_param($row->uid).",".$db->db_add_param(strtoupper($mlist_name)).", now(), 'mlists_generate')";
- if(!$db->db_query($sql_query))
- $error_msg.=$db->db_last_error().$sql_query;
- echo '-';
- flush();
- }
-
- // **************************************************************
- // LektorenVerteiler abgleichen
- $mlist_name='tw_lkt';
- setGeneriert($mlist_name);
- // Lektoren holen die nicht mehr in den Verteiler gehoeren
- echo $mlist_name.' wird abgeglichen!
';
- flush();
- $sql_query="SELECT uid FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('".addslashes($mlist_name)."') AND uid NOT IN (SELECT mitarbeiter_uid FROM public.tbl_mitarbeiter JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid) WHERE lektor AND aktiv)";
-
- if(!($result = $db->db_query($sql_query)))
- $error_msg.=$db->db_last_error();
-
- while($row = $db->db_fetch_object($result))
- {
- $sql_query="DELETE FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$mlist_name') AND uid='$row->uid'";
- if(!$db->db_query($sql_query))
- $error_msg.=$db->db_last_error().$sql_query;
- echo '-';
- flush();
- }
- // Lektoren holen die nicht im Verteiler sind
- echo '
';
- $sql_query="SELECT mitarbeiter_uid AS uid FROM public.tbl_mitarbeiter JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid) WHERE lektor AND aktiv AND mitarbeiter_uid NOT LIKE '\\\\_%' AND mitarbeiter_uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$mlist_name'))";
- if(!($result = $db->db_query($sql_query)))
- $error_msg.= $db->db_last_error();
- while($row = $db->db_fetch_object($result))
- {
- $sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row->uid','".strtoupper($mlist_name)."', now(), 'mlists_generate')";
- if(!$db->db_query($sql_query))
- $error_msg.=$db->db_last_error().$sql_query;
- echo '-';
- flush();
- }
-
- // **************************************************************
- // Sekretariats-Verteiler abgleichen
- $mlist_name='tw_sek';
- setGeneriert($mlist_name);
- // Personen holen die nicht mehr in den Verteiler gehoeren
- echo $mlist_name.' wird abgeglichen!
';
- flush();
- $sql_query="SELECT uid FROM public.tbl_benutzergruppe
- WHERE UPPER(gruppe_kurzbz)=UPPER('$mlist_name') AND
- uid NOT IN (SELECT mitarbeiter_uid
- FROM
- public.tbl_mitarbeiter
- JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
- JOIN public.tbl_benutzerfunktion USING(uid)
- WHERE aktiv AND funktion_kurzbz='ass' AND
- (tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()) AND
- (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now()))";
- if(!($result = $db->db_query($sql_query)))
- $error_msg.=$db->db_last_error();
- while($row = $db->db_fetch_object($result))
- {
- $sql_query="DELETE FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$mlist_name') AND uid='$row->uid'";
- if(!$db->db_query($sql_query))
- $error_msg.=$db->db_last_error().$sql_query;
- echo '-';
- flush();
- }
- // Personen holen die nicht im Verteiler sind
- echo '
';
- $sql_query="SELECT distinct mitarbeiter_uid AS uid
- FROM
- public.tbl_mitarbeiter
- JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
- JOIN public.tbl_benutzerfunktion USING(uid)
- WHERE
- aktiv AND
- tbl_benutzerfunktion.funktion_kurzbz='ass' AND
- (tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()) AND
- (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now()) AND
- mitarbeiter_uid NOT LIKE '\\\\_%' AND
- mitarbeiter_uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe
- WHERE UPPER(gruppe_kurzbz)=UPPER('$mlist_name'))";
- if(!($result = $db->db_query($sql_query)))
- $error_msg.=$db->db_last_error();
- while($row=$db->db_fetch_object($result))
- {
- $sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, studiensemester_kurzbz, updateamum, updatevon, insertamum, insertvon) VALUES ('$row->uid','".strtoupper($mlist_name)."',null, null, null, now(), 'mlists_generate')";
- if(!$db->db_query($sql_query))
- $error_msg.=$db->db_last_error().$sql_query;
- echo '-';
- flush();
- }
-
- // **************************************************************
- // Studiengangsleiter-Verteiler abgleichen
- // Es werden auch StellvertreterInnen hinzugefügt
- $mlist_name='tw_stgl';
- setGeneriert($mlist_name);
- // Personen holen die nicht mehr in den Verteiler gehoeren
- echo $mlist_name.' wird abgeglichen!
';
- flush();
- $sql_query="SELECT uid FROM public.tbl_benutzergruppe
- WHERE
- UPPER(gruppe_kurzbz)=UPPER('$mlist_name') AND
- uid NOT IN (SELECT mitarbeiter_uid
- FROM
- public.tbl_mitarbeiter
- JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
- JOIN public.tbl_benutzerfunktion USING(uid)
- JOIN public.tbl_studiengang USING(oe_kurzbz)
- WHERE tbl_benutzer.aktiv AND (funktion_kurzbz='Leitung' OR funktion_kurzbz='gLtg' OR funktion_kurzbz='stvLtg') AND
- (tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()) AND
- (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now())
- AND tbl_studiengang.aktiv=true)";
- if(!($result = $db->db_query($sql_query)))
- $error_msg.=$db->db_last_error();
- while($row=$db->db_fetch_object($result))
- {
- $sql_query="DELETE FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$mlist_name') AND uid='$row->uid'";
- if(!$db->db_query($sql_query))
- $error_msg.=$db->db_last_error().$sql_query;
- echo '-';
- flush();
- }
- // Personen holen die nicht im Verteiler sind
- echo '
';
- $sql_query="SELECT DISTINCT mitarbeiter_uid AS uid
- FROM
- public.tbl_mitarbeiter
- JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
- JOIN public.tbl_benutzerfunktion USING(uid)
- JOIN public.tbl_studiengang USING(oe_kurzbz)
- WHERE
- tbl_benutzer.aktiv AND
- (tbl_benutzerfunktion.funktion_kurzbz='Leitung' OR funktion_kurzbz='gLtg' OR funktion_kurzbz='stvLtg') AND
- (tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()) AND
- (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now()) AND
- mitarbeiter_uid NOT LIKE '\\\\_%' AND mitarbeiter_uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$mlist_name'))
- AND tbl_studiengang.aktiv=true";
- if(!($result = $db->db_query($sql_query)))
- $error_msg.=$db->db_last_error();
- while($row=$db->db_fetch_object($result))
- {
- $sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, studiensemester_kurzbz, updateamum, updatevon, insertamum, insertvon) VALUES ('$row->uid','".strtoupper($mlist_name)."',null, null, null, now(), 'mlists_generate')";
- if(!$db->db_query($sql_query))
- $error_msg.=$db->db_last_error().$sql_query;
- echo '-';
- flush();
- }
-
- // **************************************************************
- // Studiengangsleiter-Verteiler abgleichen
- // Es werden auch StellvertreterInnen hinzugefügt
- $mlist_name='tw_stgl_bama';
- setGeneriert($mlist_name);
- // Personen holen die nicht mehr in den Verteiler gehoeren
- echo $mlist_name.' wird abgeglichen!
';
- flush();
- $sql_query="SELECT uid FROM public.tbl_benutzergruppe
- WHERE
- UPPER(gruppe_kurzbz)=UPPER('$mlist_name') AND
- uid NOT IN (SELECT mitarbeiter_uid
- FROM
- public.tbl_mitarbeiter
- JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
- JOIN public.tbl_benutzerfunktion USING(uid)
- JOIN public.tbl_studiengang USING(oe_kurzbz)
- WHERE tbl_benutzer.aktiv AND (funktion_kurzbz='Leitung' OR funktion_kurzbz='gLtg' OR funktion_kurzbz='stvLtg') AND
- (tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()) AND
- (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now())
- AND tbl_studiengang.aktiv=true
- AND tbl_studiengang.typ in('b','m')
- AND tbl_studiengang.studiengang_kz>0
- AND tbl_studiengang.studiengang_kz<10000
- )";
- if(!($result = $db->db_query($sql_query)))
- $error_msg.=$db->db_last_error();
- while($row=$db->db_fetch_object($result))
- {
- $sql_query="DELETE FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$mlist_name') AND uid=".$db->db_add_param($row->uid);
- if(!$db->db_query($sql_query))
- $error_msg.=$db->db_last_error().$sql_query;
- echo '-';
- flush();
- }
- // Personen holen die nicht im Verteiler sind
- echo '
';
- $sql_query="SELECT DISTINCT mitarbeiter_uid AS uid
- FROM
- public.tbl_mitarbeiter
- JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
- JOIN public.tbl_benutzerfunktion USING(uid)
- JOIN public.tbl_studiengang USING(oe_kurzbz)
- WHERE
- tbl_benutzer.aktiv AND
- (tbl_benutzerfunktion.funktion_kurzbz='Leitung' OR funktion_kurzbz='gLtg' OR funktion_kurzbz='stvLtg') AND
- (tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()) AND
- (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now()) AND
- mitarbeiter_uid NOT LIKE '\\\\_%' AND mitarbeiter_uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$mlist_name'))
- AND tbl_studiengang.aktiv=true
- AND tbl_studiengang.typ in('b','m')
- AND tbl_studiengang.studiengang_kz>0
- AND tbl_studiengang.studiengang_kz<10000";
- if(!($result = $db->db_query($sql_query)))
- $error_msg.=$db->db_last_error();
- while($row=$db->db_fetch_object($result))
- {
- $sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, studiensemester_kurzbz,
- updateamum, updatevon, insertamum, insertvon) VALUES (".
- $db->db_add_param($row->uid).",".
- $db->db_add_param(strtoupper($mlist_name)).
- ",null, null, null, now(), 'mlists_generate')";
- if(!$db->db_query($sql_query))
- $error_msg.=$db->db_last_error().$sql_query;
- echo '-';
- flush();
- }
-
- // **************************************************************
- // Verteiler fuer alle fixAngestellten abgleichen
- $mlist_name='tw_fix';
- setGeneriert($mlist_name);
- // Lektoren holen die nicht mehr in den Verteiler gehoeren
- echo '
'.$mlist_name.' wird abgeglichen!
';
- flush();
- $sql_query="SELECT uid FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$mlist_name') AND uid NOT IN (SELECT mitarbeiter_uid FROM public.tbl_mitarbeiter JOIN public.tbl_benutzer ON(uid=mitarbeiter_uid) WHERE fixangestellt AND aktiv)";
- if(!($result = $db->db_query($sql_query)))
- $error_msg.=$db->db_last_error();
- while($row=$db->db_fetch_object($result))
- {
- $sql_query="DELETE FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$mlist_name') AND uid='$row->uid'";
- if(!$db->db_query($sql_query))
- $error_msg.=$db->db_last_error().$sql_query;
- echo '-';
- flush();
- }
- // Lektoren holen die nicht im Verteiler sind
- echo '
';
- $sql_query="SELECT mitarbeiter_uid AS uid FROM public.tbl_mitarbeiter JOIN public.tbl_benutzer ON(uid=mitarbeiter_uid) WHERE fixangestellt AND aktiv AND mitarbeiter_uid NOT LIKE '\\\\_%' AND mitarbeiter_uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$mlist_name'))";
- if(!($result=$db->db_query($sql_query)))
- $error_msg.=$db->db_last_error();
- while($row=$db->db_fetch_object($result))
- {
- $sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row->uid','".strtoupper($mlist_name)."', now(), 'mlists_generate')";
- if(!$db->db_query($sql_query))
- $error_msg.=$db->db_last_error().$sql_query;
- echo '-';
- flush();
- }
-
- // **************************************************************
- // Verteiler fuer alle fixen Lektoren abgleichen
- $mlist_name='tw_fix_lkt';
- setGeneriert($mlist_name);
- // Lektoren holen die nicht mehr in den Verteiler gehoeren
- echo '
'.$mlist_name.' wird abgeglichen!
';
- flush();
- $sql_query="SELECT uid FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$mlist_name') AND uid NOT IN (SELECT mitarbeiter_uid FROM public.tbl_mitarbeiter JOIN public.tbl_benutzer ON(uid=mitarbeiter_uid) WHERE aktiv AND fixangestellt AND lektor)";
- if(!($result = $db->db_query($sql_query)))
- $error_msg.=$db->db_last_error();
- while($row=$db->db_fetch_object($result))
- {
- $sql_query="DELETE FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$mlist_name') AND uid='$row->uid'";
- if(!$db->db_query($sql_query))
- $error_msg.=$db->db_last_error().$sql_query;
- echo '-';
- flush();
- }
- // Lektoren holen die nicht im Verteiler sind
- echo '
';
- $sql_query="SELECT mitarbeiter_uid AS uid FROM public.tbl_mitarbeiter JOIN public.tbl_benutzer ON(uid=mitarbeiter_uid) WHERE fixangestellt AND lektor AND aktiv AND mitarbeiter_uid NOT LIKE '\\\\_%' AND mitarbeiter_uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$mlist_name'))";
- if(!($result = $db->db_query($sql_query)))
- $error_msg.=$db->db_last_error();
- while($row = $db->db_fetch_object($result))
- {
- $sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row->uid','".strtoupper($mlist_name)."', now(), 'mlists_generate')";
- if(!$db->db_query($sql_query))
- $error_msg.=$db->db_last_error().$sql_query;
- echo '-';
- flush();
- }
-
- // **************************************************************
- // Verteiler fuer alle externen Lektoren abgleichen
- $mlist_name='tw_ext_lkt';
- setGeneriert($mlist_name);
- // Lektoren holen die nicht mehr in den Verteiler gehoeren
- echo '
'.$mlist_name.' wird abgeglichen!
';
- flush();
- $sql_query="SELECT uid FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$mlist_name') AND uid NOT IN (SELECT mitarbeiter_uid FROM public.tbl_mitarbeiter JOIN public.tbl_benutzer ON(uid=mitarbeiter_uid) WHERE aktiv AND NOT fixangestellt AND lektor)";
- if(!($result = $db->db_query($sql_query)))
- $error_msg.=$db->db_last_error();
- while($row=$db->db_fetch_object($result))
- {
- $sql_query="DELETE FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$mlist_name') AND uid='$row->uid'";
- if(!$db->db_query($sql_query))
- $error_msg.=$db->db_last_error().$sql_query;
- echo '-';
- flush();
- }
- // Lektoren holen die nicht im Verteiler sind
- echo '
';
- $sql_query="SELECT mitarbeiter_uid AS uid FROM public.tbl_mitarbeiter JOIN public.tbl_benutzer ON(uid=mitarbeiter_uid) WHERE NOT fixangestellt AND lektor AND aktiv AND mitarbeiter_uid NOT LIKE '\\\\_%' AND mitarbeiter_uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$mlist_name'))";
- if(!($result = $db->db_query($sql_query)))
- $error_msg.=$db->db_last_error();
- while($row = $db->db_fetch_object($result))
- {
- $sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row->uid','".strtoupper($mlist_name)."', now(), 'mlists_generate')";
- if(!$db->db_query($sql_query))
- $error_msg.=$db->db_last_error().$sql_query;
- echo '-';
- flush();
- }
+ if(!($result = $db->db_query($qry_insert)))
+ $error_msg .= $db->db_last_error().$qry_insert.'
';
+
+ echo strtoupper($listname).' '.$db->db_affected_rows($result).' Einträge hinzugefügt
';
+
+ flush();
+ }
+
+// **************************************************************
+// Erstellen der Mailinglisten mit Schleifen-Logik
+// **************************************************************
+
// **************************************************************
// Lektoren-Verteiler innerhalb der Studiengaenge abgleichen
// Lektoren holen die nicht mehr in den Verteiler gehoeren
@@ -520,86 +544,13 @@ $error_msg='';
$sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row->mitarbeiter_uid','".strtoupper($row->mlist_name)."', now(), 'mlists_generate')";
if(!$db->db_query($sql_query))
$error_msg.=$db->db_last_error().$sql_query;
- echo '-';
+
flush();
}
- // **************************************************************
- // Verteiler Hochschulvertretung abgleichen
-
- echo 'Hochschulvertretungsverteiler werden abgeglichen!
';
- flush();
-
- //Verteiler anlegen, wenn nicht vorhanden
- $sql_query="SELECT * FROM public.tbl_gruppe WHERE gruppe_kurzbz='TW_HSV'";
- if($res = $db->db_query($sql_query))
- {
- if($db->db_num_rows($res)<=0)
- {
- $sql_query="INSERT INTO public.tbl_gruppe(gruppe_kurzbz, studiengang_kz, semester, bezeichnung,
- beschreibung, mailgrp, sichtbar, generiert, aktiv, updateamum, updatevon,
- insertamum, insertvon)
- VALUES('TW_HSV',0, NULL,'Hochschulvertretung FHTW','Hochschulvertretung FHTW', true, true, true, true, now(),'mlists_generate',now(), 'mlists_generate');";
- if(!$db->db_query($sql_query))
- echo "
Fehler beim Anlegen der Gruppe: $sql_query
";
- }
- }
- else
- echo "
Fehler:$sql_query";
-
- // Studierende holen, die nicht mehr in den Verteiler gehoeren
- $sql_query="SELECT gruppe_kurzbz, uid
- FROM public.tbl_benutzergruppe JOIN public.tbl_gruppe USING(gruppe_kurzbz)
- WHERE gruppe_kurzbz = 'TW_HSV'
- AND uid not in (SELECT uid FROM public.tbl_benutzerfunktion JOIN public.tbl_benutzer USING(uid)
- WHERE funktion_kurzbz='hsv' AND tbl_benutzer.aktiv AND
- (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von<=now()) AND
- (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis>=now())
- AND (SELECT studiengang_kz FROM public.tbl_studiengang
- WHERE oe_kurzbz=tbl_benutzerfunktion.oe_kurzbz LIMIT 1)=tbl_gruppe.studiengang_kz)";
- if(!($result=$db->db_query($sql_query)))
- $error_msg.=$db->db_last_error();
- while($row = $db->db_fetch_object($result))
- {
- $sql_query="DELETE FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$row->gruppe_kurzbz') AND uid='$row->uid'";
- if(!$db->db_query($sql_query))
- $error_msg.=$db->db_last_error().$sql_query;
- echo '-';
- flush();
- }
-
- // Studierende holen, die nicht im Verteiler sind
- echo '
';
- $sql_query="SELECT uid
- FROM
- public.tbl_benutzerfunktion
- JOIN public.tbl_benutzer USING(uid)
- WHERE
- funktion_kurzbz='hsv'
- AND tbl_benutzer.aktiv AND
- (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von<=now()) AND
- (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis>=now())
- AND uid NOT in(SELECT uid from public.tbl_benutzergruppe JOIN public.tbl_gruppe USING(gruppe_kurzbz)
- WHERE studiengang_kz=(SELECT studiengang_kz FROM public.tbl_studiengang
- WHERE oe_kurzbz=tbl_benutzerfunktion.oe_kurzbz LIMIT 1)
- AND gruppe_kurzbz = 'TW_HSV')";
- if(!($result = $db->db_query($sql_query)))
- $error_msg.=$db->db_last_error();
- while($row = $db->db_fetch_object($result))
- {
- if($row->uid!='')
- {
- setGeneriert('TW_HSV');
- $sql_query="INSERT INTO public.tbl_benutzergruppe (uid, gruppe_kurzbz, insertamum, insertvon) VALUES (".$db->db_add_param($row->uid).",'TW_HSV', now(), 'mlists_generate')";
- if(!$db->db_query($sql_query))
- $error_msg.=$db->db_last_error().$sql_query;
- echo '-';
- flush();
- }
- }
// **************************************************************
- // StudienvertretungenVerteiler abgleichen
+ // Studienvertretungen der Studiengänge abgleichen
echo 'Studienvertretungsverteiler werden abgeglichen!
';
flush();
@@ -649,7 +600,7 @@ $error_msg='';
$sql_query="DELETE FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$row->gruppe_kurzbz') AND uid='$row->uid'";
if(!$db->db_query($sql_query))
$error_msg.=$db->db_last_error().$sql_query;
- echo '-';
+
flush();
}
ob_flush();
@@ -680,69 +631,11 @@ $error_msg='';
$sql_query="INSERT INTO public.tbl_benutzergruppe (uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row->uid','".mb_strtoupper($row->gruppe_kurzbz)."', now(), 'mlists_generate')";
if(!$db->db_query($sql_query))
$error_msg.=$db->db_last_error().$sql_query;
- echo '-';
+
flush();
}
}
- //TW_STDV abgleichen
-
- //Verteiler TW_STDV anlegen, wenn nicht vorhanden
- $sql_query="SELECT * FROM public.tbl_gruppe WHERE gruppe_kurzbz='TW_STDV'";
- if($res = $db->db_query($sql_query))
- {
- if($db->db_num_rows($res)<=0)
- {
- $sql_query="INSERT INTO public.tbl_gruppe(gruppe_kurzbz, studiengang_kz, semester, bezeichnung,
- beschreibung, mailgrp, sichtbar, generiert, aktiv, updateamum, updatevon,
- insertamum, insertvon)
- VALUES('TW_STDV',0, NULL,'Alle StudienvertreterInnen','Alle StudienvertreterInnen', true, true, true, true, now(),'mlists_generate',now(), 'mlists_generate');";
- if(!$db->db_query($sql_query))
- echo "
Fehler beim Anlegen der Gruppe: $sql_query
";
- }
- }
- else
- echo "
Fehler:$sql_query";
-
- flush();
- ob_flush();
- setGeneriert('TW_STDV');
- $sql_query="SELECT gruppe_kurzbz, uid FROM public.tbl_benutzergruppe
- WHERE gruppe_kurzbz='TW_STDV'
- AND uid not in (SELECT uid FROM public.tbl_benutzerfunktion JOIN public.tbl_benutzer USING(uid)
- WHERE funktion_kurzbz='stdv' AND tbl_benutzer.aktiv AND
- (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von<=now()) AND
- (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis>=now())
- )";
- if(!($result = $db->db_query($sql_query)))
- $error_msg.=$db->db_last_error();
- while($row = $db->db_fetch_object($result))
- {
- $sql_query="DELETE FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('tw_stdv') AND uid='$row->uid'";
- if(!$db->db_query($sql_query))
- $error_msg.=$db->db_last_error().$sql_query;
- echo '-';
- flush();
- }
-
- // Studierende holen, die nicht im Verteiler sind und einfuegen
- echo '
';
- $sql_query="SELECT uid FROM public.tbl_benutzerfunktion JOIN public.tbl_benutzer USING(uid)
- WHERE funktion_kurzbz='stdv' AND tbl_benutzer.aktiv AND
- (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von<=now()) AND
- (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis>=now())
- AND uid NOT in(Select uid from public.tbl_benutzergruppe
- WHERE UPPER(gruppe_kurzbz)= UPPER('TW_STDV'))";
- if(!($result = $db->db_query($sql_query)))
- $error_msg.=$db->db_last_error();
- while($row = $db->db_fetch_object($result))
- {
- $sql_query="INSERT INTO public.tbl_benutzergruppe (uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row->uid','TW_STDV', now(), 'mlists_generate')";
- if(!$db->db_query($sql_query))
- $error_msg.=$db->db_last_error().$sql_query;
- echo '-';
- flush();
- }
// **************************************************************
// Verteiler Jahrgangsvertretung abgleichen
@@ -795,7 +688,7 @@ $error_msg='';
$sql_query="DELETE FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$row->gruppe_kurzbz') AND uid='$row->uid'";
if(!$db->db_query($sql_query))
$error_msg.=$db->db_last_error().$sql_query;
- echo '-';
+
flush();
}
@@ -826,317 +719,11 @@ $error_msg='';
$sql_query="INSERT INTO public.tbl_benutzergruppe (uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row->uid','".mb_strtoupper($row->gruppe_kurzbz)."', now(), 'mlists_generate')";
if(!$db->db_query($sql_query))
$error_msg.=$db->db_last_error().$sql_query;
- echo '-';
+
flush();
}
}
- //TW_JGV abgleichen
-
- //Verteiler TW_JGV anlegen, wenn nicht vorhanden
- $sql_query="SELECT * FROM public.tbl_gruppe WHERE gruppe_kurzbz='TW_JGV'";
- if($res = $db->db_query($sql_query))
- {
- if($db->db_num_rows($res)<=0)
- {
- $sql_query="INSERT INTO public.tbl_gruppe(gruppe_kurzbz, studiengang_kz, semester, bezeichnung,
- beschreibung, mailgrp, sichtbar, generiert, aktiv, updateamum, updatevon,
- insertamum, insertvon)
- VALUES('TW_JGV',0, NULL,'Alle JahrgangsvertreterInnen','Alle JahrgangsvertreterInnen', true, true, true, true, now(),'mlists_generate',now(), 'mlists_generate');";
- if(!$db->db_query($sql_query))
- echo "
Fehler beim Anlegen der Gruppe: $sql_query
";
- }
- }
- else
- echo "
Fehler:$sql_query";
- // Studierende holen, die nicht mehr in den Verteiler gehoeren
- flush();
- ob_flush();
- setGeneriert('TW_JGV');
- $sql_query="SELECT gruppe_kurzbz, uid FROM public.tbl_benutzergruppe
- WHERE gruppe_kurzbz='TW_JGV'
- AND uid not in (SELECT uid FROM public.tbl_benutzerfunktion JOIN public.tbl_benutzer USING(uid)
- WHERE funktion_kurzbz='jgv' AND tbl_benutzer.aktiv AND
- (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von<=now()) AND
- (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis>=now())
- )";
- if(!($result = $db->db_query($sql_query)))
- $error_msg.=$db->db_last_error();
- while($row = $db->db_fetch_object($result))
- {
- $sql_query="DELETE FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('tw_jgv') AND uid='$row->uid'";
- if(!$db->db_query($sql_query))
- $error_msg.=$db->db_last_error().$sql_query;
- echo '-';
- flush();
- }
-
- // Studierende holen, die noch nicht im Verteiler sind
- echo '
';
- $sql_query="SELECT uid FROM public.tbl_benutzerfunktion JOIN public.tbl_benutzer USING(uid)
- WHERE funktion_kurzbz='jgv' AND tbl_benutzer.aktiv AND
- (tbl_benutzerfunktion.datum_von IS NULL OR tbl_benutzerfunktion.datum_von<=now()) AND
- (tbl_benutzerfunktion.datum_bis IS NULL OR tbl_benutzerfunktion.datum_bis>=now())
- AND uid NOT in(Select uid from public.tbl_benutzergruppe
- WHERE UPPER(gruppe_kurzbz)= UPPER('TW_JGV'))";
- if(!($result = $db->db_query($sql_query)))
- $error_msg.=$db->db_last_error();
- while($row = $db->db_fetch_object($result))
- {
- $sql_query="INSERT INTO public.tbl_benutzergruppe (uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row->uid','TW_JGV', now(), 'mlists_generate')";
- if(!$db->db_query($sql_query))
- $error_msg.=$db->db_last_error().$sql_query;
- echo '-';
- flush();
- }
-
- // ***************************
- // TW_STD abgleichen
- flush();
- setGeneriert('TW_STD');
- echo 'TW_STD wird abgeglichen!
';
-
- //Abbrecher bleiben noch 3 Wochen im Verteiler
- //andere inaktive noch fuer 20 Wochen
- //damit im CIS die Menuepunkte fuer Studierende richtig angezeigt werden
- $sql_query="DELETE FROM public.tbl_benutzergruppe
- WHERE UPPER(gruppe_kurzbz)='TW_STD'
- AND uid not in
- (SELECT uid FROM campus.vw_student WHERE aktiv
- UNION
- SELECT uid FROM campus.vw_student WHERE aktiv=false AND get_rolle_prestudent(vw_student.prestudent_id, null)='Abbrecher' AND updateaktivam>now()-'3 weeks'::interval
- UNION
- SELECT uid FROM campus.vw_student WHERE aktiv=false AND get_rolle_prestudent(vw_student.prestudent_id, null)!='Abbrecher' AND updateaktivam>now()-'20 weeks'::interval
- )";
- if($result = $db->db_query($sql_query))
- {
- echo $db->db_affected_rows($result).' Eintraege entfernt
';
- }
- else
- {
- $error_msg.=$db->db_last_error();
- }
-
- // Studenten holen die nicht im Verteiler sind
- $sql_query="INSERT INTO public.tbl_benutzergruppe (uid, gruppe_kurzbz, insertamum, insertvon)
- SELECT uid,'TW_STD',now(),'mlists_generate'
- FROM campus.vw_student
- WHERE (aktiv
- OR
- (aktiv=false AND get_rolle_prestudent(vw_student.prestudent_id, null)='Abbrecher' AND updateaktivam>now()-'3 weeks'::interval)
- OR
- (aktiv=false AND get_rolle_prestudent(vw_student.prestudent_id, null)!='Abbrecher' AND updateaktivam>now()-'20 weeks'::interval))
- AND uid NOT in(SELECT uid FROM public.tbl_benutzergruppe
- WHERE UPPER(gruppe_kurzbz)='TW_STD')";
- if($result = $db->db_query($sql_query))
- {
- echo $db->db_affected_rows($result).' Eintraege hinzugefuegt
';
- }
- else
- $error_msg.=$db->db_last_error();
-
-
- // ***************************
- // TW_STD_M abgleichen. Alle maennlichen Studenten
- flush();
- ob_flush();
- setGeneriert('TW_STD_M');
- echo 'TW_STD_M wird abgeglichen!
';
-
- //Abbrecher bleiben noch 3 Wochen im Verteiler
- //andere inaktive noch fuer 20 Wochen
- //damit im CIS die Menuepunkte fuer Studierende richtig angezeigt werden
- $sql_query="DELETE FROM public.tbl_benutzergruppe
- WHERE UPPER(gruppe_kurzbz)='TW_STD_M'
- AND uid not in
- (SELECT uid FROM campus.vw_student WHERE aktiv AND geschlecht='m'
- UNION
- SELECT uid FROM campus.vw_student WHERE aktiv=false AND geschlecht='m' AND get_rolle_prestudent(vw_student.prestudent_id, null)='Abbrecher' AND updateaktivam>now()-'3 weeks'::interval
- UNION
- SELECT uid FROM campus.vw_student WHERE aktiv=false AND geschlecht='m' AND get_rolle_prestudent(vw_student.prestudent_id, null)!='Abbrecher' AND updateaktivam>now()-'20 weeks'::interval
- )";
- if($result = $db->db_query($sql_query))
- {
- echo $db->db_affected_rows($result).' Eintraege entfernt
';
- }
- else
- {
- $error_msg.=$db->db_last_error();
- }
-
- // Studenten holen die nicht im Verteiler sind
- $sql_query="INSERT INTO public.tbl_benutzergruppe (uid, gruppe_kurzbz, insertamum, insertvon)
- SELECT uid,'TW_STD_M',now(),'mlists_generate'
- FROM campus.vw_student
- WHERE (aktiv AND geschlecht='m'
- OR
- (aktiv=false AND geschlecht='m' AND get_rolle_prestudent(vw_student.prestudent_id, null)='Abbrecher' AND updateaktivam>now()-'3 weeks'::interval)
- OR
- (aktiv=false AND geschlecht='m' AND get_rolle_prestudent(vw_student.prestudent_id, null)!='Abbrecher' AND updateaktivam>now()-'20 weeks'::interval))
- AND uid NOT in(SELECT uid FROM public.tbl_benutzergruppe
- WHERE UPPER(gruppe_kurzbz)='TW_STD_M')";
- if($result = $db->db_query($sql_query))
- {
- echo $db->db_affected_rows($result).' Eintraege hinzugefuegt
';
- }
- else
- $error_msg.=$db->db_last_error();
-
-
- // ***************************
- // TW_STD_W abgleichen. Alle weiblichen Studentinnen
- flush();
- ob_flush();
- setGeneriert('TW_STD_W');
- echo 'TW_STD_W wird abgeglichen!
';
-
- //Abbrecher bleiben noch 3 Wochen im Verteiler
- //andere inaktive noch fuer 20 Wochen
- //damit im CIS die Menuepunkte fuer Studierende richtig angezeigt werden
- $sql_query="DELETE FROM public.tbl_benutzergruppe
- WHERE UPPER(gruppe_kurzbz)='TW_STD_W'
- AND uid not in
- (SELECT uid FROM campus.vw_student WHERE aktiv AND geschlecht='w'
- UNION
- SELECT uid FROM campus.vw_student WHERE aktiv=false AND geschlecht='w' AND get_rolle_prestudent(vw_student.prestudent_id, null)='Abbrecher' AND updateaktivam>now()-'3 weeks'::interval
- UNION
- SELECT uid FROM campus.vw_student WHERE aktiv=false AND geschlecht='w' AND get_rolle_prestudent(vw_student.prestudent_id, null)!='Abbrecher' AND updateaktivam>now()-'20 weeks'::interval
- )";
- if($result = $db->db_query($sql_query))
- {
- echo $db->db_affected_rows($result).' Eintraege entfernt
';
- }
- else
- {
- $error_msg.=$db->db_last_error();
- }
-
- // Studenten holen die nicht im Verteiler sind
- $sql_query="INSERT INTO public.tbl_benutzergruppe (uid, gruppe_kurzbz, insertamum, insertvon)
- SELECT uid,'TW_STD_W',now(),'mlists_generate'
- FROM campus.vw_student
- WHERE (aktiv AND geschlecht='w'
- OR
- (aktiv=false AND geschlecht='w' AND get_rolle_prestudent(vw_student.prestudent_id, null)='Abbrecher' AND updateaktivam>now()-'3 weeks'::interval)
- OR
- (aktiv=false AND geschlecht='w' AND get_rolle_prestudent(vw_student.prestudent_id, null)!='Abbrecher' AND updateaktivam>now()-'20 weeks'::interval))
- AND uid NOT in(SELECT uid FROM public.tbl_benutzergruppe
- WHERE UPPER(gruppe_kurzbz)='TW_STD_W')";
- if($result = $db->db_query($sql_query))
- {
- echo $db->db_affected_rows($result).' Eintraege hinzugefuegt
';
- }
- else
- $error_msg.=$db->db_last_error();
-
-
- // ***************************
- // TW_BAMA abgleichen
- // Alle ordentlichen Bachelor- und Master-Studierenden
- flush();
- ob_flush();
- setGeneriert('TW_BAMA');
- echo 'TW_BAMA wird abgeglichen!
';
-
- //Abbrecher bleiben noch 3 Wochen im Verteiler
- //andere inaktive noch fuer 20 Wochen
- $sql_query="DELETE FROM public.tbl_benutzergruppe
- WHERE UPPER(gruppe_kurzbz)='TW_BAMA'
- AND uid NOT IN
- (
- SELECT
- uid
- FROM
- campus.vw_student
- WHERE aktiv
- AND studiengang_kz IN
- (SELECT studiengang_kz FROM public.tbl_studiengang WHERE typ IN ('b','m'))
-
- UNION
-
- SELECT
- uid
- FROM
- campus.vw_student
- WHERE aktiv=false
- AND studiengang_kz IN
- (SELECT studiengang_kz FROM public.tbl_studiengang WHERE typ IN ('b','m'))
- AND get_rolle_prestudent(vw_student.prestudent_id, null)='Absolvent'
- AND updateaktivam>now()-'20 weeks'::interval
- )";
- if($result = $db->db_query($sql_query))
- {
- echo $db->db_affected_rows($result).' Eintraege entfernt
';
- }
- else
- {
- $error_msg.=$db->db_last_error();
- }
-
- // Studenten holen die nicht im Verteiler sind
- $sql_query="INSERT INTO public.tbl_benutzergruppe (uid, gruppe_kurzbz, insertamum, insertvon)
- SELECT uid,'TW_BAMA',now(),'mlists_generate'
- FROM campus.vw_student
- WHERE (aktiv
- OR
- (aktiv=false AND get_rolle_prestudent(vw_student.prestudent_id, null)='Absolvent' AND updateaktivam>now()-'20 weeks'::interval))
- AND studiengang_kz IN
- (SELECT studiengang_kz FROM public.tbl_studiengang WHERE typ IN ('b','m'))
- AND uid NOT in(SELECT uid FROM public.tbl_benutzergruppe
- WHERE UPPER(gruppe_kurzbz)='TW_BAMA')";
-
- if($result = $db->db_query($sql_query))
- {
- echo $db->db_affected_rows($result).' Eintraege hinzugefuegt
';
- }
- else
- $error_msg.=$db->db_last_error();
-
-
- // **************************************************************
- // Moodle - LektorenVerteiler abgleichen
- $mlist_name='moodle_lkt';
- setGeneriert($mlist_name);
- // Lektoren holen die nicht mehr in den Verteiler gehoeren
- echo $mlist_name.' wird abgeglichen!
';
- flush();
- ob_flush();
-
- $sql_query = "SELECT distinct mitarbeiter_uid uid
- from lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, addon.tbl_moodle ,campus.vw_lehreinheit
- where tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id
- and vw_lehreinheit.studiengang_kz=tbl_lehrveranstaltung.studiengang_kz
- and vw_lehreinheit.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id
- and vw_lehreinheit.lehreinheit_id=tbl_lehreinheit.lehreinheit_id
- and vw_lehreinheit.studiensemester_kurzbz=tbl_lehreinheit.studiensemester_kurzbz
- and vw_lehreinheit.studiensemester_kurzbz=tbl_lehreinheit.studiensemester_kurzbz
- and ((tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_moodle.lehrveranstaltung_id
- and tbl_moodle.studiensemester_kurzbz=tbl_lehreinheit.studiensemester_kurzbz)
- OR (tbl_lehreinheit.lehreinheit_id=tbl_moodle.lehreinheit_id))
- ";
- $sql_querys="DELETE FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$mlist_name') AND uid NOT IN ($sql_query)";
- if(!$result = $db->db_query($sql_querys))
- {
- $error_msg.=$db->db_last_error().' '.$sql_querys;
- }
-
- $sql_query.=" AND NOT EXISTS(SELECT 1 FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz=UPPER(".$db->db_add_param($mlist_name).") AND uid=vw_lehreinheit.mitarbeiter_uid)";
- if(!($result = $db->db_query($sql_query)))
- $error_msg.=$db->db_last_error().' '.$sql_query;
- // Lektoren holen die nicht im Verteiler sind
- echo '
';
- while($row = $db->db_fetch_object($result))
- {
- $sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row->uid','".strtoupper($mlist_name)."', now(), 'mlists_generate')";
- if(!$db->db_query($sql_query))
- {
- $error_msg.=$db->db_last_error().$sql_query;
- exit($error_msg);
- }
- echo '-';
- flush();
- }
-
// **************************************************************
// Organisationseinheiten-Verteiler
@@ -1385,8 +972,9 @@ $error_msg='';
}
}
echo '
';
+
// **************************************************************
- // Studentenverteiler fuer die einzelnen Organisationseinheiten bei Mischformen
+ // Studierendenverteiler fuer die einzelnen Organisationseinheiten bei Mischformen
echo '
Abgleich der Mischformverteiler';
$stsem = $stsem_obj->getNearest();
@@ -1481,7 +1069,6 @@ $error_msg='';
$error_msg.=$db->db_last_error().$sql_query;
exit($error_msg);
}
- echo '-';
flush();
}
}
@@ -1489,406 +1076,43 @@ $error_msg='';
else
$error_msg.=$db->db_last_error().' '.$sql_query;
- // **************************************************************
- // Serviceabteilungen Verteiler abgleichen
- $mlist_name='SERVICEABTEILUNGEN';
- $grp = new gruppe();
- if(!$grp->exists($mlist_name))
- {
- $grp->gruppe_kurzbz = $mlist_name;
- $grp->studiengang_kz = '0';
- $grp->bezeichnung = 'LeiterInnen der Serviceabt.';
- $grp->beschreibung = 'LeiterInnen der Serviceabteilungen';
- $grp->semester = '0';
- $grp->mailgrp = true;
- $grp->sichtbar = true;
- $grp->generiert = true;
- $grp->aktiv = true;
- $grp->lehre = false;
- $grp->insertamum = date('Y-m-d H:i:s');
- $grp->insertvon = 'mlists_generate';
-
- if(!$grp->save(true, false))
- die('Fehler: '.$grp->errormsg);
- }
- else
- {
- setGeneriert($mlist_name);
- }
- // Personen holen die nicht mehr in den Verteiler gehoeren
- echo $mlist_name.' wird abgeglichen!
';
- flush();
- ob_flush();
- $sql_query="SELECT uid FROM public.tbl_benutzergruppe
- WHERE
- UPPER(gruppe_kurzbz)=UPPER('$mlist_name') AND
- uid NOT IN (SELECT mitarbeiter_uid
- FROM
- public.tbl_mitarbeiter
- JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
- JOIN public.tbl_benutzerfunktion USING(uid)
- JOIN public.tbl_organisationseinheit USING(oe_kurzbz)
- WHERE tbl_benutzer.aktiv AND (funktion_kurzbz='Leitung') AND
- (tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()) AND
- (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now())
- AND tbl_organisationseinheit.organisationseinheittyp_kurzbz='Abteilung')";
- if(!($result = $db->db_query($sql_query)))
- $error_msg.=$db->db_last_error();
- while($row=$db->db_fetch_object($result))
- {
- $sql_query="DELETE FROM public.tbl_benutzergruppe WHERE UPPER(gruppe_kurzbz)=UPPER('$mlist_name') AND uid='$row->uid'";
- if(!$db->db_query($sql_query))
- $error_msg.=$db->db_last_error().$sql_query;
- echo '-';
- flush();
- }
- // Personen holen die nicht im Verteiler sind
- echo '
';
- $sql_query="SELECT distinct mitarbeiter_uid
- FROM
- public.tbl_mitarbeiter
- JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid)
- JOIN public.tbl_benutzerfunktion USING(uid)
- JOIN public.tbl_organisationseinheit USING(oe_kurzbz)
- WHERE tbl_benutzer.aktiv AND (funktion_kurzbz='Leitung') AND
- (tbl_benutzerfunktion.datum_von is null OR tbl_benutzerfunktion.datum_von<=now()) AND
- (tbl_benutzerfunktion.datum_bis is null OR tbl_benutzerfunktion.datum_bis>=now())
- AND tbl_organisationseinheit.organisationseinheittyp_kurzbz='Abteilung'
- AND uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name')";
- if(!($result = $db->db_query($sql_query)))
- $error_msg.=$db->db_last_error();
- while($row=$db->db_fetch_object($result))
- {
- $sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, studiensemester_kurzbz, updateamum, updatevon, insertamum, insertvon) VALUES ('$row->mitarbeiter_uid','".strtoupper($mlist_name)."',null, null, null, now(), 'mlists_generate')";
- if(!$db->db_query($sql_query))
- $error_msg.=$db->db_last_error().$sql_query;
- echo '-';
- flush();
- }
-
- // **************************************************************
- // Mitarbeiter Sprachen Institut
- $mlist_name='SPRACHEN';
-
- $grp = new gruppe();
- if(!$grp->exists($mlist_name))
- {
- $grp->gruppe_kurzbz = $mlist_name;
- $grp->studiengang_kz = '0';
- $grp->bezeichnung = 'sprachen';
- $grp->beschreibung = 'Mitarbeiter des Instituts Sprachen und Kulturwissenschaften';
- $grp->semester = '0';
- $grp->mailgrp = true;
- $grp->sichtbar = true;
- $grp->generiert = true;
- $grp->aktiv = true;
- $grp->lehre = true;
- $grp->insertamum = date('Y-m-d H:i:s');
- $grp->insertvon = 'mlists_generate';
-
- if(!$grp->save(true, false))
- die('Fehler: '.$grp->errormsg);
- }
- else
- {
- setGeneriert($mlist_name);
- }
-
-
- // Lektoren holen die nicht mehr in den Verteiler gehoeren
- echo '
'.$mlist_name.' wird abgeglichen!';
- flush();
-
- $sql_query = "SELECT distinct uid
- FROM
- public.tbl_benutzer
- JOIN public.tbl_benutzerfunktion USING(uid)
- JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid)
- WHERE oe_kurzbz in('Sprachen')
- AND tbl_benutzer.aktiv
- AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null)
- AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)";
-
- $sql_querys="DELETE FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name' AND uid NOT IN ($sql_query)";
- if(!$db->db_query($sql_querys))
- {
- $error_msg.=$db->db_last_error().' '.$sql_querys;
- }
-
- $sql_query.=" AND uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name')";
- if(!($result_oe = $db->db_query($sql_query)))
- $error_msg.=$db->db_last_error().' '.$sql_query;
- // Lektoren holen die nicht im Verteiler sind
- while($row_oe = $db->db_fetch_object($result_oe))
- {
- $sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row_oe->uid','".$mlist_name."', now(), 'mlists_generate')";
- if(!$db->db_query($sql_query))
- {
- $error_msg.=$db->db_last_error().$sql_query;
- }
- }
-
- // **************************************************************
- //Mitarbeiter sprachen Institut
- $mlist_name='HUMANITIES';
-
- $grp = new gruppe();
- if(!$grp->exists($mlist_name))
- {
- $grp->gruppe_kurzbz = $mlist_name;
- $grp->studiengang_kz = '0';
- $grp->bezeichnung = 'humanities';
- $grp->beschreibung = 'Mitarbeiter des Instituts Sprachen und Kulturwissenschaften';
- $grp->semester = '0';
- $grp->mailgrp = true;
- $grp->sichtbar = true;
- $grp->generiert = true;
- $grp->aktiv = true;
- $grp->lehre = true;
- $grp->insertamum = date('Y-m-d H:i:s');
- $grp->insertvon = 'mlists_generate';
-
- if(!$grp->save(true, false))
- die('Fehler: '.$grp->errormsg);
- }
- else
- {
- setGeneriert($mlist_name);
- }
-
-
- // Lektoren holen die nicht mehr in den Verteiler gehoeren
- echo '
'.$mlist_name.' wird abgeglichen!';
- flush();
-
- $sql_query = "SELECT distinct uid
- FROM
- public.tbl_benutzer
- JOIN public.tbl_benutzerfunktion USING(uid)
- JOIN public.tbl_mitarbeiter ON(uid=mitarbeiter_uid)
- WHERE oe_kurzbz in('Sprachen')
- AND tbl_benutzer.aktiv
- AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null)
- AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)";
-
- $sql_querys="DELETE FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name' AND uid NOT IN ($sql_query)";
- if(!$db->db_query($sql_querys))
- {
- $error_msg.=$db->db_last_error().' '.$sql_querys;
- }
-
- $sql_query.=" AND uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name')";
- if(!($result_oe = $db->db_query($sql_query)))
- $error_msg.=$db->db_last_error().' '.$sql_query;
- // Lektoren holen die nicht im Verteiler sind
- while($row_oe = $db->db_fetch_object($result_oe))
- {
- $sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row_oe->uid','".$mlist_name."', now(), 'mlists_generate')";
- if(!$db->db_query($sql_query))
- {
- $error_msg.=$db->db_last_error().$sql_query;
- }
- }
-
- // **************************************************************
- //Kollegiumsverteiler
- $mlist_name='KOLLEGIUM';
-
- $grp = new gruppe();
- setGeneriert($mlist_name);
-
- // Personen holen die nicht mehr in den Verteiler gehoeren
- echo '
'.$mlist_name.' wird abgeglichen!';
- flush();
-
- $sql_query = "SELECT distinct uid
- FROM
- public.tbl_benutzer
- JOIN public.tbl_benutzerfunktion USING(uid)
- WHERE funktion_kurzbz='kollegium'
- AND tbl_benutzer.aktiv
- AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null)
- AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)";
-
- $sql_querys="DELETE FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name' AND uid NOT IN ($sql_query)";
- if(!$db->db_query($sql_querys))
- {
- $error_msg.=$db->db_last_error().' '.$sql_querys;
- }
-
- $sql_query.=" AND uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name')";
- if(!($result_oe = $db->db_query($sql_query)))
- $error_msg.=$db->db_last_error().' '.$sql_query;
- // Personen holen die nicht im Verteiler sind
- while($row_oe = $db->db_fetch_object($result_oe))
- {
- $sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row_oe->uid','".$mlist_name."', now(), 'mlists_generate')";
- if(!$db->db_query($sql_query))
- {
- $error_msg.=$db->db_last_error().$sql_query;
- }
- }
-
- // **************************************************************
- //Akademisches Managementteam
- $mlist_name='TW_MANAGEMENTTEAM';
-
- $grp = new gruppe();
- setGeneriert($mlist_name);
-
- // Personen holen die nicht mehr in den Verteiler gehoeren
- echo '
'.$mlist_name.' wird abgeglichen!';
- flush();
-
- $sql_query = "SELECT distinct uid
- FROM
- public.tbl_benutzer
- JOIN public.tbl_benutzerfunktion USING(uid)
- WHERE funktion_kurzbz='managementteam'
- AND tbl_benutzer.aktiv
- AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null)
- AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)";
-
- $sql_querys="DELETE FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name' AND uid NOT IN ($sql_query)";
- if(!$db->db_query($sql_querys))
- {
- $error_msg.=$db->db_last_error().' '.$sql_querys;
- }
-
- $sql_query.=" AND uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name')";
- if(!($result_oe = $db->db_query($sql_query)))
- $error_msg.=$db->db_last_error().' '.$sql_query;
- // Personen holen die nicht im Verteiler sind
- while($row_oe = $db->db_fetch_object($result_oe))
- {
- $sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row_oe->uid','".$mlist_name."', now(), 'mlists_generate')";
- if(!$db->db_query($sql_query))
- {
- $error_msg.=$db->db_last_error().$sql_query;
- }
- }
-
- // **************************************************************
- // FUE Mitarbeiter
- $mlist_name='TW_FUE';
-
- $grp = new gruppe();
- setGeneriert($mlist_name);
-
- // Personen holen die nicht mehr in den Verteiler gehoeren
- echo '
'.$mlist_name.' wird abgeglichen!';
- flush();
-
- $sql_query = "SELECT distinct uid
- FROM
- public.tbl_benutzer
- JOIN public.tbl_benutzerfunktion USING(uid)
- WHERE funktion_kurzbz='fue'
- AND tbl_benutzer.aktiv
- AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null)
- AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)";
-
- $sql_querys="DELETE FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name' AND uid NOT IN ($sql_query)";
- if(!$db->db_query($sql_querys))
- {
- $error_msg.=$db->db_last_error().' '.$sql_querys;
- }
-
- $sql_query.=" AND uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name')";
- if(!($result_oe = $db->db_query($sql_query)))
- $error_msg.=$db->db_last_error().' '.$sql_query;
- // Personen holen die nicht im Verteiler sind
- while($row_oe = $db->db_fetch_object($result_oe))
- {
- $sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row_oe->uid','".$mlist_name."', now(), 'mlists_generate')";
- if(!$db->db_query($sql_query))
- {
- $error_msg.=$db->db_last_error().$sql_query;
- }
- }
-
- // **************************************************************
- // FUE weibliche Mitarbeiterinnen
- $mlist_name='TW_FUE_FRAUEN';
-
- $grp = new gruppe();
- setGeneriert($mlist_name);
-
- // Personen holen die nicht mehr in den Verteiler gehoeren
- echo '
'.$mlist_name.' wird abgeglichen!';
- flush();
-
- $sql_query = "SELECT distinct uid
- FROM
- public.tbl_benutzer
- JOIN public.tbl_benutzerfunktion USING(uid)
- JOIN public.tbl_person USING (person_id)
- WHERE funktion_kurzbz='fue'
- AND geschlecht='w'
- AND tbl_benutzer.aktiv
- AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null)
- AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)";
-
- $sql_querys="DELETE FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name' AND uid NOT IN ($sql_query)";
- if(!$db->db_query($sql_querys))
- {
- $error_msg.=$db->db_last_error().' '.$sql_querys;
- }
-
- $sql_query.=" AND uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name')";
- if(!($result_oe = $db->db_query($sql_query)))
- $error_msg.=$db->db_last_error().' '.$sql_query;
- // Personen holen die nicht im Verteiler sind
- while($row_oe = $db->db_fetch_object($result_oe))
- {
- $sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row_oe->uid','".$mlist_name."', now(), 'mlists_generate')";
- if(!$db->db_query($sql_query))
- {
- $error_msg.=$db->db_last_error().$sql_query;
- }
- }
-
- // **************************************************************
- // Alle MA mit Funktion Leitung oder stvLeitung oder gfLtg
- $mlist_name='TW_LEITUNG';
-
- $grp = new gruppe();
- setGeneriert($mlist_name);
-
- // Personen holen die nicht mehr in den Verteiler gehoeren
- echo '
'.$mlist_name.' wird abgeglichen!';
- flush();
-
- $sql_query = "SELECT DISTINCT uid FROM tbl_person JOIN tbl_benutzer
- USING (person_id) JOIN tbl_benutzerfunktion USING (uid)
- WHERE funktion_kurzbz in('Leitung','stvLtg','gLtg')
- AND (tbl_benutzerfunktion.datum_von<=now() OR tbl_benutzerfunktion.datum_von is null)
- AND (tbl_benutzerfunktion.datum_bis>=now() OR tbl_benutzerfunktion.datum_bis is null)";
-
- $sql_querys="DELETE FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name' AND uid NOT IN ($sql_query)";
- if(!$db->db_query($sql_querys))
- {
- $error_msg.=$db->db_last_error().' '.$sql_querys;
- }
-
- $sql_query.=" AND uid NOT IN (SELECT uid FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='$mlist_name')";
- if(!($result_oe = $db->db_query($sql_query)))
- $error_msg.=$db->db_last_error().' '.$sql_query;
- // Personen holen die nicht im Verteiler sind
- while($row_oe = $db->db_fetch_object($result_oe))
- {
- $sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row_oe->uid','".$mlist_name."', now(), 'mlists_generate')";
- if(!$db->db_query($sql_query))
- {
- $error_msg.=$db->db_last_error().$sql_query;
- }
- }
-
echo $error_msg;
+
+ // Send Mail to admin if error occurs
+ if ($error_msg != '')
+ {
+ $mailtext = '
+
+ Im Script mlists_generate.php sind folgende Fehler aufgetreten:
';
+ $mailtext .= $error_msg;
+ $mailtext = wordwrap($mailtext,70);
+ $mail = new mail(MAIL_ADMIN, 'no-reply', 'ERROR mlists_generate.php', 'Bitte sehen Sie sich die Nachricht in HTML Sicht an, um den Inhalt vollständig darzustellen.');
+ //$mail->setBCCRecievers('kindlm@technikum-wien.at');
+ $mail->setHTMLContent($mailtext);
+ $mail->send();
+ }
?>
- Die Mailinglisten wurden abgeglichen.
-