@Hakhagmon

Как записать пользователя на курс в moodle?

Пытаюсь сделать скрипт на php, который выполняет sql запрос на добавления пользователя в определенный курс. А именно в таблицу 'mdl_user_enrolments', курс отображается на главной странице пользователя все как должно быть, но почему-то не отображается такой элемент курса как тестирование.
jkTiOmMBheY.jpg

В какую таблицу нужно еще что-то добавить?
  • Вопрос задан
  • 1920 просмотров
Решения вопроса 1
@Hakhagmon Автор вопроса
Спасибо alexdjachenko за наводку, сделал функцию, вот исходники

$userid = $_GET['userid'];  //id студента
$courseid =  $_GET['courseid']; //id курса


require_once('config.php');   
require_once('lib/setup.php');
function enroll_to_course($courseid, $userid, $roleid, $extendbase, $extendperiod)  {
    global $DB;

    $instance = $DB->get_record('enrol', array('courseid'=>$courseid, 'enrol'=>'manual'), '*', MUST_EXIST);
    $course = $DB->get_record('course', array('id'=>$instance->courseid), '*', MUST_EXIST);
    $today = time();
    $today = make_timestamp(date('Y', $today), date('m', $today), date('d', $today), 0, 0, 0);

    if(!$enrol_manual = enrol_get_plugin('manual')) { throw new coding_exception('Can not instantiate enrol_manual'); }
    switch($extendbase) {
        case 2:
            $timestart = $course->startdate;
            break;
        case 3:
        default:
            $timestart = $today;
            break;
    }  
    if ($extendperiod <= 0) { $timeend = 0; }   // extendperiod are seconds
    else { $timeend = $timestart + $extendperiod; }
    $enrolled = $enrol_manual->enrol_user($instance, $userid, $roleid, $timestart, $timeend);
    add_to_log($course->id, 'course', 'enrol', '../enrol/users.php?id='.$course->id, $course->id);

    return $enrolled;
}

enroll_to_course($courseid, $userid, 5, 3, 0); // 5,3,0 - $roleid, $extendbase, $extendperiod
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
alexdjachenko
@alexdjachenko
В Moodle довольно сложная структура БД, поэтому обращаться к ней через SQL-запросы не рекомендуется: для этого существует множество вариантов API от написания модуля подписки на php, до готового сценария синхронизации с SQL-базой данных.
В Вашем случае, проще всего создать промежуточную БД с таблицой подписок и натравить на неё плагин подписки на курс через внешнюю СУБД: от вас потребуется только добавлять в таблицу пары id пользователя и id курса, остальное Moodle сделает сам.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
28 мар. 2024, в 18:16
1000 руб./за проект
28 мар. 2024, в 18:15
90000 руб./за проект
28 мар. 2024, в 18:05
5000 руб./за проект