diff --git a/include/moodle24_user.class.php b/include/moodle24_user.class.php
index 043ac4855..1db380e58 100644
--- a/include/moodle24_user.class.php
+++ b/include/moodle24_user.class.php
@@ -170,35 +170,37 @@ class moodle24_user extends basis_db
{
while($row_ma = $this->db_fetch_object($result_ma))
{
- //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;
-
+
$user_zugeteilt=false;
foreach($enrolled_users as $user)
{
- if($user['id']==$this->mdl_user_id)
+ 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=3; // 3=Lektor
@@ -231,6 +233,11 @@ class moodle24_user extends basis_db
*/
public function sync_studenten($mdl_course_id)
{
+ $vorhandenegruppen=array();
+ $this->gruppenzuordnungen=array();
+ $groupmembertoadd = array();
+ $userstoenroll=array();
+
//Studentengruppen laden die zu diesem Kurs zugeteilt sind
$qry = "SELECT
studiengang_kz, semester, verband, gruppe, gruppe_kurzbz, tbl_moodle.studiensemester_kurzbz, tbl_moodle.gruppen
@@ -258,6 +265,8 @@ class moodle24_user extends basis_db
{
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);
@@ -302,68 +311,81 @@ class moodle24_user extends basis_db
{
while($row_user = $this->db_fetch_object($result_user))
{
- //MoodleID des Users holen bzw ggf neu anlegen
- if(!$this->loaduser($row_user->student_uid))
- {
- //User anlegen
- if(!$this->createUser($row_user->student_uid))
- {
- $this->errormsg = "Fehler beim Anlegen des Users $row_user->student_uid: $this->errormsg";
- return false;
- }
- else
- $this->errormsg = '';
- }
-
- if($studenten!='')
- $studenten.=',';
- $studenten.=$this->mdl_user_id;
-
+
//Nachschauen ob dieser Student bereits zugeteilt ist
$user_zugeteilt=false;
foreach($enrolled_users as $user)
{
- if($user['id']==$this->mdl_user_id)
+ if($user['username']==$row_user->student_uid)
{
$user_zugeteilt=true;
+ $this->mdl_user_id=$user['id'];
break;
}
}
if(!$user_zugeteilt)
{
+
+ //MoodleID des Users holen bzw ggf neu anlegen
+ if(!$this->loaduser($row_user->student_uid))
+ {
+ //User anlegen
+ if(!$this->createUser($row_user->student_uid))
+ {
+ $this->errormsg = "Fehler beim Anlegen des Users $row_user->student_uid: $this->errormsg";
+ return false;
+ }
+ 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;
$data->courseid=$mdl_course_id;
- $client->enrol_manual_enrol_users(array($data));
+
+ $userstoenroll[]=$data;
$this->log.="\nStudentIn $row_user->student_uid wurde zum Kurs hinzugefügt";
$this->log_public.="\nStudentIn $row_user->student_uid wurde zum Kurs hinzugefügt";
$this->sync_create++;
}
+
//Gruppenzuteilung
if($gruppensync)
{
- //Schauen ob die Gruppe vorhanden ist
- if(!$groupid = $this->getGroup($mdl_course_id, $gruppenbezeichnung))
+ if(!array_search($gruppenbezeichnung, $vorhandenegruppen))
{
- //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 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;
+ $this->group_update++;
+ $this->log.="\nes wurde eine neue Gruppe angelgt: $gruppenbezeichnung";
+ $this->log_public.="\nes wurde eine neue Gruppe angelgt: $gruppenbezeichnung";
+ }
+ $vorhandenegruppen[]=$gruppenbezeichnung;
}
-
+
+ //if($this->mdl_user_id=='')
+ // $this->loaduser($row_user->student_uid);
//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);
+ $groupmembertoadd[] = array('groupid'=>$groupid,'userid'=>$this->mdl_user_id);
+ //$this->createGroupMember($groupid, $this->mdl_user_id);
$this->group_update++;
$this->log.="\nStudentIn $row_user->student_uid wurde der Gruppe $gruppenbezeichnung zugeordnet";
$this->log_public.="\nStudentIn $row_user->student_uid wurde der Gruppe $gruppenbezeichnung zugeordnet";
@@ -372,7 +394,12 @@ class moodle24_user extends basis_db
}
}
}
-
+ if(count($userstoenroll)>0)
+ $client->enrol_manual_enrol_users($userstoenroll);
+
+ if(count($groupmembertoadd)>0)
+ $client->core_group_add_group_members($groupmembertoadd);
+
return true;
}
else
@@ -391,12 +418,18 @@ class moodle24_user extends basis_db
*/
public function getGroupMember($groupid, $userid)
{
- $client = new SoapClient($this->serverurl);
- $response = $client->core_group_get_group_members(array($groupid));
+ if(!isset($this->gruppenzuordnungen[$groupid]))
+ {
+ $client = new SoapClient($this->serverurl);
+ $response = $client->core_group_get_group_members(array($groupid));
- if(isset($response[0]['userids']))
+ if(isset($response[0]['userids']))
+ {
+ $this->gruppenzuordnungen[$groupid]=$response[0]['userids'];
+ }
+ }
- foreach($response[0]['userids'] as $id)
+ foreach($this->gruppenzuordnungen[$groupid] as $id)
{
if($id==$userid)
return true;
diff --git a/system/sync/sync_moodle24_user.php b/system/sync/sync_moodle24_user.php
index 657148ecf..03fce0a86 100644
--- a/system/sync/sync_moodle24_user.php
+++ b/system/sync/sync_moodle24_user.php
@@ -40,7 +40,7 @@ $lektoren=array();
//ini_set('soap.wsdl_cache_enabled',0);
//ini_set('soap.wsdl_cache_ttl',0);
-echo "Start um ".date('Y-m-d H:i:s');
+echo "-- Start ".date('Y-m-d H:i:s')."--";
//nur Synchronisieren wenn ein aktuelles Studiensemester existiert damit keine
//Probleme durch die Vorrueckung entstehen
@@ -55,26 +55,27 @@ if($stsem_kurzbz=$stsem->getakt())
{
while($row = $db->db_fetch_object($result))
{
- $course = new moodle24_course();
- echo 'Sync fuer kurs '.$row->mdl_course_id.'
';
+ echo "
\nSync fuer Kurs $row->mdl_course_id";
flush();
- ob_flush();
-
+
+ $course = new moodle24_course();
if($course->load($row->mdl_course_id))
{
$message_lkt='';
//Lektoren
$mdluser = new moodle24_user();
$mitarbeiter = $mdluser->getMitarbeiter($row->mdl_course_id);
-
+
+ echo "
\n-- Mitarbeiter --";
+ flush();
if($mdluser->sync_lektoren($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):\n".$mdluser->log."\n";
- $message_lkt.="\nKurs: $course->mdl_fullname ($course->mdl_shortname):\n".$mdluser->log_public."\n";
+ $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
@@ -83,10 +84,9 @@ if($stsem_kurzbz=$stsem->getakt())
$fehler++;
}
echo $mdluser->log;
+ echo "
\n-- Studenten --";
flush();
- ob_flush();
-
- echo "
--studenten--";
+
//Studenten
$mdluser = new moodle24_user();
if($mdluser->sync_studenten($row->mdl_course_id))
@@ -107,7 +107,6 @@ if($stsem_kurzbz=$stsem->getakt())
echo $mdluser->log;
flush();
- ob_flush();
foreach ($mitarbeiter as $uid)
{
if(!isset($lektoren[$uid]))
@@ -121,7 +120,7 @@ if($stsem_kurzbz=$stsem->getakt())
$fehler++;
}
}
-
+ /*
if($sync_lektoren_gesamt>0 || $sync_studenten_gesamt>0 || $fehler>0 || $group_updates>0)
{
//Mail an die Lektoren
@@ -161,7 +160,7 @@ if($stsem_kurzbz=$stsem->getakt())
else
{
echo 'Alle Zuteilungen sind auf dem neuesten Stand';
- }
+ }*/
}
else
{
@@ -170,5 +169,5 @@ if($stsem_kurzbz=$stsem->getakt())
}
else
echo "Kein aktuelles Studiensemester vorhanden->kein Syncro";
-echo "Ende um ".date('Y-m-d H:i:s');
+echo "-- Ende ".date('d.m.Y H:i:s')." --";
?>