コード例 #1
0
 public function test_questionnaire_get_user_grades()
 {
     $this->resetAfterTest();
     $this->setAdminUser();
     $user = $this->getDataGenerator()->create_user();
     $course = $this->getDataGenerator()->create_course();
     $generator = $this->getDataGenerator()->get_plugin_generator('mod_questionnaire');
     $questionnaire = $generator->create_test_questionnaire($course);
     // Test for an array when user specified.
     $grades = questionnaire_get_user_grades($questionnaire, $user->id);
     $this->assertInternalType('array', $grades);
     // Test for an array when no user specified.
     $grades = questionnaire_get_user_grades($questionnaire);
     $this->assertInternalType('array', $grades);
 }
コード例 #2
0
ファイル: lib.php プロジェクト: achocoza/moodle26
/**
 * Update grades by firing grade_updated event
 *
 * @param object $assignment null means all assignments
 * @param int $userid specific user only, 0 mean all
 */
function questionnaire_update_grades($questionnaire = null, $userid = 0, $nullifnone = true)
{
    global $CFG, $DB;
    if (!function_exists('grade_update')) {
        // Workaround for buggy PHP versions.
        require_once $CFG->libdir . '/gradelib.php';
    }
    if ($questionnaire != null) {
        if ($graderecs = questionnaire_get_user_grades($questionnaire, $userid)) {
            $grades = array();
            foreach ($graderecs as $v) {
                if (!isset($grades[$v->userid])) {
                    $grades[$v->userid] = new stdClass();
                    if ($v->rawgrade == -1) {
                        $grades[$v->userid]->rawgrade = null;
                    } else {
                        $grades[$v->userid]->rawgrade = $v->rawgrade;
                    }
                    $grades[$v->userid]->userid = $v->userid;
                } else {
                    if (isset($grades[$v->userid]) && $v->rawgrade > $grades[$v->userid]->rawgrade) {
                        $grades[$v->userid]->rawgrade = $v->rawgrade;
                    }
                }
            }
            questionnaire_grade_item_update($questionnaire, $grades);
        } else {
            questionnaire_grade_item_update($questionnaire);
        }
    } else {
        $sql = "SELECT q.*, cm.idnumber as cmidnumber, q.course as courseid\n                  FROM {questionnaire} q, {course_modules} cm, {modules} m\n                 WHERE m.name='questionnaire' AND m.id=cm.module AND cm.instance=q.id";
        if ($rs = $DB->get_recordset_sql($sql)) {
            foreach ($rs as $questionnaire) {
                if ($questionnaire->grade != 0) {
                    questionnaire_update_grades($questionnaire);
                } else {
                    questionnaire_grade_item_update($questionnaire);
                }
            }
            $rs->close();
        }
    }
}
コード例 #3
0
/**
 * Update grades by firing grade_updated event
 *
 * @param object $assignment null means all assignments
 * @param int $userid specific user only, 0 mean all
 */
function questionnaire_update_grades($questionnaire = null, $userid = 0, $nullifnone = true)
{
    global $CFG;
    if (!function_exists('grade_update')) {
        //workaround for buggy PHP versions
        require_once $CFG->libdir . '/gradelib.php';
    }
    if ($questionnaire != null) {
        if ($grades = questionnaire_get_user_grades($questionnaire, $userid)) {
            foreach ($grades as $k => $v) {
                if ($v->rawgrade == -1) {
                    $grades[$k]->rawgrade = null;
                }
                $grades[$k]->feedback = '';
                $grades[$k]->format = '';
            }
            questionnaire_grade_item_update($questionnaire, $grades);
        } else {
            questionnaire_grade_item_update($questionnaire);
        }
    } else {
        $sql = "SELECT q.*, cm.idnumber as cmidnumber, q.course as courseid\n                  FROM {$CFG->prefix}questionnaire q, {$CFG->prefix}course_modules cm, {$CFG->prefix}modules m\n                 WHERE m.name='questionnaire' AND m.id=cm.module AND cm.instance=q.id";
        if ($rs = get_recordset_sql($sql)) {
            while ($questionnaire = rs_fetch_next_record($rs)) {
                if ($questionnaire->grade != 0) {
                    questionnaire_update_grades($questionnaire);
                } else {
                    questionnaire_grade_item_update($questionnaire);
                }
            }
            rs_close($rs);
        }
    }
}