Ошибка API базы данных Moodle: получить оценки за все разделы одного курса для одного пользователя

Я пытаюсь получить общие оценки, полученные конкретным пользователем, для определенного курса для всех разделов этого курса.

Следующий запрос работает и дает правильные результаты с mysql, но не с вызовами API базы данных.

$sql = "ВЫБЕРИТЕ d.section как section_id, d.name как section_name, sum(a.sumgrades) AS отмечает FROM mdl_quiz_attempts a, mdl_quiz b, mdl_course_modules c, mdl_course_sections d, ГДЕ a.userid=6 И b.course=4 И a.quiz=b.id И c.instance=a.quiz И c.module=14 И a.sumgrades>0 И d.id=c.section ГРУППИРОВАТЬ ПО d.section"

Я пробовал разные вызовы API, в основном я хотел бы

$DB->get_records_sql($sql);

Результаты вызовов API бессмысленны. Любое предложение?

P.S. Это мудл 2.2.


person iankit    schedule 31.10.2012    source источник


Ответы (2)


Я просто пытался сделать что-то подобное, только без получения разделов. Вам нужен только курс и идентификатор пользователя. Я надеюсь, это поможет вам.

global $DB;

// get all attempts & grades from a user from every quiz of one course 
$sql = "SELECT qa.id, qa.attempt, qa.quiz, qa.sumgrades AS grade, qa.timefinish, qa.timemodified, q.sumgrades, q.grade AS maxgrade
        FROM {quiz} q, {quiz_attempts} qa
        WHERE q.course=".$courseid."
        AND qa.quiz = q.id
        AND qa.userid = ".$userid."
        AND state = 'finished'
        ORDER BY qa.timefinish ASC"; 
$exams = $DB->get_records_sql($sql);

// calculate final grades from sum grades
$grades = array();
foreach($exams as $exam) {
    $grade = new stdClass;
    $grade->quiz = $exam->quiz;
    $grade->attempt = $exam->attempt;
    // sum to final
    $grade->finalgrade = $exam->grade * ($exam->maxgrade / $exam->sumgrades);
    $grade->grademax = $exam->maxgrade;
    $grade->timemodified = $exam->timemodified;
    array_push($grades, $grade);
} 
person Mike    schedule 31.10.2013
comment
Это не совсем то же самое, что получить сумму оценок за все разделы конкретного курса. Я хотел для каждого раздела. - person iankit; 03.01.2014

Это работает в последней версии Moodle. Мудл 2.9. Хотя я все еще открыт для лучшего решения, так как это действительно хакерский способ получить более глубокую аналитику о производительности пользователя.

person iankit    schedule 24.08.2015