This commit is contained in:
Andreas Österreicher
2008-09-10 13:47:22 +00:00
parent 8555fc23df
commit 116e15a96c
4 changed files with 194 additions and 15 deletions
+8 -2
View File
@@ -49,7 +49,7 @@ if(isset($_GET['stsem']))
else
die('Es wurde kein Studiensemester uebergeben');
$art = (isset($_POST['art'])?$_POST['art']:'le');
$art = (isset($_POST['art'])?$_POST['art']:'lv');
$berechtigt = false;
@@ -234,8 +234,14 @@ else
$disable_lv='';
if($result = pg_query($conn, $qry))
if(pg_num_rows($result)>0)
{
$disable_lv='disabled="true"';
//wenn schon ein Moodle Kurs zu einer Lehreinheit angelegt wurde,
//dann ist standardmaessig die Lehreinheit markiert
if($art=='lv')
$art='le';
}
echo 'Moodle Kurs anlegen: <br><br>
<form action="'.$_SERVER['PHP_SELF'].'?lvid='.$lvid.'&stsem='.$stsem.'" method="POST">
<input type="radio" '.$disable_lv.' name="art" value="lv" onclick="togglediv()" '.($art=='lv'?'checked':'').'>einen Moodle Kurs f&uuml;r die gesamte LV anlegen<br>
+23 -13
View File
@@ -320,7 +320,8 @@ class moodle_course
//Studiensemester Categorie holen
if(!$id_stsem = $this->getCategorie($this->studiensemester_kurzbz, '0'))
{
$id_stsem = $this->createCategorie($this->studiensemester_kurzbz, '0');
if(!$id_stsem = $this->createCategorie($this->studiensemester_kurzbz, '0'))
echo "<br>Fehler beim Anlegen des Studiensemesters";
}
//Studiengang Categorie holen
if(!$id_stg = $this->getCategorie($stg, $id_stsem))
@@ -487,18 +488,26 @@ class moodle_course
}
if($parent=='')
{
$this->errormsg = 'createCategorie: parent wurde nicht uebergeben';
$this->errormsg = 'createCategorie: parent wurde nicht uebergeben: '.$bezeichnung.' '.$parent;
return false;
}
//Parent laden
$qry = "SELECT * FROM public.mdl_course_categories WHERE id='".addslashes($parent)."'";
//echo $qry;
if($result = pg_query($this->conn_moodle, $qry))
if($parent!='0')
{
if($row = pg_fetch_object($result))
//Parent laden
$qry = "SELECT * FROM public.mdl_course_categories WHERE id='".addslashes($parent)."'";
//echo $qry;
if($result = pg_query($this->conn_moodle, $qry))
{
$depth = $row->depth;
$path = $row->path;
if($row = pg_fetch_object($result))
{
$depth = $row->depth;
$path = $row->path;
}
else
{
$this->errormsg = 'Fehler beim Laden der KursKategorie';
return false;
}
}
else
{
@@ -508,8 +517,8 @@ class moodle_course
}
else
{
$this->errormsg = 'Fehler beim Laden der KursKategorie';
return false;
$depth=0;
$path='';
}
//KursKategorie anlegen
@@ -657,11 +666,11 @@ class moodle_course
function getCourse($lehrveranstaltung_id, $studiensemester_kurzbz, $student_uid)
{
//alle betreffenden Kurse holen
$qry = "SELECT tbl_moodle.lehreinheit_id, mdl_course_id FROM lehre.tbl_moodle JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id, studiensemester_kurzbz)
$qry = "SELECT tbl_lehreinheit.lehreinheit_id, mdl_course_id FROM lehre.tbl_moodle JOIN lehre.tbl_lehreinheit USING(lehrveranstaltung_id, studiensemester_kurzbz)
WHERE tbl_moodle.lehrveranstaltung_id='".addslashes($lehrveranstaltung_id)."'
AND tbl_moodle.studiensemester_kurzbz='".addslashes($studiensemester_kurzbz)."'
UNION
SELECT lehreinheit_id, mdl_course_id FROM lehre.tbl_moodle JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
SELECT tbl_lehreinheit.lehreinheit_id, mdl_course_id FROM lehre.tbl_moodle JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
WHERE tbl_lehreinheit.lehrveranstaltung_id='".addslashes($lehrveranstaltung_id)."' AND
tbl_lehreinheit.studiensemester_kurzbz='".addslashes($studiensemester_kurzbz)."'";
@@ -673,6 +682,7 @@ class moodle_course
//schauen in welchen der Student ist
$qry = "SELECT 1 FROM campus.vw_student_lehrveranstaltung
WHERE uid='".addslashes($student_uid)."' AND lehreinheit_id='".addslashes($row->lehreinheit_id)."'";
if($result_vw = pg_query($this->conn, $qry))
{
if(pg_num_rows($result_vw)>0)
+162
View File
@@ -21,6 +21,7 @@
*/
/*
* requires moodle_course.class.php
* studiengang.class.php
*/
class moodle_user
{
@@ -241,6 +242,9 @@ class moodle_user
$qry.=" AND gruppe = '$row_std->gruppe'";
}
}
$studiengang_obj = new studiengang($this->conn);
$studiengang_obj->load($row_std->studiengang_kz);
$gruppenbezeichnung = $studiengang_obj->kuerzel.'-'.trim($row_std->semester).trim($row_std->verband).trim($row_std->gruppe);
}
else //Spezialgruppe
{
@@ -252,6 +256,7 @@ class moodle_user
gruppe_kurzbz='$row_std->gruppe_kurzbz' AND
studiensemester_kurzbz='$row_std->studiensemester_kurzbz'
";
$gruppenbezeichnung = $row_std->gruppe_kurzbz;
}
if($result_user = pg_query($this->conn, $qry))
@@ -301,6 +306,23 @@ class moodle_user
$this->errormsg = 'Fehler beim Auslesen der Rollen';
return false;
}
//Gruppenzuteilung
//Schauen ob die Gruppe vorhanden ist
if(!$groupid = $this->getGroup($mdl_course_id, $gruppenbezeichnung))
{
//wenn nicht dann anlegen
if(!$groupid = $this->createGroup($mdl_course_id, $gruppenbezeichnung))
continue;
}
//Schauen ob eine Zuteilung zu dieser Gruppe vorhanden ist
if(!$this->getGroupMember($groupid, $this->mdl_user_id))
{
//wenn nicht dann zuteilen
$this->createGroupMember($groupid, $this->mdl_user_id);
}
}
}
}
@@ -334,6 +356,146 @@ class moodle_user
}
}
// ************************************************
// * Schaut ob eine Zuteilung von Person zu Gruppe
// * existiert
// * @param grouid ID der Gruppe
// * userid ID des Users
// * @return ID der Zuteilung
// ************************************************
function getGroupMember($groupid, $userid)
{
$qry = "SELECT id FROM public.mdl_groups_members WHERE groupid='".addslashes($groupid)."' AND userid='".addslashes($userid)."'";
if($result = pg_query($this->conn_moodle, $qry))
{
if($row = pg_fetch_object($result))
{
return $row->id;
}
else
{
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Ermitteln der Gruppe';
return false;
}
}
// ***************************************************
// * Legt eine Zuteilung eines Users zu
// * einer Gruppe an
// * @param groupid ID der Gruppe
// * userid ID des Users
// * @return ID der Zuteilung oder false im Fehlerfall
// ***************************************************
function createGroupMember($groupid, $userid)
{
$qry = 'BEGIN; INSERT INTO public.mdl_groups_members(groupid, userid) VALUES('.
$this->addslashes($groupid).','.$this->addslashes($userid).');';
if(pg_query($this->conn_moodle, $qry))
{
$qry = "SELECT currval('mdl_groups_members_id_seq') as id";
if($result = pg_query($this->conn_moodle, $qry))
{
if($row = pg_fetch_object($result))
{
pg_query($this->conn_moodle, 'COMMIT;');
return $row->id;
}
else
{
pg_query($this->conn_moodle, 'ROLLBACK;');
$this->errormsg = 'Fehler beim Auslesen der Sequence';
return false;
}
}
else
{
pg_query($this->conn_moodle, 'ROLLBACK;');
$this->errormsg = 'Fehler beim Auslesen der Sequence';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Anlegen der Zuteilung';
return false;
}
}
// ************************************************
// * Holt die ID einer MoodleGruppe
// * @param $mdl_course_id ID des Kurses
// * $gruppenbezeichnung Name der Gruppe
// * @return GruppenID wenn ok, false im Fehlerfall
// ************************************************
function getGroup($mdl_course_id, $gruppenbezeichnung)
{
$qry = "SELECT id FROM public.mdl_groups WHERE courseid='".addslashes($mdl_course_id)."' AND name='".addslashes($gruppenbezeichnung)."'";
if($result = pg_query($this->conn_moodle, $qry))
{
if($row = pg_fetch_object($result))
{
return $row->id;
}
else
{
$this->errormsg = "Gruppe wurde nciht gefunden $gruppenbezeichnung";
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden einer Gruppe';
return false;
}
}
// ****************************************************
// * Legt eine MoodleGruppe zu einem Kurs an
// * @param mdl_course_id ID des MoodleKuses
// * gruppenbezeichnung Bezeichnung der Gruppe
// * @return ID der Gruppe wenn ok, false im Fehlerfall
// ****************************************************
function createGroup($mdl_course_id, $gruppenbezeichnung)
{
$qry = 'BEGIN;INSERT INTO public.mdl_groups(courseid, name, description) VALUES('.
$this->addslashes($mdl_course_id).','.
$this->addslashes($gruppenbezeichnung).','.
$this->addslashes($gruppenbezeichnung).');';
if(pg_query($this->conn_moodle, $qry))
{
$qry = "SELECT currval('mdl_groups_id_seq') as id";
if($result = pg_query($this->conn_moodle, $qry))
{
if($row = pg_fetch_object($result))
{
pg_query($this->conn_moodle, 'COMMIT;');
return $row->id;
}
else
{
pg_query($this->conn_moodle, 'ROLLBACK;');
$this->errormsg = 'Fehler beim Auslesen der GruppenSequence';
return false;
}
}
else
{
pg_query($this->conn_moodle, 'ROLLBACK;');
$this->errormsg = 'Fehler beim Auslesen der GruppenSequence';
return false;
}
}
else
{
$this->errormsgr ='Fehler beim Anlegen der Gruppe';
return false;
}
}
// ************************************************
// * wenn $var '' ist wird "null" zurueckgegeben
// * wenn $var !='' ist werden datenbankkritische
+1
View File
@@ -27,6 +27,7 @@ require_once('../vilesci/config.inc.php');
require_once('../include/moodle_course.class.php');
require_once('../include/moodle_user.class.php');
require_once('../include/studiensemester.class.php');
require_once('../include/studiengang.class.php');
if(!$conn = pg_pconnect(CONN_STRING))
die('Fehler beim Connecten zur DB');