Что мне делать с базой данных, когда я создаю курс на PHP с помощью Moodle?

Я проверил файл lib.php в папке курса, но не понимаю, что он делает, поэтому спрошу здесь.

Я пытаюсь создать курс с кодом PHP и MySQL, а не с API Moodle, подключившись к базе данных Moodle.

До сих пор я написал метод для создания курса путем вставки значений в таблицу mdl_course, но ничего не отображается на домашней странице курса. Он есть в базе данных, его можно зарегистрировать, а также он виден, но не отображается.

Я знаю, что курсы_разделы и курсы_категории затрагиваются при создании нового курса, но как рассчитать, какие значения вводить в каждое поле?

Что такое modinfo в mdl_course? Как мне это рассчитать?

Как рассчитать порядок сортировки в mdl_course? Прямо сейчас я нахожу категорию, в которой будет размещен курс, затем нахожу все порядки сортировки в этой категории, затем увеличиваю их на 1 в качестве нового значения порядка сортировки. Я не уверен, что это правильно.

Прямо сейчас это мой метод создания курса, очевидно, он далеко не завершен:

public function createCourse()
{
    //find category
    //calculate sortorder i.e. search in mdl course for all course with category. select sortorder MAX then ++
    require "/mysqli_connect.php";
    $t = time();
    $insert_q = "INSERT INTO mdl_course
    (category, fullname, shortname, summary, startdate, maxbytes, 
    timecreated, newsitems, numsections, expirythreshold) 
    VALUES (30, 'Fullname', 'shortname', 'This is the summary', '$t', 268435456, '$t', 5, 10, 864000)";

    $insert_r = mysqli_query($mysqli, $insert_q);
    $insert_n = mysqli_affected_rows($mysqli);
    //var_dump($insert_n);
    if($insert_n == 1)
    {
        return true; //insert successful
    }
    else
    {
        return false;
    }       
}

person Johnathan Au    schedule 26.03.2012    source источник
comment
покажите какой-нибудь код, пожалуйста, чтобы мы могли помочь.   -  person Rene Pot    schedule 26.03.2012


Ответы (1)


По моему опыту, Moodle — не самая простая и не самая прозрачная система для внедрения собственного кода. Отдельный объект имеет множество различных записей в таблице. Например, урок появится в элементах mdl_lessons, mdl_course_modules, mdl_grade и других. Я бы предложил использовать собственный API Moodle как можно чаще. Если вы не можете этого сделать, вы можете попробовать реконструировать его, добавив курс через стандартный интерфейс, а затем проверив свой журнал SQL, чтобы увидеть, какие записи в таблице он сделал.

Что касается запутанного беспорядка, который представляет собой modinfo, в этом сообщении на форумах moodle говорится что он генерируется автоматически. В этом сообщении объясняется, что после того, как все уроки и задания курса готовы, вы можете вызвать rebuild_course_cache($courseid) для повторного заполнения modinfo.

person octern    schedule 26.03.2012
comment
Мы создали курс онлайн-обучения, полностью подключившись к базе данных Moodle без использования API. Базу данных Moodle можно понять, как только вы поймете, что происходит, как вы сказали, реверс-инжиниринг. Просто нужно неделю или около того, чтобы понять. Но это должно быть в порядке, потому что, когда вы вставляете что-то в базу данных с помощью кода, Moodle обычно автоматически обнаруживает и обновляет себя соответствующим образом, но не все время, как в этом случае, когда я пытаюсь создать курс. - person Johnathan Au; 26.03.2012