diff --git a/system/mlists/mlists_generate.php b/system/mlists/mlists_generate.php deleted file mode 100644 index 18123d0a4..000000000 --- a/system/mlists/mlists_generate.php +++ /dev/null @@ -1,1208 +0,0 @@ -, - * Andreas Oesterreicher and - * Rudolf Hangl . - */ -/**************************************************************************** - * Script: mlists_generate.php - * Descr: Das Skript generiert Mailinglisten in der Datenbanken - * fuer Einheiten, Lektoren und fix Angestellte. - * Author: Christian Paminger - * Erstellt: 12.9.2005 - * Update: 14.9.2005 von Christian Paminger - *****************************************************************************/ - -require_once('../../config/vilesci.config.inc.php'); -require_once('../../include/functions.inc.php'); -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=''; -?> - - - - Mailinglisten - - - - -

MailingListen abgleich

- db_query($sql_query))) - $error_msg.=$db->db_last_error(); - if($row = $db->db_fetch_object($result)) - $studiensemester=$row->studiensemester_kurzbz; - else - $error_msg.= $db->db_last_error().$sql_query; - - $stsem_obj = new studiensemester(); - - /* - if(mb_substr($studiensemester,0,1)=='W') - $stsem2 = $stsem_obj->getPreviousFrom($studiensemester); - else - $stsem2 = $stsem_obj->getNextFrom($studiensemester); - */ - $stsem2 = $stsem_obj->getNearestFrom($studiensemester); - - function setGeneriert($gruppe) - { - $db = new basis_db(); - $qry = "UPDATE public.tbl_gruppe SET generiert=true WHERE UPPER(gruppe_kurzbz)=UPPER('".addslashes($gruppe)."')"; - $db->db_query($qry); - } - - /** - * Löscht alle BenutzerInnen aus NICHT-generierten Verteilern die nicht für die Lehre sind (Attribut lehre=false), deren Account vor mehr als 3 Wochen deaktiviert wurde - */ - - $qry_delete = " DELETE FROM public.tbl_benutzergruppe - WHERE tbl_benutzergruppe.studiensemester_kurzbz IS NULL - AND gruppe_kurzbz IN (SELECT gruppe_kurzbz FROM public.tbl_gruppe WHERE generiert=false AND lehre=false) - AND uid IN (SELECT uid FROM public.tbl_benutzer WHERE aktiv=false AND updateaktivamdb_query($qry_delete))) - $error_msg .= $db->db_last_error().$qry_delete.'

'; - - echo $db->db_affected_rows($result).' inaktive BenutzerInnen wurden aus statischen Verteilern gelöscht

'; - - /** - * 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 (32 Zeichen)'; - * $verteilerArray['name_des_verteilers']['beschreibung'] = 'Beschreibung des Verteilers (Anzeige im CIS)(128 Zeichen)'; - * $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 DISTINCT mitarbeiter_uid AS uid - FROM public.tbl_mitarbeiter - JOIN public.tbl_benutzer ON (mitarbeiter_uid=uid) - WHERE lektor - AND aktiv - AND personalnummer >=0"; - //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 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 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 DISTINCT 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 NOT EXISTS(SELECT 1 FROM public.tbl_benutzerfunktion WHERE funktion_kurzbz in('hilfskraft','praktikum') AND uid=mitarbeiter_uid AND (datum_bis>=now() or datum_bis is null))"; - //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 DISTINCT 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 DISTINCT 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 DISTINCT 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 DISTINCT 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 DISTINCT 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 DISTINCT 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 DISTINCT 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 DISTINCT 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 DISTINCT 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 - /* Von kindlm auskommentiert am 27.09.2017. Verteiler wird vermutlich nicht mehr benötigt. Wenn ein Jahr lang kein Problem, dann bitte löschen. - $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)"; - //Alle aktiven Studierenden in Academy-Lehrgaengen - //Abbrecher bleiben noch 3 Wochen im Verteiler andere inaktive noch fuer 20 Wochen - $verteilerArray['tw_academy_std']['bezeichnung'] = 'Alle Studierenden der Academy'; - $verteilerArray['tw_academy_std']['beschreibung'] = 'Alle Studierenden der TW-Academy (LehrgangsteilnehmerInnen)'; - $verteilerArray['tw_academy_std']['sql'] = " SELECT DISTINCT uid AS uid - FROM campus.vw_student - JOIN public.tbl_studiengang USING (studiengang_kz) - JOIN public.tbl_organisationseinheit USING (oe_kurzbz) - WHERE ( - vw_student.aktiv - OR - (vw_student.aktiv=false AND get_rolle_prestudent(vw_student.prestudent_id, null)='Abbrecher' AND vw_student.updateaktivam>now()-'3 weeks'::interval) - OR - (vw_student.aktiv=false AND get_rolle_prestudent(vw_student.prestudent_id, null)!='Abbrecher' AND vw_student.updateaktivam>now()-'20 weeks'::interval)) - AND tbl_organisationseinheit.oe_parent_kurzbz='lehrgang' - AND organisationseinheittyp_kurzbz='Lehrgang'"; - //Alle aktiven Lektoren von BIF DUA - $verteilerArray['bif_lkt_dua']['bezeichnung'] = 'Alle Lektoren von BIF DUAL'; - $verteilerArray['bif_lkt_dua']['beschreibung'] = 'Alle Lektoren von BIF DUAL'; - $verteilerArray['bif_lkt_dua']['sql'] = "SELECT distinct mitarbeiter_uid as uid - FROM - lehre.tbl_lehrveranstaltung - JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id) - JOIN lehre.tbl_lehreinheitmitarbeiter USING(lehreinheit_id) - WHERE - (studiensemester_kurzbz='$studiensemester' OR - studiensemester_kurzbz='$stsem2') - AND mitarbeiter_uid NOT LIKE '\\\\_%' - AND tbl_lehrveranstaltung.studiengang_kz=257 - AND tbl_lehrveranstaltung.orgform_kurzbz='DUA' - "; - - $verteilerArray['pre_alumni_wintersemester']['bezeichnung'] = 'Zukünftige Absolventen Wintersemester'; - $verteilerArray['pre_alumni_wintersemester']['beschreibung'] = 'Zukünftige Absolventen Wintersemester'; - $verteilerArray['pre_alumni_wintersemester']['sql'] = "SELECT - distinct tbl_benutzer.uid - FROM - public.tbl_studentlehrverband - JOIN public.tbl_studiengang USING(studiengang_kz) - JOIN public.tbl_benutzer ON(uid=student_uid) - WHERE - ( - (tbl_studiengang.typ='m' AND semester=3) - OR (tbl_studiengang.typ='b' AND semester=5) - ) - AND tbl_benutzer.aktiv = true - AND tbl_studentlehrverband.studiensemester_kurzbz = (SELECT studiensemester_kurzbz FROM public.vw_studiensemester where studiensemester_kurzbz like 'WS%' ORDER BY delta LIMIT 1)"; - - $verteilerArray['pre_alumni_sommersemester']['bezeichnung'] = 'Zukünftige Absolventen Sommersemester'; - $verteilerArray['pre_alumni_sommersemester']['beschreibung'] = 'Zukünftige Absolventen Sommersemester'; - $verteilerArray['pre_alumni_sommersemester']['sql'] = "SELECT - distinct tbl_benutzer.uid - FROM - public.tbl_studentlehrverband - JOIN public.tbl_studiengang USING(studiengang_kz) - JOIN public.tbl_benutzer ON(uid=student_uid) - WHERE - ( - (tbl_studiengang.typ='m' AND semester=4) - OR (tbl_studiengang.typ='b' AND semester=6) - ) - AND tbl_benutzer.aktiv = true - AND tbl_studentlehrverband.studiensemester_kurzbz = (SELECT studiensemester_kurzbz FROM public.vw_studiensemester where studiensemester_kurzbz like 'SS%' ORDER BY delta LIMIT 1)"; - - $bezeichnung = ''; - $beschreibung = ''; - foreach ($verteilerArray AS $listname => $data) - { - $grp = new gruppe(); - // Pruefen, ob die Gruppe existert, wenn nicht, anlegen - if(!$grp->exists($listname)) - { - if (strlen($data['bezeichnung']) > 32) - $bezeichnung = substr($data['bezeichnung'], 0, 32); - else - $bezeichnung = $data['bezeichnung']; - - if (strlen($data['beschreibung']) > 128) - $beschreibung = substr($data['beschreibung'], 0, 128); - else - $beschreibung = $data['beschreibung']; - - $grp->gruppe_kurzbz = $listname; - $grp->studiengang_kz = '0'; - $grp->semester = '0'; - $grp->bezeichnung = $bezeichnung; - $grp->beschreibung = $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); - - $qry_delete = " DELETE FROM - public.tbl_benutzergruppe - WHERE - UPPER(gruppe_kurzbz)=UPPER(".$db->db_add_param($listname).") - AND - uid NOT IN (".$data['sql'].");"; - - 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(); - - $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($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 - echo '
Lektoren-Verteiler der Studiengaenge werden abgeglichen!
'; - flush(); - $sql_query="SELECT uid, gruppe_kurzbz FROM public.tbl_benutzergruppe - WHERE gruppe_kurzbz LIKE '%\\_LKT' AND UPPER(gruppe_kurzbz)!=UPPER('tw_lkt') AND UPPER(gruppe_kurzbz)!=UPPER('tw_fix_lkt') AND UPPER(gruppe_kurzbz)!=UPPER('tw_ext_lkt') AND UPPER(gruppe_kurzbz)!=UPPER('moodle_lkt') - AND (uid,UPPER(gruppe_kurzbz)) NOT IN - (SELECT mitarbeiter_uid,UPPER(typ::varchar(1) || tbl_studiengang.kurzbz || '_lkt') - FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter, public.tbl_studiengang - WHERE - tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND - tbl_lehreinheit.lehreinheit_id=tbl_lehreinheitmitarbeiter.lehreinheit_id AND - tbl_studiengang.studiengang_kz=tbl_lehrveranstaltung.studiengang_kz AND - (studiensemester_kurzbz='$studiensemester' OR - studiensemester_kurzbz='$stsem2') AND mitarbeiter_uid NOT LIKE '\\\\_%')"; - - if(!($result=$db->db_query($sql_query))) - $error_msg.=$db->db_last_error().$sql_query; - 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(); - } - // Lektoren holen die noch nicht im Verteiler sind - echo '
'; - $sql_query="SELECT distinct mitarbeiter_uid, UPPER(typ::varchar(1) || tbl_studiengang.kurzbz || '_lkt') AS mlist_name, tbl_studiengang.studiengang_kz - FROM lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_lehreinheitmitarbeiter, public.tbl_studiengang - WHERE - tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id AND - tbl_lehreinheit.lehreinheit_id=tbl_lehreinheitmitarbeiter.lehreinheit_id AND - tbl_studiengang.studiengang_kz=tbl_lehrveranstaltung.studiengang_kz AND - (studiensemester_kurzbz='$studiensemester' OR - studiensemester_kurzbz='$stsem2') AND - mitarbeiter_uid NOT LIKE '\\\\_%' AND tbl_studiengang.studiengang_kz!=0 AND - (mitarbeiter_uid,UPPER(typ::varchar(1) || tbl_studiengang.kurzbz || '_lkt')) NOT IN - (SELECT uid, UPPER(gruppe_kurzbz) FROM public.tbl_benutzergruppe - WHERE gruppe_kurzbz LIKE '%\\_LKT' AND UPPER(gruppe_kurzbz)!=UPPER('tw_lkt') AND UPPER(gruppe_kurzbz)!=UPPER('tw_fix_lkt') AND UPPER(gruppe_kurzbz)!=UPPER('tw_ext_lkt') AND UPPER(gruppe_kurzbz)!=UPPER('moodle_lkt'))"; - //echo $sql_query; - if(!($result=$db->db_query($sql_query))) - $error_msg.=$db->db_last_error().$sql_query; - while($row=$db->db_fetch_object($result)) - { - $sql_query="SELECT * FROM public.tbl_gruppe WHERE gruppe_kurzbz='".strtoupper($row->mlist_name)."'"; - if($res = $db->db_query($sql_query)) - { - if($db->db_num_rows($res)<=0) - { - setGeneriert($row->mlist_name); - $sql_query="INSERT INTO public.tbl_gruppe(gruppe_kurzbz, studiengang_kz, semester, bezeichnung, - beschreibung, mailgrp, sichtbar, generiert, aktiv, updateamum, updatevon, - insertamum, insertvon) - VALUES('".strtoupper($row->mlist_name)."',$row->studiengang_kz, 0,'$row->mlist_name',". - "'$row->mlist_name', 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"; - - setGeneriert($row->mlist_name); - $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; - - flush(); - } - - - // ************************************************************** - // Studienvertretungen der Studiengänge abgleichen - - echo 'Studienvertretungsverteiler werden abgeglichen!
'; - flush(); - - //Verteiler anlegen - $sql_query="SELECT DISTINCT - UPPER(typ||kurzbz)||'_'||UPPER(funktion_kurzbz) AS gruppe , - UPPER(typ||kurzbz) AS studiengang, - tbl_studiengang.studiengang_kz - FROM public.tbl_benutzerfunktion - JOIN public.tbl_studiengang USING (oe_kurzbz) - WHERE funktion_kurzbz='stdv' - AND UPPER(typ||kurzbz)||'_'||UPPER(funktion_kurzbz) NOT IN (SELECT gruppe_kurzbz FROM public.tbl_gruppe) - AND tbl_studiengang.aktiv - AND tbl_studiengang.studiengang_kz!=0"; - if($res = $db->db_query($sql_query)) - { - while($row = $db->db_fetch_object($res)) - { - 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(".$db->db_add_param($row->gruppe).",".$db->db_add_param($row->studiengang_kz).", NULL,".$db->db_add_param('Studienvertretung '.$row->studiengang).",".$db->db_add_param('Studienvertretung '.$row->studiengang).", true, true, true, true, now(),'mlists_generate',now(), 'mlists_generate');"; - if(!$db->db_query($sql_query)) - echo "
Fehler beim Anlegen der Gruppe: $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 LIKE '%_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()) - AND (SELECT studiengang_kz FROM public.tbl_studiengang - WHERE oe_kurzbz=tbl_benutzerfunktion.oe_kurzbz LIMIT 1)=tbl_gruppe.studiengang_kz) - AND tbl_gruppe.studiengang_kz!='0'"; - 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; - - flush(); - } - ob_flush(); - // Studierende holen, die nicht im Verteiler sind - echo '
'; - $sql_query="SELECT DISTINCT uid, tbl_gruppe.gruppe_kurzbz - FROM - public.tbl_benutzerfunktion - JOIN public.tbl_benutzer USING(uid) - JOIN public.tbl_studiengang USING(oe_kurzbz) - JOIN public.tbl_gruppe ON(tbl_gruppe.studiengang_kz=tbl_studiengang.studiengang_kz AND gruppe_kurzbz like '%_STDV') - 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 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 Like '%_STDV')"; - if(!($result = $db->db_query($sql_query))) - $error_msg.=$db->db_last_error(); - while($row = $db->db_fetch_object($result)) - { - if($row->gruppe_kurzbz!='') - { - setGeneriert($row->gruppe_kurzbz); - $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; - - flush(); - } - } - - - // ************************************************************** - // Verteiler Jahrgangsvertretung abgleichen - - echo 'Jahrgangsvertretungsverteiler werden abgeglichen!
'; - flush(); - - //Verteiler der einzelnen Studiengaenge anlegen - $sql_query="SELECT DISTINCT - UPPER(typ||kurzbz)||'_'||UPPER(funktion_kurzbz) AS gruppe , - UPPER(typ||kurzbz) AS studiengang, - tbl_studiengang.studiengang_kz - FROM public.tbl_benutzerfunktion - JOIN public.tbl_studiengang USING (oe_kurzbz) - WHERE funktion_kurzbz='jgv' - AND UPPER(typ||kurzbz)||'_'||UPPER(funktion_kurzbz) NOT IN (SELECT gruppe_kurzbz FROM public.tbl_gruppe) - AND tbl_studiengang.aktiv - AND tbl_studiengang.studiengang_kz!=0"; - if($res = $db->db_query($sql_query)) - { - while($row = $db->db_fetch_object($res)) - { - 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(".$db->db_add_param($row->gruppe).",".$db->db_add_param($row->studiengang_kz).", NULL,".$db->db_add_param('Jahrgangsvertretung '.$row->studiengang).",".$db->db_add_param('Jahrgangsvertretung '.$row->studiengang).", true, true, true, true, now(),'mlists_generate',now(), 'mlists_generate');"; - if(!$db->db_query($sql_query)) - echo "
Fehler beim Anlegen der Gruppe: $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 LIKE '%_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()) - AND (SELECT studiengang_kz FROM public.tbl_studiengang - WHERE oe_kurzbz=tbl_benutzerfunktion.oe_kurzbz LIMIT 1)=tbl_gruppe.studiengang_kz) - AND tbl_gruppe.studiengang_kz!='0'"; - 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; - - flush(); - } - - // Studierende holen, die noch nicht im Verteiler sind - echo '
'; - $sql_query="SELECT DISTINCT uid, tbl_gruppe.gruppe_kurzbz - FROM - public.tbl_benutzerfunktion - JOIN public.tbl_benutzer USING(uid) - JOIN public.tbl_studiengang USING(oe_kurzbz) - JOIN public.tbl_gruppe ON(tbl_gruppe.studiengang_kz=tbl_studiengang.studiengang_kz AND gruppe_kurzbz like '%_JGV') - 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 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 Like '%_JGV')"; - if(!($result = $db->db_query($sql_query))) - $error_msg.=$db->db_last_error(); - while($row = $db->db_fetch_object($result)) - { - if($row->gruppe_kurzbz!='') - { - setGeneriert($row->gruppe_kurzbz); - $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; - - flush(); - } - } - - // ************************************************************** - // Organisationseinheiten-Verteiler - - /* - $qry = "SELECT * FROM public.tbl_organisationseinheit WHERE aktiv AND mailverteiler"; - if($result = $db->db_query($qry)) - { - while($row = $db->db_fetch_object($result)) - { - $mlist_name=strtoupper($row->oe_kurzbz); - - $grp = new gruppe(); - if(!$grp->exists($mlist_name)) - { - $grp->gruppe_kurzbz = $mlist_name; - $grp->studiengang_kz = '0'; - $grp->bezeichnung = $row->oe_kurzbz; - $grp->beschreibung = 'Personen der Organisationseinheit '.$row->bezeichnung; - $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); - } - - $oe = new organisationseinheit(); - $childs = $oe->getChilds($row->oe_kurzbz); - - // Lektoren holen die nicht mehr in den Verteiler gehoeren - echo '
'.$mlist_name.' wird abgeglichen!
'; - flush(); - - $oes=''; - foreach ($childs as $oe_kurzbz) - { - if($oes!='') - $oes.=','; - - $oes .= "'".addslashes($oe_kurzbz)."'"; - } - - $sql_query = "SELECT distinct uid FROM public.tbl_benutzer JOIN public.tbl_benutzerfunktion USING(uid) - WHERE oe_kurzbz in($oes) - 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; - echo '-'; - flush(); - } - - $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 - echo '
'; - 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; - exit($error_msg); - } - echo '-'; - flush(); - } - } - } - */ - // ************************************************************** - // Instituts-Verteiler - echo '
Abgleich der Institutsverteiler
'; - //Externe Mitarbeiter - $qry = "SELECT * FROM public.tbl_organisationseinheit WHERE aktiv AND mailverteiler AND organisationseinheittyp_kurzbz='Institut'"; - - if($result = $db->db_query($qry)) - { - while($row = $db->db_fetch_object($result)) - { - $mlist_name=strtoupper($row->oe_kurzbz).'_EXT'; - - $grp = new gruppe(); - if(!$grp->exists($mlist_name)) - { - $grp->gruppe_kurzbz = $mlist_name; - $grp->studiengang_kz = '0'; - $grp->bezeichnung = $row->oe_kurzbz; - $grp->beschreibung = 'Externe Mitarbeiter des Instituts '.$row->bezeichnung; - $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); - } - - $oe = new organisationseinheit(); - $childs = $oe->getChilds($row->oe_kurzbz); - - // Lektoren holen die nicht mehr in den Verteiler gehoeren - echo '
'.$mlist_name.' wird abgeglichen!'; - flush(); - - $oes=''; - foreach ($childs as $oe_kurzbz) - { - if($oes!='') - $oes.=','; - - $oes .= "'".addslashes($oe_kurzbz)."'"; - } - - $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($oes) - AND tbl_benutzer.aktiv AND NOT fixangestellt - 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; - } - } - } - } - - //Fixe Mitarbeiter - $qry = "SELECT * FROM public.tbl_organisationseinheit WHERE aktiv AND mailverteiler AND organisationseinheittyp_kurzbz='Institut'"; - - if($result = $db->db_query($qry)) - { - while($row = $db->db_fetch_object($result)) - { - $mlist_name=strtoupper($row->oe_kurzbz).'_FIX'; - - $grp = new gruppe(); - if(!$grp->exists($mlist_name)) - { - $grp->gruppe_kurzbz = $mlist_name; - $grp->studiengang_kz = '0'; - $grp->bezeichnung = $row->oe_kurzbz; - $grp->beschreibung = 'Fixangestellte Mitarbeiter des Instituts '.$row->bezeichnung; - $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); - } - - $oe = new organisationseinheit(); - $childs = $oe->getChilds($row->oe_kurzbz); - - // Lektoren holen die nicht mehr in den Verteiler gehoeren - echo '
'.$mlist_name.' wird abgeglichen!'; - flush(); - - $oes=''; - foreach ($childs as $oe_kurzbz) - { - if($oes!='') - $oes.=','; - - $oes .= "'".addslashes($oe_kurzbz)."'"; - } - - $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($oes) - AND tbl_benutzer.aktiv AND fixangestellt - 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; - } - } - } - } - echo '
'; - - // ************************************************************** - // Studierendenverteiler fuer die einzelnen Organisationseinheiten bei Mischformen - echo '
Abgleich der Mischformverteiler'; - $stsem = $stsem_obj->getNearest(); - - $sql_query = " - SELECT - tbl_prestudentstatus.orgform_kurzbz, - tbl_studiengang.studiengang_kz, - tbl_studiengang.typ, - tbl_studiengang.kurzbz - FROM - public.tbl_student - JOIN public.tbl_benutzer ON(student_uid=uid) - JOIN public.tbl_prestudentstatus USING(prestudent_id) - JOIN public.tbl_studiengang USING(studiengang_kz) - WHERE - tbl_studiengang.mischform - AND tbl_benutzer.aktiv - AND tbl_prestudentstatus.orgform_kurzbz is not null - GROUP BY - tbl_studiengang.studiengang_kz, tbl_prestudentstatus.orgform_kurzbz, tbl_studiengang.typ, tbl_studiengang.kurzbz - "; - - if($result = $db->db_query($sql_query)) - { - echo '
'; - - while($row = $db->db_fetch_object($result)) - { - $mlist_name=strtoupper($row->typ.$row->kurzbz.'_'.$row->orgform_kurzbz); - echo $mlist_name.'
'; - - //Gruppe anlegen falls noch nicht vorhanden - $grp = new gruppe(); - if(!$grp->exists($mlist_name)) - { - $grp->gruppe_kurzbz = $mlist_name; - $grp->studiengang_kz = $row->studiengang_kz; - $grp->bezeichnung = 'Alle '.$row->orgform_kurzbz.' Studenten von '.strtoupper($row->typ.$row->kurzbz); - $grp->beschreibung = 'Alle '.$row->orgform_kurzbz.' Studenten von '.strtoupper($row->typ.$row->kurzbz); - $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); - } - - $sql_query=" - SELECT - distinct student_uid - FROM - public.tbl_student - JOIN public.tbl_benutzer ON(uid=student_uid) - WHERE - tbl_benutzer.aktiv AND - '".addslashes($row->orgform_kurzbz)."'= - (SELECT orgform_kurzbz - FROM public.tbl_prestudentstatus - WHERE - prestudent_id=tbl_student.prestudent_id - AND tbl_prestudentstatus.studiensemester_kurzbz='".addslashes($stsem)."' - ORDER BY datum desc, insertamum desc, ext_id desc LIMIT 1) - AND tbl_student.studiengang_kz='".addslashes($row->studiengang_kz)."'"; - - //Personen entfernen die nicht mehr in den Verteiler gehoeren - $qry = "DELETE FROM public.tbl_benutzergruppe WHERE gruppe_kurzbz='".$mlist_name."' AND uid NOT IN(".$sql_query.");"; - if(!$db->db_query($qry)) - { - $error_msg.="Fehler bei Qry:".$qry; - } - - //Fehlende Personen hinzufuegen - $sql_query.=" AND student_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; - - - while($row_oe = $db->db_fetch_object($result_oe)) - { - $sql_query="INSERT INTO public.tbl_benutzergruppe(uid, gruppe_kurzbz, insertamum, insertvon) VALUES ('$row_oe->student_uid','".$mlist_name."', now(), 'mlists_generate')"; - if(!$db->db_query($sql_query)) - { - $error_msg.=$db->db_last_error().$sql_query; - exit($error_msg); - } - flush(); - } - } - } - else - $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.
-

- -