Merge branch 'master' into udf

This commit is contained in:
Paolo
2017-08-03 15:37:37 +02:00
73 changed files with 1094 additions and 12777 deletions
-36
View File
@@ -1056,42 +1056,6 @@ class lehrveranstaltung extends basis_db
return true;
}
/**
* Liefert alle Moodlekurs Ids
* @param $lehrveranstaltung_id Id der Lehrveranstaltung
* @param $semester Semester
* @return array mit Moodlekurs Ids oder false=fehler
*/
public function getMoodleKurse($lehrveranstaltung_id, $semester)
{
if ($lehrveranstaltung_id == '' || $semester == '')
{
$this->errormsg = 'Id und Semester muss übergeben werden.';
return false;
}
$qry = "SELECT mdl_course_id FROM lehre.tbl_moodle
WHERE studiensemester_kurzbz = " . $this->db_add_param($semester) . "
AND (lehrveranstaltung_id = " . $this->db_add_param($lehrveranstaltung_id) . "
OR lehreinheit_id IN(SELECT lehreinheit_id FROM lehre.tbl_lehreinheit WHERE lehrveranstaltung_id = " . $this->db_add_param($lehrveranstaltung_id) . "));";
$moodleArray = array();
if ($result = $this->db_query($qry))
{
while ($row = $this->db_fetch_object($result))
{
$moodleArray[] = $row->mdl_course_id;
}
return $moodleArray;
}
else
{
$this->errormsg = 'Moodlekurs konnte nicht geladen werden';
return false;
}
}
/**
* Laedt die LVs die als Array uebergeben werden
* @param $ids Array mit den LV ids
-402
View File
@@ -1,402 +0,0 @@
<?php
/* Copyright (C) 2013 FH Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at>
* Karl Burkhart <burkhart@technikum-wien.at>
*/
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;
public $lehrveranstaltung_id;
public $studiensemester_kurzbz;
public $insertamum;
public $insertvon;
public $gruppen;
public $moodle_version;
public $version;
/**
* Konstruktor
*
*/
public function __construct()
{
parent::__construct();
$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).';';
if($result=$this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$this->moodle_id = $row->moodle_id;
$this->mdl_course_id = $row->mdl_course_id;
$this->lehreinheit_id = $row->lehreinheit_id;
$this->lehrveranstaltung_id = $row->lehrveranstaltung_id;
$this->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$this->insertamum = $row->insertamum;
$this->insertvon = $row->insertvon;
$this->gruppen = $this->db_parse_bool($row->gruppen);
$this->moodle_version = $row->moodle_version;
return true;
}
else
{
$this->errormsg = "Kein Moodleeintrag gefunden";
return false;
}
}
else
{
$this->errormsg="Fehler bei der Abfrage aufgetreten";
return false;
}
}
/**
* Laedt alle Moodlekurse zu einer LV/Stsem
* plus die Moodlekurse die auf dessen LE haengen
*
* @param lehrveranstaltung_id
* @param studiensemester_kurzbz
*
* @return true wenn ok, false im Fehlerfall
*/
public function getAll($lehrveranstaltung_id, $studiensemester_kurzbz)
{
$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
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;
$obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
$obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->gruppen = $this->db_parse_bool($row->gruppen);
$obj->moodle_version = $row->moodle_version;
$this->result[] = $obj;
}
return true;
}
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
*/
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 moodle.lehreinheit_id is null
UNION
SELECT distinct on(mdl_course_id) 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_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 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;
$obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
$obj->studiensemester_kurzbz = $row->studiensemester_kurzbz;
$obj->insertamum = $row->insertamum;
$obj->insertvon = $row->insertvon;
$obj->gruppen = $this->db_parse_bool($row->gruppen);
$obj->moodle_version = $row->moodle_version;
$this->result[] = $obj;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
/**
* Löscht den Zuordnungseintrag in der Moodletablle
* @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).';';
if($result=$this->db_query($qry))
return true;
else
{
$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();
if($result = $this->db_query($qry))
{
while($row = $this->db_fetch_object())
{
$le[] = $row->lehreinheit_id;
}
}
return $le;
}
/**
* Schaut ob fuer diese LV/StSem schon ein
* Moodle Kurs existiert
*
* @param lehrveranstaltung_id
* @param studiensemester_kurzbz
* @return true wenn vorhanden, false wenn nicht
*/
public function course_exists_for_lv($lehrveranstaltung_id, $studiensemester_kurzbz)
{
$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 false;
}
else
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
return false;
}
}
/**
* Schaut ob fuer diese LE schon ein Moodle
* Kurs existiert
* @param lehreinheit_id
* @return true wenn vorhanden, false wenn nicht
*/
public function course_exists_for_le($lehreinheit_id)
{
$qry = "SELECT 1 FROM lehre.tbl_moodle WHERE lehreinheit_id=".$this->db_add_param($lehreinheit_id, FHC_INTEGER);
if($this->db_query($qry))
{
if($this->db_num_rows()>0)
return true;
else
return false;
}
else
{
$this->errormsg = 'Fehler bei Datenbankabfrage';
return false;
}
}
/**
* Prueft ob fuer alle Lehreinheiten dieser LV bereits ein Moodlekurs existiert
*
* @param lehrveranstaltung_id
* @param studiensemester_kurzbz
* @return true wenn vorhanden, false wenn nicht
*/
public function course_exists_for_allLE($lehrveranstaltung_id, $studiensemester_kurzbz)
{
$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
WHERE lehreinheit_id=tbl_lehreinheit.lehreinheit_id)";
if($this->db_query($qry))
{
if($this->db_num_rows()>0)
return false;
else
return true;
}
else
{
$this->errormsg = 'Fehler bei einer Datenbankabfrage';
return false;
}
}
/**
* 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))
{
$this->version[$row->moodle_version]['bezeichnung']=$row->bezeichnung;
$this->version[$row->moodle_version]['pfad']=$row->pfad;
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Laden der Versionsdaten';
return false;
}
}
/**
* Liefert den Pfad zur Moodle Installation
* @param version Versionsnummer
* @return pfad (URL) zur Moodle Installation
*/
public function getPfad($version)
{
if(isset($this->version[$version]['pfad']))
return $this->version[$version]['pfad'];
}
/**
* Liefert alle Kurse dieser LV zu denen der Student
* zugeteilt ist
*
* @param lehrveranstaltung_id
* @param studiensemester_kurzbz
* @param student_uid
* @return array mit Moodle Kurs IDs
*/
public function getCourse($lehrveranstaltung_id, $studiensemester_kurzbz, $student_uid)
{
//alle betreffenden Kurse holen
$qry = "SELECT
tbl_lehreinheit.lehreinheit_id, mdl_course_id, tbl_moodle.moodle_version
FROM
lehre.tbl_moodle
JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id, studiensemester_kurzbz)
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
tbl_lehreinheit.lehreinheit_id, mdl_course_id, tbl_moodle.moodle_version
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)."
AND lehreinheit_id=".$this->db_add_param($row->lehreinheit_id, FHC_INTEGER);
if($result_vw = $this->db_query($qry))
{
if($this->db_num_rows($result_vw)>0)
{
if(!array_key_exists($row->mdl_course_id, $courses))
{
$obj = new stdClass();
$obj->mdl_course_id = $row->mdl_course_id;
$obj->moodle_version = $row->moodle_version;
$this->result[] = $obj;
}
}
}
}
}
return true;
}
}
File diff suppressed because it is too large Load Diff
-788
View File
@@ -1,788 +0,0 @@
<?php
/* Copyright (C) 2006 Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Christian Paminger <christian.paminger@technikum-wien.at>,
* Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
* Rudolf Hangl <rudolf.hangl@technikum-wien.at>.
*/
/*
* requires moodle_course.class.php
* studiengang.class.php
*
* Klasse zur Kommunikation mit Moodle 1.9
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
class moodle19_user extends basis_db
{
private $conn_moodle;
public $log=''; //log message fuer Syncro
public $log_public=''; //log message fuer Syncro
public $sync_create=0; //anzahl der durchgefuehrten zuteilungen beim syncro
public $group_update=0; //anzahl der updates an gruppen
public $mdl_user_id;
public $mdl_user_username;
public $mdl_user_firstname;
public $mdl_user_lastname;
/**
* Konstruktor
*/
public function __construct()
{
if(!$this->conn_moodle=pg_pconnect(CONN_STRING_MOODLE))
{
$this->errormsg = 'Fehler beim Herstellen der Moodle Verbindung';
return false;
}
else
return true;
}
/**
* Laedt einen Moodle User
*
* @param $uid
* @return boolean
*/
public function loaduser($uid)
{
$qry = "SELECT * FROM public.mdl_user WHERE username='".addslashes($uid)."'";
if($result = pg_query($this->conn_moodle, $qry))
{
if($row = pg_fetch_object($result))
{
$this->mdl_user_id = $row->id;
$this->mdl_user_username = $row->username;
$this->mdl_user_firstname = $row->firstname;
$this->mdl_user_lastname = $row->lastname;
return true;
}
else
{
$this->errormsg = 'User wurde nicht gefunden: '.$uid;
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden des Users';
return false;
}
}
/**
* Liefert ein Array mit allen Lektoren die
* zu dem Moodle Kurs zugeteilt sind
*/
public function getMitarbeiter($mdl_course_id)
{
//Mitarbeiter laden die zu diesem Kurs zugeteilt sind
$qry = "SELECT
mitarbeiter_uid
FROM
lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_moodle USING(lehreinheit_id)
WHERE
moodle_version='1.9'
AND mdl_course_id='".addslashes($mdl_course_id)."'
UNION
SELECT
mitarbeiter_uid
FROM
lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN lehre.tbl_moodle USING(lehrveranstaltung_id)
WHERE
moodle_version='1.9'
AND tbl_lehreinheit.studiensemester_kurzbz=tbl_moodle.studiensemester_kurzbz
AND mdl_course_id='".addslashes($mdl_course_id)."'";
$mitarbeiter=array();
if($this->db_query($qry))
{
while($row_ma = $this->db_fetch_object())
{
$mitarbeiter[] = $row_ma->mitarbeiter_uid;
}
return $mitarbeiter;
}
else
{
$this->errormsg='Fehler beim Laden der Mitarbeiter';
return false;
}
}
/**
* Synchronisiert die Lektoren der Lehreinheiten
* mit denen des Moodle Kurses
* @param $mdl_course_id ID des MoodleKurses
* lehrveranstaltung_id wird nur angegeben beim Syncro von Testkursen
* studiensemester_kurzbz wird nur angegeben beim Syncro von Testkursen
* @return true wenn ok, false wenn Fehler
*/
public function sync_lektoren($mdl_course_id, $lehrveranstaltung_id=null, $studiensemester_kurzbz=null)
{
//Mitarbeiter laden die zu diesem Kurs zugeteilt sind
if(!is_null($lehrveranstaltung_id) && !is_null($studiensemester_kurzbz))
{
//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='".addslashes($lehrveranstaltung_id)."'
AND studiensemester_kurzbz='".addslashes($studiensemester_kurzbz)."'";
}
else
{
$qry = "SELECT
mitarbeiter_uid
FROM
lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_moodle USING(lehreinheit_id)
WHERE
moodle_version='1.9'
AND mdl_course_id='".addslashes($mdl_course_id)."'
UNION
SELECT
mitarbeiter_uid
FROM
lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN lehre.tbl_moodle USING(lehrveranstaltung_id)
WHERE
moodle_version='1.9'
AND tbl_lehreinheit.studiensemester_kurzbz=tbl_moodle.studiensemester_kurzbz
AND mdl_course_id='".addslashes($mdl_course_id)."'";
}
$mitarbeiter='';
if($result_ma = $this->db_query($qry))
{
//Context des Kurses holen
$mdlcourse = new moodle19_course();
if(!$mdlcourse->getContext(50, $mdl_course_id))
{
$this->errormsg = 'Fehler beim Laden des Contexts';
return false;
}
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;
//Nachschauen ob dieser Lektor bereits zugeteilt ist
$qry = "SELECT 1 FROM public.mdl_role_assignments
WHERE
userid='".addslashes($this->mdl_user_id)."' AND
contextid='".addslashes($mdlcourse->mdl_context_id)."'";
if($result = pg_query($this->conn_moodle, $qry))
{
if(pg_num_rows($result)==0)
{
//Mitarbeiter ist noch nicht zugeteilt.
if($this->createZuteilung($this->mdl_user_id, $mdlcourse->mdl_context_id, 3))
{
$this->log.="\nder Lektor $this->mdl_user_firstname $this->mdl_user_lastname wurde zum Kurs hinzugefügt";
$this->log_public.="\nder Lektor $this->mdl_user_firstname $this->mdl_user_lastname wurde zum Kurs hinzugefügt";
$this->sync_create++;
}
else
$this->log.="\nFehler beim Anlegen der Lektoren-Zuteilung: $this->errormsg";
}
}
else
{
$this->errormsg = 'Fehler beim Auslesen der Rollen';
return false;
}
}
//Lektoren loeschen die nicht mehr zugeordnet sind
/* Derzeit werden zugeteilte Personen nicht geloescht
$qry = "SELECT * FROM mdl_role_assignments
WHERE
contextid='".addslashes($mdlcourse->mdl_context_id)."' AND
userid NOT in ($mitarbeiter)";
if($result = pg_query($this->conn_moodle, $qry))
{
while($row = pg_fetch_object($result))
{
$this->deleteZuteilung($row->userid, $mdlcourse->mdl_context_id);
}
}
else
{
$this->errormsg = 'Fehler beim Ermitteln der Lektoren die nicht mehr zugeteilt sind';
return false;
}
*/
return true;
}
else
{
$this->errormsg = 'Fehler beim Ermitteln der Zugeteilten Lektoren';
return false;
}
}
/**
* Synchronisiert die Studenten der Lehreinheiten
* mit denen des Moodle Kurses
* @param $mdl_course_id ID des MoodleKurses
* @return true wenn ok, false wenn Fehler
*/
public function sync_studenten($mdl_course_id)
{
//Studentengruppen laden die zu diesem Kurs zugeteilt sind
$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
moodle_version='1.9'
AND mdl_course_id='".addslashes($mdl_course_id)."'
UNION
SELECT
studiengang_kz, semester, verband, gruppe, gruppe_kurzbz, tbl_moodle.studiensemester_kurzbz, tbl_moodle.gruppen
FROM
lehre.tbl_lehreinheitgruppe JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
JOIN lehre.tbl_moodle USING(lehrveranstaltung_id)
WHERE
moodle_version='1.9'
AND tbl_lehreinheit.studiensemester_kurzbz=tbl_moodle.studiensemester_kurzbz
AND mdl_course_id='".addslashes($mdl_course_id)."'";
$studenten='';
if($result_std = $this->db_query($qry))
{
//Context des Kurses holen
$mdlcourse = new moodle19_course();
if(!$mdlcourse->getContext(50, $mdl_course_id))
{
$this->errormsg = 'Fehler beim Laden des Contexts';
return false;
}
while($row_std = $this->db_fetch_object($result_std))
{
//Schauen ob fuer diesen Kurs die Gruppen mitgesynct werden sollen
$gruppensync = $row_std->gruppen=='t'?true:false;
//Studenten dieser Gruppe holen
if($row_std->gruppe_kurzbz=='') //LVB Gruppe
{
$qry = "SELECT
distinct student_uid
FROM
public.tbl_studentlehrverband
WHERE
studiensemester_kurzbz='".addslashes($row_std->studiensemester_kurzbz)."' AND
studiengang_kz = '".addslashes($row_std->studiengang_kz)."' AND
semester = '".addslashes($row_std->semester)."'";
if(trim($row_std->verband)!='')
{
$qry.=" AND verband = '$row_std->verband'";
if(trim($row_std->gruppe)!='')
{
$qry.=" AND gruppe = '$row_std->gruppe'";
}
}
$studiengang_obj = new studiengang();
$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
{
$qry = "SELECT
distinct uid as student_uid
FROM
public.tbl_benutzergruppe
WHERE
gruppe_kurzbz='".addslashes($row_std->gruppe_kurzbz)."' AND
studiensemester_kurzbz='".addslashes($row_std->studiensemester_kurzbz)."'";
$gruppenbezeichnung = $row_std->gruppe_kurzbz;
}
if($result_user = $this->db_query($qry))
{
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
$qry = "SELECT 1 FROM public.mdl_role_assignments
WHERE
userid='".addslashes($this->mdl_user_id)."' AND
contextid='".addslashes($mdlcourse->mdl_context_id)."'";
if($result = pg_query($this->conn_moodle, $qry))
{
if(pg_num_rows($result)==0)
{
//Student ist noch nicht zugeteilt.
if($this->createZuteilung($this->mdl_user_id, $mdlcourse->mdl_context_id, 5))
{
$this->log.="\nder Student $this->mdl_user_firstname $this->mdl_user_lastname wurde zum Kurs hinzugefügt";
$this->log_public.="\nder Student $this->mdl_user_firstname $this->mdl_user_lastname wurde zum Kurs hinzugefügt";
$this->sync_create++;
}
else
$this->log.="\nFehler beim Anlegen der Studenten-Zuteilung: $this->errormsg";
}
}
else
{
$this->errormsg = 'Fehler beim Auslesen der Rollen';
return false;
}
//Gruppenzuteilung
if($gruppensync)
{
//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";
}
//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);
$this->group_update++;
$this->log.="\nder Student $this->mdl_user_firstname $this->mdl_user_lastname wurde der Gruppe $gruppenbezeichnung zugeordnet";
$this->log_public.="\nder Student $this->mdl_user_firstname $this->mdl_user_lastname wurde der Gruppe $gruppenbezeichnung zugeordnet";
}
}
}
}
}
//Studenten loeschen die nicht mehr zugeordnet sind
/* Derzeit werden zugeteilte Personen nicht geloescht
$qry = "SELECT * FROM mdl_role_assignments
WHERE
contextid='".addslashes($mdlcourse->mdl_context_id)."' AND
userid NOT in ($studenten)";
if($result = pg_query($this->conn_moodle, $qry))
{
while($row = pg_fetch_object($result))
{
$this->deleteZuteilung($row->userid, $mdlcourse->mdl_context_id);
}
}
else
{
$this->errormsg = 'Fehler beim Ermitteln der Studenten die nicht mehr zugeteilt sind';
return false;
}
*/
return true;
}
else
{
$this->errormsg = 'Fehler beim Ermitteln der Zugeteilten Studenten';
return false;
}
}
/**
* Schaut ob eine Zuteilung von Person zu Gruppe
* existiert
* @param grouid ID der Gruppe
* userid ID des Users
* @return ID der Zuteilung
*/
public 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
*/
public 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
*/
public 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 nicht 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
*/
public 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;
}
}
/**
* Legt einen User im Moodle an
* @param $uid UID der Person die angelegt werden soll
* @return true wenn ok, false wenn Fehler
*/
public function createUser($uid)
{
$qry = "SELECT uid, vorname, nachname FROM campus.vw_benutzer WHERE uid='".addslashes($uid)."'";
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$username = $row->uid;
$vorname = $row->vorname;
$nachname = $row->nachname;
$qry = "BEGIN; INSERT INTO public.mdl_user(auth, username, idnumber, firstname, lastname, email, mnethostid, confirmed, lang)
VALUES('ldap', ".
$this->addslashes($username).", ".
$this->addslashes($username).",".
$this->addslashes($vorname).",".
$this->addslashes($nachname).",".
$this->addslashes($username.'@'.DOMAIN).", 3, 1, 'de_utf8');";
if(pg_query($this->conn_moodle, $qry))
{
$qry ="SELECT currval('mdl_user_id_seq') as id;";
if($result = pg_query($this->conn_moodle, $qry))
{
if($row = pg_fetch_object($result))
{
pg_query($this->conn_moodle, 'COMMIT;');
$this->mdl_user_id = $row->id;
return true;
}
else
{
pg_query($this->conn_moodle,'ROLLBACK');
$this->errormsg = 'Fehler beim Lesen der Sequence';
return false;
}
}
else
{
pg_query($this->conn_moodle,'ROLLBACK');
$this->errormsg = 'Fehler beim Lesen der Sequence';
return false;
}
}
else
{
pg_query($this->conn_moodle,'ROLLBACK');
$this->errormsg = 'Fehler beim Anlegen des Users';
return false;
}
}
else
{
$this->errormsg = 'User wurde nicht gefunden: '.$uid;
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden des Users';
return false;
}
}
/**
* Teilt den User mit der ID $mdl_user_id zum
* Kurs mit der ContextID $mdl_context_id zu.
* @param $mdl_user_id Moodle ID des Users
* $mdl_context_id ContextID des Kurses
* $role Rolle der Zuteilung (1=Admin/3=Lektor/5=Student)
* @return true wenn ok, false wenn Fehler
*/
public function createZuteilung($mdl_user_id, $mdl_context_id, $role)
{
$qry = "INSERT INTO public.mdl_role_assignments(roleid, contextid, userid)
VALUES(".
$this->addslashes($role).",".
$this->addslashes($mdl_context_id).",".
$this->addslashes($mdl_user_id).");";
if(pg_query($this->conn_moodle, $qry))
{
return true;
}
else
{
$this->errormsg = 'Fehler beim Speichern der Zuteilung';
return false;
}
}
/**
* Fuegt dem User die globale Gastrolle hinzu
* @param $mdl_user_id Moodle ID des Users der
* die GastRolle bekommt
* @return true wenn ok, false wenn Fehler
*/
public function createGlobaleGastrolle($mdl_user_id)
{
//Nachschauen ob diese Person bereits eine globale Gastrolle hat
$qry = "SELECT 1 FROM public.mdl_role_assignments
WHERE
userid='".addslashes($mdl_user_id)."' AND
contextid='1' AND
roleid='6'";
if($result = pg_query($this->conn_moodle, $qry))
{
if(pg_num_rows($result)==0)
{
//noch nicht zugeteilt
if($this->createZuteilung($mdl_user_id, 1, 6))
{
$this->log.="\n$this->mdl_user_firstname $this->mdl_user_lastname wurde die globale Gastrolle zugeteilt";
$this->log_public.="\n$this->mdl_user_firstname $this->mdl_user_lastname wurde die globale Gastrolle zugeteilt";
}
else
$this->log.="\nFehler beim Anlegen der Gast-Zuteilung: $this->errormsg";
}
return true;
}
else
{
$this->errormsg = 'Fehler beim Auslesen der Rollen';
return false;
}
}
/**
* Loescht die Zuteilung eines Users zu einem Kurs
* @param $mdl_user_id MoodleID des Users
* $mdl_context_id ContextID des Users
* @return true wenn ok, false wenn Fehler
*/
public function deleteZuteilung($mdl_user_id, $mdl_context_id)
{
$qry = "DELETE FROM public.mdl_role_assignments
WHERE userid='".addslashes($mdl_user_id)."' AND contextid='".addslashes($mdl_context_id)."'";
if(pg_query($this->conn_moodle, $qry))
return true;
else
{
$this->errormsg = 'Fehler beim Loeschen der Zuteilung';
return false;
}
}
/**
* Teilt die TestStudenten zu einem Testkurs zu
* @param mdl_course_id ID des Moodle Kurses
*/
public function createTestStudentenZuordnung($mdl_course_id)
{
//Context des Kurses holen
$mdlcourse = new moodle19_course();
if(!$mdlcourse->getContext(50, $mdl_course_id))
{
$this->errormsg = 'Fehler beim Laden des Contexts';
return false;
}
$users = array('student1', 'student2', 'student3');
foreach ($users as $row_user)
{
//MoodleID des Users holen
if(!$this->loaduser($row_user))
{
$this->errormsg = "Fehler beim Laden des Users $row_user: $this->errormsg";
return false;
}
//Nachschauen ob dieser Student bereits zugeteilt ist
$qry = "SELECT 1 FROM public.mdl_role_assignments
WHERE
userid='".addslashes($this->mdl_user_id)."' AND
contextid='".addslashes($mdlcourse->mdl_context_id)."'";
if($result = pg_query($this->conn_moodle, $qry))
{
if(pg_num_rows($result)==0)
{
//Student ist noch nicht zugeteilt.
if($this->createZuteilung($this->mdl_user_id, $mdlcourse->mdl_context_id, 5))
{
$this->log.="\nder Student $this->mdl_user_firstname $this->mdl_user_lastname wurde zum Kurs hinzugefügt";
$this->log_public.="\nder Student $this->mdl_user_firstname $this->mdl_user_lastname wurde zum Kurs hinzugefügt";
$this->sync_create++;
}
else
$this->log.="\nFehler beim Anlegen der Studenten-Zuteilung: $this->errormsg";
}
}
else
{
$this->errormsg = 'Fehler beim Auslesen der Rollen';
return false;
}
}
return true;
}
}
-837
View File
@@ -1,837 +0,0 @@
<?php
/* Copyright (C) 2013 FH Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
*/
/*
* Moodle 2.4 Connector Klasse
*
* FHComplete Moodle Plugin muss installiert sein fuer
* Webservice Funktion 'fhcomplete_courses_by_shortname'
* 'fhcomplete_get_course_grades'
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
require_once(dirname(__FILE__).'/moodle.class.php');
require_once(dirname(__FILE__).'/datum.class.php');
require_once(dirname(__FILE__).'/studiensemester.class.php');
require_once(dirname(__FILE__).'/../config/global.config.inc.php');
class moodle24_course extends basis_db
{
public $result = array();
public $serverurl;
//Vilesci Attribute
public $moodle_id;
public $mdl_course_id;
public $lehreinheit_id;
public $lehrveranstaltung_id;
public $studiensemester_kurzbz;
public $insertamum;
public $insertvon;
public $gruppen;
//Moodle Attribute
public $mdl_fullname;
public $mdl_shortname;
public $lehrveranstaltung_bezeichnung;
public $lehrveranstaltung_semester;
public $lehrveranstaltung_studiengang_kz;
// 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()
{
$moodle = new moodle();
$pfad = $moodle->getPfad('2.4');
$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
* @return true wenn ok, false im Fehlerfall
*/
public function load($mdl_course_id)
{
$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)
|| !is_numeric($this->mdl_course_id))
{
$this->errormsg='Moodle Kurs ID fehlt';
return false;
}
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)
{
if(isset($response[0]))
{
$this->mdl_fullname = $response[0]['fullname'];
$this->mdl_shortname = $response[0]['shortname'];
$this->mdl_course_id = $response[0]['id'];
return true;
}
else
{
$this->errormsg = 'Kurs wurde nicht gefunden';
return false;
}
}
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
*/
public function create_vilesci()
{
if($this->mdl_course_id=='')
{
$this->errormsg='mdl_course_id muss angegeben sein';
return false;
}
$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).','.
$this->db_add_param($this->lehreinheit_id, FHC_INTEGER).','.
$this->db_add_param($this->lehrveranstaltung_id, FHC_INTEGER).','.
$this->db_add_param($this->studiensemester_kurzbz).','.
$this->db_add_param($this->insertamum).','.
$this->db_add_param($this->insertvon).','.
$this->db_add_param($this->gruppen, FHC_BOOLEAN).", '2.4');";
if($this->db_query($qry))
{
$qry = "SELECT currval('lehre.tbl_moodle_moodle_id_seq') as id;";
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$this->moodle_id = $row->id;
$this->db_query('COMMIT;');
return true;
}
else
{
$this->db_query('ROLLBACK');
$this->errormsg = 'Fehler beim Lesen der Sequence';
return false;
}
}
else
{
$this->db_query('ROLLBACK');
$this->errormsg = 'Fehler beim Lesen der Sequence';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Einfuegen des Datensatzes';
return false;
}
}
/**
* Legt einen Kurs im Moodle an
* @return true wenn ok, false im Fehlerfall
*/
public function create_moodle()
{
//CourseCategorie ermitteln
//lehrveranstalung ID holen falls nur die lehreinheit_id angegeben wurde
if($this->lehrveranstaltung_id=='')
{
$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))
{
if($row = $this->db_fetch_object($res))
{
$lvid = $row->lehrveranstaltung_id;
}
else
{
$this->errormsg = 'Fehler beim Ermitteln der LehrveranstaltungID';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Ermitteln der LehrveranstaltungID';
return false;
}
}
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))
{
$semester = $row->semester;
$stg = $row->stg;
$stg_kz = $row->studiengang_kz;
$oe_kurzbz = $row->oe_kurzbz;
}
else
{
$this->errormsg = 'Fehler beim Ermitteln von Studiengang und Semester';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Ermitteln von Studiengang und Semester';
return false;
}
// 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)
// Studiengang der Lehrveranstaltung holen
// Uebergeordnetes Department ermitteln
$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))
{
$department = $row_department->bezeichnung;
}
else
{
$this->errormsg = 'Fehler beim Ermitteln des Departments';
return false;
}
}
// Department
$id_department = $this->getCategorie($department, '0');
if ($id_department === false)
return false;
if ($id_department === -1)
{
if(!$id_department = $this->createCategorie($department, '0'))
{
echo "<br>$this->errormsg";
return false;
}
}
// Studiengang
$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 "<br>$this->errormsg";
return false;
}
}
// Jahrgang - 1. Studiensemester ermitteln (Stsem um Ausbsem -1 zurückspringen) und das Jahr ermitteln
$studiensemester = new studiensemester();
if($semester!=0)
{
$jahrgangstsem = $studiensemester->jump($this->studiensemester_kurzbz, ($semester-1)*-1);
$studiensemester->load($jahrgangstsem);
}
else
{
$jahrgangstsem=$this->studiensemester_kurzbz;
$studiensemester->load($jahrgangstsem);
}
$datum = new Datum();
$jahr = $datum->formatDatum($studiensemester->start, 'Y');
$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 "<br>$this->errormsg";
return false;
}
}
// Studiensemester
$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 "<br>Fehler beim Anlegen des Studiensemesters";
return false;
}
}
$categoryid=$id_stsem;
}
else
{
// Struktur: STSEM -> STG -> Ausbsemester (WS2014 -> BEL -> 1)
//Studiensemester Categorie holen
$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 "<br>Fehler beim Anlegen des Studiensemesters";
return false;
}
}
//Studiengang Categorie holen
$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 "<br>$this->errormsg";
return false;
}
}
//Semester Categorie holen
$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))
{
echo "<br>$this->errormsg";
return false;
}
}
$categoryid=$id_sem;
}
try
{
$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);
$data->enddate=$datum_obj->mktime_fromdate($stsem->ende);
$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;
}
}
catch (SoapFault $E)
{
$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, -1 wenn Kategorie nicht existiert, false im Fehlerfall
*/
public function getCategorie($bezeichnung, $parent)
{
if($bezeichnung=='')
{
$this->errormsg = 'Bezeichnung muss angegeben werden';
return false;
}
if($parent=='')
{
$this->errormsg = 'getCategorie: parent wurde nicht uebergeben';
return false;
}
try
{
$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 -1;
}
}
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
* @param parent ID der uebergeordneten Kategorie, false im Fehlerfall
*/
public function createCategorie($bezeichnung, $parent)
{
if($bezeichnung=='')
{
$this->errormsg = 'Bezeichnung muss angegeben werden';
return false;
}
if($parent=='')
{
$this->errormsg = 'createCategorie: parent wurde nicht uebergeben';
return false;
}
try
{
$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;
return false;
}
}
/**
* Aktualisiert die Spalte gruppen in der tbl_moodle
* @param moodle_id ID der MoodleZuteilung
* gruppen boolean true wenn syncronisiert
* werden soll, false wenn nicht
* @return true wenn ok, false im Fehlerfall
*
* TODO eventuell auslagern in moodle.class oder ganz loeschen
*/
public function updateGruppenSync($moodle_id, $gruppen)
{
if(!is_numeric($moodle_id))
{
$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)."
WHERE moodle_id=".$this->db_add_param($moodle_id, FHC_INTEGER);
if($this->db_query($qry))
{
return true;
}
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
JOIN public.tbl_studiengang USING(studiengang_kz)
WHERE
lehrveranstaltung_id=".$this->db_add_param($lehrveranstaltung_id, FHC_INTEGER);
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$semester = $row->semester;
$stg = $row->stg;
}
else
{
$this->errormsg = 'Fehler beim Ermitteln von Studiengang und Semester';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Ermitteln von Studiengang und Semester';
return false;
}
//Testkurs Categorie holen
$id_testkurs = $this->getCategorie('Testkurse', '0');
if ($id_testkurs === false)
return false;
if ($id_testkurs === -1)
{
if(!$id_testkurs = $this->createCategorie('Testkurse', '0'))
{
$this->errormsg= "Fehler beim Anlegen der Testkurskategorie";
return false;
}
}
//StSem Categorie holen
$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))
{
$this->errormsg = 'Fehler beim Anlegen der Studiensemester Kategorie';
return false;
}
}
$client = new SoapClient($this->serverurl);
$data = new stdClass();
$data->fullname=$this->mdl_fullname;
$data->shortname=$this->mdl_shortname;
$data->categoryid=$id_stsem;
$data->format='topics';
$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 Testkurses';
return false;
}
}
/**
* Laedt den Testkurs zu dieser Lehrveranstaltung
* @param lehrveranstaltung_id
* studiensemester_kurzbz
* @return ID wenn gefunden, false wenn nicht vorhanden
*/
public function loadTestkurs($lehrveranstaltung_id, $studiensemester_kurzbz)
{
$qry = "SELECT
UPPER(tbl_studiengang.typ::varchar(1) || tbl_studiengang.kurzbz) as kuerzel,
tbl_lehrveranstaltung.semester, tbl_lehrveranstaltung.kurzbz
FROM
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
{
$this->errormsg = 'Fehler beim Laden des Testkurses';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden des Testkurses';
return false;
}
//Testkurs Categorie holen
$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
$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;
}
$client = new SoapClient($this->serverurl);
$response = $client->fhcomplete_courses_by_shortname(array('shortnames'=>array($shortname)));
if(isset($response[0]))
{
$this->mdl_fullname = $response[0]['fullname'];
$this->mdl_shortname = $response[0]['shortname'];
$this->mdl_course_id = $response[0]['id'];
return true;
}
else
{
$this->errormsg='Es wurde kein Testkurs gefunden';
return false;
}
}
/**
* 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;
if($lehrveranstaltung_id=='' || $studiensemester_kurzbz=='')
{
$this->errormsg = 'LehrveranstaltungID und Studiensemester_kurzbz muss uebergeben werden';
return false;
}
// Ermitteln die Lehreinheiten und Moodle ID
$qry = "
SELECT
distinct mdl_course_id
FROM
lehre.tbl_moodle
JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id, studiensemester_kurzbz)
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
distinct mdl_course_id
FROM
lehre.tbl_moodle
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_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);
if(CIS_GESAMTNOTE_PUNKTE)
$type=2; // Prozentpunkte
else
$type=3; // Noten aufgrund Skala
// 1 = Punkte, 2 = Prozentpunkte, 3 = Note laut Skala
$response = $client->fhcomplete_get_course_grades($row_moodle->mdl_course_id, $type);
if (count($response)>0)
{
foreach($response as $row)
{
if($row['note']!='-')
{
$userobj = new stdClass();
$userobj->mdl_course_id = $row_moodle->mdl_course_id;
$userobj->vorname = $row['vorname'];
$userobj->nachname = $row['nachname'];
$userobj->idnummer = $row['idnummer'];
$userobj->uid = $row['username'];
$userobj->note = $row['note'];
$this->result[]=$userobj;
}
}
}
}
catch(SoapFault $e)
{
//echo print_r($e, true);
//return false;
}
}
return true;
}
/**
* 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);
$data = array($mdl_course_id);
$response = $client->core_course_delete_courses(array($mdl_course_id));
if(is_object($response))
{
$response_obj = $response;
unset($response);
if(isset($response_obj->warnings) && isset($response_obj->warnings->message))
$response[0] = $response_obj->warnings->message;
}
if(isset($response[0]))
{
$this->errormsg = $response[0];
return false;
}
return true;
}
/**
* 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 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))
{
while($row = $this->db_fetch_object())
{
$le[] = $row->lehreinheit_id;
}
}
return $le;
}
}
-922
View File
@@ -1,922 +0,0 @@
<?php
/* Copyright (C) 2013 FH Technikum-Wien
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation; either version 2 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*
* Authors: Andreas Oesterreicher <andreas.oesterreicher@technikum-wien.at> and
*/
/*
* Connector fuer Moodle 2.4 User
*
* FHComplete Moodle Plugin muss installiert sein fuer
* Webservice Funktion 'fhcomplete_user_get_users'
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
require_once(dirname(__FILE__).'/moodle.class.php');
class moodle24_user extends basis_db
{
public $log=''; //log message fuer Syncro
public $log_public=''; //log message fuer Syncro
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
*/
public function __construct()
{
$moodle = new moodle();
$pfad = $moodle->getPfad('2.4');
$this->serverurl=$pfad.'/webservice/soap/server.php?wsdl=1&wstoken='.MOODLE_TOKEN24.'&'.microtime(true);
return true;
}
/**
* Laedt einen Moodle User
*
* @param $uid
* @return boolean oder -1 bei SOAP Fehler
*/
public function loaduser($uid)
{
try
{
$client = new SoapClient($this->serverurl);
$response = $client->fhcomplete_user_get_users(array(array('key'=>'username', 'value'=>$uid)));
if(is_object($response))
{
$response_obj = $response;
unset($response);
$response['users']=$response_obj->users;
}
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;
}
}
catch (SoapFault $E)
{
$this->errormsg.="SOAP Fehler beim Laden des Users: ".$E->faultstring;
return -1;
}
}
/**
* Liefert ein Array mit allen Lektoren die
* zu dem Moodle Kurs zugeteilt sind
*/
public function getMitarbeiter($mdl_course_id)
{
//Mitarbeiter laden die zu diesem Kurs zugeteilt sind
$qry = "SELECT
mitarbeiter_uid
FROM
lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_moodle USING(lehreinheit_id)
WHERE
moodle_version='2.4'
AND mdl_course_id=".$this->db_add_param($mdl_course_id, FHC_INTEGER)."
UNION
SELECT
mitarbeiter_uid
FROM
lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
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);
$mitarbeiter=array();
if($this->db_query($qry))
{
while($row_ma = $this->db_fetch_object())
{
$mitarbeiter[] = $row_ma->mitarbeiter_uid;
}
return $mitarbeiter;
}
else
{
$this->errormsg='Fehler beim Laden der Mitarbeiter';
return false;
}
}
/**
* Synchronisiert die Lektoren der Lehreinheiten
* mit denen des Moodle Kurses
* @param $mdl_course_id ID des MoodleKurses
* lehrveranstaltung_id wird nur angegeben beim Syncro von Testkursen
* studiensemester_kurzbz wird nur angegeben beim Syncro von Testkursen
* @return true wenn ok, false wenn Fehler
*/
public function sync_lektoren($mdl_course_id, $lehrveranstaltung_id=null, $studiensemester_kurzbz=null)
{
//Mitarbeiter laden die zu diesem Kurs zugeteilt sind
if(!is_null($lehrveranstaltung_id) && !is_null($studiensemester_kurzbz))
{
//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
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
lehre.tbl_lehreinheitmitarbeiter JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
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)."
AND mitarbeiter_uid not like '_Dummy%'";
}
$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 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))
{
$user_zugeteilt=false;
foreach($enrolled_users as $user)
{
if($user['username']==$row_ma->mitarbeiter_uid)
{
$user_zugeteilt=true;
break;
}
}
if(!$user_zugeteilt)
{
$retval = $this->loaduser($row_ma->mitarbeiter_uid);
//MoodleID des Users holen bzw ggf neu anlegen
if($retval===false)
{
//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($retval!==-1)
{
if($mitarbeiter!='')
$mitarbeiter.=',';
$mitarbeiter.=$this->mdl_user_id;
//Mitarbeiter ist noch nicht zugeteilt.
$data = new stdClass();
$data->roleid=3; // 3=Lektor
$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.="\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
{
$this->errormsg = 'Fehler beim Ermitteln der Zugeteilten Lektoren';
return false;
}
}
/**
* Synchronisiert die Studenten der Lehreinheiten
* mit denen des Moodle Kurses
* @param $mdl_course_id ID des MoodleKurses
* @return true wenn ok, false wenn Fehler
*/
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
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
studiengang_kz, semester, verband, gruppe, gruppe_kurzbz, tbl_moodle.studiensemester_kurzbz, tbl_moodle.gruppen
FROM
lehre.tbl_lehreinheitgruppe JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
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='';
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
{
$qry = "SELECT
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);
if(trim($row_std->verband)!='')
{
$qry.=" AND verband = ".$this->db_add_param($row_std->verband);
if(trim($row_std->gruppe)!='')
{
$qry.=" AND gruppe = ".$this->db_add_param($row_std->gruppe);
}
}
$studiengang_obj = new studiengang();
$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
{
$qry = "SELECT
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;
}
if($result_user = $this->db_query($qry))
{
while($row_user = $this->db_fetch_object($result_user))
{
//Nachschauen ob dieser Student bereits zugeteilt ist
$user_zugeteilt=false;
foreach($enrolled_users as $user)
{
if($user['username']==$row_user->student_uid)
{
$user_zugeteilt=true;
$this->mdl_user_id=$user['id'];
break;
}
}
if(!$user_zugeteilt)
{
$retval = $this->loaduser($row_user->student_uid);
//MoodleID des Users holen bzw ggf neu anlegen
if($retval===false)
{
//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($retval!==-1)
{
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;
$userstoenroll[]=$data;
$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++;
}
}
//Gruppenzuteilung
if($gruppensync)
{
if(!isset($vorhandenegruppen[$gruppenbezeichnung]))
{
//Schauen ob die Gruppe vorhanden ist
$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))
{
$this->log.="\nGruppen Anlegen Failed $gruppenbezeichnung $mdl_course_id $groupid";
continue;
}
$this->group_update++;
$this->log.="\nes wurde eine neue Gruppe angelgt: $gruppenbezeichnung ID $groupid";
$this->log_public.="\nes wurde eine neue Gruppe angelgt: $gruppenbezeichnung";
}
$vorhandenegruppen[$gruppenbezeichnung]=$groupid;
}
else
$groupid=$vorhandenegruppen[$gruppenbezeichnung];
//if($this->mdl_user_id=='')
// $this->loaduser($row_user->student_uid);
//Schauen ob eine Zuteilung zu dieser Gruppe vorhanden ist
$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->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";
}
}
}
}
}
if(count($userstoenroll)>0)
{
try
{
$client = new SoapClient($this->serverurl);
$client->enrol_manual_enrol_users($userstoenroll);
// Wenn User zum Kurs hinzugefuegt werden, muss eine kleine Pause eingelegt werden
// 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)
{
$this->errormsg.="SOAP Fehler beim Zuteilen der Teilnehmer des Kurses: ".$E->faultstring;
return false;
}
}
if(count($groupmembertoadd)>0)
{
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
{
$this->errormsg = 'Fehler beim Ermitteln der Zugeteilten Studenten';
return false;
}
}
/**
* Schaut ob eine Zuteilung von Person zu Gruppe
* existiert
* @param grouid ID der Gruppe
* userid MoodleID des Users
* @return true wenn zugeteilt, -1 wenn nicht, false im Fehlerfall
*/
public function getGroupMember($groupid, $userid)
{
if(!isset($this->gruppenzuordnungen[$groupid]))
{
try
{
$client = new SoapClient($this->serverurl);
$response = $client->core_group_get_group_members(array($groupid));
if(isset($response[0]['userids']))
{
$this->gruppenzuordnungen[$groupid]=$response[0]['userids'];
}
}
catch (SoapFault $E)
{
$this->errormsg.="SOAP Fehler beim Laden der Gruppenzuordnung: ".$E->faultstring;
return false;
}
}
foreach($this->gruppenzuordnungen[$groupid] as $id)
{
if ($id == $userid)
{
return true;
}
}
return -1;
}
/**
* Legt eine Zuteilung eines Users zu
* einer Gruppe an
* @param groupid ID der Gruppe
* userid ID des Users
* @return boolean
*/
public function createGroupMember($groupid, $userid)
{
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
* $gruppenbezeichnung Name der Gruppe
* @return GruppenID wenn ok, -1 wenn nicht gefunden, false im Fehlerfall
*/
public function getGroup($mdl_course_id, $gruppenbezeichnung)
{
try
{
$client = new SoapClient($this->serverurl);
$response = $client->core_group_get_course_groups($mdl_course_id);
foreach($response as $row)
{
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;
}
}
/**
* 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
*/
public function createGroup($mdl_course_id, $gruppenbezeichnung)
{
try
{
$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;
}
}
catch (SoapFault $E)
{
$this->errormsg.="SOAP Fehler beim Anlegen der Gruppe: ".$E->faultstring;
return false;
}
}
/**
* Legt einen User im Moodle an
* @param $uid UID der Person die angelegt werden soll
* @return true wenn ok, false wenn Fehler
*/
public function createUser($uid)
{
if($uid=='_DummyLektor')
return true;
$qry = "SELECT uid, vorname, nachname FROM campus.vw_benutzer WHERE uid=".$this->db_add_param($uid);
if($this->db_query($qry))
{
if($row = $this->db_fetch_object())
{
$username = $row->uid;
$vorname = $row->vorname;
$nachname = $row->nachname;
$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
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 = 'manual';
$user->idnumber = $username;
$user->lang = 'en';
try
{
$client = new SoapClient($this->serverurl);
$response = $client->core_user_create_users(array($user));
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
{
$this->errormsg = 'Fehler beim Laden des Users';
return false;
}
}
catch (SoapFault $E)
{
$this->errormsg.="SOAP Fehler beim Anlegen der User: ".$E->faultstring.' '.(isset($E->detail)?$E->detail:'').' data:'.$username;
}
}
else
{
$this->errormsg = 'Fehler beim Laden des Users';
return false;
}
}
else
{
$this->errormsg='Fehler beim Laden des Users';
return false;
}
}
/**
* Teilt die TestStudenten zu einem Testkurs zu
* @param mdl_course_id ID des Moodle Kurses
*/
public function createTestStudentenZuordnung($mdl_course_id)
{
//Context des Kurses holen
$mdlcourse = new moodle24_course();
$users = array('student1', 'student2', 'student3');
foreach ($users as $row_user)
{
$retval = $this->loaduser($row_user);
//MoodleID des Users holen
if($retval!==true)
{
$this->errormsg = "Fehler beim Laden des Users $row_user: $this->errormsg";
return false;
}
$data = new stdClass();
$data->roleid=5;
$data->userid=$this->mdl_user_id;
$data->courseid=$mdl_course_id;
try
{
$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.
}
catch (SoapFault $E)
{
$this->errormsg.="SOAP Fehler beim Zuordnen der User: ".$E->faultstring.' '.(isset($E->detail)?$E->detail:'');
}
}
return true;
}
/**
* Teilt einen User zu mehreren Moodle Kursen gleichzeitig zu
* @param $uid UID des Users
* @param $mdl_course_id_array Array mit MoodleKursIDs
* @param $role_id Moodle Rolle
*/
public function MassEnroll($uid, $mdl_course_id_array, $role_id)
{
//MoodleID des Users holen
if(!$this->loaduser($uid))
{
$this->errormsg = "Fehler beim Laden des Users $uid: $this->errormsg";
return false;
}
$param=array();
foreach($mdl_course_id_array as $mdl_course_id)
{
$data = new stdClass();
$data->roleid=$role_id;
$data->userid=$this->mdl_user_id;
$data->courseid=$mdl_course_id;
$param[]=$data;
}
try
{
$client = new SoapClient($this->serverurl);
$client->enrol_manual_enrol_users($param);
}
catch (SoapFault $E)
{
$this->errormsg.="SOAP Fehler beim Zuordnen der User: ".$E->faultstring.' '.(isset($E->detail)?$E->detail:'');
return false;
}
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 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
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)
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)
{
$retval = $this->loaduser($row_ma->mitarbeiter_uid);
//MoodleID des Users holen bzw ggf neu anlegen
if($retval===false)
{
//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($retval!==-1)
{
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;
}
}
}
+9 -149
View File
@@ -282,58 +282,24 @@ function checkZeilenUmbruch()
// Uebungstool
if((!defined('CIS_LEHRVERANSTALTUNG_UEBUNGSTOOL_ANZEIGEN') || CIS_LEHRVERANSTALTUNG_UEBUNGSTOOL_ANZEIGEN) && $angemeldet)
{
$show=false;
$link='';
$link_onclick='';
$text='';
//wenn kein Moodle Kurs existiert dann KT anzeigen
$qry = "SELECT 1 FROM lehre.tbl_moodle WHERE
(lehrveranstaltung_id=".$db->db_add_param($lvid, FHC_INTEGER)." AND studiensemester_kurzbz=".$db->db_add_param($angezeigtes_stsem).")
OR
(lehreinheit_id IN (SELECT lehreinheit_id FROM lehre.tbl_lehreinheit
WHERE lehrveranstaltung_id=".$db->db_add_param($lvid, FHC_INTEGER)." AND
studiensemester_kurzbz=".$db->db_add_param($angezeigtes_stsem)."))";
if(isset($angezeigtes_stsem))
$studiensem = '&stsem='.urlencode($angezeigtes_stsem);
else
$studiensem = '';
if($result = $db->db_query($qry))
if($db->db_num_rows($result)==0)
$show=true;
//wenn eine Kreuzerlliste existiert dann den Link immer anzeigen
$qry = "SELECT 1 FROM campus.tbl_uebung
WHERE lehreinheit_id IN (SELECT lehreinheit_id FROM lehre.tbl_lehreinheit
WHERE lehrveranstaltung_id=".$db->db_add_param($lvid, FHC_INTEGER)." AND
studiensemester_kurzbz=".$db->db_add_param($angezeigtes_stsem).")";
if($result = $db->db_query($qry))
if($db->db_num_rows($result)>0)
$show=true;
if($show)
//Kreuzerltool
if($is_lector)
{
if(isset($angezeigtes_stsem))
$studiensem = '&stsem='.urlencode($angezeigtes_stsem);
else
$studiensem = '';
//Kreuzerltool
if($is_lector)
{
$link='benotungstool/verwaltung.php?lvid='.urlencode($lvid).$studiensem;
$text.='<a href="'.APP_ROOT.'cms/dms.php?id='.$p->t('dms_link/benotungstoolHandbuch').'" class="Item" target="_blank">'.$p->t('lehre/benotungstoolHandbuch').' [PDF]</a>';
}
else
{
$link='benotungstool/studentenansicht.php?lvid='.urlencode($lvid).$studiensem;
}
$link='benotungstool/verwaltung.php?lvid='.urlencode($lvid).$studiensem;
$text.='<a href="'.APP_ROOT.'cms/dms.php?id='.$p->t('dms_link/benotungstoolHandbuch').'" class="Item" target="_blank">'.$p->t('lehre/benotungstoolHandbuch').' [PDF]</a>';
}
else
{
if($is_lector)
{
$link='';
$text='<a href="'.APP_ROOT.'cms/dms.php?id='.$p->t('dms_link/benotungstoolHandbuch').'" class="Item" target="_blank">'.$p->t('lehre/benotungstoolHandbuch').' [PDF]</a>';
$link_onclick='alert(\''.$p->t('lehre/kreuzerltoolMitMoodleInfo').'\');';
}
$link='benotungstool/studentenansicht.php?lvid='.urlencode($lvid).$studiensem;
}
$menu[]=array
@@ -348,112 +314,6 @@ function checkZeilenUmbruch()
);
}
//Moodle
$showmoodle=false;
$link_target='';
$link_onclick='';
$text='';
$link='';
//Schauen ob Moodle fuer diesen Studiengang freigeschaltet ist
$qry = "SELECT moodle FROM public.tbl_studiengang JOIN lehre.tbl_lehrveranstaltung USING(studiengang_kz) WHERE lehrveranstaltung_id=".$db->db_add_param($lvid, FHC_INTEGER);
if($result = $db->db_query($qry))
{
if($row = $db->db_fetch_object($result))
{
if($db->db_parse_bool($row->moodle))
{
$showmoodle=true;
}
}
}
if(MOODLE)
{
//wenn bereits eine Kreuzerlliste existiert, dann den Moodle link nicht anzeigen
$qry = "SELECT * FROM campus.tbl_uebung WHERE
lehreinheit_id IN(SELECT lehreinheit_id FROM lehre.tbl_lehreinheit
WHERE lehrveranstaltung_id=".$db->db_add_param($lvid, FHC_INTEGER)."
AND studiensemester_kurzbz=".$db->db_add_param($angezeigtes_stsem).")";
if($result = $db->db_query($qry))
if($db->db_num_rows($result)>0)
$showmoodle=false;
$moodle = new moodle();
$moodle->getAll($lvid, $angezeigtes_stsem);
if(count($moodle->result)>0)
$showmoodle=true;
}
else
$showmoodle=false;
if($angemeldet)
{
if($showmoodle )
{
$link = "moodle_choice.php?lvid=$lvid&stsem=$angezeigtes_stsem";
if(count($moodle->result)>0)
{
if(!$is_lector)
{
$moodle->result=array();
$moodle->getCourse($lvid, $angezeigtes_stsem, $user);
if(count($moodle->result)==1)
$link = $moodle->getPfad($moodle->result[0]->moodle_version).'course/view.php?id='.$moodle->result[0]->mdl_course_id;
else
$link = "moodle_choice.php?lvid=$lvid&stsem=$angezeigtes_stsem";
}
else
{
if(count($moodle->result)==1)
{
$link = $moodle->getPfad($moodle->result[0]->moodle_version).'course/view.php?id='.$moodle->result[0]->mdl_course_id;
}
else
$link = "moodle_choice.php?lvid=$lvid&stsem=$angezeigtes_stsem";
}
$link_target='_blank';
}
else
{
$link='';
}
if($is_lector &&
(!defined('CIS_LEHRVERANSTALTUNG_MOODLE_LEKTOR_EDIT')
|| (defined('CIS_LEHRVERANSTALTUNG_MOODLE_LEKTOR_EDIT') && CIS_LEHRVERANSTALTUNG_MOODLE_LEKTOR_EDIT)
))
{
$text.= '<a href="moodle2_4_wartung.php?lvid='.$lvid.'&stsem='.$angezeigtes_stsem.'" class="Item">'.$p->t('lehre/moodleWartung').'</a>
<br /><a href="'.APP_ROOT.'cms/dms.php?id='.$p->t('dms_link/moodleHandbuch24').'" class="Item" target="_blank">'.$p->t('lehre/moodleHandbuch').'</a>';
}
}
else
{
if($is_lector)
{
$link='';
$link_onclick='alert(\''.$p->t('lehre/moodleMitKreuzerltoolInfo').'\'); return false';
}
}
}
if (MOODLE)
{
$menu[]=array
(
'id'=>'core_menu_moodle',
'position'=>'70',
'name'=>$p->t('lehre/moodle'),
'icon'=>'../../../skin/images/button_moodle.png',
'link'=>$link,
'link_target'=>$link_target,
'link_onclick'=>$link_onclick,
'text'=>$text
);
}
//Gesamtnote
if($is_lector && ((!defined('CIS_LEHRVERANSTALTUNG_GESAMTNOTE_ANZEIGEN') || CIS_LEHRVERANSTALTUNG_GESAMTNOTE_ANZEIGEN) && $angemeldet))
{
-9
View File
@@ -73,15 +73,6 @@ $menu=array
'Studienordnung'=>array('name'=>'Studienordnung', 'link'=>'lehre/studienordnung.php', 'target'=>'_blank','permissions'=>array('lehre/studienordnung')),
'StudienplanGueltigkeit'=>array('name'=>'Studienplan Gültigkeit', 'link'=>'lehre/studienplan_gueltigkeit.php', 'target'=>'main','permissions'=>array('lehre/studienordnung')),
'Moodle'=>array
(
'name'=>'Moodle', 'permissions'=>array('basis/moodle'),
'Account'=>array('name'=>'Accountverwaltung', 'link'=>'moodle/account_verwaltung24.php', 'target'=>'main'),
'Kursverwaltung'=>array('name'=>'Kurs entfernen', 'link'=>'moodle/kurs_verwaltung24.php', 'target'=>'main'),
'Rollenzuteilung'=>array('name'=>'Rollenzuteilung', 'link'=>'moodle/rollenzuteilung24.php', 'target'=>'main'),
'UserSync'=>array('name'=>'User Sync', 'link'=>'moodle/user_sync24.php', 'target'=>'main'),
'UserMassCreate'=>array('name'=>'User Massenanlage', 'link'=>'moodle/account_masscreate24.php', 'target'=>'main'),
),
'Freifach'=>array
(
'name'=>'Freifach', 'permissions'=>array('lehre/freifach'),