Example #1
0
// Las instancias que almacenará dependerá de la configuración de la actividad (agrupamientos)
$activities = array();
// Array de dos dimensiones [usuario][actividad];
// Contendrá código HTML que se mostrará en las celdas de la tabla de calificaciones.
// Su contenido dependerá de los privilegios del usuario.
$content_cells = array();
$evalcomix = evalcomix::fetch(array('courseid' => $courseid));
$showmessage = false;
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////// Se comprueba si hay que pasar notas al libro /////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// prints paging bar at top for large pages
$studentsperpage = $report_evalcomix->studentsperpage;
$numusers = $report_evalcomix->get_numusers();
include_once $CFG->dirroot . '/blocks/evalcomix/classes/evalcomix_tasks.php';
$tasks = evalcomix_tasks::get_tasks_by_courseid($courseid);
//if (has_capability('block/evalcomix:edit',$context, $USER->id) && ($grd == 1 || $grd == 2 || $grd == 3)){
if (has_capability('moodle/block:edit', $context, $USER->id) && ($grd == 1 || $grd == 2 || $grd == 3)) {
    $blockdb = $DB->get_records('modules', array());
    $cmdb = $DB->get_records('course_modules', array('course' => $courseid));
    foreach ($blockdb as $b) {
        $mod = $b->id;
        $blocks[$mod] = $b->name;
    }
    foreach ($cmdb as $cm) {
        $mod = $cm->module;
        $module = $blocks[$mod];
        $instance = $cm->instance;
        $cms[$module][$instance] = $cm->id;
    }
    include_once $CFG->dirroot . '/blocks/evalcomix/classes/evalcomix_grades.php';
 /**
  * @param int $courseid
  * @return mixed array of moodle activities configurated by evalcomix. 
  * Array key is evalcomix_tasks ID and Array value is activity name
  */
 public static function get_moodle_course_tasks($courseid)
 {
     global $DB;
     $evalcomix_tasks = evalcomix_tasks::get_tasks_by_courseid($courseid);
     //get_course_tasks($courseid); lo he cambiado por el tema de la duplicacion de funciones, probar si va bien
     $result = array();
     foreach ($evalcomix_tasks as $task) {
         $cm = $DB->get_record('course_modules', array('id' => $task->instanceid));
         if ($cm) {
             $module = evalcomix_tasks::get_type_task($cm->id);
             $task_moodle = $DB->get_record($module, array('id' => $cm->instance));
             $result[] = array('id' => $task->id, 'nombre' => $task_moodle->name);
         }
     }
     return $result;
 }
            $this->taskid = 0;
        }
        //Por si queremos crear una instancia vacía (para usar evalcomix_object::fetch_all_helper es necesario)
        if (is_numeric($assessorid) && !is_float($assessorid) && $assessorid > '0') {
            //if($assessorid != '0'){
            $assessor = $DB->get_record('user', array('id' => $assessorid), '*', MUST_EXIST);
            $this->assessorid = $assessor->id;
        } else {
            $this->assessorid = 0;
        }
        //Por si queremos crear una instancia vacía (para usar evalcomix_object::fetch_all_helper es necesario)
        if (is_numeric($studentid) && !is_float($studentid) && $studentid > '0') {
            //if($studentid != '0'){
            $student = $DB->get_record('user', array('id' => $studentid), '*', MUST_EXIST);
            $this->studentid = $student->id;
        } else {
            $this->studentid = 0;
        }
    }
    /**
     * Updates this object in the Database, based on its object variables. ID must be set.
     * @param string $source from where was the object updated (mod/forum, manual, etc.)
     * @return boolean success
     */
    public function update()
    {
        global $DB;
        if (empty($this->id)) {
            debugging('Can not update assessment object, no id!');
            return false;
        }
        $this->timemodified = time();
        $data = $this->get_record_data();
        $DB->update_record($this->table, $data);
        $this->notify_changed(false);
        return true;
    }
    /**
     * Updates this object in the Database, based on its object variables. ID must be set.
     * @param string $source from where was the object updated (mod/forum, manual, etc.)
     * @return boolean success
     */
    /*public function delete(){
		global $DB;
        if (empty($this->id)) {
            debugging('Can not delete assessment object, no id!');
            return false;
        }
				
        //$data = $this->get_record_data();
		
        $DB->delete_records($this->table, array('id' => $this->id));
        $this->notify_changed(false);
        return true;
	}*/
    /**
     * Calculate evalcomix final grade.
     * @static abstract
     * @param array $users
	 * @param int $courseid
     * @return array $finalgrades with two dimensions [$taskinstance][$userid] that contains the finalgrades.
     */
    public static function get_final_grade($courseid, $users)
    {
        global $CFG, $COURSE;
        include_once $CFG->dirroot . '/blocks/evalcomix/classes/evalcomix_tasks.php';
        include_once $CFG->dirroot . '/blocks/evalcomix/classes/evalcomix.php';
        //$coursecontext = get_context_instance(CONTEXT_COURSE, $courseid);
        $coursecontext = context_course::instance($courseid);
        $finalgrades = array();
        $tasks = evalcomix_tasks::get_tasks_by_courseid($courseid);
        $now = time();
        foreach ($tasks as $task) {
            $teacherweight = 0;
            $selfweight = 0;
            $peerweight = 0;
            $params = array('taskid' => $task->id);
            $modes = evalcomix_modes::fetch_all($params);
            if ($modes) {
                //Obtains activity´s weights
                foreach ($modes as $mode) {
                    switch ($mode->modality) {
                        case 'teacher':
                            $teacherweight = $mode->weighing;
                            break;
                        case 'self':
                            $selfweight = $mode->weighing;
                            break;
                        case 'peer':
                            $peerweight = $mode->weighing;
                            break;
                        default:
                    }
 /**
  * Get tasks from a not existing course
  */
 public function test_gettasksbycourseid_fail()
 {
     $result = evalcomix_tasks::get_tasks_by_courseid('30');
     $zero = sizeof($result);
     $this->assertEqual($zero, '0');
     unset($result, $zero);
 }