From a4319c476e11001fb9e75348bed56a6cd2a24566 Mon Sep 17 00:00:00 2001 From: oesi Date: Wed, 18 Feb 2015 15:38:09 +0100 Subject: [PATCH] =?UTF-8?q?Anpassungen=20Mailverteiler=20-=20Verteiler=20f?= =?UTF-8?q?=C3=BCr=20weibliche=20Mitarbeiterinnen=20hinzugef=C3=BCgt=20-?= =?UTF-8?q?=20Lektorenverteiler=20enthaelt=20nun=20alle=20Lektoren=20des?= =?UTF-8?q?=20aktuellen=20Studiensemesters=20und=20dem=20naheliegendem=20a?= =?UTF-8?q?ndern=20Studiensemester=20-=20Fehler=20behoben=20bei=20dem=20di?= =?UTF-8?q?e=20Moodle=20Gruppe=20t=C3=A4glich=20gel=C3=B6scht=20und=20wied?= =?UTF-8?q?er=20angelegt=20wurde?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/studiensemester.class.php | 34 +++++++++++++++++++++++++ system/mlists/mlists_generate.php | 42 +++++++++++++++++++++++++++++-- 2 files changed, 74 insertions(+), 2 deletions(-) diff --git a/include/studiensemester.class.php b/include/studiensemester.class.php index 4db4b675e..720adcf5f 100644 --- a/include/studiensemester.class.php +++ b/include/studiensemester.class.php @@ -523,6 +523,40 @@ class studiensemester extends basis_db } } + /** + * Liefert das Studiensemester das aktuell am naehesten zu $studiensemester_kurzbz liegt + * + * @param $studiensemester_kurzbz + * @return $studiensemester_kurzbz oder false wenn Fehler + */ + public function getNearestFrom($studiensemester_kurzbz) + { + $qry = "SELECT studiensemester_kurzbz, start, ende FROM public.vw_studiensemester + WHERE studiensemester_kurzbz<>".$this->db_add_param($studiensemester_kurzbz)." + ORDER BY delta LIMIT 1"; + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + $this->studiensemester_kurzbz = $row->studiensemester_kurzbz; + $this->start = $row->start; + $this->ende = $row->ende; + return $row->studiensemester_kurzbz; + } + else + { + $this->errormsg = 'Es wurde kein folgendes Studiensemester gefunden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Ermitteln des folgenden Studiensemesters'; + return false; + } + } + /** * Springt von Studiensemester $studiensemester_kurzbz um $wert Studiensemester vor/zurueck * diff --git a/system/mlists/mlists_generate.php b/system/mlists/mlists_generate.php index a0ba630b7..31ea2db28 100644 --- a/system/mlists/mlists_generate.php +++ b/system/mlists/mlists_generate.php @@ -59,11 +59,14 @@ $error_msg=''; $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(); @@ -104,6 +107,40 @@ $error_msg=''; 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)"; + + 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 @@ -349,7 +386,7 @@ $error_msg=''; 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') + 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 @@ -678,6 +715,7 @@ WHERE $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