Moodle, MRBS und force login

Ich will im nächsten Schuljahr den Block MRBS im Moodle meiner Schule als Klassenarbeitsordner zur Verfügung stellen. Dabei sollten die Schüler/innen nur sehen können, wann Sie eine KA schreiben und die Berichtsfunktion nutzen, die Lehrer/innen sollten diese eintragen können und die Eltern sollten möglichst ohne ihre Kinder nur lesenden Zugriff haben – nicht jedoch Zugriff auf die Berichtsfunktion.

Leider fehlt eine solche Funktion im Add-on Paket zu Moodle. Dabei ist diese leicht nachzurüsten:

Ich habe in der report.php nun das Folgende stehen (fett gedruckt sind meine Zugaben):

<?php
# $Id: report.php,v 1.8 2008/08/17 23:07:29 arborrow Exp $
require_once(„../../../config.php“); //for Moodle integration
require_once „grab_globals.inc.php“;
include „config.inc.php“;
include „functions.php“;
include „$dbsys.php“;

require_login();
#if ($CFG->forcelogin) {
# require_login();
# }

[…]

Das scheint reibungslos zu funktionieren. Wenn jemand auf den Schalter „Bericht“ klickt, dann zwingt Moodle die Person zum Login. Da der Bericht die Funktion ist, mit der im MySQL Dummheiten gemacht werden könnten, bin ich damit wohl vorerst auf der sicheren Seite.

Dieser Zwang zum Login könnte auch Teil der index.php werden, wenn MRBS für Fremde komplett unlesbar sein soll.

<?php

# $Id: index.php,v 1.2 2007/12/28 05:53:06 arborrow Exp $

# Index is just a stub to redirect to the appropriate view
# as defined in config.inc.php using the variable $default_view
# If $default_room is defined in config.inc.php then this will
# be used to redirect to a particular room.
require_once(„../../../config.php“);; //for Moodle integration
require_once „grab_globals.inc.php“;
include(„config.inc.php“);
include(„$dbsys.php“);
require_login();

[…]

Noch was: Der Gastzugang muss dann ausgeschaltet sein – sonst können Gäste weiterhin den Bericht aufrufen, da diese dem System gegenüber keine Fremden mehr sind. Soll auch das verhindert werden, dann darf die Berichtsfunktion nur dem Admin allein zugeteilt werden.

In die report.php gehört für diesen Fall der folgende Code:

[…]

#check if user is admin
if( ! getAuthorised(2))
{
showAccessDenied($day, $month, $year, $area);
exit();
}

[…]

Selbstverständlich darf das […] in den Codeschnipseln jeweils NICHT mitkopiert werden – das steht hier nur, damit klar wird, dass die jeweilige Datei noch weitergeht.

Mehr war das nicht. Garantie für die Sicherheit und Funktionsfähigkeit von MRBS und Moodle nach der Anwendung dieser Hacks übernehme ich selbstverständlich keine, die Anwendung erfolgt auf eigenes Risiko. Bei mir läuft der Hack seit Juli 2009 ohne Probleme – bei über 700 Buchungen im Monat.