From 546eb7b30e777ae93f248a97c53a3b9dc1e3b282 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Fri, 12 Sep 2008 11:59:35 +0000 Subject: [PATCH] --- cis/private/profile/index.php | 2 +- include/moodle_course.class.php | 32 ++++++++++- include/moodle_user.class.php | 54 +++++++++++++++++-- include/tw/cis_menu_main.inc.php | 4 ++ system/sync_moodle_user.php | 92 +++++++++++++++++++++++--------- 5 files changed, 154 insertions(+), 30 deletions(-) diff --git a/cis/private/profile/index.php b/cis/private/profile/index.php index a4f3129e0..bc8f480a9 100644 --- a/cis/private/profile/index.php +++ b/cis/private/profile/index.php @@ -235,7 +235,7 @@ } //Betriebsmittel - $qry = "SELECT tbl_betriebsmittel.betriebsmitteltyp as betriebsmitteltyp, tbl_betriebsmittel.beschreibung as beschreibung, tbl_betriebsmittel.nummer as nummer, tbl_betriebsmittelperson.ausgegebenam as ausgegebenam FROM public.tbl_betriebsmittelperson JOIN public.tbl_betriebsmittel USING(betriebsmittel_id) WHERE person_id=(SELECT person_id FROM public.tbl_benutzer WHERE uid='$uid' LIMIT 1)"; + $qry = "SELECT tbl_betriebsmittel.betriebsmitteltyp as betriebsmitteltyp, tbl_betriebsmittel.beschreibung as beschreibung, tbl_betriebsmittel.nummer as nummer, tbl_betriebsmittelperson.ausgegebenam as ausgegebenam FROM public.tbl_betriebsmittelperson JOIN public.tbl_betriebsmittel USING(betriebsmittel_id) WHERE person_id=(SELECT person_id FROM public.tbl_benutzer WHERE uid='$uid' LIMIT 1) AND retouram is null"; if($result_betriebsmittel = pg_query($conn, $qry)) { if(pg_num_rows($result_betriebsmittel)>0) diff --git a/include/moodle_course.class.php b/include/moodle_course.class.php index 34cf8f74e..79ff330c0 100644 --- a/include/moodle_course.class.php +++ b/include/moodle_course.class.php @@ -61,6 +61,36 @@ class moodle_course $qry = "SET CLIENT_ENCODING TO 'LATIN9';"; pg_query($this->conn_moodle, $qry); } + + // ********************************************** + // * Laedt einen MoodleKurs + // * @param mdl_course_id ID des Moodle Kurses + // * @return true wenn ok, false im Fehlerfall + // ********************************************** + function load($mdl_course_id) + { + $qry = "SELECT * FROM public.mdl_course WHERE id='".addslashes($mdl_course_id)."'"; + if($result = pg_query($this->conn_moodle, $qry)) + { + if($row = pg_fetch_object($result)) + { + $this->mdl_fullname = $row->fullname; + $this->mdl_shortname = $row->shortname; + $this->mdl_course_id = $row->id; + return true; + } + else + { + $this->errormsg = 'Kurs wurde nicht gefunden'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden des Kurses'; + return false; + } + } // ********************************************** // * Laedt alle MoodleKurse die zu einer LV/Stsem @@ -342,7 +372,7 @@ class moodle_course //Eintrag in tbl_mdl_course $qry = "INSERT INTO public.mdl_course(category, sortorder, fullname, shortname, format, showgrades, newsitems, enrollable) VALUES (".$this->addslashes($id_sem).", (SELECT max(sortorder)+1 FROM public.mdl_course), ".$this->addslashes($this->mdl_fullname).", ". - $this->addslashes($this->mdl_shortname).",'weeks', 1, 5, 0);"; + $this->addslashes($this->mdl_shortname).",'topics', 1, 5, 0);"; if($result = pg_query($this->conn_moodle, $qry)) { diff --git a/include/moodle_user.class.php b/include/moodle_user.class.php index ce57a7dae..8394632b3 100644 --- a/include/moodle_user.class.php +++ b/include/moodle_user.class.php @@ -28,11 +28,15 @@ class moodle_user var $conn; var $conn_moodle; var $errormsg; - var $log=''; //log message fuer Syncro - var $sync_create=0; //anzahl der durchgefuehrten zuteilungen beim syncro + var $log=''; //log message fuer Syncro + var $log_public=''; //log message fuer Syncro + var $sync_create=0; //anzahl der durchgefuehrten zuteilungen beim syncro + var $group_update=0; //anzahl der updates an gruppen var $mdl_user_id; var $mdl_user_username; + var $mdl_user_firstname; + var $mdl_user_lastname; // ********************************************** @@ -59,6 +63,8 @@ class moodle_user { $this->mdl_user_id = $row->id; $this->mdl_user_username = $row->username; + $this->mdl_user_firstname = $row->firstname; + $this->mdl_user_lastname = $row->lastname; return true; } else @@ -74,6 +80,38 @@ class moodle_user } } + // *********************************************** + // * Liefert ein Array mit allen Lektoren die + // * zu dem Moodle Kurs zugeteilt sind + // *********************************************** + function getMitarbeiter($mdl_course_id) + { + //Mitarbeiter laden die zu diesem Kurs zugeteilt sind + $qry = "SELECT + mitarbeiter_uid + FROM + lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_moodle USING(lehreinheit_id) + WHERE + mdl_course_id='".addslashes($mdl_course_id)."' + UNION + SELECT + mitarbeiter_uid + FROM + lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) + JOIN lehre.tbl_moodle USING(lehrveranstaltung_id) + WHERE + tbl_lehreinheit.studiensemester_kurzbz=tbl_moodle.studiensemester_kurzbz + AND mdl_course_id='".addslashes($mdl_course_id)."'"; + $mitarbeiter=array(); + if($result_ma = pg_query($this->conn, $qry)) + { + while($row_ma = pg_fetch_object($result_ma)) + { + $mitarbeiter[] = $row_ma->mitarbeiter_uid; + } + return $mitarbeiter; + } + } // ************************************************ // * Synchronisiert die Lektoren der Lehreinheiten // * mit denen des Moodle Kurses @@ -141,7 +179,8 @@ class moodle_user if($this->createZuteilung($this->mdl_user_id, $mdlcourse->mdl_context_id, 3)) { - $this->log.="\nerzeuge Lektoren-Zuteilung für User $this->mdl_user_id zum Context $mdlcourse->mdl_context_id"; + $this->log.="\nder Lektor $this->mdl_user_firstname $this->mdl_user_lastname wurde zum Kurs hinzugefügt"; + $this->log_public.="\nder Lektor $this->mdl_user_firstname $this->mdl_user_lastname wurde zum Kurs hinzugefügt"; $this->sync_create++; } else @@ -294,7 +333,8 @@ class moodle_user if($this->createZuteilung($this->mdl_user_id, $mdlcourse->mdl_context_id, 5)) { - $this->log.="\nerzeuge Studenten-Zuteilung für User $this->mdl_user_id zum Context $mdlcourse->mdl_context_id"; + $this->log.="\nder Student $this->mdl_user_firstname $this->mdl_user_lastname wurde zum Kurs hinzugefügt"; + $this->log_public.="\nder Student $this->mdl_user_firstname $this->mdl_user_lastname wurde zum Kurs hinzugefügt"; $this->sync_create++; } else @@ -314,6 +354,9 @@ class moodle_user //wenn nicht dann anlegen if(!$groupid = $this->createGroup($mdl_course_id, $gruppenbezeichnung)) continue; + $this->group_update++; + $this->log.="\nes wurde eine neue Gruppe angelgt: $gruppenbezeichnung"; + $this->log_public.="\nes wurde eine neue Gruppe angelgt: $gruppenbezeichnung"; } //Schauen ob eine Zuteilung zu dieser Gruppe vorhanden ist @@ -321,6 +364,9 @@ class moodle_user { //wenn nicht dann zuteilen $this->createGroupMember($groupid, $this->mdl_user_id); + $this->group_update++; + $this->log.="\nder Student $this->mdl_user_firstname $this->mdl_user_lastname wurde der Gruppe $gruppenbezeichnung zugeordnet"; + $this->log_public.="\nder Student $this->mdl_user_firstname $this->mdl_user_lastname wurde der Gruppe $gruppenbezeichnung zugeordnet"; } } diff --git a/include/tw/cis_menu_main.inc.php b/include/tw/cis_menu_main.inc.php index cfb992e3b..7848b7626 100644 --- a/include/tw/cis_menu_main.inc.php +++ b/include/tw/cis_menu_main.inc.php @@ -158,6 +158,10 @@  Archiv + + + + diff --git a/system/sync_moodle_user.php b/system/sync_moodle_user.php index ec4c38a98..8da07dc0f 100644 --- a/system/sync_moodle_user.php +++ b/system/sync_moodle_user.php @@ -37,8 +37,11 @@ if(!$conn_moodle = pg_pconnect(CONN_STRING_MOODLE)) $sync_lektoren_gesamt=0; $sync_studenten_gesamt=0; +$group_updates=0; $fehler=0; $message=''; +$message_lkt=''; +$lektoren=array(); //nur Synchronisieren wenn ein aktuelles Studiensemester existiert damit keine //Probleme durch die Vorrueckung entstehen @@ -51,41 +54,82 @@ if($stsem_kurzbz=$stsem->getakt()) { while($row = pg_fetch_object($result)) { - //Lektoren - $mdluser = new moodle_user($conn, $conn_moodle); - if($mdluser->sync_lektoren($row->mdl_course_id)) + $course = new moodle_course($conn, $conn_moodle); + if($course->load($row->mdl_course_id)) { - $sync_lektoren_gesamt+=$mdluser->sync_create; - if($mdluser->sync_create>0) + $message_lkt=''; + //Lektoren + $mdluser = new moodle_user($conn, $conn_moodle); + $mitarbeiter = $mdluser->getMitarbeiter($row->mdl_course_id); + + if($mdluser->sync_lektoren($row->mdl_course_id)) { - $message.="\nCourse $row->mdl_course_id:\n".$mdluser->log."\n"; + $sync_lektoren_gesamt+=$mdluser->sync_create; + $group_updates+=$mdluser->group_update; + if($mdluser->sync_create>0 || $mdluser->group_update>0) + { + $message.="\nKurs: $course->mdl_fullname ($course->mdl_shortname):\n".$mdluser->log."\n"; + $message_lkt.="\nKurs: $course->mdl_fullname ($course->mdl_shortname):\n".$mdluser->log_public."\n"; + } + } + else + { + $message.="\nFehler: $mdluser->errormsg"; + $fehler++; + } + + //Studenten + $mdluser = new moodle_user($conn, $conn_moodle); + if($mdluser->sync_studenten($row->mdl_course_id)) + { + $sync_studenten_gesamt+=$mdluser->sync_create; + $group_updates+=$mdluser->group_update; + if($mdluser->sync_create>0 || $mdluser->group_update>0) + { + $message.="\nKurs: $course->mdl_fullname ($course->mdl_shortname):\n".$mdluser->log."\n"; + $message_lkt.="\nKurs: $course->mdl_fullname ($course->mdl_shortname):\n".$mdluser->log_public."\n"; + } + } + else + { + $message.="\nFehler: $mdluser->errormsg"; + $fehler++; + } + + foreach ($mitarbeiter as $uid) + { + if(!isset($lektoren[$uid])) + $lektoren[$uid]=''; + $lektoren[$uid].=$message_lkt; } } else { - $message.="\nFehler: $mdluser->errormsg"; + $message.="\nFehler: in der Tabelle lehre.tbl_moodle wird auf den Kurs $row->mdl_course_id verwiesen, dieser existiert jedoch nicht im Moodle!"; $fehler++; } - - //Studenten - $mdluser = new moodle_user($conn, $conn_moodle); - if($mdluser->sync_studenten($row->mdl_course_id)) - { - $sync_studenten_gesamt+=$mdluser->sync_create; - if($mdluser->sync_create>0) - { - $message.="\nCourse $row->mdl_course_id:\n".$mdluser->log."\n"; - } - } - else - { - $message.="\nFehler: $mdluser->errormsg"; - $fehler++; - } } - if($sync_lektoren_gesamt>0 || $sync_studenten_gesamt>0 || $fehler>0) + if($sync_lektoren_gesamt>0 || $sync_studenten_gesamt>0 || $fehler>0 || $group_updates>0) { + //Mail an die Lektoren + foreach ($lektoren as $uid=>$message_lkt) + { + if($message_lkt!='') + { + $header = "Dies ist eine automatische Mail!\n"; + $header.= "Es wurden folgende Aktualisierungen an Ihren Moodle-Kursen durchgeführt:\n\n"; + + $to = "$uid@".DOMAIN; + //$to = 'oesi@technikum-wien.at'; + + if(mail($to,'Moodle - Aktualisierungen', $header.$message_lkt, 'From: vilesci@'.DOMAIN)) + echo "Mail wurde an $to versandt
"; + else + echo "Fehler beim Senden des Mails an $to
"; + } + } + //Mail an Admin $header = "Dies ist eine automatische Mail!\n"; $header.= "Folgende Syncros mit den MoodleKursen wurde durchgeführt:\n\n"; $header.= "Anzahl der aktualisierten Lektoren: $sync_lektoren_gesamt\n";