$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++; } } } }
$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++; } } } }
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; }