From 474e03260b8a96edee72db0c117a38440a09b241 Mon Sep 17 00:00:00 2001 From: Karl Burkhart Date: Wed, 10 Apr 2013 12:21:10 +0000 Subject: [PATCH] =?UTF-8?q?neue=20Moodle=202.4=20Kurse=20k=C3=B6nnen=20auf?= =?UTF-8?q?=202=20arten=20gel=C3=B6scht=20werden,=201.=20nur=20der=20eintr?= =?UTF-8?q?ag=20aus=20der=20zwischentabelle=20oder=202.=20der=20eintrag=20?= =?UTF-8?q?aus=20der=20zwischentabelle=20und=20per=20webservice=20der=20mo?= =?UTF-8?q?odle=20kurs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/moodle.class.php | 130 ++++++++++++++++- include/moodle24_course.class.php | 60 ++------ include/moodle24_user.class.php | 2 +- include/tw/vilesci_menu_main.inc.php | 1 + vilesci/moodle/kurs_verwaltung24.php | 201 +++++++++++++++++++++++++++ 5 files changed, 341 insertions(+), 53 deletions(-) create mode 100644 vilesci/moodle/kurs_verwaltung24.php diff --git a/include/moodle.class.php b/include/moodle.class.php index 3c5f2f17e..ce8b3f7ad 100644 --- a/include/moodle.class.php +++ b/include/moodle.class.php @@ -15,7 +15,8 @@ * 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 + * Authors: Andreas Oesterreicher + * Karl Burkhart */ require_once(dirname(__FILE__).'/basis_db.class.php'); @@ -41,10 +42,44 @@ class moodle extends basis_db */ 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 @@ -93,9 +128,98 @@ class moodle extends basis_db { $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 diff --git a/include/moodle24_course.class.php b/include/moodle24_course.class.php index 44e622371..0a39dd37b 100644 --- a/include/moodle24_course.class.php +++ b/include/moodle24_course.class.php @@ -629,63 +629,25 @@ class moodle24_course extends basis_db /** - * Loescht einen Moodle Course im Moodel und in der DB + * Loescht einen Moodle Course im Moodel + * Wenn erfolgreich gelöscht wird kein Wert in response zurückgegeben * @param mdl_course_id - * @param bServerinfo Detail xmlrpc Debug informationen * - * @return objekt mit den Noten der Teilnehmer dieses Kurses - * - * TODO anpassung moodle 2.4 eventuell Trennung in moodle.class */ - public function deleteKurs($mdl_course_id=null,$moodle_id=null,$bServerinfo=false) + public function deleteKurs($mdl_course_id) { - $this->errormsg=''; - $this->result=array(); - - if (!is_null($mdl_course_id)) - $this->mdl_course_id=$mdl_course_id; + $client = new SoapClient($this->serverurl); + $data = array($mdl_course_id); - if (!is_null($moodle_id)) - $this->moodle_id=$moodle_id; - - if (is_null($this->mdl_course_id) || empty($this->mdl_course_id) || !is_numeric($this->mdl_course_id)) + $response = $client->core_course_delete_courses(array($mdl_course_id)); + if(isset($response[0])) { - $this->errormsg='Moodle Kurs ID fehlt'; + $this->errormsg = $response[0]; return false; - } + } - // Variable Daten Initialisieren - $args=array(); - $args['CourseID']=$this->mdl_course_id; - $method = "DeleteCourseByID"; - - if (!$result=$this->callMoodleXMLRPC($method,$args,$bServerinfo)) - return false; - - if (isset($result[1])) - $this->errormsg=$result[1]; - - if ($result[0]==1 || !$this->load($this->mdl_course_id)) // Methodenaufruf erfolgreich - { - $qry = "DELETE FROM lehre.tbl_moodle WHERE mdl_course_id='". addslashes($this->mdl_course_id) ."' "; - if (!is_null($this->moodle_id) && $this->moodle_id!='') - $qry.= " and moodle_id='".addslashes($this->moodle_id)."'"; - if(!$this->db_query($qry)) - { - $this->errormsg=$this->errormsg." Moodlekurs $mdl_course_id wurde NICHT gelöscht in Lehre. "; - return false; - } - } - else // Result = 0 ein Fehler im RFC wurde festgestellt - { - $this->errormsg=(isset($result[1])?$result[1]:" - Fehler beim Kurs ".$this->mdl_course_id." löschen "); - return false; - } - - if (empty($this->errormsg)) - $this->errormsg.="Moodlekurs ".$this->mdl_course_id." wurde gelöscht."; - return true; + return true; - } + } } diff --git a/include/moodle24_user.class.php b/include/moodle24_user.class.php index be415d905..48b7c9d9d 100644 --- a/include/moodle24_user.class.php +++ b/include/moodle24_user.class.php @@ -501,7 +501,7 @@ class moodle24_user extends basis_db $user->email = $username.'@'.DOMAIN; $user->auth = 'ldap'; $user->idnumber = $username; - $user->lang = 'de'; + $user->lang = 'en'; $client = new SoapClient($this->serverurl); $response = $client->core_user_create_users(array($user)); diff --git a/include/tw/vilesci_menu_main.inc.php b/include/tw/vilesci_menu_main.inc.php index 60060c7ce..4d9f65e2f 100644 --- a/include/tw/vilesci_menu_main.inc.php +++ b/include/tw/vilesci_menu_main.inc.php @@ -74,6 +74,7 @@ $menu=array 'Account'=>array('name'=>'Account', 'link'=>'moodle/account_verwaltung.php', 'target'=>'main'), 'Zuteilung Verwalten'=>array('name'=>'Zuteilung Verwalten', 'link'=>'moodle/zuteilung_verwaltung.php', 'target'=>'main'), 'Account24'=>array('name'=>'Account Moodle 2.4', 'link'=>'moodle/account_verwaltung24.php', 'target'=>'main'), + 'Kursverwaltung24'=>array('name'=>'Kurs entfernen 2.4', 'link'=>'moodle/kurs_verwaltung24.php', 'target'=>'main'), ), diff --git a/vilesci/moodle/kurs_verwaltung24.php b/vilesci/moodle/kurs_verwaltung24.php new file mode 100644 index 000000000..3a4989ef5 --- /dev/null +++ b/vilesci/moodle/kurs_verwaltung24.php @@ -0,0 +1,201 @@ + + */ + +/* +* Dieses Programm listet nach Selektinskreterien alle Moodelkurse zu einem Studiengang auf. +* Fuer jede MoodleID werden die Anzahl Benotungen, und erfassten sowie angelegte Zusaetze angezeigt. +* Jeder der angezeigten Moodle IDs kann geloescht werden nach bestaetigung eines PopUp Fenster. +*/ + + require_once('../../config/vilesci.config.inc.php'); + require_once('../../include/functions.inc.php'); + require_once('../../include/globals.inc.php'); + include_once('../../include/moodle.class.php'); + + require_once('../../include/studiensemester.class.php'); + require_once('../../include/studiengang.class.php'); + require_once('../../include/lehrveranstaltung.class.php'); + require_once('../../include/lehreinheit.class.php'); + require_once('../../include/moodle24_course.class.php'); + + $message = ''; + $stsem = new studiensemester(); + if (!$stsem_aktuell = $stsem->getakt()) + $stsem_aktuell = $stsem->getaktorNext(); + + $studiensemester_kurzbz=(isset($_REQUEST['moodle_studiensemester'])?trim($_REQUEST['moodle_studiensemester']):$stsem_aktuell); + $studiengang_kz=(isset($_REQUEST['moodle_studiengang_kz'])?trim($_REQUEST['moodle_studiengang_kz']):''); + $method = (isset($_REQUEST['method'])?trim($_REQUEST['method']):''); + + if($method=='delete') + { + $moodle_id = isset($_REQUEST['moodle_id'])?$_REQUEST['moodle_id']:''; + + if($moodle_id != '') + { + // delete + $moodle = new moodle(); + $moodle->load($moodle_id); + $error = false; + + if(isset($_GET['all'])) + { + // mittels webservice moodlekurs + $moodle24 = new moodle24_course(); + if($moodle24->deleteKurs($moodle->mdl_course_id)) + $message = "Erfolgreich gelöscht"; + else + { + $message = $moodle24->errormsg; + $error = true; + } + } + // wenn webservice aufgerufen wurde und kein fehler beim löschen aufgetreten ist + if($error == false) + { + // Zuordnung löschen + if($moodle->deleteZuordnung($moodle->mdl_course_id)) + $message= "Erfolgreich gelöscht"; + else + $message ="Fehler beim Löschen aufgetreten"; + } + + } + else + $message = 'Ungültige Moodle ID übergeben'; + } + + echo ' + + + + + + + + Moodle - Kursverwaltung + + + + '; + + echo'

Moodle - Kursverwaltung

+
+ + + '; + + echo ' + +
Studiensemester: Studiengang:
'.$message.'
'; + + // Liste anzeigen nachdem der Anzeigenbutton gedrückt wurde oder nach löschen die Liste wieder neu anzeigen + if(isset($_REQUEST ['mdl_anzeigen']) || $method!='') + { + $moodle = new moodle(); + $moodle->getAllMoodleForStudiengang($studiengang_kz, $studiensemester_kurzbz); + + echo ' + + + + + + + + + + + + '; + + foreach($moodle->result as $row) + { + $lv = new lehrveranstaltung($row->lehrveranstaltung_id); + $lehreinheit = ''; + // wenn LE übergeben lade dazugehörige LV + if($row->lehreinheit_id != '') + { + $le = new lehreinheit(); + $le->loadLE($row->lehreinheit_id); + $lv->load($le->lehrveranstaltung_id); + + // alle LEs von Moodlekurs holen + $moodle_help = new moodle(); + $help = $moodle_help->getLeFromCourse($row->mdl_course_id); + $count = 0; + foreach($help as $h) + { + $count++; + $lehreinheit .=$h; + if($count!=count($help)) + $lehreinheit .=', '; + } + } + + echo ' + + + + + + + + + '; + } + echo '
LehrveranstaltungLehreinheit + KurzbzMoodle IDSemesterVersion
'.$lv->bezeichnung.''.$lehreinheit.''.$lv->kurzbz.''.$row->mdl_course_id.''.$lv->semester.''.$row->moodle_version.'
'; + } + + echo '' + +?>