Что мне делать с базой данных, когда я создаю курс по PHP с Moodle? - PullRequest
0 голосов
/ 26 марта 2012

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

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

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

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

Что такое 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;
    }       
}

1 Ответ

4 голосов
/ 26 марта 2012

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

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

...