diff --git a/config/global.config-default.inc.php b/config/global.config-default.inc.php index 5e8a75012..a3e4a60b3 100644 --- a/config/global.config-default.inc.php +++ b/config/global.config-default.inc.php @@ -101,6 +101,9 @@ define('REIHUNGSTEST_CHECK', true); */ define('MOODLE_COURSE_SCHEMA',''); +// Legt fst ob Fachbereichsleiter zu Moodle Kursen zugeteilt werden (mit Benutzerdefinierter Rolle 11) +define('MOODLE_SYNC_FACHBEREICHSLEITUNG',false); + // Bei Statuswechsel auf Bewerber -> bei true wird email (INFOMAIL_BEWERBER) an den Bewerber geschickt define('SEND_BEWERBER_INFOMAIL', false); diff --git a/include/moodle24_course.class.php b/include/moodle24_course.class.php index 9b64ed246..ef3673dc0 100644 --- a/include/moodle24_course.class.php +++ b/include/moodle24_course.class.php @@ -21,7 +21,7 @@ * Moodle 2.4 Connector Klasse * * FHComplete Moodle Plugin muss installiert sein fuer - * Webservice Funktion 'fhcomplete_courses_by_shortname' + * Webservice Funktion 'fhcomplete_courses_by_shortname' * 'fhcomplete_get_course_grades' */ require_once(dirname(__FILE__).'/basis_db.class.php'); @@ -44,28 +44,28 @@ class moodle24_course extends basis_db public $insertamum; public $insertvon; public $gruppen; - + //Moodle Attribute public $mdl_fullname; public $mdl_shortname; public $lehrveranstaltung_bezeichnung; - public $lehrveranstaltung_semester; + public $lehrveranstaltung_semester; public $lehrveranstaltung_studiengang_kz; - // Kurs Resourcen - Anzahl + // Kurs Resourcen - Anzahl public $mdl_benotungen; public $mdl_resource; public $mdl_quiz; public $mdl_chat; public $mdl_forum; public $mdl_choice; - + public $note; /** * Konstruktor - * + * */ public function __construct() { @@ -74,7 +74,7 @@ class moodle24_course extends basis_db $this->serverurl=$pfad.'/webservice/soap/server.php?wsdl=1&wstoken='.MOODLE_TOKEN24.'&'.microtime(true); return true; } - + /** * Laedt einen MoodleKurs * @param mdl_course_id ID des Moodle Kurses @@ -84,21 +84,21 @@ class moodle24_course extends basis_db { $this->mdl_fullname = ''; $this->mdl_shortname = ''; - + $this->errormsg=''; $this->result=array(); - + if (!is_null($mdl_course_id)) $this->mdl_course_id=$mdl_course_id; - if (is_null($this->mdl_course_id) - || empty($this->mdl_course_id) + if (is_null($this->mdl_course_id) + || empty($this->mdl_course_id) || !is_numeric($this->mdl_course_id)) { $this->errormsg='Moodle Kurs ID fehlt'; return false; - } - - $client = new SoapClient($this->serverurl); + } + + $client = new SoapClient($this->serverurl); $response = $client->core_course_get_courses(array('ids'=>array($this->mdl_course_id))); if($response) @@ -110,19 +110,19 @@ class moodle24_course extends basis_db $this->mdl_course_id = $response[0]['id']; return true; } - else + else { $this->errormsg = 'Kurs wurde nicht gefunden'; return false; } } - else + else { $this->errormsg = 'Fehler beim Laden des Kurses'; return false; } } - + /** * Legt einen Eintrag in der tbl_moodle an * @return true wenn ok, false im Fehlerfall @@ -134,8 +134,8 @@ class moodle24_course extends basis_db $this->errormsg='mdl_course_id muss angegeben sein'; return false; } - - $qry = 'BEGIN; INSERT INTO lehre.tbl_moodle(mdl_course_id, lehreinheit_id, lehrveranstaltung_id, + + $qry = 'BEGIN; INSERT INTO lehre.tbl_moodle(mdl_course_id, lehreinheit_id, lehrveranstaltung_id, studiensemester_kurzbz, insertamum, insertvon, gruppen, moodle_version) VALUES('. $this->db_add_param($this->mdl_course_id, FHC_INTEGER).','. @@ -157,27 +157,27 @@ class moodle24_course extends basis_db $this->db_query('COMMIT;'); return true; } - else + else { $this->db_query('ROLLBACK'); $this->errormsg = 'Fehler beim Lesen der Sequence'; return false; - } + } } - else + else { $this->db_query('ROLLBACK'); $this->errormsg = 'Fehler beim Lesen der Sequence'; return false; } } - else + else { $this->errormsg = 'Fehler beim Einfuegen des Datensatzes'; return false; } } - + /** * Legt einen Kurs im Moodle an * @return true wenn ok, false im Fehlerfall @@ -185,11 +185,11 @@ class moodle24_course extends basis_db public function create_moodle() { //CourseCategorie ermitteln - + //lehrveranstalung ID holen falls die nur die lehreinheit_id angegeben wurde if($this->lehrveranstaltung_id=='') { - $qry = "SELECT lehrveranstaltung_id FROM lehre.tbl_lehreinheit + $qry = "SELECT lehrveranstaltung_id FROM lehre.tbl_lehreinheit WHERE lehreinheit_id=".$this->db_add_param($this->lehreinheit_id, FHC_INTEGER); if($res=$this->db_query($qry)) { @@ -197,27 +197,27 @@ class moodle24_course extends basis_db { $lvid = $row->lehrveranstaltung_id; } - else + else { $this->errormsg = 'Fehler beim Ermitteln der LehrveranstaltungID'; return false; } } - else + else { $this->errormsg = 'Fehler beim Ermitteln der LehrveranstaltungID'; return false; } } - else + else $lvid = $this->lehrveranstaltung_id; - + //Studiengang und Semester holen $qry = "SELECT tbl_lehrveranstaltung.semester, UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as stg, studiengang_kz, tbl_studiengang.oe_kurzbz FROM lehre.tbl_lehrveranstaltung JOIN public.tbl_studiengang USING(studiengang_kz) WHERE lehrveranstaltung_id=".$this->db_add_param($lvid, FHC_INTEGER); - + if($res=$this->db_query($qry)) { if($row = $this->db_fetch_object($res)) @@ -227,33 +227,33 @@ class moodle24_course extends basis_db $stg_kz = $row->studiengang_kz; $oe_kurzbz = $row->oe_kurzbz; } - else + else { $this->errormsg = 'Fehler beim Ermitteln von Studiengang und Semester'; return false; } } - else + else { $this->errormsg = 'Fehler beim Ermitteln von Studiengang und Semester'; return false; } - + // Kategoriebau Aufbauen if(defined('MOODLE_COURSE_SCHEMA') && MOODLE_COURSE_SCHEMA=='DEP-STG-JG-STSEM') { - + // Struktur: Department -> STG -> Jahrgang -> StSem (Informationstechnologie und Informationsmanagement -> BIMK -> Jahrgang 2014 -> WS2014) - + // Studiengang der Lehrveranstaltung holen // Uebergeordnetes Department ermitteln - $qry = 'SELECT - bezeichnung - FROM - public.tbl_organisationseinheit - WHERE + $qry = 'SELECT + bezeichnung + FROM + public.tbl_organisationseinheit + WHERE oe_kurzbz=(SELECT oe_parent_kurzbz FROM public.tbl_organisationseinheit WHERE oe_kurzbz='.$this->db_add_param($oe_kurzbz).')'; - + if($result_department = $this->db_query($qry)) { if($row_department = $this->db_fetch_object($result_department)) @@ -272,14 +272,14 @@ class moodle24_course extends basis_db if(!$id_department = $this->createCategorie($department, '0')) echo "
$this->errormsg"; } - + // Studiengang if(!$id_stg = $this->getCategorie($stg, $id_department)) { if(!$id_stg = $this->createCategorie($stg, $id_department)) echo "
$this->errormsg"; } - + // Jahrgang - 1. Studiensemester ermitteln (Stsem um Ausbsem -1 zurückspringen) und das Jahr ermitteln $studiensemester = new studiensemester(); if($semester!=0) @@ -295,26 +295,26 @@ class moodle24_course extends basis_db $datum = new Datum(); $jahr = $datum->formatDatum($studiensemester->start, 'Y'); - + if(!$id_jahrgang = $this->getCategorie('Jahrgang '.$jahr, $id_stg)) { if(!$id_jahrgang = $this->createCategorie('Jahrgang '.$jahr, $id_stg)) echo "
$this->errormsg"; } - + // Studiensemester if(!$id_stsem = $this->getCategorie($this->studiensemester_kurzbz, $id_jahrgang)) { if(!$id_stsem = $this->createCategorie($this->studiensemester_kurzbz, $id_jahrgang)) echo "
Fehler beim Anlegen des Studiensemesters"; } - + $categoryid=$id_stsem; } else { // Struktur: STSEM -> STG -> Ausbsemester (WS2014 -> BEL -> 1) - + //Studiensemester Categorie holen if(!$id_stsem = $this->getCategorie($this->studiensemester_kurzbz, '0')) { @@ -335,41 +335,48 @@ class moodle24_course extends basis_db } $categoryid=$id_sem; } - - $client = new SoapClient($this->serverurl); - $data = new stdClass(); - $data->fullname=$this->mdl_fullname; - $data->shortname=$this->mdl_shortname; - $data->categoryid=$categoryid; - $data->format='topics'; - - $stsem = new studiensemester(); - $stsem->load($this->studiensemester_kurzbz); - $datum_obj = new datum(); - $data->startdate=$datum_obj->mktime_fromdate($stsem->start); - - $response = $client->core_course_create_courses(array($data)); - if(isset($response[0])) + try { - $this->mdl_course_id=$response[0]['id']; - return true; + $client = new SoapClient($this->serverurl); + + $data = new stdClass(); + $data->fullname=$this->mdl_fullname; + $data->shortname=$this->mdl_shortname; + $data->categoryid=$categoryid; + $data->format='topics'; + + $stsem = new studiensemester(); + $stsem->load($this->studiensemester_kurzbz); + $datum_obj = new datum(); + $data->startdate=$datum_obj->mktime_fromdate($stsem->start); + + $response = $client->core_course_create_courses(array($data)); + if(isset($response[0])) + { + $this->mdl_course_id=$response[0]['id']; + return true; + } + else + { + $this->errormsg = 'Fehler beim Anlegen des Kurses'; + return false; + } } - else + catch (SoapFault $E) { - $this->errormsg = 'Fehler beim Anlegen des Kurses'; + $this->errormsg.="SOAP Fehler beim Anlegen des Kurses: ".$E->faultstring; return false; } - return true; } - + /** * Laedt die ID einer Kurskategorie anhand der Bezeichnung und der ParentID * * @param bezeichnung Bezeichnung der Kategorie * @param parent ID der uebergeordneten Kurskategorie - * + * * @return id der Kategorie oder false im Fehlerfall */ public function getCategorie($bezeichnung, $parent) @@ -385,20 +392,29 @@ class moodle24_course extends basis_db return false; } - $client = new SoapClient($this->serverurl); - $response = $client->core_course_get_categories(array(array('key'=>'name','value'=>$bezeichnung),array('key'=>'parent','value'=>$parent))); - - if(isset($response[0])) - { - return $response[0]['id']; - } - else + try { - $this->errormsg = 'Fehler beim Laden der Kurskategorie'; + $client = new SoapClient($this->serverurl); + $response = $client->core_course_get_categories(array(array('key'=>'name','value'=>$bezeichnung),array('key'=>'parent','value'=>$parent))); + + if(isset($response[0])) + { + return $response[0]['id']; + } + else + { + $this->errormsg = 'Fehler beim Laden der Kurskategorie'; + return false; + } + } + catch (SoapFault $E) + { + $this->errormsg.="SOAP Fehler beim Laden der Kurskategorie: ".$E->faultstring; return false; } + } - + /** * Erzeugt eine Kurskategorie anhand der Bezeichnung und der ParentID * @param bezeichnung Bezeichnung der Kategorie @@ -417,25 +433,32 @@ class moodle24_course extends basis_db return false; } - $client = new SoapClient($this->serverurl); - $response = $client->core_course_create_categories(array(array('name'=>$bezeichnung,'parent'=>$parent))); - - if(isset($response[0])) + try { - return $response[0]['id']; - } - else - { - $this->errormsg = 'Fehler beim Anlegen der Kategorie'; - return false; - } - } + $client = new SoapClient($this->serverurl); + $response = $client->core_course_create_categories(array(array('name'=>$bezeichnung,'parent'=>$parent))); + + if(isset($response[0])) + { + return $response[0]['id']; + } + else + { + $this->errormsg = 'Fehler beim Anlegen der Kategorie'; + return false; + } + } + catch (SoapFault $E) + { + $this->errormsg.="SOAP Fehler beim Anlegen der Kategorie: ".$E->faultstring; + } + } + - /** * Aktualisiert die Spalte gruppen in der tbl_moodle * @param moodle_id ID der MoodleZuteilung - * gruppen boolean true wenn syncronisiert + * gruppen boolean true wenn syncronisiert * werden soll, false wenn nicht * @return true wenn ok, false im Fehlerfall * @@ -448,39 +471,39 @@ class moodle24_course extends basis_db $this->errormsg = 'Moodle_id muss eine gueltige Zahl sein'; return false; } - - $qry = "UPDATE lehre.tbl_moodle SET gruppen=".$this->db_add_param($gruppen, FHC_BOOLEAN)." + + $qry = "UPDATE lehre.tbl_moodle SET gruppen=".$this->db_add_param($gruppen, FHC_BOOLEAN)." WHERE moodle_id=".$this->db_add_param($moodle_id, FHC_INTEGER); if($this->db_query($qry)) { return true; } - else + else { $this->errormsg = 'Fehler beim Update'; return false; } - } - + } + /** * Legt einen Testkurs an */ public function createTestkurs($lehrveranstaltung_id, $studiensemester_kurzbz) - { + { //CourseCategorie ermitteln - + //Studiengang und Semester holen - - $qry = "SELECT - tbl_lehrveranstaltung.semester, - UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as stg - FROM - lehre.tbl_lehrveranstaltung + + $qry = "SELECT + tbl_lehrveranstaltung.semester, + UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as stg + FROM + lehre.tbl_lehrveranstaltung JOIN public.tbl_studiengang USING(studiengang_kz) - WHERE + WHERE lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER); - + if($this->db_query($qry)) { if($row = $this->db_fetch_object()) @@ -488,18 +511,18 @@ class moodle24_course extends basis_db $semester = $row->semester; $stg = $row->stg; } - else + else { $this->errormsg = 'Fehler beim Ermitteln von Studiengang und Semester'; return false; } } - else + else { $this->errormsg = 'Fehler beim Ermitteln von Studiengang und Semester'; return false; } - + //Testkurs Categorie holen if(!$id_testkurs = $this->getCategorie('Testkurse', '0')) { @@ -518,8 +541,8 @@ class moodle24_course extends basis_db return false; } } - - $client = new SoapClient($this->serverurl); + + $client = new SoapClient($this->serverurl); $data = new stdClass(); $data->fullname=$this->mdl_fullname; @@ -537,9 +560,9 @@ class moodle24_course extends basis_db { $this->errormsg = 'Fehler beim Anlegen des Testkurses'; return false; - } + } } - + /** * Laedt den Testkurs zu dieser Lehrveranstaltung * @param lehrveranstaltung_id @@ -555,32 +578,32 @@ class moodle24_course extends basis_db lehre.tbl_lehrveranstaltung JOIN public.tbl_studiengang USING(studiengang_kz) WHERE lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER, false); - + if($this->db_query($qry)) { if($row = $this->db_fetch_object()) { $shortname = mb_strtoupper('TK-'.$studiensemester_kurzbz.'-'.$row->kuerzel.'-'.$row->semester.'-'.$row->kurzbz); } - else + else { $this->errormsg = 'Fehler beim Laden des Testkurses'; return false; } } - else + else { $this->errormsg = 'Fehler beim Laden des Testkurses'; return false; } - + //Testkurs Categorie holen if(!$id_testkurs = $this->getCategorie('Testkurse', '0')) { $this->errormsg = 'Categorie nicht gefunden'; return false; } - + //StSem Categorie holen if(!$id_stsem = $this->getCategorie($studiensemester_kurzbz, $id_testkurs)) { @@ -605,19 +628,19 @@ class moodle24_course extends basis_db } } - + /** * Laedt die Moodle Noten zu allen Moodlekursen einer Lehrveranstaltung * @param lehrveranstaltung_id * @param $studiensemester_kurzbz - * + * * @return objekt mit den Noten der Teilnehmer dieses Kurses */ public function loadNoten($lehrveranstaltung_id, $studiensemester_kurzbz) { - $this->errormsg=''; - $this->result=null; - + $this->errormsg=''; + $this->result=null; + if($lehrveranstaltung_id=='' || $studiensemester_kurzbz=='') { $this->errormsg = 'LehrveranstaltungID und Studiensemester_kurzbz muss uebergeben werden'; @@ -626,40 +649,40 @@ class moodle24_course extends basis_db // Ermitteln die Lehreinheiten und Moodle ID $qry = " - SELECT + SELECT distinct mdl_course_id - FROM - lehre.tbl_moodle + FROM + lehre.tbl_moodle JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id, studiensemester_kurzbz) - WHERE - tbl_moodle.lehrveranstaltung_id > 0 + WHERE + tbl_moodle.lehrveranstaltung_id > 0 AND moodle_version='2.4' AND tbl_moodle.lehrveranstaltung_id =".$this->db_add_param($lehrveranstaltung_id)." AND tbl_moodle.studiensemester_kurzbz =".$this->db_add_param($studiensemester_kurzbz)." - UNION - SELECT + UNION + SELECT distinct mdl_course_id - FROM + FROM lehre.tbl_moodle - JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) - WHERE + JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) + WHERE tbl_lehreinheit.lehrveranstaltung_id > 0 AND moodle_version='2.4' - AND tbl_lehreinheit.lehrveranstaltung_id =".$this->db_add_param($lehrveranstaltung_id)." + AND tbl_lehreinheit.lehrveranstaltung_id =".$this->db_add_param($lehrveranstaltung_id)." AND tbl_moodle.studiensemester_kurzbz =".$this->db_add_param($studiensemester_kurzbz).";"; if(!$result_moodle=$this->db_query($qry)) { $this->errormsg = 'Fehler beim Lesen der Moodle Kurse , '.$this->errormsg; return false; - } + } while($row_moodle = $this->db_fetch_object($result_moodle)) { try { - $client = new SoapClient($this->serverurl); + $client = new SoapClient($this->serverurl); if(CIS_GESAMTNOTE_PUNKTE) $type=2; // Prozentpunkte else @@ -668,7 +691,7 @@ class moodle24_course extends basis_db $response = $client->fhcomplete_get_course_grades($row_moodle->mdl_course_id, $type); - if (count($response)>0) + if (count($response)>0) { foreach($response as $row) @@ -684,7 +707,7 @@ class moodle24_course extends basis_db $userobj->note = $row['note']; $this->result[]=$userobj; } - } + } } } catch(SoapFault $e) @@ -696,19 +719,19 @@ class moodle24_course extends basis_db } return true; } - + /** - * Loescht einen Moodle Course im Moodel + * Loescht einen Moodle Course im Moodel * Wenn erfolgreich gelöscht wird kein Wert in response zurückgegeben * @param mdl_course_id - * + * */ public function deleteKurs($mdl_course_id) { - $client = new SoapClient($this->serverurl); + $client = new SoapClient($this->serverurl); - $data = array($mdl_course_id); + $data = array($mdl_course_id); $response = $client->core_course_delete_courses(array($mdl_course_id)); if(isset($response[0])) @@ -718,6 +741,6 @@ class moodle24_course extends basis_db } return true; - + } } diff --git a/include/moodle24_user.class.php b/include/moodle24_user.class.php index 644db5f1a..8fac3302e 100644 --- a/include/moodle24_user.class.php +++ b/include/moodle24_user.class.php @@ -19,9 +19,9 @@ */ /* * Connector fuer Moodle 2.4 User - * + * * FHComplete Moodle Plugin muss installiert sein fuer - * Webservice Funktion 'fhcomplete_user_get_users' + * Webservice Funktion 'fhcomplete_user_get_users' */ require_once(dirname(__FILE__).'/basis_db.class.php'); require_once(dirname(__FILE__).'/moodle.class.php'); @@ -33,12 +33,12 @@ class moodle24_user extends basis_db public $sync_create=0; //anzahl der durchgefuehrten zuteilungen beim syncro public $group_update=0; //anzahl der updates an gruppen private $serverurl; - + public $mdl_user_id; public $mdl_user_username; public $mdl_user_firstname; public $mdl_user_lastname; - + /** * Konstruktor */ @@ -58,45 +58,53 @@ class moodle24_user extends basis_db */ public function loaduser($uid) { - $client = new SoapClient($this->serverurl); - $response = $client->fhcomplete_user_get_users(array(array('key'=>'username', 'value'=>$uid))); + try + { + $client = new SoapClient($this->serverurl); + $response = $client->fhcomplete_user_get_users(array(array('key'=>'username', 'value'=>$uid))); - if(isset($response['users'][0])) - { - $this->mdl_user_id = $response['users'][0]['id']; - $this->mdl_user_username = $response['users'][0]['username']; - $this->mdl_user_firstname = $response['users'][0]['firstname']; - $this->mdl_user_lastname = $response['users'][0]['lastname']; - return true; + if(isset($response['users'][0])) + { + $this->mdl_user_id = $response['users'][0]['id']; + $this->mdl_user_username = $response['users'][0]['username']; + $this->mdl_user_firstname = $response['users'][0]['firstname']; + $this->mdl_user_lastname = $response['users'][0]['lastname']; + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden des Users'; + return false; + } } - else + catch (SoapFault $E) { - $this->errormsg = 'Fehler beim Laden des Users'; + $this->errormsg.="SOAP Fehler beim Laden des Users: ".$E->faultstring; return false; } } - + /** * Liefert ein Array mit allen Lektoren die - * zu dem Moodle Kurs zugeteilt sind + * zu dem Moodle Kurs zugeteilt sind */ public function getMitarbeiter($mdl_course_id) { //Mitarbeiter laden die zu diesem Kurs zugeteilt sind - $qry = "SELECT + $qry = "SELECT mitarbeiter_uid - FROM - lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_moodle USING(lehreinheit_id) - WHERE + FROM + lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_moodle USING(lehreinheit_id) + WHERE moodle_version='2.4' AND mdl_course_id=".$this->db_add_param($mdl_course_id, FHC_INTEGER)." UNION - SELECT - mitarbeiter_uid - FROM + SELECT + mitarbeiter_uid + FROM lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) - JOIN lehre.tbl_moodle USING(lehrveranstaltung_id) - WHERE + JOIN lehre.tbl_moodle USING(lehrveranstaltung_id) + WHERE moodle_version='2.4' AND tbl_lehreinheit.studiensemester_kurzbz=tbl_moodle.studiensemester_kurzbz AND mdl_course_id=".$this->db_add_param($mdl_course_id, FHC_INTEGER); @@ -109,13 +117,13 @@ class moodle24_user extends basis_db } return $mitarbeiter; } - else + else { $this->errormsg='Fehler beim Laden der Mitarbeiter'; return false; } } - + /** * Synchronisiert die Lektoren der Lehreinheiten * mit denen des Moodle Kurses @@ -132,32 +140,32 @@ class moodle24_user extends basis_db //Bei Testkursen werden alle Lektoren einer Lehrveranstaltung zugeteilt //da hier kein Eintrag in der tbl_moodle vorhanden ist, werden die Lektoren direkt aus //der tbl_lehreinheitmitarbeiter geholt. - $qry = "SELECT - mitarbeiter_uid - FROM - lehre.tbl_lehreinheitmitarbeiter - JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) - WHERE - lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)." - AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); - } - else - { - $qry = "SELECT + $qry = "SELECT mitarbeiter_uid - FROM - lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_moodle USING(lehreinheit_id) + FROM + lehre.tbl_lehreinheitmitarbeiter + JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) WHERE - moodle_version='2.4' + lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)." + AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz); + } + else + { + $qry = "SELECT + mitarbeiter_uid + FROM + lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_moodle USING(lehreinheit_id) + WHERE + moodle_version='2.4' AND mdl_course_id=".$this->db_add_param($mdl_course_id, FHC_INTEGER)." AND mitarbeiter_uid not like '_Dummy%' UNION - SELECT - mitarbeiter_uid - FROM + SELECT + mitarbeiter_uid + FROM lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) - JOIN lehre.tbl_moodle USING(lehrveranstaltung_id) - WHERE + JOIN lehre.tbl_moodle USING(lehrveranstaltung_id) + WHERE moodle_version='2.4' AND tbl_lehreinheit.studiensemester_kurzbz=tbl_moodle.studiensemester_kurzbz AND mdl_course_id=".$this->db_add_param($mdl_course_id, FHC_INTEGER)." @@ -165,11 +173,19 @@ class moodle24_user extends basis_db } $mitarbeiter=''; - $client = new SoapClient($this->serverurl); - $enrolled_users = $client->core_enrol_get_enrolled_users($mdl_course_id,array(array('name'=>'userfields','value'=>'id,username'))); + try + { + $client = new SoapClient($this->serverurl); + $enrolled_users = $client->core_enrol_get_enrolled_users($mdl_course_id,array(array('name'=>'userfields','value'=>'id,username'))); + } + catch (SoapFault $E) + { + $this->errormsg.="SOAP Fehler beim Laden der Teilnehmer des Kurses: ".$E->faultstring; + return false; + } if($result_ma = $this->db_query($qry)) - { + { while($row_ma = $this->db_fetch_object($result_ma)) { @@ -182,7 +198,7 @@ class moodle24_user extends basis_db break; } } - + if(!$user_zugeteilt) { @@ -195,10 +211,10 @@ class moodle24_user extends basis_db $this->errormsg = "Fehler beim Anlegen des Users $row_ma->mitarbeiter_uid: $this->errormsg"; return false; } - else + else $this->errormsg = ''; } - + if($mitarbeiter!='') $mitarbeiter.=','; $mitarbeiter.=$this->mdl_user_id; @@ -209,25 +225,32 @@ class moodle24_user extends basis_db $data->userid=$this->mdl_user_id; $data->courseid=$mdl_course_id; - $client = new SoapClient($this->serverurl); - $client->enrol_manual_enrol_users(array($data)); - - $this->log.="\nLektorIn $this->mdl_user_firstname $this->mdl_user_lastname wurde zum Kurs hinzugefügt"; - $this->log_public.="\nLektorIn $this->mdl_user_firstname $this->mdl_user_lastname wurde zum Kurs hinzugefügt"; - $this->sync_create++; + try + { + $client = new SoapClient($this->serverurl); + $client->enrol_manual_enrol_users(array($data)); + $this->log.="\nLektorIn $this->mdl_user_firstname $this->mdl_user_lastname wurde zum Kurs hinzugefügt"; + $this->log_public.="\nLektorIn $this->mdl_user_firstname $this->mdl_user_lastname wurde zum Kurs hinzugefügt"; + $this->sync_create++; + } + catch (SoapFault $E) + { + $this->errormsg.="SOAP Fehler beim zuteilen der Teilnehmer des Kurses: ".$E->faultstring; + return false; + } } } - + return true; } - else + else { $this->errormsg = 'Fehler beim Ermitteln der Zugeteilten Lektoren'; return false; } } - + /** * Synchronisiert die Studenten der Lehreinheiten * mit denen des Moodle Kurses @@ -242,37 +265,45 @@ class moodle24_user extends basis_db $userstoenroll=array(); //Studentengruppen laden die zu diesem Kurs zugeteilt sind - $qry = "SELECT + $qry = "SELECT studiengang_kz, semester, verband, gruppe, gruppe_kurzbz, tbl_moodle.studiensemester_kurzbz, tbl_moodle.gruppen - FROM - lehre.tbl_lehreinheitgruppe JOIN lehre.tbl_moodle USING(lehreinheit_id) - WHERE + FROM + lehre.tbl_lehreinheitgruppe JOIN lehre.tbl_moodle USING(lehreinheit_id) + WHERE moodle_version='2.4' AND mdl_course_id=".$this->db_add_param($mdl_course_id)." UNION - SELECT + SELECT studiengang_kz, semester, verband, gruppe, gruppe_kurzbz, tbl_moodle.studiensemester_kurzbz, tbl_moodle.gruppen - FROM + FROM lehre.tbl_lehreinheitgruppe JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) - JOIN lehre.tbl_moodle USING(lehrveranstaltung_id) - WHERE + JOIN lehre.tbl_moodle USING(lehrveranstaltung_id) + WHERE moodle_version='2.4' AND tbl_lehreinheit.studiensemester_kurzbz=tbl_moodle.studiensemester_kurzbz AND mdl_course_id=".$this->db_add_param($mdl_course_id); $studenten=''; - $client = new SoapClient($this->serverurl); - $enrolled_users = $client->core_enrol_get_enrolled_users($mdl_course_id, array(array('name'=>'userfields','value'=>'id,username'))); + try + { + $client = new SoapClient($this->serverurl); + $enrolled_users = $client->core_enrol_get_enrolled_users($mdl_course_id, array(array('name'=>'userfields','value'=>'id,username'))); + } + catch (SoapFault $E) + { + $this->errormsg.="SOAP Fehler beim Laden der Teilnehmer des Kurses: ".$E->faultstring; + return false; + } if($result_std = $this->db_query($qry)) - { + { while($row_std = $this->db_fetch_object($result_std)) { $this->mdl_user_id=''; //Schauen ob fuer diesen Kurs die Gruppen mitgesynct werden sollen $gruppensync = $this->db_parse_bool($row_std->gruppen); - + //Studenten dieser Gruppe holen if($row_std->gruppe_kurzbz=='') //LVB Gruppe @@ -340,17 +371,17 @@ class moodle24_user extends basis_db $this->errormsg = "Fehler beim Anlegen des Users $row_user->student_uid: $this->errormsg"; return false; } - else + else $this->errormsg = ''; } - + if($studenten!='') $studenten.=','; $studenten.=$this->mdl_user_id; - + //Student ist noch nicht zugeteilt. - + $data = new stdClass(); $data->roleid=5; // 5=Teilnehmer/Student $data->userid=$this->mdl_user_id; @@ -398,36 +429,45 @@ class moodle24_user extends basis_db $this->log.="\nStudentIn $row_user->student_uid wurde der Gruppe $gruppenbezeichnung ($groupid) zugeordnet"; $this->log_public.="\nStudentIn $row_user->student_uid wurde der Gruppe $gruppenbezeichnung zugeordnet"; } - } + } } } } if(count($userstoenroll)>0) { - $client = new SoapClient($this->serverurl); - $client->enrol_manual_enrol_users($userstoenroll); - // Wenn User zum Kurs hinzugefuegt werden, muss eine kleine Pause eingelegt werden - // damit sich Moodle wieder beruhigt, sonst werden die Gruppenzuordnungen nicht korrekt gesetzt - sleep(1); + try + { + $client = new SoapClient($this->serverurl); + $client->enrol_manual_enrol_users($userstoenroll); + // Wenn User zum Kurs hinzugefuegt werden, muss eine kleine Pause eingelegt werden + // damit sich Moodle wieder beruhigt, sonst werden die Gruppenzuordnungen nicht korrekt gesetzt + // die Pause ist abgaengig von der Anzahl der User die neu angelegt werden + usleep(count($userstoenroll)*1000); + } + catch (SoapFault $E) + { + $this->errormsg.="SOAP Fehler beim Zuteilen der Teilnehmer des Kurses: ".$E->faultstring; + return false; + } } if(count($groupmembertoadd)>0) { - $client = new SoapClient($this->serverurl); + $client = new SoapClient($this->serverurl); $groupresult = $client->core_group_add_group_members($groupmembertoadd); //$this->log.="\n\n".print_r($groupmembertoadd,true)."\n".print_r($groupresult,true); } - + return true; } - else + else { $this->errormsg = 'Fehler beim Ermitteln der Zugeteilten Studenten'; return false; } } - + /** * Schaut ob eine Zuteilung von Person zu Gruppe * existiert @@ -439,7 +479,7 @@ class moodle24_user extends basis_db { if(!isset($this->gruppenzuordnungen[$groupid])) { - $client = new SoapClient($this->serverurl); + $client = new SoapClient($this->serverurl); $response = $client->core_group_get_group_members(array($groupid)); if(isset($response[0]['userids'])) @@ -453,12 +493,12 @@ class moodle24_user extends basis_db if($id==$userid) return true; } - + return false; } - + /** - * Legt eine Zuteilung eines Users zu + * Legt eine Zuteilung eines Users zu * einer Gruppe an * @param groupid ID der Gruppe * userid ID des Users @@ -466,14 +506,22 @@ class moodle24_user extends basis_db */ public function createGroupMember($groupid, $userid) { - $client = new SoapClient($this->serverurl); - $response = $client->core_group_add_group_members(array(array('groupid'=>$groupid, 'userid'=>$userid))); - if(isset($response[0])) - return true; - else + try + { + $client = new SoapClient($this->serverurl); + $response = $client->core_group_add_group_members(array(array('groupid'=>$groupid, 'userid'=>$userid))); + if(isset($response[0])) + return true; + else + return false; + } + catch (SoapFault $E) + { + $this->errormsg.="SOAP Fehler bei zuteilen zu Gruppe: ".$E->faultstring; return false; + } } - + /** * Holt die ID einer MoodleGruppe * @param $mdl_course_id ID des Kurses @@ -482,9 +530,9 @@ class moodle24_user extends basis_db */ public function getGroup($mdl_course_id, $gruppenbezeichnung) { - $client = @new SoapClient($this->serverurl); try - { + { + $client = new SoapClient($this->serverurl); $response = $client->core_group_get_course_groups($mdl_course_id); foreach($response as $row) { @@ -492,8 +540,8 @@ class moodle24_user extends basis_db return $row['id']; } } - catch (SoapFault $E) - { + catch (SoapFault $E) + { $this->log.="Fehler beim Laden der Gruppe $mdl_course_id, $gruppenbezeichnung: ".$E->faultstring; return false; } @@ -501,7 +549,7 @@ class moodle24_user extends basis_db $this->errormsg = "Gruppe wurde nicht gefunden $gruppenbezeichnung"; return false; } - + /** * Legt eine MoodleGruppe zu einem Kurs an * @param mdl_course_id ID des MoodleKuses @@ -510,25 +558,32 @@ class moodle24_user extends basis_db */ public function createGroup($mdl_course_id, $gruppenbezeichnung) { - $client = new SoapClient($this->serverurl); - $data = new stdClass(); - $data->courseid=$mdl_course_id; - $data->name = $gruppenbezeichnung; - $data->description = $gruppenbezeichnung; - - $response = $client->core_group_create_groups(array($data)); - - if(isset($response[0])) + try { - return $response[0]['id']; + $client = new SoapClient($this->serverurl); + $data = new stdClass(); + $data->courseid=$mdl_course_id; + $data->name = $gruppenbezeichnung; + $data->description = $gruppenbezeichnung; + + $response = $client->core_group_create_groups(array($data)); + + if(isset($response[0])) + { + return $response[0]['id']; + } + else + { + $this->errormsg = 'Fehler beim Anlegen der Gruppe'; + return false; + } } - else + catch (SoapFault $E) { - $this->errormsg = 'Fehler beim Anlegen der Gruppe'; - return false; + $this->errormsg.="SOAP Fehler beim Anlegen der Gruppe: ".$E->faultstring; } } - + /** * Legt einen User im Moodle an * @param $uid UID der Person die angelegt werden soll @@ -550,14 +605,14 @@ class moodle24_user extends basis_db $user = new stdClass(); $user->username = $username; - /* + /* Passwort muss gesetzt werden damit das Anlegen funktioniert. Es wird ein random Passwort gesetzt Dieses wird beim Login nicht verwendet da ueber ldap authentifiziert wird. Prefix ist noetig damit es nicht zu Problemen kommt wenn im Moodle die Passwort Policy aktiviert ist */ - $user->password = "FHCv!A2".hash('sha512', rand()); + $user->password = "FHCv!A2".hash('sha512', rand()); $user->firstname = $vorname; $user->lastname = $nachname; $user->email = $username.'@'.DOMAIN; @@ -565,18 +620,26 @@ class moodle24_user extends basis_db $user->idnumber = $username; $user->lang = 'en'; - $client = new SoapClient($this->serverurl); - $response = $client->core_user_create_users(array($user)); + try + { - if(isset($response[0])) - { - $this->mdl_user_id = $response[0]['id']; - return true; + $client = new SoapClient($this->serverurl); + $response = $client->core_user_create_users(array($user)); + + if(isset($response[0])) + { + $this->mdl_user_id = $response[0]['id']; + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden des Users'; + return false; + } } - else + catch (SoapFault $E) { - $this->errormsg = 'Fehler beim Laden des Users'; - return false; + $this->errormsg.="SOAP Fehler beim Anlegen der User: ".$E->faultstring.' '.(isset($E->detail)?$E->detail:'').' data:'.$username; } } else @@ -590,8 +653,8 @@ class moodle24_user extends basis_db $this->errormsg='Fehler beim Laden des Users'; return false; } - } - + } + /** * Teilt die TestStudenten zu einem Testkurs zu * @param mdl_course_id ID des Moodle Kurses @@ -600,7 +663,7 @@ class moodle24_user extends basis_db { //Context des Kurses holen $mdlcourse = new moodle24_course(); - + $users = array('student1', 'student2', 'student3'); foreach ($users as $row_user) @@ -609,7 +672,7 @@ class moodle24_user extends basis_db if(!$this->loaduser($row_user)) { $this->errormsg = "Fehler beim Laden des Users $row_user: $this->errormsg"; - return false; + return false; } $data = new stdClass(); @@ -617,14 +680,14 @@ class moodle24_user extends basis_db $data->userid=$this->mdl_user_id; $data->courseid=$mdl_course_id; - $client = new SoapClient($this->serverurl); + $client = new SoapClient($this->serverurl); $client->enrol_manual_enrol_users(array($data)); // WS-Funktion enrol_manual_enrol_users liefert immer null zurück // Fehler bei der Zuordnung koennen daher nicht abgefangen werden. // Eventuell sollten hier nochmals die Teilnehmer des Kurses geladen werden // um zu pruefen ob die Zuordnung erfolgreich war. } - + return true; } @@ -640,7 +703,7 @@ class moodle24_user extends basis_db if(!$this->loaduser($uid)) { $this->errormsg = "Fehler beim Laden des Users $uid: $this->errormsg"; - return false; + return false; } $param=array(); @@ -654,9 +717,128 @@ class moodle24_user extends basis_db $param[]=$data; } - $client = new SoapClient($this->serverurl); + $client = new SoapClient($this->serverurl); $client->enrol_manual_enrol_users($param); return true; } + + /** + * Teilt die Fachbereichsleiter zu den Moodle Kursen zu + * @param $mdl_course_id ID des MoodleKurses + * @return true wenn ok, false wenn Fehler + */ + public function sync_fachbereichsleitung($mdl_course_id) + { + //Leitung laden die zu diesem Kurs zugeteilt sind + $qry = "SELECT + distinct uid as mitarbeiter_uid + FROM + public.tbl_organisationseinheit + JOIN public.tbl_benutzerfunktion USING (oe_kurzbz) + JOIN lehre.tbl_lehrveranstaltung USING(oe_kurzbz) + JOIN lehre.tbl_lehreinheit USING (lehrveranstaltung_id) + WHERE + organisationseinheittyp_kurzbz in('Institut','Fachbereich') + AND funktion_kurzbz='Leitung' + 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) + AND tbl_lehrveranstaltung.lehrveranstaltung_id IN( + SELECT + lehrveranstaltung_id + FROM + lehre.tbl_moodle + WHERE + moodle_version='2.4' + AND mdl_course_id=".$this->db_add_param($mdl_course_id, FHC_INTEGER)." + AND lehrveranstaltung_id IS NOT NULL + UNION + SELECT + tbl_lehreinheit.lehrveranstaltung_id + FROM + lehre.tbl_moodle + JOIN lehre.tbl_lehreinheit USING(lehreinheit_id) + WHERE + moodle_version='2.4' + AND mdl_course_id=".$this->db_add_param($mdl_course_id, FHC_INTEGER)." + )"; + $mitarbeiter=''; + + try + { + $client = new SoapClient($this->serverurl); + $enrolled_users = $client->core_enrol_get_enrolled_users($mdl_course_id,array(array('name'=>'userfields','value'=>'id,username'))); + } + catch (SoapFault $E) + { + $this->errormsg.="SOAP Fehler beim Ermitteln der Teilnehmer: ".$E->faultstring; + return false; + } + + if($result_ma = $this->db_query($qry)) + { + while($row_ma = $this->db_fetch_object($result_ma)) + { + + $user_zugeteilt=false; + foreach($enrolled_users as $user) + { + if($user['username']==$row_ma->mitarbeiter_uid) + { + $user_zugeteilt=true; + break; + } + } + + if(!$user_zugeteilt) + { + + //MoodleID des Users holen bzw ggf neu anlegen + if(!$this->loaduser($row_ma->mitarbeiter_uid)) + { + //User anlegen + if(!$this->createUser($row_ma->mitarbeiter_uid)) + { + $this->errormsg = "Fehler beim Anlegen des Users $row_ma->mitarbeiter_uid: $this->errormsg"; + return false; + } + else + $this->errormsg = ''; + } + + if($mitarbeiter!='') + $mitarbeiter.=','; + $mitarbeiter.=$this->mdl_user_id; + + //Mitarbeiter ist noch nicht zugeteilt. + $data = new stdClass(); + $data->roleid=11; // 11=Fachbereichsleiter (selbst definierte rolle) + $data->userid=$this->mdl_user_id; + $data->courseid=$mdl_course_id; + + try + { + + $client = new SoapClient($this->serverurl); + $client->enrol_manual_enrol_users(array($data)); + + $this->log.="\nFachbereitsleiterIn $this->mdl_user_firstname $this->mdl_user_lastname wurde zum Kurs hinzugefügt"; + $this->log_public.="\nFachbereichsleiterIn $this->mdl_user_firstname $this->mdl_user_lastname wurde zum Kurs hinzugefügt"; + $this->sync_create++; + } + catch (SoapFault $E) + { + $this->log.="Fehler beim hinzufügen von FBL: ".$E->faultstring; + } + } + } + + return true; + } + else + { + $this->errormsg = 'Fehler beim Ermitteln der Zugeteilten Lektoren'; + return false; + } + } } diff --git a/system/sync/sync_moodle24_user.php b/system/sync/sync_moodle24_user.php index a7f154f74..90748ab25 100644 --- a/system/sync/sync_moodle24_user.php +++ b/system/sync/sync_moodle24_user.php @@ -21,13 +21,14 @@ * Synchronisiert die Lektoren und Studenten der aktuellen MoodleKurse * wenn kein aktuelles Studiensemester vorhanden ist, wird NICHT Synchronisiert */ -require_once('../../config/vilesci.config.inc.php'); -require_once('../../include/moodle24_course.class.php'); -require_once('../../include/moodle24_user.class.php'); -require_once('../../include/studiensemester.class.php'); -require_once('../../include/studiengang.class.php'); -require_once('../../include/mail.class.php'); - +require_once(dirname(__FILE__).'/../../config/vilesci.config.inc.php'); +require_once(dirname(__FILE__).'/../../config/global.config.inc.php'); +require_once(dirname(__FILE__).'/../../include/moodle24_course.class.php'); +require_once(dirname(__FILE__).'/../../include/moodle24_user.class.php'); +require_once(dirname(__FILE__).'/../../include/studiensemester.class.php'); +require_once(dirname(__FILE__).'/../../include/studiengang.class.php'); +require_once(dirname(__FILE__).'/../../include/mail.class.php'); + $db = new basis_db(); $sync_lektoren_gesamt=0; $sync_studenten_gesamt=0; @@ -42,13 +43,13 @@ $lektoren=array(); echo "-- Start ".date('Y-m-d H:i:s')."--"; -//nur Synchronisieren wenn ein aktuelles Studiensemester existiert damit keine +//nur Synchronisieren wenn ein aktuelles Studiensemester existiert damit keine //Probleme durch die Vorrueckung entstehen $stsem = new studiensemester(); if($stsem_kurzbz=$stsem->getakt()) { //nur die Eintraege des aktuellen Studiensemesters syncen - $qry = "SELECT distinct mdl_course_id FROM lehre.tbl_moodle + $qry = "SELECT distinct mdl_course_id FROM lehre.tbl_moodle WHERE studiensemester_kurzbz=".$db->db_add_param($stsem_kurzbz)." AND moodle_version='2.4'"; if($result = $db->db_query($qry)) @@ -78,12 +79,37 @@ if($stsem_kurzbz=$stsem->getakt()) $message_lkt.="\nKurs: $course->mdl_fullname ($course->mdl_shortname) $course->mdl_course_id:\n".$mdluser->log_public."\n"; } } - else + else { $message.="\nFehler: $mdluser->errormsg"; $fehler++; } echo $mdluser->log; + //Lektoren + $mdluser = new moodle24_user(); + $mitarbeiter = $mdluser->getMitarbeiter($row->mdl_course_id); + + if(defined('MOODLE_SYNC_FACHBEREICHSLEITUNG') && MOODLE_SYNC_FACHBEREICHSLEITUNG) + { + echo "
\n-- Fachbereichsleitung --"; + flush(); + if($mdluser->sync_fachbereichsleitung($row->mdl_course_id)) + { + $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) $course->mdl_course_id:\n".$mdluser->log."\n"; + $message_lkt.="\nKurs: $course->mdl_fullname ($course->mdl_shortname) $course->mdl_course_id:\n".$mdluser->log_public."\n"; + } + } + else + { + $message.="\nFehler: $mdluser->errormsg"; + $fehler++; + } + echo $mdluser->log; + } echo "
\n-- Studenten --"; flush(); @@ -104,7 +130,7 @@ if($stsem_kurzbz=$stsem->getakt()) $message.="\nFehler: $mdluser->errormsg"; $fehler++; } - + echo $mdluser->log; flush(); foreach ($mitarbeiter as $uid) @@ -114,13 +140,13 @@ if($stsem_kurzbz=$stsem->getakt()) $lektoren[$uid].=$message_lkt; } } - else + else { $message.="\nFehler: in der Tabelle lehre.tbl_moodle wird auf den Kurs $row->mdl_course_id verwiesen, dieser existiert jedoch nicht im Moodle!"; $fehler++; } } - + if($sync_lektoren_gesamt>0 || $sync_studenten_gesamt>0 || $fehler>0 || $group_updates>0) { //Mail an die Lektoren @@ -130,14 +156,14 @@ if($stsem_kurzbz=$stsem->getakt()) { $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'; - + $mail = new mail($to, 'vilesci@'.DOMAIN,'Moodle - Aktualisierungen',$header.$message_lkt); if($mail->send()) echo "Mail wurde an $to versandt
"; - else + else echo "Fehler beim Senden des Mails an $to
"; } } @@ -147,27 +173,27 @@ if($stsem_kurzbz=$stsem->getakt()) $header.= "Anzahl der aktualisierten Lektoren: $sync_lektoren_gesamt\n"; $header.= "Anzahl der aktualisierten Studenten: $sync_studenten_gesamt\n"; $header.= "Anzahl der Fehler: $fehler\n"; - + $to = MAIL_ADMIN; //$to = 'oesi@technikum-wien.at'; - + $mail = new mail($to, 'vilesci@'.DOMAIN,'Moodle Syncro',$header.$message); if($mail->send()) echo "Mail wurde an $to versandt:
".nl2br($header.$message); - else + else echo "Fehler beim Senden des Mails an $to:
".nl2br($header.$message); } - else + else { - echo 'Alle Zuteilungen sind auf dem neuesten Stand'; + echo "\nAlle Zuteilungen sind auf dem neuesten Stand"; } } - else + else { echo 'Fehler bei Select:'.$qry; } } -else +else echo "Kein aktuelles Studiensemester vorhanden->kein Syncro"; -echo "-- Ende ".date('d.m.Y H:i:s')." --"; +echo "
\n-- Ende ".date('Y-m-d H:i:s')." --\n"; ?> diff --git a/system/sync/sync_moodle_kurse.php b/system/sync/sync_moodle_kurse.php index e29be16eb..a989b1981 100644 --- a/system/sync/sync_moodle_kurse.php +++ b/system/sync/sync_moodle_kurse.php @@ -23,13 +23,13 @@ * und teilt Lektoren und Studierende zu dem Kurs zu * Aber nur wenn die Lehrform der Lehreinheit=Lehrform der LV */ -require_once('../../config/cis.config.inc.php'); -require_once('../../include/studiensemester.class.php'); -require_once('../../include/moodle.class.php'); -require_once('../../include/moodle24_course.class.php'); -require_once('../../include/moodle24_user.class.php'); -require_once('../../include/studiengang.class.php'); -require_once('../../include/benutzerberechtigung.class.php'); +require_once(dirname(__FILE__).'/../../config/cis.config.inc.php'); +require_once(dirname(__FILE__).'/../../include/studiensemester.class.php'); +require_once(dirname(__FILE__).'/../../include/moodle.class.php'); +require_once(dirname(__FILE__).'/../../include/moodle24_course.class.php'); +require_once(dirname(__FILE__).'/../../include/moodle24_user.class.php'); +require_once(dirname(__FILE__).'/../../include/studiengang.class.php'); +require_once(dirname(__FILE__).'/../../include/benutzerberechtigung.class.php'); // Wenn das Script nicht ueber Commandline gestartet wird, muss eine // Authentifizierung stattfinden @@ -40,7 +40,7 @@ if(php_sapi_name() != 'cli') $rechte->getBerechtigungen($uid); if(!$rechte->isBerechtigt('admin')) - die('Sie haben keine Berechtigung fuer diese Seite'); + die('Sie haben keine Berechtigung fuer diese Seite'); } $db = new basis_db(); @@ -64,7 +64,7 @@ JOIN public.tbl_person USING (person_id) AND semester is not null AND semester!=0 AND tbl_lehreinheit.lehrform_kurzbz=tbl_lehrveranstaltung.lehrform_kurzbz - + AND uid not like '_Dummy%' GROUP BY lehrveranstaltung_id, tbl_lehrveranstaltung.bezeichnung, tbl_lehrveranstaltung.kurzbz, tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.orgform_kurzbz, tbl_lehrveranstaltung.semester, tbl_lehreinheit.lehreinheit_id;"; @@ -92,7 +92,7 @@ if($result = $db->db_query($qry)) $mdl_course->insertamum = date('Y-m-d H:i:s'); $mdl_course->insertvon = 'auto'; $mdl_course->gruppen = true; - + echo "\nCreate Course: $bezeichnung"; //Moodlekurs anlegen @@ -106,6 +106,11 @@ if($result = $db->db_query($qry)) if(!$mdl_user->sync_lektoren($mdl_course->mdl_course_id)) echo $mdl_user->errormsg; + $mdl_user = new moodle24_user(); + //Fachbereichsleitung Synchronisieren + if(!$mdl_user->sync_fachbereichsleitung($mdl_course->mdl_course_id)) + echo $mdl_user->errormsg; + $mdl_user = new moodle24_user(); //Studenten Synchronisieren if(!$mdl_user->sync_studenten($mdl_course->mdl_course_id)) diff --git a/vilesci/moodle/user_sync24.php b/vilesci/moodle/user_sync24.php index 73e26eadf..a5e7adda1 100755 --- a/vilesci/moodle/user_sync24.php +++ b/vilesci/moodle/user_sync24.php @@ -18,9 +18,10 @@ * Authors: Andreas Oesterreicher and */ /** - * Script zum manuellen synchronisieren der User in die Moodle Kurse + * Script zum manuellen synchronisieren der User in die Moodle Kurse */ require_once('../../config/vilesci.config.inc.php'); +require_once('../../config/global.config.inc.php'); require_once('../../include/functions.inc.php'); require_once('../../include/moodle.class.php'); require_once('../../include/moodle24_user.class.php'); @@ -68,7 +69,7 @@ if(isset($_POST['sync'])) if(isset($_POST['mdl_course_id']) && $_POST['mdl_course_id']!='' && is_numeric($_POST['mdl_course_id'])) { $mdl_course_id = $_POST['mdl_course_id']; - + $moodle = new moodle24_user(); echo '

Übertrage LektorInnen


'; if($moodle->sync_lektoren($mdl_course_id)) @@ -77,7 +78,18 @@ if(isset($_POST['sync'])) } else echo 'Fehler bei der Zuteilung:'.$moodle->errormsg; - + + if(defined('MOODLE_SYNC_FACHBEREICHSLEITUNG') && MOODLE_SYNC_FACHBEREICHSLEITUNG) + { + $moodle = new moodle24_user(); + echo '

Übertrage Fachbereichsleitung


'; + if($moodle->sync_fachbereichsleitung($mdl_course_id)) + { + echo $moodle->log; + } + else + echo 'Fehler bei der Zuteilung:'.$moodle->errormsg; + } $moodle = new moodle24_user(); echo '

Übertrage Studierende


';