Hier eine Frage an die Skript-Checker unter euch:

Unser moodle liegt außerhalb bei Belwue, im pädagogischen Netz der Schule
betreiben wir linuxmuster.net 6.1.
Wir möchten beide Systeme gerne miteinander verknüpfen, wie es hier
dokumentiert ist:
http://www.linuxmuster.net/wiki/anwenderwiki:moodle:moodle2_automatische_ein
schreibung

Unsere Schüler und Lehrer können sich im moodle bereits über ldap
authentifizieren. Was noch nicht klappt ist die automatische
Kurseinschreibung, trotz richtiger Syntax in der Kurs-ID. Das liegt meines
Erachtens daran, dass auf dem externen Belwue-Server noch nicht stündlich
das Sync-Skript aufgerufen wird. Einen cronjob kann ich dort ja auch nicht
einrichten.
Ich habe es nun so verstanden, dass ich einen Teil der Datei
".../moodle/enrol/openlml/cli/sync.php" in die Datei
".../moodle/admin/cron.php" einfügen muss.
Ich weiß nur nicht so recht, welchen Teil - dafür blicke ich die Skripte zu
wenig.

Kann mir jemand helfen? 

Vielen Dank
Holger Schmidt

Ich füge den momentanen Inhalt der beiden Dateien im folgenden an.

Bisher sieht die cron.php so aus:
<?php

// This file is part of Moodle - http://moodle.org/
//
// Moodle 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 3 of the License, or
// (at your option) any later version.
//
// Moodle 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 Moodle.  If not, see <http://www.gnu.org/licenses/>.

/**
 * Web cron
 *
 * This script looks through all the module directories for cron.php files
 * and runs them.  These files can contain cleanup functions, email
functions
 * or anything that needs to be run on a regular basis.
 *
 * This file is best run from cron on the host system (ie outside PHP).
 * It is strongly recommended to add password protection via admin settings.
 *
 * eg   wget -q -O /dev/null 'http:
*moodle.somewhere.edu/admin/cron.php?password=SeCreT666'
 *
 * It is also possible to use CLI script admin/cli/cron.php instead,
 * you can not call this script from command line any more.
 *
 * @package    core
 * @subpackage admin
 * @copyright  1999 onwards Martin Dougiamas  http://dougiamas.com
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */

if (defined('STDIN')) {
    fwrite(STDERR, "ERROR: This script no longer supports CLI, please use
admin/cli/cron.php instead\n");
    exit(1);
}

// This is a fake CLI script, it is a really ugly hack which emulates
// CLI via web interface, please do not use this hack elsewhere
define('CLI_SCRIPT', true);
define('WEB_CRON_EMULATED_CLI', 'defined'); // ugly ugly hack, do not use
elsewhere please
define('NO_OUTPUT_BUFFERING', true);

require('../config.php');
require_once($CFG->libdir.'/clilib.php');
require_once($CFG->libdir.'/cronlib.php');

// extra safety
\core\session\manager::write_close();

// check if execution allowed
if (!empty($CFG->cronclionly)) {
    // This script can only be run via the cli.
    print_error('cronerrorclionly', 'admin');
    exit;
}
// This script is being called via the web, so check the password if there
is one.
if (!empty($CFG->cronremotepassword)) {
    $pass = optional_param('password', '', PARAM_RAW);
    if ($pass != $CFG->cronremotepassword) {
        // wrong password.
        print_error('cronerrorpassword', 'admin');
        exit;
    }
}

// send mime type and encoding
@header('Content-Type: text/plain; charset=utf-8');

// we do not want html markup in emulated CLI
@ini_set('html_errors', 'off');

// execute the cron
cron_run();

Bisher sieht die cron.php so aus:
Welches sind die wichtigen Zeilen?
Sind noch weitere Anpassungen nötig?

<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle 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 3 of the License, or
// (at your option) any later version.
//
// Moodle 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 Moodle.  If not, see <http://www.gnu.org/licenses/>.

/**
 * CLI sync for full OpenLML synchronisation.
 *
 * This script is meant to be called from a cronjob to sync moodle with the
Open LML
 * server to pickup groups as moodle global groups (cohorts).
 *
 * Sample cron entry:
 * # 5 minutes past every full hour
 * 5 * * * * $sudo -u www-data /usr/bin/php
/var/www/moodle/enrol/openlml/cli/sync.php
 *
 * Notes:
 *   - it is required to use the web server account when executing PHP CLI
scripts
 *   - you need to change the "www-data" to match the apache user account
 *   - use "su" if "sudo" not available
 *   - If you have a large number of users, you may want to raise the memory
limits
 *     by passing -d momory_limit=256M
 *   - For debugging & better logging, you are encouraged to use in the
command line:
 *     -d log_errors=1 -d error_reporting=E_ALL -d display_errors=0 -d
html_errors=0
 *
 * @package    enrol
 * @subpackage openlml
 * @author     Frank Schütte - based on code of ldap enrol and
sync_cohorts.php
 * @copyright  2012 Frank Schütte <fschu...@gymnasium-himmelsthuer.de>
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */

define('CLI_SCRIPT', true);

require(dirname(dirname(dirname(dirname(__FILE__)))).'/config.php');
require_once($CFG->libdir.'/clilib.php');

// Now get cli options.
list($options, $unrecognized) = cli_get_params(array('help'=>false),
array('h'=>'help'));

if ($unrecognized) {
    $unrecognized = implode("\n  ", $unrecognized);
    cli_error(get_string('cliunknownoption', 'admin', $unrecognized));
}

if ($options['help']) {
    $help =
    "Execute enrol sync with external Open LML server.
The enrol_openlml plugin must be enabled and properly configured.

Options:
-h, --help            Print out this help

Example:
\$sudo -u www-data /usr/bin/php enrol/openlml/cli/sync.php

Sample cron entry:
# 5 minutes past every full hour
5 * * * * \$sudo -u www-data /usr/bin/php
/var/www/moodle/enrol/openlml/cli/sync.php
";

    echo $help;
    die;
}

// Ensure errors are well explained.
//$CFG->debug = DEBUG_NORMAL;

// The enrolment depends on user synchronization via auth_ldap.
if (!is_enabled_auth('ldap')) {
    print('[AUTH LDAP] ' . get_string('pluginnotenabled', 'auth_ldap'));
    die;
}

if (!enrol_is_enabled('openlml')) {
    print('[ENROL OPENLML] '.get_string('pluginnotenabled',
'enrol_openlml'));
    die;
}

$result = 0;

// Update enrolments.
$enrol = enrol_get_plugin('openlml');
$result = $enrol->enrol_openlml_sync();

exit($result);

_______________________________________________
linuxmuster-user mailing list
linuxmuster-user@lists.linuxmuster.net
https://mail.lehrerpost.de/mailman/listinfo/linuxmuster-user

Antwort per Email an