From 116e15a96c7d84f29369f6244ded3d7b9cd37d5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Wed, 10 Sep 2008 13:47:22 +0000 Subject: [PATCH] --- cis/private/lehre/moodle_wartung.php | 10 +- include/moodle_course.class.php | 36 +++--- include/moodle_user.class.php | 162 +++++++++++++++++++++++++++ system/sync_moodle_user.php | 1 + 4 files changed, 194 insertions(+), 15 deletions(-) diff --git a/cis/private/lehre/moodle_wartung.php b/cis/private/lehre/moodle_wartung.php index 9177a4233..6f3e3a6eb 100644 --- a/cis/private/lehre/moodle_wartung.php +++ b/cis/private/lehre/moodle_wartung.php @@ -49,7 +49,7 @@ if(isset($_GET['stsem'])) else die('Es wurde kein Studiensemester uebergeben'); -$art = (isset($_POST['art'])?$_POST['art']:'le'); +$art = (isset($_POST['art'])?$_POST['art']:'lv'); $berechtigt = false; @@ -234,8 +234,14 @@ else $disable_lv=''; if($result = pg_query($conn, $qry)) if(pg_num_rows($result)>0) + { $disable_lv='disabled="true"'; - + //wenn schon ein Moodle Kurs zu einer Lehreinheit angelegt wurde, + //dann ist standardmaessig die Lehreinheit markiert + if($art=='lv') + $art='le'; + } + echo 'Moodle Kurs anlegen:

einen Moodle Kurs für die gesamte LV anlegen
diff --git a/include/moodle_course.class.php b/include/moodle_course.class.php index 3efae634e..34cf8f74e 100644 --- a/include/moodle_course.class.php +++ b/include/moodle_course.class.php @@ -320,7 +320,8 @@ class moodle_course //Studiensemester Categorie holen if(!$id_stsem = $this->getCategorie($this->studiensemester_kurzbz, '0')) { - $id_stsem = $this->createCategorie($this->studiensemester_kurzbz, '0'); + if(!$id_stsem = $this->createCategorie($this->studiensemester_kurzbz, '0')) + echo "
Fehler beim Anlegen des Studiensemesters"; } //Studiengang Categorie holen if(!$id_stg = $this->getCategorie($stg, $id_stsem)) @@ -487,18 +488,26 @@ class moodle_course } if($parent=='') { - $this->errormsg = 'createCategorie: parent wurde nicht uebergeben'; + $this->errormsg = 'createCategorie: parent wurde nicht uebergeben: '.$bezeichnung.' '.$parent; return false; } - //Parent laden - $qry = "SELECT * FROM public.mdl_course_categories WHERE id='".addslashes($parent)."'"; - //echo $qry; - if($result = pg_query($this->conn_moodle, $qry)) + if($parent!='0') { - if($row = pg_fetch_object($result)) + //Parent laden + $qry = "SELECT * FROM public.mdl_course_categories WHERE id='".addslashes($parent)."'"; + //echo $qry; + if($result = pg_query($this->conn_moodle, $qry)) { - $depth = $row->depth; - $path = $row->path; + if($row = pg_fetch_object($result)) + { + $depth = $row->depth; + $path = $row->path; + } + else + { + $this->errormsg = 'Fehler beim Laden der KursKategorie'; + return false; + } } else { @@ -508,8 +517,8 @@ class moodle_course } else { - $this->errormsg = 'Fehler beim Laden der KursKategorie'; - return false; + $depth=0; + $path=''; } //KursKategorie anlegen @@ -657,11 +666,11 @@ class moodle_course function getCourse($lehrveranstaltung_id, $studiensemester_kurzbz, $student_uid) { //alle betreffenden Kurse holen - $qry = "SELECT tbl_moodle.lehreinheit_id, mdl_course_id FROM lehre.tbl_moodle JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id, studiensemester_kurzbz) + $qry = "SELECT tbl_lehreinheit.lehreinheit_id, mdl_course_id FROM lehre.tbl_moodle JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id, studiensemester_kurzbz) WHERE tbl_moodle.lehrveranstaltung_id='".addslashes($lehrveranstaltung_id)."' AND tbl_moodle.studiensemester_kurzbz='".addslashes($studiensemester_kurzbz)."' UNION - SELECT lehreinheit_id, mdl_course_id FROM lehre.tbl_moodle JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) + SELECT tbl_lehreinheit.lehreinheit_id, mdl_course_id FROM lehre.tbl_moodle JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) WHERE tbl_lehreinheit.lehrveranstaltung_id='".addslashes($lehrveranstaltung_id)."' AND tbl_lehreinheit.studiensemester_kurzbz='".addslashes($studiensemester_kurzbz)."'"; @@ -673,6 +682,7 @@ class moodle_course //schauen in welchen der Student ist $qry = "SELECT 1 FROM campus.vw_student_lehrveranstaltung WHERE uid='".addslashes($student_uid)."' AND lehreinheit_id='".addslashes($row->lehreinheit_id)."'"; + if($result_vw = pg_query($this->conn, $qry)) { if(pg_num_rows($result_vw)>0) diff --git a/include/moodle_user.class.php b/include/moodle_user.class.php index 4dbd98010..ce57a7dae 100644 --- a/include/moodle_user.class.php +++ b/include/moodle_user.class.php @@ -21,6 +21,7 @@ */ /* * requires moodle_course.class.php + * studiengang.class.php */ class moodle_user { @@ -241,6 +242,9 @@ class moodle_user $qry.=" AND gruppe = '$row_std->gruppe'"; } } + $studiengang_obj = new studiengang($this->conn); + $studiengang_obj->load($row_std->studiengang_kz); + $gruppenbezeichnung = $studiengang_obj->kuerzel.'-'.trim($row_std->semester).trim($row_std->verband).trim($row_std->gruppe); } else //Spezialgruppe { @@ -252,6 +256,7 @@ class moodle_user gruppe_kurzbz='$row_std->gruppe_kurzbz' AND studiensemester_kurzbz='$row_std->studiensemester_kurzbz' "; + $gruppenbezeichnung = $row_std->gruppe_kurzbz; } if($result_user = pg_query($this->conn, $qry)) @@ -301,6 +306,23 @@ class moodle_user $this->errormsg = 'Fehler beim Auslesen der Rollen'; return false; } + + //Gruppenzuteilung + //Schauen ob die Gruppe vorhanden ist + if(!$groupid = $this->getGroup($mdl_course_id, $gruppenbezeichnung)) + { + //wenn nicht dann anlegen + if(!$groupid = $this->createGroup($mdl_course_id, $gruppenbezeichnung)) + continue; + } + + //Schauen ob eine Zuteilung zu dieser Gruppe vorhanden ist + if(!$this->getGroupMember($groupid, $this->mdl_user_id)) + { + //wenn nicht dann zuteilen + $this->createGroupMember($groupid, $this->mdl_user_id); + } + } } } @@ -334,6 +356,146 @@ class moodle_user } } + // ************************************************ + // * Schaut ob eine Zuteilung von Person zu Gruppe + // * existiert + // * @param grouid ID der Gruppe + // * userid ID des Users + // * @return ID der Zuteilung + // ************************************************ + function getGroupMember($groupid, $userid) + { + $qry = "SELECT id FROM public.mdl_groups_members WHERE groupid='".addslashes($groupid)."' AND userid='".addslashes($userid)."'"; + if($result = pg_query($this->conn_moodle, $qry)) + { + if($row = pg_fetch_object($result)) + { + return $row->id; + } + else + { + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Ermitteln der Gruppe'; + return false; + } + } + + // *************************************************** + // * Legt eine Zuteilung eines Users zu + // * einer Gruppe an + // * @param groupid ID der Gruppe + // * userid ID des Users + // * @return ID der Zuteilung oder false im Fehlerfall + // *************************************************** + function createGroupMember($groupid, $userid) + { + $qry = 'BEGIN; INSERT INTO public.mdl_groups_members(groupid, userid) VALUES('. + $this->addslashes($groupid).','.$this->addslashes($userid).');'; + if(pg_query($this->conn_moodle, $qry)) + { + $qry = "SELECT currval('mdl_groups_members_id_seq') as id"; + if($result = pg_query($this->conn_moodle, $qry)) + { + if($row = pg_fetch_object($result)) + { + pg_query($this->conn_moodle, 'COMMIT;'); + return $row->id; + } + else + { + pg_query($this->conn_moodle, 'ROLLBACK;'); + $this->errormsg = 'Fehler beim Auslesen der Sequence'; + return false; + } + } + else + { + pg_query($this->conn_moodle, 'ROLLBACK;'); + $this->errormsg = 'Fehler beim Auslesen der Sequence'; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Anlegen der Zuteilung'; + return false; + } + } + // ************************************************ + // * Holt die ID einer MoodleGruppe + // * @param $mdl_course_id ID des Kurses + // * $gruppenbezeichnung Name der Gruppe + // * @return GruppenID wenn ok, false im Fehlerfall + // ************************************************ + function getGroup($mdl_course_id, $gruppenbezeichnung) + { + $qry = "SELECT id FROM public.mdl_groups WHERE courseid='".addslashes($mdl_course_id)."' AND name='".addslashes($gruppenbezeichnung)."'"; + + if($result = pg_query($this->conn_moodle, $qry)) + { + if($row = pg_fetch_object($result)) + { + return $row->id; + } + else + { + $this->errormsg = "Gruppe wurde nciht gefunden $gruppenbezeichnung"; + return false; + } + } + else + { + $this->errormsg = 'Fehler beim Laden einer Gruppe'; + return false; + } + } + + // **************************************************** + // * Legt eine MoodleGruppe zu einem Kurs an + // * @param mdl_course_id ID des MoodleKuses + // * gruppenbezeichnung Bezeichnung der Gruppe + // * @return ID der Gruppe wenn ok, false im Fehlerfall + // **************************************************** + function createGroup($mdl_course_id, $gruppenbezeichnung) + { + $qry = 'BEGIN;INSERT INTO public.mdl_groups(courseid, name, description) VALUES('. + $this->addslashes($mdl_course_id).','. + $this->addslashes($gruppenbezeichnung).','. + $this->addslashes($gruppenbezeichnung).');'; + if(pg_query($this->conn_moodle, $qry)) + { + $qry = "SELECT currval('mdl_groups_id_seq') as id"; + if($result = pg_query($this->conn_moodle, $qry)) + { + if($row = pg_fetch_object($result)) + { + pg_query($this->conn_moodle, 'COMMIT;'); + return $row->id; + } + else + { + pg_query($this->conn_moodle, 'ROLLBACK;'); + $this->errormsg = 'Fehler beim Auslesen der GruppenSequence'; + return false; + } + } + else + { + pg_query($this->conn_moodle, 'ROLLBACK;'); + $this->errormsg = 'Fehler beim Auslesen der GruppenSequence'; + return false; + } + } + else + { + $this->errormsgr ='Fehler beim Anlegen der Gruppe'; + return false; + } + } // ************************************************ // * wenn $var '' ist wird "null" zurueckgegeben // * wenn $var !='' ist werden datenbankkritische diff --git a/system/sync_moodle_user.php b/system/sync_moodle_user.php index 5670637f7..ec4c38a98 100644 --- a/system/sync_moodle_user.php +++ b/system/sync_moodle_user.php @@ -27,6 +27,7 @@ require_once('../vilesci/config.inc.php'); require_once('../include/moodle_course.class.php'); require_once('../include/moodle_user.class.php'); require_once('../include/studiensemester.class.php'); +require_once('../include/studiengang.class.php'); if(!$conn = pg_pconnect(CONN_STRING)) die('Fehler beim Connecten zur DB');