diff --git a/CHANGELOG.md b/CHANGELOG.md
index ad9601ddb..5a9a78ea3 100755
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -27,6 +27,7 @@
### Updateinfo
- **[FAS]** Für Lehraufträge muss eine Unoconv-Vorlage erstellt werden, da der für xsl-fo notwendige Seitenumbruch-Tag aus dem RDF entfernt wurde.
- **[FAS]** Mehrsprachigkeitsspalte tbl_status.bezeichnung_mehrsprachig wird durch das Updatescript automatisch in den ersten beiden Sprachen mit der status_kurzbz vorbefüllt. Übersetzungen sind anzupassen.
+- **[MOODLE]** Neue Webservicefunktion core_user_update_users wird benötigt
## [3.1.0] - 2015-11-12
### Added
diff --git a/include/moodle.class.php b/include/moodle.class.php
index ce8b3f7ad..7c61930db 100644
--- a/include/moodle.class.php
+++ b/include/moodle.class.php
@@ -23,7 +23,7 @@ require_once(dirname(__FILE__).'/basis_db.class.php');
class moodle extends basis_db
{
public $result = array();
-
+
public $moodle_id;
public $mdl_course_id;
public $lehreinheit_id;
@@ -35,10 +35,10 @@ class moodle extends basis_db
public $moodle_version;
public $version;
-
+
/**
* Konstruktor
- *
+ *
*/
public function __construct()
{
@@ -46,12 +46,12 @@ class moodle extends basis_db
$this->getVersionen();
return true;
}
-
-
+
+
public function load($moodle_id)
{
- $qry = "SELECT * FROM lehre.tbl_moodle WHERE moodle_id =".$this->db_add_param($moodle_id, FHC_INTEGER).';';
-
+ $qry = "SELECT * FROM lehre.tbl_moodle WHERE moodle_id =".$this->db_add_param($moodle_id, FHC_INTEGER).';';
+
if($result=$this->db_query($qry))
{
if($row = $this->db_fetch_object())
@@ -65,21 +65,21 @@ class moodle extends basis_db
$this->insertvon = $row->insertvon;
$this->gruppen = $this->db_parse_bool($row->gruppen);
$this->moodle_version = $row->moodle_version;
- return true;
+ return true;
}
else
{
- $this->errormsg = "Kein Moodleeintrag gefunden";
- return false;
+ $this->errormsg = "Kein Moodleeintrag gefunden";
+ return false;
}
}
else
{
- $this->errormsg="Fehler bei der Abfrage aufgetreten";
- return false;
+ $this->errormsg="Fehler bei der Abfrage aufgetreten";
+ return false;
}
}
-
+
/**
* Laedt alle Moodlekurse zu einer LV/Stsem
* plus die Moodlekurse die auf dessen LE haengen
@@ -91,25 +91,25 @@ class moodle extends basis_db
*/
public function getAll($lehrveranstaltung_id, $studiensemester_kurzbz)
{
- $qry = "SELECT
- distinct on(mdl_course_id) *
- FROM
- lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_moodle
+ $qry = "SELECT
+ distinct on(mdl_course_id) *
+ FROM
+ lehre.tbl_lehrveranstaltung, lehre.tbl_lehreinheit, lehre.tbl_moodle
WHERE
- tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id
- AND tbl_lehrveranstaltung.lehrveranstaltung_id = ".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)."
- AND tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
- AND ((tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_moodle.lehrveranstaltung_id
+ tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_lehreinheit.lehrveranstaltung_id
+ AND tbl_lehrveranstaltung.lehrveranstaltung_id = ".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)."
+ AND tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
+ AND ((tbl_lehrveranstaltung.lehrveranstaltung_id=tbl_moodle.lehrveranstaltung_id
AND tbl_moodle.studiensemester_kurzbz=tbl_lehreinheit.studiensemester_kurzbz)
OR
(tbl_lehreinheit.lehreinheit_id=tbl_moodle.lehreinheit_id))";
-
+
if($result=$this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new stdClass();
-
+
$obj->moodle_id = $row->moodle_id;
$obj->mdl_course_id = $row->mdl_course_id;
$obj->lehreinheit_id = $row->lehreinheit_id;
@@ -124,27 +124,27 @@ class moodle extends basis_db
}
return true;
}
- else
+ else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
- }
-
+ }
+
/**
* gibt alle Moodlekurseinträge der Zwischentabelle für übergebenen Studiengang und Semester zurück
* @param type $studiengang_kz
- * @param type $studiensemester
+ * @param type $studiensemester
*/
public function getAllMoodleForStudiengang($studiengang_kz, $studiensemester, $version='2.4')
{
$qry = '
-
+
SELECT mdl_course_id, moodle.moodle_id, moodle.lehreinheit_id, moodle.lehrveranstaltung_id, moodle.studiensemester_kurzbz, moodle.insertamum, moodle.insertvon, gruppen, moodle_version FROM lehre.tbl_moodle moodle
JOIN lehre.tbl_lehrveranstaltung lv USING(lehrveranstaltung_id)
WHERE moodle.studiensemester_kurzbz = '.$this->db_add_param($studiensemester).'
- AND lv.studiengang_kz ='.$this->db_add_param($studiengang_kz).'
- AND moodle_version ='.$this->db_add_param($version).'
+ AND lv.studiengang_kz ='.$this->db_add_param($studiengang_kz).'
+ AND moodle_version ='.$this->db_add_param($version).'
AND moodle.lehreinheit_id is null
UNION
@@ -153,17 +153,17 @@ SELECT distinct on(mdl_course_id) mdl_course_id, moodle.moodle_id, moodle.lehrei
JOIN lehre.tbl_lehreinheit le ON(moodle.lehreinheit_id = le.lehreinheit_id)
JOIN lehre.tbl_lehrveranstaltung lv ON(le.lehrveranstaltung_id = lv.lehrveranstaltung_id)
WHERE moodle.studiensemester_kurzbz = '.$this->db_add_param($studiensemester).'
- AND lv.studiengang_kz ='.$this->db_add_param($studiengang_kz).'
- AND moodle_version ='.$this->db_add_param($version).'
+ AND lv.studiengang_kz ='.$this->db_add_param($studiengang_kz).'
+ AND moodle_version ='.$this->db_add_param($version).'
AND moodle.lehrveranstaltung_id is null
-';
-
+';
+
if($result=$this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
$obj = new stdClass();
-
+
$obj->moodle_id = $row->moodle_id;
$obj->mdl_course_id = $row->mdl_course_id;
$obj->lehreinheit_id = $row->lehreinheit_id;
@@ -178,50 +178,50 @@ SELECT distinct on(mdl_course_id) mdl_course_id, moodle.moodle_id, moodle.lehrei
}
return true;
}
- else
+ else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
- }
+ }
}
-
+
/**
* Löscht den Zuordnungseintrag in der Moodletablle
- * @param type $moodle_id
+ * @param type $moodle_id
*/
public function deleteZuordnung($mdl_course_id)
{
- $qry = "DELETE FROM lehre.tbl_moodle WHERE mdl_course_id=".$this->db_add_param($mdl_course_id, FHC_INTEGER).';';
-
+ $qry = "DELETE FROM lehre.tbl_moodle WHERE mdl_course_id=".$this->db_add_param($mdl_course_id, FHC_INTEGER).';';
+
if($result=$this->db_query($qry))
return true;
else
{
- $this->errormsg="Fehler beim Löschen der Daten";
- return false;
+ $this->errormsg="Fehler beim Löschen der Daten";
+ return false;
}
}
-
+
/**
* gibt alle LE Ids der Übergebenen Moodle_Course_ID zurück
*/
public function getLeFromCourse($moodle_course_id)
{
- $qry = "SELECT lehreinheit_id FROM lehre.tbl_moodle WHERE mdl_course_id =".$this->db_add_param($moodle_course_id, FHC_INTEGER).';';
- $le = array();
+ $qry = "SELECT lehreinheit_id FROM lehre.tbl_moodle WHERE mdl_course_id =".$this->db_add_param($moodle_course_id, FHC_INTEGER).';';
+ $le = array();
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
- $le[] = $row->lehreinheit_id;
+ $le[] = $row->lehreinheit_id;
}
}
- return $le;
+ return $le;
}
-
+
/**
- * Schaut ob fuer diese LV/StSem schon ein
+ * Schaut ob fuer diese LV/StSem schon ein
* Moodle Kurs existiert
*
* @param lehrveranstaltung_id
@@ -230,19 +230,19 @@ SELECT distinct on(mdl_course_id) mdl_course_id, moodle.moodle_id, moodle.lehrei
*/
public function course_exists_for_lv($lehrveranstaltung_id, $studiensemester_kurzbz)
{
- $qry = "SELECT
- 1
- FROM
- lehre.tbl_moodle
- WHERE
+ $qry = "SELECT
+ 1
+ FROM
+ lehre.tbl_moodle
+ WHERE
lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)."
AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
if($this->db_query($qry))
{
if($this->db_num_rows()>0)
- return true;
- else
+ return true;
+ else
return false;
}
else
@@ -251,7 +251,7 @@ SELECT distinct on(mdl_course_id) mdl_course_id, moodle.moodle_id, moodle.lehrei
return false;
}
}
-
+
/**
* Schaut ob fuer diese LE schon ein Moodle
* Kurs existiert
@@ -265,7 +265,7 @@ SELECT distinct on(mdl_course_id) mdl_course_id, moodle.moodle_id, moodle.lehrei
{
if($this->db_num_rows()>0)
return true;
- else
+ else
return false;
}
else
@@ -274,7 +274,7 @@ SELECT distinct on(mdl_course_id) mdl_course_id, moodle.moodle_id, moodle.lehrei
return false;
}
}
-
+
/**
* Prueft ob fuer alle Lehreinheiten dieser LV bereits ein Moodlekurs existiert
*
@@ -284,19 +284,19 @@ SELECT distinct on(mdl_course_id) mdl_course_id, moodle.moodle_id, moodle.lehrei
*/
public function course_exists_for_allLE($lehrveranstaltung_id, $studiensemester_kurzbz)
{
- $qry = "SELECT 1 FROM lehre.tbl_lehreinheit
- WHERE
+ $qry = "SELECT 1 FROM lehre.tbl_lehreinheit
+ WHERE
lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)."
AND studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
AND lehreinheit_id NOT IN (
- SELECT lehreinheit_id FROM lehre.tbl_moodle
+ SELECT lehreinheit_id FROM lehre.tbl_moodle
WHERE lehreinheit_id=tbl_lehreinheit.lehreinheit_id)";
if($this->db_query($qry))
{
if($this->db_num_rows()>0)
return false;
- else
+ else
return true;
}
else
@@ -308,11 +308,11 @@ SELECT distinct on(mdl_course_id) mdl_course_id, moodle.moodle_id, moodle.lehrei
/**
* Laedt die Moodle Versionsinformationen
- */
+ */
public function getVersionen()
{
$qry = "SELECT * FROM lehre.tbl_moodle_version";
-
+
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
@@ -328,7 +328,7 @@ SELECT distinct on(mdl_course_id) mdl_course_id, moodle.moodle_id, moodle.lehrei
return false;
}
}
-
+
/**
* Liefert den Pfad zur Moodle Installation
* @param version Versionsnummer
@@ -342,9 +342,9 @@ SELECT distinct on(mdl_course_id) mdl_course_id, moodle.moodle_id, moodle.lehrei
/**
- * Liefert alle Kurse dieser LV zu denen der Student
+ * Liefert alle Kurse dieser LV zu denen der Student
* zugeteilt ist
- *
+ *
* @param lehrveranstaltung_id
* @param studiensemester_kurzbz
* @param student_uid
@@ -353,33 +353,33 @@ SELECT distinct on(mdl_course_id) mdl_course_id, moodle.moodle_id, moodle.lehrei
public function getCourse($lehrveranstaltung_id, $studiensemester_kurzbz, $student_uid)
{
//alle betreffenden Kurse holen
- $qry = "SELECT
+ $qry = "SELECT
tbl_lehreinheit.lehreinheit_id, mdl_course_id, tbl_moodle.moodle_version
- FROM
- lehre.tbl_moodle
+ FROM
+ lehre.tbl_moodle
JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id, studiensemester_kurzbz)
- WHERE
+ WHERE
tbl_moodle.lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)."
AND tbl_moodle.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz)."
- UNION
- SELECT
+ UNION
+ SELECT
tbl_lehreinheit.lehreinheit_id, mdl_course_id, tbl_moodle.moodle_version
- FROM
- lehre.tbl_moodle
- JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
- WHERE
+ FROM
+ lehre.tbl_moodle
+ JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
+ WHERE
tbl_lehreinheit.lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER)."
AND tbl_lehreinheit.studiensemester_kurzbz=".$this->db_add_param($studiensemester_kurzbz);
-
+
$courses = array();
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object($result))
{
//schauen in welchen Kursen der Student ist
- $qry = "SELECT 1 FROM campus.vw_student_lehrveranstaltung
- WHERE
- uid=".$this->db_add_param($student_uid)."
+ $qry = "SELECT 1 FROM campus.vw_student_lehrveranstaltung
+ WHERE
+ uid=".$this->db_add_param($student_uid)."
AND lehreinheit_id=".$this->db_add_param($row->lehreinheit_id, FHC_INTEGER);
if($result_vw = $this->db_query($qry))
@@ -396,7 +396,7 @@ SELECT distinct on(mdl_course_id) mdl_course_id, moodle.moodle_id, moodle.lehrei
}
}
}
- }
+ }
return true;
}
}
diff --git a/include/moodle24_course.class.php b/include/moodle24_course.class.php
index 8f43c5413..888d84eb7 100644
--- a/include/moodle24_course.class.php
+++ b/include/moodle24_course.class.php
@@ -98,8 +98,16 @@ class moodle24_course extends basis_db
return false;
}
- $client = new SoapClient($this->serverurl);
- $response = $client->core_course_get_courses(array('ids'=>array($this->mdl_course_id)));
+ try
+ {
+ $client = new SoapClient($this->serverurl);
+ $response = $client->core_course_get_courses(array('ids'=>array($this->mdl_course_id)));
+ }
+ catch (SoapFault $E)
+ {
+ $this->errormsg.="SOAP Fehler beim Anlegen des Kurses: ".$E->faultstring;
+ return false;
+ }
if($response)
{
@@ -186,7 +194,7 @@ class moodle24_course extends basis_db
{
//CourseCategorie ermitteln
- //lehrveranstalung ID holen falls die nur die lehreinheit_id angegeben wurde
+ //lehrveranstalung ID holen falls nur die lehreinheit_id angegeben wurde
if($this->lehrveranstaltung_id=='')
{
$qry = "SELECT lehrveranstaltung_id FROM lehre.tbl_lehreinheit
@@ -239,11 +247,12 @@ class moodle24_course extends basis_db
return false;
}
- // Kategoriebau Aufbauen
+ // Kategoriebaum 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)
+ // Struktur: Department -> STG -> Jahrgang -> StSem
+ // (Informationstechnologie und Informationsmanagement -> BIMK -> Jahrgang 2014 -> WS2014)
// Studiengang der Lehrveranstaltung holen
// Uebergeordnetes Department ermitteln
@@ -267,17 +276,29 @@ class moodle24_course extends basis_db
}
}
// Department
- if(!$id_department = $this->getCategorie($department, '0'))
+ $id_department = $this->getCategorie($department, '0');
+ if ($id_department === false)
+ return false;
+ if ($id_department === -1)
{
if(!$id_department = $this->createCategorie($department, '0'))
+ {
echo "
$this->errormsg";
+ return false;
+ }
}
// Studiengang
- if(!$id_stg = $this->getCategorie($stg, $id_department))
+ $id_stg = $this->getCategorie($stg, $id_department);
+ if ($id_stg === false)
+ return false;
+ if ($id_stg === -1)
{
if(!$id_stg = $this->createCategorie($stg, $id_department))
+ {
echo "
$this->errormsg";
+ return false;
+ }
}
// Jahrgang - 1. Studiensemester ermitteln (Stsem um Ausbsem -1 zurückspringen) und das Jahr ermitteln
@@ -296,17 +317,29 @@ class moodle24_course extends basis_db
$datum = new Datum();
$jahr = $datum->formatDatum($studiensemester->start, 'Y');
- if(!$id_jahrgang = $this->getCategorie('Jahrgang '.$jahr, $id_stg))
+ $id_jahrgang = $this->getCategorie('Jahrgang '.$jahr, $id_stg);
+ if ($id_jahrgang === false)
+ return false;
+ if ($id_jahrgang === -1)
{
if(!$id_jahrgang = $this->createCategorie('Jahrgang '.$jahr, $id_stg))
+ {
echo "
$this->errormsg";
+ return false;
+ }
}
// Studiensemester
- if(!$id_stsem = $this->getCategorie($this->studiensemester_kurzbz, $id_jahrgang))
+ $id_stsem = $this->getCategorie($this->studiensemester_kurzbz, $id_jahrgang);
+ if ($id_stsem === false)
+ return false;
+ if ($id_stsem === -1)
{
if(!$id_stsem = $this->createCategorie($this->studiensemester_kurzbz, $id_jahrgang))
+ {
echo "
Fehler beim Anlegen des Studiensemesters";
+ return false;
+ }
}
$categoryid=$id_stsem;
@@ -316,22 +349,40 @@ class moodle24_course extends basis_db
// Struktur: STSEM -> STG -> Ausbsemester (WS2014 -> BEL -> 1)
//Studiensemester Categorie holen
- if(!$id_stsem = $this->getCategorie($this->studiensemester_kurzbz, '0'))
+ $id_stsem = $this->getCategorie($this->studiensemester_kurzbz, '0');
+ if ($id_stsem === false)
+ return false;
+ if ($id_stsem === -1)
{
if(!$id_stsem = $this->createCategorie($this->studiensemester_kurzbz, '0'))
+ {
echo "
Fehler beim Anlegen des Studiensemesters";
+ return false;
+ }
}
//Studiengang Categorie holen
- if(!$id_stg = $this->getCategorie($stg, $id_stsem))
+ $id_stg = $this->getCategorie($stg, $id_stsem);
+ if ($id_stg === false)
+ return false;
+ if ($id_stg === -1)
{
if(!$id_stg = $this->createCategorie($stg, $id_stsem))
+ {
echo "
$this->errormsg";
+ return false;
+ }
}
//Semester Categorie holen
- if(!$id_sem = $this->getCategorie($semester, $id_stg))
+ $id_sem = $this->getCategorie($semester, $id_stg);
+ if ($id_sem === false)
+ return false;
+ if ($id_sem === -1)
{
- if(!$id_sem = $this->createCategorie($semester, $id_stg))
+ if (!$id_sem = $this->createCategorie($semester, $id_stg))
+ {
echo "
$this->errormsg";
+ return false;
+ }
}
$categoryid=$id_sem;
}
@@ -377,7 +428,7 @@ class moodle24_course extends basis_db
* @param bezeichnung Bezeichnung der Kategorie
* @param parent ID der uebergeordneten Kurskategorie
*
- * @return id der Kategorie oder false im Fehlerfall
+ * @return id der Kategorie, -1 wenn Kategorie nicht existiert, false im Fehlerfall
*/
public function getCategorie($bezeichnung, $parent)
{
@@ -404,7 +455,7 @@ class moodle24_course extends basis_db
else
{
$this->errormsg = 'Fehler beim Laden der Kurskategorie';
- return false;
+ return -1;
}
}
catch (SoapFault $E)
@@ -412,13 +463,12 @@ class moodle24_course extends basis_db
$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
- * @param parent ID der uebergeordneten Kategorie
+ * @param parent ID der uebergeordneten Kategorie, false im Fehlerfall
*/
public function createCategorie($bezeichnung, $parent)
{
@@ -451,6 +501,7 @@ class moodle24_course extends basis_db
catch (SoapFault $E)
{
$this->errormsg.="SOAP Fehler beim Anlegen der Kategorie: ".$E->faultstring;
+ return false;
}
}
@@ -524,7 +575,10 @@ class moodle24_course extends basis_db
}
//Testkurs Categorie holen
- if(!$id_testkurs = $this->getCategorie('Testkurse', '0'))
+ $id_testkurs = $this->getCategorie('Testkurse', '0');
+ if ($id_testkurs === false)
+ return false;
+ if ($id_testkurs === -1)
{
if(!$id_testkurs = $this->createCategorie('Testkurse', '0'))
{
@@ -533,7 +587,10 @@ class moodle24_course extends basis_db
}
}
//StSem Categorie holen
- if(!$id_stsem = $this->getCategorie($studiensemester_kurzbz, $id_testkurs))
+ $id_stsem = $this->getCategorie($studiensemester_kurzbz, $id_testkurs);
+ if ($id_stsem === false)
+ return false;
+ if ($id_stsem === -1)
{
if(!$id_stsem = $this->createCategorie($studiensemester_kurzbz, $id_testkurs))
{
@@ -598,14 +655,20 @@ class moodle24_course extends basis_db
}
//Testkurs Categorie holen
- if(!$id_testkurs = $this->getCategorie('Testkurse', '0'))
+ $id_testkurs = $this->getCategorie('Testkurse', '0');
+ if ($id_testkurs === false)
+ return false;
+ if ($id_testkurs === -1)
{
$this->errormsg = 'Categorie nicht gefunden';
return false;
}
//StSem Categorie holen
- if(!$id_stsem = $this->getCategorie($studiensemester_kurzbz, $id_testkurs))
+ $id_stsem = $this->getCategorie($studiensemester_kurzbz, $id_testkurs);
+ if($id_stsem === false)
+ return false;
+ if ($id_stsem === -1)
{
$this->errormsg = 'Categorie nicht gefunden';
return false;
@@ -758,7 +821,7 @@ class moodle24_course extends basis_db
*/
public function getLeFromCourse($moodle_course_id)
{
- $qry = "SELECT lehreinheit_id FROM lehre.tbl_moodle WHERE moodle_version='2.4' AND mdl_course_id =".$this->db_add_param($moodle_course_id, FHC_INTEGER).';';
+ $qry = "SELECT lehreinheit_id FROM lehre.tbl_moodle WHERE moodle_version='2.4' AND mdl_course_id =".$this->db_add_param($moodle_course_id, FHC_INTEGER).';';
$le = array();
if($result = $this->db_query($qry))
{
diff --git a/include/moodle24_user.class.php b/include/moodle24_user.class.php
index a94278fcd..ab23873e7 100644
--- a/include/moodle24_user.class.php
+++ b/include/moodle24_user.class.php
@@ -195,7 +195,6 @@ class moodle24_user extends basis_db
{
while($row_ma = $this->db_fetch_object($result_ma))
{
-
$user_zugeteilt=false;
foreach($enrolled_users as $user)
{
@@ -208,7 +207,6 @@ class moodle24_user extends basis_db
if(!$user_zugeteilt)
{
-
$retval = $this->loaduser($row_ma->mitarbeiter_uid);
//MoodleID des Users holen bzw ggf neu anlegen
if($retval===false)
@@ -316,14 +314,16 @@ class moodle24_user extends basis_db
$gruppensync = $this->db_parse_bool($row_std->gruppen);
//Studenten dieser Gruppe holen
-
if($row_std->gruppe_kurzbz=='') //LVB Gruppe
{
$qry = "SELECT
- distinct student_uid
+ distinct student_uid, tbl_person.vorname, tbl_person.nachname
FROM
public.tbl_studentlehrverband
+ JOIN public.tbl_benutzer ON(student_uid=uid)
+ JOIN public.tbl_person USING(person_id)
WHERE
+ tbl_benutzer.aktiv AND
studiensemester_kurzbz=".$this->db_add_param($row_std->studiensemester_kurzbz)." AND
studiengang_kz = ".$this->db_add_param($row_std->studiengang_kz)." AND
semester = ".$this->db_add_param($row_std->semester);
@@ -343,10 +343,13 @@ class moodle24_user extends basis_db
else //Spezialgruppe
{
$qry = "SELECT
- distinct uid as student_uid
+ distinct uid as student_uid, tbl_person.vorname, tbl_person.nachname
FROM
public.tbl_benutzergruppe
+ JOIN public.tbl_benutzer USING(uid)
+ JOIN public.tbl_person USING(person_id)
WHERE
+ tbl_benutzer.aktiv AND
gruppe_kurzbz=".$this->db_add_param($row_std->gruppe_kurzbz)." AND
studiensemester_kurzbz=".$this->db_add_param($row_std->studiensemester_kurzbz);
$gruppenbezeichnung = $row_std->gruppe_kurzbz;
@@ -356,9 +359,7 @@ class moodle24_user extends basis_db
{
while($row_user = $this->db_fetch_object($result_user))
{
-
//Nachschauen ob dieser Student bereits zugeteilt ist
-
$user_zugeteilt=false;
foreach($enrolled_users as $user)
{
@@ -372,7 +373,6 @@ class moodle24_user extends basis_db
if(!$user_zugeteilt)
{
-
$retval = $this->loaduser($row_user->student_uid);
//MoodleID des Users holen bzw ggf neu anlegen
if($retval===false)
@@ -393,7 +393,6 @@ class moodle24_user extends basis_db
$studenten.=',';
$studenten.=$this->mdl_user_id;
-
//Student ist noch nicht zugeteilt.
$data = new stdClass();
@@ -403,8 +402,8 @@ class moodle24_user extends basis_db
$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->log.="\nStudentIn ".$this->mdl_user_firstname." ".$this->mdl_user_lastname." ($row_user->student_uid) wurde zum Kurs hinzugefügt";
+ $this->log_public.="\nStudentIn ".$this->mdl_user_firstname." ".$this->mdl_user_lastname." ($row_user->student_uid) wurde zum Kurs hinzugefügt";
$this->sync_create++;
}
}
@@ -415,7 +414,11 @@ class moodle24_user extends basis_db
if(!isset($vorhandenegruppen[$gruppenbezeichnung]))
{
//Schauen ob die Gruppe vorhanden ist
- if(!$groupid = $this->getGroup($mdl_course_id, $gruppenbezeichnung))
+ $groupid = $this->getGroup($mdl_course_id, $gruppenbezeichnung);
+ if ($groupid === false)
+ return false;
+
+ if($groupid === -1)
{
//wenn nicht dann anlegen
if(!$groupid = $this->createGroup($mdl_course_id, $gruppenbezeichnung))
@@ -435,14 +438,18 @@ class moodle24_user extends basis_db
//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))
+ $groupmember = $this->getGroupMember($groupid, $this->mdl_user_id);
+ if($groupmember === false)
+ continue;
+
+ if($groupmember === -1)
{
//wenn nicht dann zuteilen
$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 ($groupid) zugeordnet";
- $this->log_public.="\nStudentIn $row_user->student_uid wurde der Gruppe $gruppenbezeichnung zugeordnet";
+ $this->log.="\nStudentIn $row_user->vorname $row_user->nachname ($row_user->student_uid) wurde der Gruppe $gruppenbezeichnung ($groupid) zugeordnet";
+ $this->log_public.="\nStudentIn $row_user->vorname $row_user->nachname ($row_user->student_uid) wurde der Gruppe $gruppenbezeichnung zugeordnet";
}
}
}
@@ -456,9 +463,11 @@ class moodle24_user extends basis_db
$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);
+ // Die User werden nicht gleich zugeordnet, diese werden nach
+ // abschluss des SOAP Requests von Moodle noch weiterverarbeitet und
+ // erst zeitversetzt zugeordnet.
+ // Die Pause ist abgaengig von der Anzahl der User die hinzugefuegt werden
+ usleep(count($userstoenroll)*150000);
}
catch (SoapFault $E)
{
@@ -469,11 +478,17 @@ class moodle24_user extends basis_db
if(count($groupmembertoadd)>0)
{
- $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);
+ try
+ {
+ $client = new SoapClient($this->serverurl);
+ $groupresult = $client->core_group_add_group_members($groupmembertoadd);
+ }
+ catch (SoapFault $E)
+ {
+ $this->errormsg.="SOAP Fehler beim Zuteilen der Teilnehmer zu Gruppen";
+ return false;
+ }
}
-
return true;
}
else
@@ -488,7 +503,7 @@ class moodle24_user extends basis_db
* existiert
* @param grouid ID der Gruppe
* userid MoodleID des Users
- * @return true wenn zugeteilt sonst false
+ * @return true wenn zugeteilt, -1 wenn nicht, false im Fehlerfall
*/
public function getGroupMember($groupid, $userid)
{
@@ -514,11 +529,13 @@ class moodle24_user extends basis_db
foreach($this->gruppenzuordnungen[$groupid] as $id)
{
- if($id==$userid)
+ if ($id == $userid)
+ {
return true;
+ }
}
- return false;
+ return -1;
}
/**
@@ -550,7 +567,7 @@ class moodle24_user extends basis_db
* Holt die ID einer MoodleGruppe
* @param $mdl_course_id ID des Kurses
* $gruppenbezeichnung Name der Gruppe
- * @return GruppenID wenn ok, false im Fehlerfall
+ * @return GruppenID wenn ok, -1 wenn nicht gefunden, false im Fehlerfall
*/
public function getGroup($mdl_course_id, $gruppenbezeichnung)
{
@@ -563,15 +580,15 @@ class moodle24_user extends basis_db
if($row['name']==$gruppenbezeichnung)
return $row['id'];
}
+
+ $this->errormsg = "Gruppe wurde nicht gefunden $gruppenbezeichnung";
+ return -1;
}
catch (SoapFault $E)
{
- $this->log.="Fehler beim Laden der Gruppe $mdl_course_id, $gruppenbezeichnung: ".$E->faultstring;
- return false;
+ $this->log.="Fehler beim Laden der Gruppe $mdl_course_id, $gruppenbezeichnung: ".$E->faultstring;
+ return false;
}
-
- $this->errormsg = "Gruppe wurde nicht gefunden $gruppenbezeichnung";
- return false;
}
/**
@@ -636,12 +653,19 @@ class moodle24_user extends basis_db
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
+
+ Wenn das Passwort uebergeben wird, dann versucht Moodle das auch
+ im LDAP zu setzen. Das fuehrt dazu dass der Account nicht mehr funktioniert.
+ Anlegen eines Users ohne Passwortuebergabe ist jedoch nicht moeglich-
+ Deshalb wird die Authentifizierungsmethode beim Anlegen auf manual
+ gesetzt und nach dem anlegen auf ldap geändert
*/
$user->password = "FHCv!A2".hash('sha512', rand());
$user->firstname = $vorname;
$user->lastname = $nachname;
$user->email = $username.'@'.DOMAIN;
- $user->auth = 'ldap';
+ //$user->auth = 'ldap';
+ $user->auth = 'manual';
$user->idnumber = $username;
$user->lang = 'en';
@@ -654,6 +678,14 @@ class moodle24_user extends basis_db
if(isset($response[0]))
{
$this->mdl_user_id = $response[0]['id'];
+
+ // User nach dem anlegen auf LDAP Auth umstellen
+ $user = new stdClass();
+ $user->id = $this->mdl_user_id;
+ $user->auth = 'ldap';
+ $client = new SoapClient($this->serverurl);
+ $response = $client->core_user_update_users(array($user));
+
return true;
}
else
@@ -774,14 +806,16 @@ class moodle24_user extends basis_db
{
//Leitung laden die zu diesem Kurs zugeteilt sind
$qry = "SELECT
- distinct uid as mitarbeiter_uid
+ distinct tbl_benutzer.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)
+ JOIN public.tbl_benutzer ON(tbl_benutzerfunktion.uid=tbl_benutzer.uid)
WHERE
- organisationseinheittyp_kurzbz in('Institut','Fachbereich')
+ tbl_benutzer.aktiv
+ AND 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)
@@ -821,7 +855,6 @@ class moodle24_user extends basis_db
{
while($row_ma = $this->db_fetch_object($result_ma))
{
-
$user_zugeteilt=false;
foreach($enrolled_users as $user)
{
diff --git a/system/sync/sync_moodle24_user.php b/system/sync/sync_moodle24_user.php
index 90748ab25..9478bcd08 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);
-
+set_time_limit(1000);
echo "-- Start ".date('Y-m-d H:i:s')."--";
//nur Synchronisieren wenn ein aktuelles Studiensemester existiert damit keine
@@ -152,7 +152,7 @@ if($stsem_kurzbz=$stsem->getakt())
//Mail an die Lektoren
foreach ($lektoren as $uid=>$message_lkt)
{
- if($message_lkt!='')
+ if($message_lkt!='' && $uid!='_DummyLektor')
{
$header = "Dies ist eine automatische Mail!\n";
$header.= "Es wurden folgende Aktualisierungen an Ihren Moodle-Kursen durchgeführt:\n\n";
diff --git a/system/sync/sync_moodle_kurse.php b/system/sync/sync_moodle_kurse.php
index a989b1981..51d4c9d2e 100644
--- a/system/sync/sync_moodle_kurse.php
+++ b/system/sync/sync_moodle_kurse.php
@@ -24,6 +24,7 @@
* Aber nur wenn die Lehrform der Lehreinheit=Lehrform der LV
*/
require_once(dirname(__FILE__).'/../../config/cis.config.inc.php');
+require_once(dirname(__FILE__).'/../../config/global.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');
@@ -43,31 +44,37 @@ if(php_sapi_name() != 'cli')
die('Sie haben keine Berechtigung fuer diese Seite');
}
+set_time_limit(10000);
+
$db = new basis_db();
$stsem_obj = new studiensemester();
$stsem = $stsem_obj->getAktOrNext();
+$neue_kurse = 0;
+$vorhandene_kurse = 0;
+$anzahl_fehler = 0;
$qry = "SELECT
- distinct lehrveranstaltung_id, tbl_lehrveranstaltung.bezeichnung, tbl_lehrveranstaltung.kurzbz,
- tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.orgform_kurzbz, tbl_lehrveranstaltung.semester,
- tbl_lehreinheit.lehreinheit_id, trim(string_agg(vorname||nachname,'_')) AS lektoren
- FROM
- lehre.tbl_lehreinheit
- JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
-JOIN lehre.tbl_lehreinheitmitarbeiter USING (lehreinheit_id)
-JOIN public.tbl_mitarbeiter USING (mitarbeiter_uid)
-JOIN public.tbl_benutzer ON (uid=mitarbeiter_uid)
-JOIN public.tbl_person USING (person_id)
- WHERE
- studiensemester_kurzbz=".$db->db_add_param($stsem)."
- 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;";
+ distinct lehrveranstaltung_id, tbl_lehrveranstaltung.bezeichnung, tbl_lehrveranstaltung.kurzbz,
+ tbl_lehrveranstaltung.studiengang_kz, tbl_lehrveranstaltung.orgform_kurzbz, tbl_lehrveranstaltung.semester,
+ tbl_lehreinheit.lehreinheit_id, trim(string_agg(vorname||nachname,'_')) AS lektoren
+ FROM
+ lehre.tbl_lehreinheit
+ JOIN lehre.tbl_lehrveranstaltung USING(lehrveranstaltung_id)
+ JOIN lehre.tbl_lehreinheitmitarbeiter USING (lehreinheit_id)
+ JOIN public.tbl_mitarbeiter USING (mitarbeiter_uid)
+ JOIN public.tbl_benutzer ON (uid=mitarbeiter_uid)
+ JOIN public.tbl_person USING (person_id)
+ WHERE
+ studiensemester_kurzbz=".$db->db_add_param($stsem)."
+ 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
+ ";
if($result = $db->db_query($qry))
{
@@ -84,6 +91,10 @@ if($result = $db->db_query($qry))
$shortname = $studiengang->kuerzel.($row->orgform_kurzbz!=''?'-'.$row->orgform_kurzbz:'').($row->semester!=''?'-'.$row->semester:'').'-'.$stsem.'-'.$row->kurzbz.'-'.$row->lehreinheit_id.'-'.$row->lektoren;
$bezeichnung = $studiengang->kuerzel.($row->orgform_kurzbz!=''?'-'.$row->orgform_kurzbz:'').($row->semester!=''?'-'.$row->semester:'').'-'.$stsem.'-'.$row->bezeichnung.'-'.$row->lehreinheit_id.'-'.$row->lektoren;
+ // Bezeichnung kuerzen wenn zu lange
+ $shortname = mb_substr($shortname,0,254);
+ $bezeichnung = mb_substr($bezeichnung,0,254);
+
//$mdl_course->lehrveranstaltung_id = $row->lehrveranstaltung_id;
$mdl_course->studiensemester_kurzbz = $stsem;
$mdl_course->lehreinheit_id = $row->lehreinheit_id;
@@ -93,33 +104,55 @@ if($result = $db->db_query($qry))
$mdl_course->insertvon = 'auto';
$mdl_course->gruppen = true;
- echo "\nCreate Course: $bezeichnung";
+ echo "\n
Create Course: $bezeichnung";
//Moodlekurs anlegen
if($mdl_course->create_moodle())
{
+ $neue_kurse++;
//Eintrag in der Vilesci DB
$mdl_course->create_vilesci();
$mdl_user = new moodle24_user();
//Lektoren Synchronisieren
if(!$mdl_user->sync_lektoren($mdl_course->mdl_course_id))
- echo $mdl_user->errormsg;
+ {
+ $anzahl_fehler++;
+ echo "\n
Lektor Sync Failed:".$mdl_user->errormsg;
+ }
- $mdl_user = new moodle24_user();
- //Fachbereichsleitung Synchronisieren
- if(!$mdl_user->sync_fachbereichsleitung($mdl_course->mdl_course_id))
- echo $mdl_user->errormsg;
+ if(MOODLE_SYNC_FACHBEREICHSLEITUNG)
+ {
+ $mdl_user = new moodle24_user();
+ //Fachbereichsleitung Synchronisieren
+ if(!$mdl_user->sync_fachbereichsleitung($mdl_course->mdl_course_id))
+ {
+ $anzahl_fehler++;
+ echo "\n
FBL Sync Failed:".$mdl_user->errormsg;
+ }
+ }
$mdl_user = new moodle24_user();
//Studenten Synchronisieren
if(!$mdl_user->sync_studenten($mdl_course->mdl_course_id))
- echo $mdl_user->errormsg;
+ {
+ $anzahl_fehler++;
+ echo "\n
Student Sync Failed:".$mdl_user->errormsg;
+ }
}
else
{
- echo $mdl_course->errormsg;
+ $anzahl_fehler++;
+ echo "\nFailed:".$mdl_course->errormsg;
}
}
+ else
+ {
+ $vorhandene_kurse++;
+ }
}
}
+echo "\n