Пример #1
0
$PAGE->navbar->add(get_string('gradereport', 'grades'));
echo $OUTPUT->header();
echo $OUTPUT->heading($emarking->name);
// Print eMarking tabs.
echo $OUTPUT->tabtree(emarking_tabs($context, $cm, $emarking), "outcomesreport");
list($gradingmanager, $gradingmethod, $definition, $rubriccontroller) = emarking_validate_rubric($context, false, false);
$totalsubmissions = $DB->count_records_sql("\n                SELECT COUNT(DISTINCT s.id) AS total\n                FROM {emarking_submission} s\n                INNER JOIN {emarking_draft} d\n                    ON (s.emarking = :emarking AND d.status >= " . EMARKING_STATUS_PUBLISHED . " AND d.submissionid = s.id AND d.grade > 0 AND d.qualitycontrol=0)\n                ", array('emarking' => $emarking->id));
if (!$totalsubmissions || $totalsubmissions == 0) {
    echo $OUTPUT->notification(get_string('nosubmissionspublished', 'mod_emarking'), 'notifyproblem');
    echo $OUTPUT->footer();
    die;
}
$emarkingids = '' . $emarking->id;
$extracategory = optional_param('categories', 0, PARAM_INT);
$parallels = emarking_get_parallel_courses($course);
$emarkingsform = new emarking_gradereport_form(null, array('course' => $course, 'cm' => $cm, 'parallels' => $parallels, 'id' => $emarkingids));
$emarkingsform->display();
$totalemarkings = 1;
if ($parallels && count($parallels) > 0) {
    foreach ($parallels as $pcourse) {
        $assid = '';
        if ($emarkingsform->get_data() && property_exists($emarkingsform->get_data(), "emarkingid_{$pcourse->id}")) {
            $varname = 'emarkingid_' . $pcourse . '->id';
            $assid = $emarkingsform->get_data()->{$varname};
            if ($assid > 0) {
                $emarkingids .= ',' . $assid;
                $totalemarkings++;
            }
        }
    }
}
Пример #2
0
$totalsubmissions = $DB->count_records_sql("\n\t\tSELECT COUNT(e.id) AS total \n\t\tFROM {grade_items} AS gi\n\t\tINNER JOIN {emarking_submission} AS e ON (gi.iteminstance = ? and gi.itemtype = 'mod' and gi.itemmodule = 'emarking' AND gi.iteminstance = e.emarking)\n\t\tWHERE e.grade >= 0 AND e.status >= " . EMARKING_STATUS_RESPONDED, array($emarking->id));
if (!$totalsubmissions || $totalsubmissions == 0) {
    echo $OUTPUT->notification(get_string('nosubmissionsgraded', 'mod_emarking'), 'notifyproblem');
    echo $OUTPUT->footer();
    die;
}
$emarkingids = '' . $emarking->id;
$extracategory = optional_param('categories', 0, PARAM_INT);
// check for parallel courses
if ($CFG->emarking_parallelregex) {
    $parallels = emarking_get_parallel_courses($course, $extracategory, $CFG->emarking_parallelregex);
} else {
    $parallels = false;
}
// Form that lets you choose if you want to add to the report the other courses
$emarkingsform = new emarking_gradereport_form(null, array('course' => $course, 'cm' => $cm, 'parallels' => $parallels, 'id' => $emarkingids));
$emarkingsform->display();
// Get the IDs from the parallel courses
$totalemarkings = 1;
if ($parallels && count($parallels) > 0) {
    foreach ($parallels as $pcourse) {
        $assid = '';
        if ($emarkingsform->get_data() && property_exists($emarkingsform->get_data(), "emarkingid_{$pcourse->id}")) {
            eval("\$assid = \$emarkingsform->get_data()->emarkingid_{$pcourse->id};");
            if ($assid > 0) {
                $emarkingids .= ',' . $assid;
                $totalemarkings++;
            }
        }
    }
}
Пример #3
0
function get_efficiency($cmid, $emarkingid, $extracategory, $ids)
{
    global $DB, $CFG;
    if (!($emarking = $DB->get_record('emarking', array('id' => $emarkingid)))) {
        print_error('Prueba inválida');
    }
    if (!($cm = get_coursemodule_from_id('emarking', $cmid))) {
        print_error('Módulo inválido');
    }
    // Validate course
    if (!($course = $DB->get_record('course', array('id' => $emarking->course)))) {
        print_error('Curso inválido');
    }
    // Getting context
    $context = context_module::instance($cmid);
    $emarkingids = '' . $emarking->id;
    $extracategory = optional_param('categories', 0, PARAM_INT);
    // check for parallel courses
    if ($CFG->emarking_parallelregex) {
        $parallels = emarking_get_parallel_courses($course, $extracategory, $CFG->emarking_parallelregex);
    } else {
        $parallels = false;
    }
    // Form that lets you choose if you want to add to the report the other courses
    $emarkingsform = new emarking_gradereport_form(null, array('course' => $course, 'cm' => $cm, 'parallels' => $parallels, 'id' => $emarkingids));
    // Get the IDs from the parallel courses
    $totalemarkings = 1;
    if ($parallels && count($parallels) > 0) {
        foreach ($parallels as $pcourse) {
            $assid = '';
            if ($emarkingsform->get_data() && property_exists($emarkingsform->get_data(), "emarkingid_{$pcourse->id}")) {
                eval("\$assid = \$emarkingsform->get_data()->emarkingid_{$pcourse->id};");
                if ($assid > 0) {
                    $emarkingids .= ',' . $assid;
                    $totalemarkings++;
                }
            }
        }
    }
    // Gets the stats by criteria
    $sqlcriteria = '
				SELECT co.fullname,
				co.id AS courseid,
				s.emarking AS emarkingid,
				a.id AS criterionid,
				a.description,
				round(avg(b.score),1) AS avgscore,
				round(stddev(b.score),1) AS stdevscore,
				round(min(b.score),1) AS minscore,
				round(max(b.score),1) AS maxscore,
				round(avg(b.score)/t.maxscore,1) AS effectiveness,
				t.maxscore AS maxcriterionscore
	
				FROM {emarking_submission} AS s
				INNER JOIN {emarking} AS e ON s.emarking=e.id
				INNER JOIN {course_modules} AS cm ON e.id=cm.instance
				INNER JOIN {context} AS c ON cm.id=c.instanceid
				INNER JOIN {grading_areas} AS ga ON c.id=ga.contextid
				INNER JOIN {grading_definitions} AS gd ON ga.id=gd.areaid
				INNER JOIN {grading_instances} AS i ON (gd.id=i.definitionid  AND s.emarking in ( ' . $ids . ' ) AND s.status >= 20)
				INNER JOIN {gradingform_rubric_fillings} AS f ON i.id=f.instanceid
				INNER JOIN {gradingform_rubric_criteria} AS a ON f.criterionid=a.id
				INNER JOIN {gradingform_rubric_levels} AS b ON f.levelid=b.id
				INNER JOIN (SELECT s.id AS emarkingid,
				            a.id AS criterionid,
				            max(l.score) AS maxscore
				            FROM {emarking} AS s
							INNER JOIN {course_modules} AS cm ON (s.id = cm.instance)
							INNER JOIN {context} AS c ON (c.instanceid = cm.id)
							INNER JOIN {grading_areas} AS ar ON (ar.contextid = c.id)
							INNER JOIN {grading_definitions} AS d ON (ar.id = d.areaid)
							INNER JOIN {gradingform_rubric_criteria} AS a ON (d.id = a.definitionid)
							INNER JOIN {gradingform_rubric_levels} AS l ON (a.id = l.criterionid)
							GROUP BY s.id, criterionid) AS t ON (s.emarking=t.emarkingid AND a.id = t.criterionid)
				INNER JOIN {course} AS co ON e.course=co.id
				GROUP BY s.emarking,a.id
				ORDER BY a.description,emarkingid';
    $criteriastats = $DB->get_recordset_sql($sqlcriteria);
    $forcount = $DB->get_recordset_sql($sqlcriteria);
    // run the sql again to get the count
    $count = iterator_count($forcount);
    $parallels_names_criteria = '';
    $effectivenessnum = 0;
    $effectivenesscriteria = array();
    $effectivenesseffectiveness = array();
    $lastdescription = random_string();
    $lastcriteria = '';
    $parallels_ids = array();
    foreach ($criteriastats as $stats) {
        if (!isset($parallels_ids[$stats->courseid])) {
            $parallels_names_criteria .= "'{$stats->fullname} (N={$count})',";
            $parallels_ids[$stats->courseid] = $stats->fullname;
        }
        $description = trim(preg_replace('/\\s\\s+/', ' ', $stats->description));
        $criteriaid = $stats->criterionid;
        // FIXME arreglar cuando el nombre de 2 descripciones es la misma
        if ($lastdescription !== $description) {
            $effectivenesscriteria[$effectivenessnum] = $description;
            $lastdescription = $description;
        }
        $effectivenesseffectiveness[$effectivenessnum] = $stats->effectiveness;
        $effectivenessnum++;
    }
    $effectiveness[0] = $effectivenesscriteria;
    $effectiveness[1] = $effectivenesseffectiveness;
    return $effectiveness;
}