/**
  * Fetch all objects. Return the object with the required params
  */
 public function test_fetch_ok()
 {
     $params = array('instanceid' => '26');
     $result = evalcomix_tasks::fetch($params);
     $this->assertIsA($result, 'evalcomix_tasks');
     unset($params, $result);
 }
Exemplo n.º 2
0
function get_datas_profile_attribute($idCurso, $id_tarea, $id_modality, $id_students)
{
    global $CFG;
    include_once $CFG->dirroot . '/blocks/evalcomix/configeval.php';
    include_once $CFG->dirroot . '/blocks/evalcomix/classes/webservice_evalcomix_client.php';
    include_once $CFG->dirroot . '/blocks/evalcomix/classes/evalcomix_tasks.php';
    include_once $CFG->dirroot . '/blocks/evalcomix/classes/evalcomix_tool.php';
    $task = evalcomix_tasks::fetch(array('id' => $id_tarea));
    $module = evalcomix_tasks::get_type_task($task->instanceid);
    $modality = null;
    switch ($id_modality) {
        case 1:
            $modality = 'teacher';
            break;
        case 2:
            $modality = 'self';
            break;
        case 3:
            $modality = 'peer';
            break;
    }
    $xml = webservice_evalcomix_client::get_ws_tool_assessed($idCurso, $module, $task->instanceid, $id_students, $modality, MOODLE_NAME);
    $attributes_grade = evalcomix_tool::get_attributes_grade($xml);
    return $attributes_grade;
}
                     foreach ($assessments as $assessment) {
                         //If it is a self assessment
                         if ($assessment->studentid == $assessment->assessorid && $selfweight) {
                             $selfgrade = $assessment->grade;
                         } elseif (has_capability('moodle/grade:viewhidden', $coursecontext, $assessment->assessorid) && $teacherweight) {
                             $teachergrade += $assessment->grade;
                             $numteachers++;
                         } else {
                             //If it is a peer assessment
                             //Only gets grades when the assessment period in the task is finished
                             if ($modeEI = evalcomix_modes::fetch(array('taskid' => $assessment->taskid, 'modality' => 'peer'))) {
                                 $modeEItime = evalcomix_modes_time::fetch(array('modeid' => $modeEI->id));
                                 if ($modeEItime && $now > $modeEItime->timedue) {
                                     $peergrade += $assessment->grade;
                                     $numpeers++;
                                 }
                             }
                         }
                     }
                     //Calculates peergrade
                     if ($numpeers > 0) {
                         $peergrade = round($peergrade / $numpeers, 2);
                     }
                     //Calculates teachergrade
                     if ($numteachers > 0) {
                         $teachergrade = round($teachergrade / $numteachers, 2);
                     }
                     //Calcultes the total grade
                     //if($teachergrade != 0 || $selfgrade != 0 || $peergrade != 0){
                     if ($numteachers > 0 || $numpeers > 0 || $selfgrade != -1) {
                         if ($selfgrade == -1) {
                             $selfgrade = 0;
                         }
                         $totalgrade = $selfgrade * ($selfweight / 100) + $teachergrade * ($teacherweight / 100) + $peergrade * ($peerweight / 100);
                         //Add grade to array final grades
                         //$finalgrades[$task->id][$user->id] = $totalgrade;
                         $finalgrades[$task->instanceid][$user->id] = $totalgrade;
                     } else {
                         //There is peer assessments but assessment period hasn't finished
                         $finalgrades[$task->instanceid][$user->id] = -1;
                     }
                 }
             }
         }
     }
     return $finalgrades;
 }
 /**
  * Finds and returns all evalcomix_assessments instances.
  * @static abstract
  * @param array $params
Exemplo n.º 4
0
    }
    if ($configured) {
        include_once $CFG->dirroot . '/blocks/evalcomix/classes/evalcomix_tasks.php';
        include_once $CFG->dirroot . '/blocks/evalcomix/classes/webservice_evalcomix_client.php';
        include_once $CFG->dirroot . '/blocks/evalcomix/classes/evalcomix_assessments.php';
        include_once $CFG->dirroot . '/blocks/evalcomix/classes/evalcomix_allowedusers.php';
        include_once $CFG->dirroot . '/blocks/evalcomix/configeval.php';
        include_once $CFG->dirroot . '/blocks/evalcomix/assessment/lib.php';
        $mode = grade_report_evalcomix::get_type_evaluation($userid, $courseid);
        //Obtains required parameters to create details and evaluate links
        $type_instrument = evalcomix_tasks::get_type_task($cmid);
        $task = evalcomix_tasks::fetch(array('instanceid' => $cmid));
        $tool = get_evalcomix_modality_tool($courseid, $task->id, $mode);
        //$url_instrument = webservice_evalcomix_client::get_ws_assessment_form($tool->idtool, $courseid, $type_instrument, $cmid, $userid, $assessorid, $mode, MOODLE_NAME);
        $url_instrument = 'assessment_form.php?id=' . $courseid . '&a=' . $cmid . '&t=' . $tool->idtool . '&s=' . $userid . '&mode=assess';
        $task = evalcomix_tasks::fetch(array('instanceid' => $cmid));
        //Evaluate, Delete and Details buttons
        $evaluate = '<input type="image" value="' . get_string('evaluate', 'block_evalcomix') . '" title="' . get_string('evaluate', 'block_evalcomix') . '" style="width:16px;" src="../images/evaluar.png" onclick="javascript:url(\'' . $url_instrument . '\',\'' . $userid . '\',\'' . $cmid . '\',\'' . $page . '\',\'' . $courseid . '\');"/>';
        if ($assessmentgrade = evalcomix_assessments::fetch(array('taskid' => $task->id, 'assessorid' => $assessorid, 'studentid' => $userid))) {
            $evaluate = '<input type="image" value="' . get_string('evaluate', 'block_evalcomix') . '" title="' . get_string('evaluate', 'block_evalcomix') . '" style="width:16px;" src="../images/evaluar2.png" onclick="javascript:url(\'' . $url_instrument . '\',\'' . $userid . '\',\'' . $cmid . '\', \'' . $page . '\',\'' . $courseid . '\');"/>';
        }
        if ($showdetails) {
            $details = '<input type="image" value="' . get_string('details', 'block_evalcomix') . '" style="width:16px" title=' . get_string('details', 'block_evalcomix') . ' src="../images/lupa.png" onclick="javascript:urlDetalles(\'' . $CFG->wwwroot . '/blocks/evalcomix/assessment/details.php?cid=' . $context->id . '&itemid=' . $task->id . '&userid=' . $userid . '&popup=1\');"/>';
        } else {
            $details = '';
        }
        //Show user�s works
        $title = get_string('studentwork1', 'block_evalcomix') . get_string('studentwork2', 'block_evalcomix') . $cmid;
        echo ' <input type="image" value="' . $title . '" style="background-color:transparent;width:13px" title="' . $title . '" src="../images/task.png" 
						 onclick="javascript:urlDetalles(\'' . $CFG->wwwroot . '/blocks/evalcomix/assessment/user_activity.php?id=' . $userid . '&course=' . $courseid . '&mod=' . $cmid . '\');"/>';
        //If the $USER isn�t a teacher or admin evaluate if it should show Evaluate and Details buttons
Exemplo n.º 5
0
    /**
     * Builds and returns the headers of the table
     * @return string HTML
     */
    public function get_headers()
    {
        global $USER, $DB;
        if (!($course = $DB->get_record('course', array('id' => $this->courseid)))) {
            print_error('nocourseid');
        }
        $total = '';
        //To print  Lastname / Firstname
        $arrows = $this->get_sort_arrows();
        $header = '<tr style="border:1px solid #146C84;">					
						<th colspan="2">' . $arrows['studentname'] . '</th>';
        //print_r($this->gtree->levels[1]);
        $levels = $this->gtree->get_levels();
        foreach ($levels as $row) {
            foreach ($row as $element) {
                if ($element['object']->hidden == 1 && !$this->canviewhidden) {
                    continue;
                }
                if (isset($element['object']->itemnumber) && $element['object']->itemnumber == 0 && $element['object']->itemtype != 'manual') {
                    // Checks if it is an activity
                    if ($element['type'] == 'item') {
                        if ($cm = get_coursemodule_from_instance($element['object']->itemmodule, $element['object']->iteminstance, $this->courseid)) {
                            $cmid = $cm->id;
                            if (!($task = evalcomix_tasks::fetch(array('instanceid' => $cmid)))) {
                                $task = new evalcomix_tasks('', $cmid, 100, 50, time(), '1');
                                $task->insert();
                            } elseif ($task->visible == 0) {
                                continue;
                            }
                            $this->activities_configured[$cmid] = $this->configured_activity($cmid);
                            if (!$this->canviewhidden && !$this->activities_configured[$cmid]) {
                                continue;
                            }
                            if (property_exists($cm, 'availability')) {
                                $grey = false;
                                $hide = false;
                                global $USER;
                                $this->modinfo = new course_modinfo($course, $USER->id);
                                $instances = $this->modinfo->get_instances_of($element['object']->itemmodule);
                                if (!empty($instances[$element['object']->iteminstance])) {
                                    $cm_info = $instances[$element['object']->iteminstance];
                                    if (!$cm_info->uservisible) {
                                        // If there is 'availableinfo' text then it is only greyed
                                        // out and not entirely hidden.
                                        if (!$cm_info->availableinfo) {
                                            $hide = true;
                                        }
                                        $grey = true;
                                    }
                                }
                            }
                            if (!$this->canviewhidden) {
                                if (!empty($hide) || !empty($grey)) {
                                    continue;
                                }
                                $gm = true;
                                if (property_exists($cm, 'groupmembersonly') && !$cm->groupmembersonly) {
                                    $gm = false;
                                }
                                if ($gm) {
                                    $groupingid = $cm->groupingid;
                                    $intersect1 = array();
                                    $groups = $this->get_groupids($USER->id);
                                    if (isset($this->coursegroupings[$groupingid]) && is_array($groups)) {
                                        $grouping_groups = $this->coursegroupings[$groupingid];
                                        $intersect1 = array_intersect($groups, $grouping_groups);
                                    }
                                    if ($cm->groupingid && empty($intersect1)) {
                                        continue;
                                    }
                                    /*elseif(!$cm->groupingid && $groups == -1){
                                    			continue;
                                    		}*/
                                }
                            }
                            if ($cm->visible == 0 && !$this->canviewhidden) {
                                //if($cm->visible == 0){
                                continue;
                            }
                        }
                        $header .= '<th style="width:10em;border:1px solid #146C84;">' . $this->print_header_element($element, true);
                        $header .= '</th>';
                    }
                    // Checks if it is the total grade of the course
                    if ($element['type'] == 'courseitem') {
                        $total = '<th style="border:1px solid #146C84;">
								' . $this->print_header_element($element, true) . '</th>';
                    }
                }
            }
        }
        $header .= $total . '</tr>';
        return $header;
    }
Exemplo n.º 6
0
 /**
  * Obtains every id tasks for each course and returns them
  * @param int $courseid
  * @return array $ids with id tasks
  */
 public static function get_tasks_by_courseid($courseid)
 {
     global $DB;
     $tasks = array();
     $task = null;
     $i = 0;
     $cm = $DB->get_records('course_modules', array('course' => $courseid));
     foreach ($cm as $value) {
         $params = array('instanceid' => $value->id);
         $task = evalcomix_tasks::fetch($params);
         if ($task) {
             //$tasks[] = $task;
             $cmid = $value->id;
             $tasks[$cmid] = $task;
         }
     }
     return $tasks;
 }
Exemplo n.º 7
0
 /**
  * Calculates finalgrade for a student in a activity
  * @param int $params[cmid] course module id
  * @param int $params[userid] student id
  * @return the finalgrade or -1 if there is only peer-assessment but assessment period hasn't finished or -2 if there is not any assessment
  */
 public static function get_finalgrade_user_task($params)
 {
     if (!isset($params['cmid']) || !isset($params['userid']) || !isset($params['courseid'])) {
         return null;
     }
     $cmid = $params['cmid'];
     $userid = $params['userid'];
     $courseid = $params['courseid'];
     //$coursecontext = get_context_instance(CONTEXT_COURSE, $courseid);
     $coursecontext = context_course::instance($courseid);
     $now = time();
     global $CFG, $DB;
     include_once $CFG->dirroot . '/blocks/evalcomix/classes/evalcomix_tasks.php';
     if (!($task = evalcomix_tasks::fetch(array('instanceid' => $cmid)))) {
         return null;
     }
     $result = null;
     $teacherweight = -1;
     $selfweight = -1;
     $peerweight = -1;
     $params_modes = array('taskid' => $task->id);
     $modes = evalcomix_modes::fetch_all($params_modes);
     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:
             }
         }
         //echo $task->id . ': teacherweight-' . $teacherweight . ' selfweight-' .$selfweight . ' peerweight-' .$peerweight.'<br/>';
         $params2 = array('taskid' => $task->id, 'studentid' => $userid);
         $assessments = evalcomix_assessments::fetch_all($params2);
         $inperiod = false;
         if ($assessments) {
             //$selfgrade = 0;
             $selfgrade = -1;
             $teachergrade = 0;
             $numteachers = 0;
             $peergrade = 0;
             $numpeers = 0;
             $grade = 0;
             foreach ($assessments as $assessment) {
                 //If it is a self assessment
                 if ($assessment->studentid == $assessment->assessorid && $selfweight != -1) {
                     $selfgrade = $assessment->grade;
                 } elseif (has_capability('moodle/grade:viewhidden', $coursecontext, $assessment->assessorid)) {
                     if ($teacherweight != -1) {
                         $teachergrade += $assessment->grade;
                         $numteachers++;
                     }
                 } elseif ($assessment->studentid != $assessment->assessorid) {
                     //If it is a peer assessment
                     //Only gets grades when the assessment period in the task is finished
                     if ($modeEI = evalcomix_modes::fetch(array('taskid' => $assessment->taskid, 'modality' => 'peer'))) {
                         $modeEItime = evalcomix_modes_time::fetch(array('modeid' => $modeEI->id));
                         if ($modeEItime && $now > $modeEItime->timedue) {
                             $peergrade += $assessment->grade;
                             $numpeers++;
                         } elseif ($now >= $modeEItime->timeavailable && $now <= $modeEItime->timedue) {
                             $inperiod = true;
                         }
                     }
                 }
             }
             //Calculates peergrade
             if ($numpeers > 0) {
                 $peergrade = round($peergrade / $numpeers, 2);
             }
             //Calculates teachergrade
             if ($numteachers > 0) {
                 $teachergrade = round($teachergrade / $numteachers, 2);
             }
             //Calcultes the total grade
             //if($teachergrade != 0 || $selfgrade != 0 || $peergrade != 0){
             if ($numteachers > 0 || $numpeers > 0 || $selfgrade != -1) {
                 if ($selfgrade == -1) {
                     $selfgrade = 0;
                 }
                 $result = $selfgrade * ($selfweight / 100) + $teachergrade * ($teacherweight / 100) + $peergrade * ($peerweight / 100);
             } elseif ($inperiod == true) {
                 //There is peer assessments but assessment period hasn't finished
                 $result = -1;
             } else {
                 $result = -2;
             }
             return $result;
         } else {
             return null;
         }
     } else {
         return -3;
     }
 }
Exemplo n.º 8
0
require_login($course->id);
$url = new moodle_url('/blocks/evalcomix/assessment/details.php', array('contextid' => $contextid, 'itemid' => $itemid));
$PAGE->set_url($url);
$PAGE->set_context($context);
if ($popup) {
    $PAGE->set_pagelayout('popup');
}
$PAGE->set_title(get_string('ratingsforitem', 'block_evalcomix'));
echo $OUTPUT->header();
include_once $CFG->dirroot . '/blocks/evalcomix/classes/evalcomix_assessments.php';
include_once $CFG->dirroot . '/blocks/evalcomix/classes/evalcomix_tasks.php';
include_once $CFG->dirroot . '/blocks/evalcomix/classes/evalcomix_modes.php';
include_once $CFG->dirroot . '/blocks/evalcomix/classes/evalcomix_modes_time.php';
include_once $CFG->dirroot . '/blocks/evalcomix/classes/evalcomix_modes_extra.php';
include_once $CFG->dirroot . '/blocks/evalcomix/classes/webservice_evalcomix_client.php';
include_once $CFG->dirroot . '/blocks/evalcomix/classes/evalcomix_grades.php';
include_once $CFG->dirroot . '/blocks/evalcomix/javascript/popup.php';
global $DB, $USER;
//GETTING DATAS----------------------------------------------------------------------------------------
require_capability('block/evalcomix:view', $context, $userid);
$user = $DB->get_record('user', array('id' => $userid), '*');
if (!($task = evalcomix_tasks::fetch(array('id' => $itemid)))) {
    print_error('Wrong parameters');
}
if ($modeEI = evalcomix_modes::fetch(array('taskid' => $task->id, 'modality' => 'peer'))) {
    $modeEItime = evalcomix_modes_time::fetch(array('modeid' => $modeEI->id));
    $modesExtra = evalcomix_modes_extra::fetch(array('modeid' => $modeEI->id));
} else {
    $modeEItime = '';
}
$cm = $DB->get_record('course_modules', array('id' => $task->instanceid), '*');
 public function after_restore()
 {
     global $DB, $COURSE, $CFG;
     include_once $CFG->dirroot . '/blocks/evalcomix/configeval.php';
     include_once $CFG->dirroot . '/blocks/evalcomix/classes/evalcomix_tasks.php';
     include_once $CFG->dirroot . '/blocks/evalcomix/classes/evalcomix_modes.php';
     include_once $CFG->dirroot . '/blocks/evalcomix/classes/evalcomix_modes_time.php';
     include_once $CFG->dirroot . '/blocks/evalcomix/classes/evalcomix_modes_extra.php';
     include_once $CFG->dirroot . '/blocks/evalcomix/classes/evalcomix_assessments.php';
     include_once $CFG->dirroot . '/blocks/evalcomix/classes/webservice_evalcomix_client.php';
     include_once $CFG->dirroot . '/blocks/evalcomix/classes/evalcomix_grades.php';
     include_once $CFG->dirroot . '/blocks/evalcomix/classes/evalcomix_allowedusers.php';
     $settings = $this->task->get_info()->root_settings;
     //$this->oldcontextid; busco en tabla mdl_context->instanceid es el courseid; con el courseid obtengo todos los cms antiguos y nuevos y voy copiando uno a uno
     //$this->basepath   = $CFG->dataroot . '/temp/backup/' . $controller->get_tempdir();
     //$blockid = $this->get_old_blockid();
     //$xml = simplexml_load_file($this->get_basepath() . '/course/blocks/evalcomix_'. $blockid .'/evalcomix.xml');
     $fullpath = $this->task->get_taskbasepath();
     // We MUST have one fullpath here, else, error
     if (empty($fullpath)) {
         throw new restore_step_exception('restore_structure_step_undefined_fullpath');
     }
     // Append the filename to the fullpath
     $fullpath = rtrim($fullpath, '/') . '/' . $this->filename;
     // And it MUST exist
     if (!file_exists($fullpath)) {
         // Shouldn't happen ever, but...
         throw new restore_step_exception('missing_moodle_backup_xml_file', $fullpath);
     }
     $xml = simplexml_load_file($fullpath);
     //echo $this->task->get_taskbasepath() . '/course/blocks/evalcomix_'. $blockid .'/evalcomix.xml';
     $evxid_old = (int) $xml->evalcomix['id'];
     $viewmode_old = (string) $xml->evalcomix->viewmode;
     if (isset($xml->evalcomix->environment->courseid)) {
         $courseid_old = $xml->evalcomix->environment->courseid;
     }
     if (isset($xml->evalcomix->environment->moodlename)) {
         $moodlename_old = $xml->evalcomix->environment->moodlename;
     }
     include_once $CFG->dirroot . '/blocks/evalcomix/configeval.php';
     //include_once($CFG->dirroot . '/backup/lib.php');
     //$courseid_new = $this->plan->get_courseid();
     $courseid_new = $this->get_courseid();
     $moodlename_new = MOODLE_NAME;
     $block_evalcomix = $DB->get_record('block_evalcomix', array('courseid' => $courseid_new));
     //$coursecontext = get_context_instance(CONTEXT_COURSE, $courseid_new);
     $coursecontext = context_course::instance($courseid_new);
     $tasksid = '';
     if (isset($xml->evalcomix->tasks[0])) {
         $assessmentids = array();
         foreach ($xml->evalcomix->tasks[0] as $task) {
             $task_id_old = (int) $task['id'];
             $task_instanceid_old = (int) $task->instanceid;
             $task_maxgrade_old = (string) $task->maxgrade;
             $task_weighing_old = (string) $task->weighing;
             $cm = $DB->get_record('block_evalcomix', array('courseid' => $courseid_new));
             $cm_mapping = $this->get_mapping('course_module', $task_instanceid_old);
             $newcmid = $cm_mapping->newitemid;
             $visibletask = '1';
             if (isset($task->visible)) {
                 $visibletask = (string) $task->visible;
             }
             if (!($task_fetch = evalcomix_tasks::fetch(array('instanceid' => $newcmid)))) {
                 $task_object = new evalcomix_tasks('', $newcmid, $task_maxgrade_old, $task_weighing_old, '', $visibletask);
                 $newtaskid = $task_object->insert();
                 $tasksid .= $task_instanceid_old . '-' . $newcmid . ',';
                 foreach ($task->modes[0] as $mode) {
                     $mode_id_old = (int) $mode['id'];
                     $mode_toolid_old = (string) $mode->toolid;
                     $mode_modality_old = (string) $mode->modality;
                     $mode_weighing_old = (string) $mode->weighing;
                     $tool_mapping = $this->get_mapping('evalcomix_tool', $mode_toolid_old);
                     if (!empty($tool_mapping) && ($newtoolid = $tool_mapping->newitemid)) {
                         if (!($mode_object = evalcomix_modes::fetch(array('taskid' => $newtaskid, 'toolid' => $newtoolid, 'modality' => $mode_modality_old)))) {
                             $mode_object = new evalcomix_modes('', $newtaskid, $newtoolid, $mode_modality_old, $mode_weighing_old);
                             $newmodeid = $mode_object->insert();
                             if (isset($mode->mode_time['id'])) {
                                 $mode_time_id_old = (string) $mode->mode_time['id'];
                                 $mode_time_timeavailable_old = (string) $mode->mode_time->timeavailable;
                                 $mode_time_timedue_old = (string) $mode->mode_time->timedue;
                                 if (!evalcomix_modes_time::fetch(array('modeid' => $newmodeid))) {
                                     $mode_time_object = new evalcomix_modes_time('', $newmodeid, $mode_time_timeavailable_old, $mode_time_timedue_old);
                                     $mode_time_object->insert();
                                 }
                             }
                             if (isset($mode->mode_extra)) {
                                 $mode_extra_id_old = (string) $mode->mode_extra['id'];
                                 $mode_extra_timeavailable_old = (string) $mode->mode_extra->anonymous;
                                 $mode_extra_visible = $mode->mode_extra->visible;
                                 $mode_extra_whoassesses = $mode->mode_extra->whoassesses;
                                 if (!($mode_extra_object = evalcomix_modes_extra::fetch(array('modeid' => $newmodeid)))) {
                                     $mode_extra_object = new evalcomix_modes_extra('', $newmodeid, $mode_extra_timeavailable_old, $mode_extra_visible, $mode_extra_whoassesses);
                                     $mode_extra_object->insert();
                                 }
                             }
                         }
                     }
                 }
             }
             if ($settings['users'] == 1) {
                 foreach ($task->assessments[0] as $assessment) {
                     $assessment_id_old = (string) $assessment['id'];
                     $assessment_assessorid_old = (string) $assessment->assessorid;
                     $assessment_studentid_old = (string) $assessment->studentid;
                     $assessment_grade_old = (string) $assessment->grade;
                     $assessor_user = $this->get_mapping('user', $assessment_assessorid_old);
                     $student_user = $this->get_mapping('user', $assessment_studentid_old);
                     if (!isset($assessor_user->newitemid) || !isset($student_user->newitemid)) {
                         continue;
                     }
                     if (!($assessment_object = evalcomix_assessments::fetch(array('taskid' => $newtaskid, 'assessorid' => $assessor_user->newitemid, 'studentid' => $student_user->newitemid)))) {
                         $assessment_object = new evalcomix_assessments('', $newtaskid, $assessor_user->newitemid, $student_user->newitemid, $assessment_grade_old);
                         $assessment_object->insert();
                     }
                     //$modulename = get_module_type ($courseid_new, $newcmid);
                     $modulename = evalcomix_tasks::get_type_task($newcmid);
                     $mode = '';
                     if ($student_user->newitemid == $assessor_user->newitemid) {
                         $mode = 'self';
                     } elseif (has_capability('moodle/grade:viewhidden', $coursecontext, $assessor_user->newitemid)) {
                         $mode = 'teacher';
                     } else {
                         $mode = 'peer';
                     }
                     //$courseid_old, $modulename, $task_instanceid_old, $assessment_studentid_old, $assessment_assessorid_old, $mode, $moodlename_old
                     $str = $courseid_old . '_' . $modulename . '_' . $task_instanceid_old . '_' . $assessment_studentid_old . '_' . $assessment_assessorid_old . '_' . $mode . '_' . $moodlename_old;
                     $assessmentid_old = md5($str);
                     $str = $courseid_new . '_' . $modulename . '_' . $newcmid . '_' . $student_user->newitemid . '_' . $assessor_user->newitemid . '_' . $mode . '_' . $moodlename_new;
                     //echo $str . ' -- ';
                     $assessmentid_new = md5($str);
                     $object = new stdClass();
                     $object->oldid = $assessmentid_old;
                     $object->newid = $assessmentid_new;
                     $assessmentids[] = $object;
                 }
             }
         }
     }
     if ($tasksid != '') {
         $tasksid = substr($tasksid, 0, -1);
     }
     if ($settings['users'] == 1) {
         if (isset($xml->evalcomix->grades[0])) {
             foreach ($xml->evalcomix->grades[0] as $grade) {
                 $cm_mapping = $this->get_mapping('course_module', $grade->cmid);
                 $newcmid = $cm_mapping->newitemid;
                 $student = $this->get_mapping('user', (int) $grade->userid);
                 if (!isset($student->newitemid)) {
                     continue;
                 }
                 $params = array('finalgrade' => (double) $grade->finalgrade, 'courseid' => $courseid_new, 'cmid' => $newcmid, 'userid' => $student->newitemid);
                 if (!($grade_object = evalcomix_grades::fetch(array('courseid' => $courseid_new, 'cmid' => $newcmid, 'userid' => $student->newitemid)))) {
                     $grade_object = new evalcomix_grades($params);
                     $newgradeid = $grade_object->insert();
                 }
             }
         }
         if (isset($xml->evalcomix->allowedusers[0])) {
             foreach ($xml->evalcomix->allowedusers[0] as $users) {
                 $cm_mapping = $this->get_mapping('course_module', $users->cmid);
                 $newcmid = $cm_mapping->newitemid;
                 $assessor = $this->get_mapping('user', (int) $users->assessorid);
                 $student = $this->get_mapping('user', (int) $users->studentid);
                 if (!isset($student->newitemid) || !isset($assessor->newitemid)) {
                     continue;
                 }
                 $params = array('assessorid' => (int) $assessor->newitemid, 'studentid' => $student->newitemid, 'cmid' => $newcmid);
                 if (!($allowedusers_object = evalcomix_allowedusers::fetch($params))) {
                     $allowedusers_object = new evalcomix_allowedusers($params);
                     $newid = $allowedusers_object->insert();
                 }
             }
         }
     }
     if (isset($xml->evalcomix->tools[0])) {
         $hashtools = array();
         foreach ($xml->evalcomix->tools[0] as $tool) {
             if ((string) $tool->type == 'tmp') {
                 continue;
             }
             $idtoolold = (string) $tool->idtool;
             $tool_mapping = $this->get_mapping('evalcomix_tool', (string) $tool['id']);
             $toolnew = evalcomix_tool::fetch(array('id' => $tool_mapping->newitemid));
             $idtoolnew = $toolnew->idtool;
             $object = new stdClass();
             $object->oldid = $idtoolold;
             $object->newid = $idtoolnew;
             $hashtools[] = $object;
         }
     }
     if (isset($hashtools) && isset($assessmentids)) {
         $result = webservice_evalcomix_client::duplicate_course($assessmentids, $hashtools);
     }
     //$newtools = webservice_evalcomix_client::get_ws_list_tool($courseid_new, $moodlename_new);
 }