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; }
'; }*/ ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////// Comprobamos si existen instrumentos modificados con evaluaciones asociadas ///////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if ($toollist = evalcomix_tool::fetch_all(array('evxid' => $environment->id))) { $newgrades = webservice_evalcomix_client::get_assessments_modified(array('tools' => $toollist)); if (!empty($newgrades)) { include_once $CFG->dirroot . '/blocks/evalcomix/classes/evalcomix_assessments.php'; include_once $CFG->dirroot . '/blocks/evalcomix/classes/evalcomix_grades.php'; $toolids = array(); foreach ($tasks as $task) { if ($assessments = evalcomix_assessments::fetch_all(array('taskid' => $task->id))) { foreach ($assessments as $assessment) { $activity = $task->instanceid; $module = evalcomix_tasks::get_type_task($activity); $mode = grade_report_evalcomix::get_type_evaluation($assessment->studentid, $courseid, $assessment->assessorid); $str = $courseid . '_' . $module . '_' . $activity . '_' . $assessment->studentid . '_' . $assessment->assessorid . '_' . $mode . '_' . MOODLE_NAME; $assessmentid = md5($str); if (isset($newgrades[$assessmentid])) { $grade = $newgrades[$assessmentid]->grade; $toolids[] = $newgrades[$assessmentid]->toolid; $assessment->grade = $grade; $assessment->update(); if ($evalcomix_grade = evalcomix_grades::fetch(array('courseid' => $courseid, 'cmid' => $task->instanceid, 'userid' => $assessment->studentid))) { $params = array('cmid' => $task->instanceid, 'userid' => $assessment->studentid, 'courseid' => $courseid); $finalgrade = evalcomix_grades::get_finalgrade_user_task($params); if ($finalgrade !== null) { $evalcomix_grade->finalgrade = $finalgrade; $evalcomix_grade->update(); }
echo '-'; } else { echo '<span style="font-style:italic;color:#f54927">' . get_string('noconfigured', 'block_evalcomix') . '</span>'; } $showdetails = false; } 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 = ''; }
//echo $OUTPUT->header(); if (!($tool = evalcomix_tool::fetch(array('idtool' => $toolid)))) { print_error('EvalCOMIX: No tool enabled'); } if ($perspective != 'assess' && $perspective != 'view') { print_error('EvalCOMIX: the mode param is wrong'); } global $USER, $DB; $lang = current_language(); //To show tool used in a assessment if ($viewtemplate == '0') { $cmid = required_param('a', PARAM_INT); $studentid = required_param('s', PARAM_INT); require_capability('block/evalcomix:assessed', $context, $studentid); $lms = MOODLE_NAME; $module = evalcomix_tasks::get_type_task($cmid); //echo "$courseid - $module - $cmid - $studentid, - $assessor - $mode - $lms "; $user = $DB->get_record('user', array('id' => $studentid)); if ($user) { $modinfo = get_fast_modinfo($courseid); $mods = $modinfo->get_cms(); $mod = $mods[$cmid]; $title = fullname($user) . get_string('studentwork2', 'block_evalcomix') . $mod->name; } $url_instrument = ''; if ($perspective == 'assess') { $mode = grade_report_evalcomix::get_type_evaluation($studentid, $courseid); if ($task = evalcomix_tasks::fetch(array('instanceid' => $cmid))) { if (!($modefetch = evalcomix_modes::fetch(array('taskid' => $task->id, 'modality' => $mode)))) { print_error('EvalCOMIX: No permissions'); }
/** * Processes the data sent by the form (grades and feedbacks). * Caller is responsible for all access control checks * @param array $data form submission (with magic quotes) * @return array empty array if success, array of warnings if something fails. */ public function process_data($data) { global $CFG, $DB, $COURSE, $USER; //ESto es lo que acabo de añadir // Para guardar la actividad en la bd de evalcomix 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'; //para quitar notice $save_conf_act = 0; if (isset($data['cmid'])) { $activity = $data['cmid']; $module = evalcomix_tasks::get_type_task($activity); $save_conf_act = 1; } $timeavailableAE = 0; $timedueAE = 0; $idtoolAE = 0; $pon_AE = 0; $timeavailableEI = 0; $timedueEI = 0; $idtoolEI = 0; $pon_EI = 0; $idtoolEP = 0; $pon_EP = 0; if (isset($data['toolEP']) && $data['toolEP'] != 0) { $toolEP = evalcomix_tool::fetch(array('id' => $data['toolEP'])); $idtoolEP = $toolEP->idtool; $pon_EP = $data['pon_EP']; } if (isset($data['toolAE']) && $data['toolAE'] != 0) { $timeavailableAE = mktime($data['hour_available_AE'], $data['minute_available_AE'], 0, $data['month_available_AE'], $data['day_available_AE'], $data['year_available_AE']); $timedueAE = mktime($data['hour_timedue_AE'], $data['minute_timedue_AE'], 0, $data['month_timedue_AE'], $data['day_timedue_AE'], $data['year_timedue_AE']); $toolAE = evalcomix_tool::fetch(array('id' => $data['toolAE'])); $idtoolAE = $toolAE->idtool; $pon_AE = $data['pon_AE']; } if (isset($data['toolEI']) && $data['toolEI'] != 0) { $timeavailableEI = mktime($data['hour_available_EI'], $data['minute_available_EI'], 0, $data['month_available_EI'], $data['day_available_EI'], $data['year_available_EI']); $timedueEI = mktime($data['hour_timedue_EI'], $data['minute_timedue_EI'], 0, $data['month_timedue_EI'], $data['day_timedue_EI'], $data['year_timedue_EI']); $toolEI = evalcomix_tool::fetch(array('id' => $data['toolEI'])); $idtoolEI = $toolEI->idtool; $pon_EI = $data['pon_EI']; } /*if($save_conf_act == 1){ $result = webservice_evalcomix_client::put_ws_savetask($COURSE->id, $module, $activity, $idtoolEP, $idtoolAE, $idtoolEI, $pon_EP, $pon_AE, $pon_EI, $timeavailableAE, $timedueAE, $timeavailableEI, $timedueEI, MOODLE_NAME); }*/ //Hasta aquí--------------------- if (isset($data['save']) && $data['save'] == get_string('save', 'block_evalcomix')) { 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'; $data_exists = false; $task_exists = false; $modality_delete = false; $taskid = null; if (isset($data['toolEP']) && $data['toolEP'] != '0' || isset($data['toolAE']) && $data['toolAE'] != '0' || isset($data['toolEI']) && $data['toolEI'] != '0') { $data_exists = true; } $task = new evalcomix_tasks('', $data['cmid'], $data['maxgrade'], '50', time()); if ($taskid = $task->exist()) { $task_exists = true; $params = array('id' => $taskid); evalcomix_tasks::set_properties($task, $params); $task->update(); } elseif ($data_exists == true) { $taskid = $task->insert(); } if ($data['toolEP'] != 0) { $modeEP = new evalcomix_modes('', $taskid, $data['toolEP'], 'teacher', $data['pon_EP']); if ($modeid = $modeEP->exist()) { $params = array('id' => $modeid); evalcomix_modes::set_properties($modeEP, $params); $modeEP->update(); } else { $modeid = $modeEP->insert(); } } elseif ($task_exists == true) { $modeEP = new evalcomix_modes('', $taskid, '', 'teacher'); if ($modeid = $modeEP->exist()) { $modeEP->delete(); $modality_delete = true; } } if ($data['toolAE'] != 0) { $modeAE = new evalcomix_modes('', $taskid, $data['toolAE'], 'self', $data['pon_AE']); if ($modeid = $modeAE->exist()) { $params = array('id' => $modeid); evalcomix_modes::set_properties($modeAE, $params); $modeAE->update(); $timeavailable = mktime($data['hour_available_AE'], $data['minute_available_AE'], 0, $data['month_available_AE'], $data['day_available_AE'], $data['year_available_AE']); $timedue = mktime($data['hour_timedue_AE'], $data['minute_timedue_AE'], 0, $data['month_timedue_AE'], $data['day_timedue_AE'], $data['year_timedue_AE']); $modeAE_time = new evalcomix_modes_time('', $modeid, $timeavailable, $timedue); if ($modeAE_timeid = $modeAE_time->exist()) { $params = array('id' => $modeAE_timeid); evalcomix_modes::set_properties($modeAE_time, $params); $modeAE_time->update(); } } else { $modeid = $modeAE->insert(); $timeavailable = mktime($data['hour_available_AE'], $data['minute_available_AE'], 0, $data['month_available_AE'], $data['day_available_AE'], $data['year_available_AE']); $timedue = mktime($data['hour_timedue_AE'], $data['minute_timedue_AE'], 0, $data['month_timedue_AE'], $data['day_timedue_AE'], $data['year_timedue_AE']); $modeAE_time = new evalcomix_modes_time('', $modeid, $timeavailable, $timedue); $modeAE_time->insert(); } } elseif ($task_exists == true) { $modeAE = new evalcomix_modes('', $taskid, '', 'self'); if ($modeid = $modeAE->exist()) { $modeAE_time = new evalcomix_modes_time('', $modeid); if ($modeAE_time->exist()) { $modeAE_time->delete(); } $modeAE->delete(); $modality_delete = true; } } if ($data['toolEI'] != 0) { $anonymous = 0; if (isset($data['anonymousEI']) && $data['anonymousEI'] == 'on') { $anonymous = 1; } $alwaysvisible = 0; if (isset($data['alwaysvisibleEI']) && $data['alwaysvisibleEI']) { $alwaysvisible = 1; } $whoassesses = 0; if (isset($data['whoassessesEI']) && $data['whoassessesEI']) { $whoassesses = $data['whoassessesEI']; } $modeEI = new evalcomix_modes('', $taskid, $data['toolEI'], 'peer', $data['pon_EI']); if ($modeid = $modeEI->exist()) { $params = array('id' => $modeid); evalcomix_modes::set_properties($modeEI, $params); $modeEI->update(); $timeavailable = mktime($data['hour_available_EI'], $data['minute_available_EI'], 0, $data['month_available_EI'], $data['day_available_EI'], $data['year_available_EI']); $timedue = mktime($data['hour_timedue_EI'], $data['minute_timedue_EI'], 0, $data['month_timedue_EI'], $data['day_timedue_EI'], $data['year_timedue_EI']); $modeEI_time = new evalcomix_modes_time('', $modeid, $timeavailable, $timedue); if ($modeEI_timeid = $modeEI_time->exist()) { $params = array('id' => $modeEI_timeid); evalcomix_modes_time::set_properties($modeEI_time, $params); $modeEI_time->update(); } $modeEI_extra = new evalcomix_modes_extra('', $modeid, $anonymous, $alwaysvisible, $whoassesses); $modeEI_extraObject = $DB->get_record('block_evalcomix_modes_extra', array('modeid' => $modeid)); $modeEI_extraid = $modeEI_extraObject->id; $params = array('id' => $modeEI_extraid, 'anonymous' => $anonymous, 'visible' => $alwaysvisible, 'whoassesses' => $whoassesses); evalcomix_modes_extra::set_properties($modeEI_extra, $params); $modeEI_extra->update(); } else { $modeid = $modeEI->insert(); $timeavailable = mktime($data['hour_available_EI'], $data['minute_available_EI'], 0, $data['month_available_EI'], $data['day_available_EI'], $data['year_available_EI']); $timedue = mktime($data['hour_timedue_EI'], $data['minute_timedue_EI'], 0, $data['month_timedue_EI'], $data['day_timedue_EI'], $data['year_timedue_EI']); $modeEI_time = new evalcomix_modes_time('', $modeid, $timeavailable, $timedue); $modeEI_time->insert(); $modeEI_extra = new evalcomix_modes_extra('', $modeid, $anonymous, $alwaysvisible, $whoassesses); $modeEI_extra->insert(); } } elseif ($task_exists == true) { $modeEI = new evalcomix_modes('', $taskid, '', 'peer'); if ($modeid = $modeEI->exist()) { $modeEI_extra = new evalcomix_modes_extra('', $modeid); if ($modeEI_extra->exist()) { $modeEI_extra->delete(); } $modeEI_time = new evalcomix_modes_time('', $modeid); if ($modeEI_time->exist()) { $modeEI_time->delete(); } $modeEI->delete(); $modality_delete = true; } } if ($task_exists == true && $data_exists == true) { include_once $CFG->dirroot . '/blocks/evalcomix/classes/evalcomix_grades.php'; if ($grades = evalcomix_grades::fetch_all(array('courseid' => $this->courseid, 'cmid' => $task->instanceid))) { foreach ($grades as $grade) { $user = $grade->userid; $params = array('cmid' => $task->instanceid, 'userid' => $user, 'courseid' => $this->courseid); $finalgrade = evalcomix_grades::get_finalgrade_user_task($params); if ($finalgrade !== null) { $grade->finalgrade = $finalgrade; $grade->update(); } } } } /*elseif($data_exists != true){ include_once($CFG->dirroot .'/blocks/evalcomix/classes/evalcomix_grades.php'); if($grades = evalcomix_grades::fetch_all(array('courseid' => $this->courseid, 'cmid' => $task->instanceid))){ foreach($grades as $grade){ $grade->finalgrade = -3; $grade->update(); } } }*/ //Recalculamos en cualquier caso las notas include_once $CFG->dirroot . '/blocks/evalcomix/classes/evalcomix_grades.php'; if ($grades = evalcomix_grades::fetch_all(array('courseid' => $this->courseid, 'cmid' => $task->instanceid))) { foreach ($grades as $grade) { $user = $grade->userid; $params = array('cmid' => $task->instanceid, 'userid' => $user, 'courseid' => $this->courseid); $finalgrade = evalcomix_grades::get_finalgrade_user_task($params); if ($finalgrade !== null) { $grade->finalgrade = $finalgrade; $grade->update(); } } } } elseif (isset($data['cancel']) && $data['cancel'] == 'cancel') { } // Comprobar si hay datos de alguna evaluación realizada con evalcomix para guardarla en la base de datos de Moodle // Se hace aquí ya que ese método se procesa cada vez que se recarga la página if (isset($data['stu']) && $data['stu'] != 0 && $data['cma'] != 0) { $activity = $data['cma']; $module = evalcomix_tasks::get_type_task($activity); //$mode = $this->get_type_evaluation($data['stu']); $mode = grade_report_evalcomix::get_type_evaluation($data['stu'], $this->courseid); /*echo $COURSE->id . '<br>'; echo $module . '<br>'; echo $activity . '<br>'; echo $data['stu'] . '<br>'; echo $USER->id . '<br>'; echo $mode . '<br>'; echo MOODLE_NAME . '<br>';*/ $task = new evalcomix_tasks('', $data['cma']); if ($taskid = $task->exist()) { $tool = get_evalcomix_modality_tool($this->courseid, $taskid, $mode); $evalcomix_assessment = webservice_evalcomix_client::get_ws_singlegrade($tool->idtool, $this->courseid, $module, $activity, $data['stu'], $USER->id, $mode, MOODLE_NAME); } //if $evalcomix_assessment->grade == -1 means that the grade is empty if ($evalcomix_assessment != null) { //Checks if the assessment exists in the table mdl_blocks_evalcomix_assessments $params = array('taskid' => $evalcomix_assessment->taskid, 'assessorid' => $evalcomix_assessment->assessorid, 'studentid' => $evalcomix_assessment->studentid); $evx_assessment_object = evalcomix_assessments::fetch($params); //print_r($evx_assessment_object); //echo $evalcomix_assessment->grade; // if ($evx_assessment_object != null) { if ($evx_assessment_object != false) { if ($evalcomix_assessment->grade != -1) { //If the grade is not null $evx_assessment_object->grade = $evalcomix_assessment->grade; $evx_assessment_object->update(); } else { //If the grade is null $evx_assessment_object->delete(); } } elseif ($evalcomix_assessment->grade != -1) { //if it does not exist and the grade is not null inserts it $evalcomix_assessment->insert(); } } //Save the finalgrade include_once $CFG->dirroot . '/blocks/evalcomix/classes/evalcomix_grades.php'; $params = array('cmid' => $data['cma'], 'userid' => $data['stu'], 'courseid' => $this->courseid); $finalgrade = evalcomix_grades::get_finalgrade_user_task($params); if ($finalgrade !== null) { if ($gradeObject = evalcomix_grades::fetch($params)) { $gradeObject->finalgrade = $finalgrade; $gradeObject->update(); } else { $params['finalgrade'] = $finalgrade; $gradeObject = new evalcomix_grades($params); $gradeObject->insert(); } } else { if ($gradeObject = evalcomix_grades::fetch($params)) { $gradeObject->delete(); } } } }
/** * @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; }
/** * Fail to get type task from a not existing instanceid */ public function test_gettypetask_fail() { $result = evalcomix_tasks::get_type_task('58'); $this->assertNull($result); unset($result); }
protected function process_data($data) { global $CFG; include_once $CFG->dirroot . '/blocks/evalcomix/classes/webservice_evalcomix_client.php'; include_once $CFG->dirroot . '/blocks/evalcomix/classes/evalcomix_tasks.php'; if (isset($data['student_ids'])) { $user_aux = explode(',', $data['student_ids']); $data_num_users = count($user_aux); } if (isset($data['student_names'])) { $username_aux = explode('-', $data['student_names']); } $assessorid = 0; if (isset($data['assessor_id'])) { $assessorid = $data['assessor_id']; } switch ($this->mode) { case 'selftask': $modality = 'self'; break; case 'teachertask': $modality = 'teacher'; break; } $params['courseid'] = $this->courseid; $params['lms'] = MOODLE_NAME; $k = 0; $hash_user = array(); $hash_username = array(); $attributes[0] = ''; //$students = array(); $studentsid = ''; $values = array(); if (isset($data['task']) && is_numeric($data_num_users)) { foreach ($user_aux as $key => $user) { $params['module'][$k] = evalcomix_tasks::get_type_task($data['task']); $params['activity'][$k] = $data['task']; $params['student'][$k] = $user; if ($assessorid != 0) { $params['assessor'][$k] = $assessorid; } else { $params['assessor'][$k] = $user; } $params['mode'][$k] = $modality; $str = $this->courseid . '_' . $params['module'][$k] . '_' . $params['activity'][$k] . '_' . $params['student'][$k] . '_' . $params['assessor'][$k] . '_' . $params['mode'][$k] . '_' . $params['lms']; $assessmentid = md5($str); $hash_user[$assessmentid] = $user; $hash_username[$assessmentid] = $username_aux[$key]; ++$k; } $this->task = substr($data['task'], 0, -1); //TODO:adaptar para rúbricas, argumentarios y mixtas if ($xml = webservice_evalcomix_client::get_ws_xml_tools($params)) { $row = 0; foreach ($xml as $assessment) { $id = (string) $assessment['id']; $userid = $hash_user[$id]; $name = explode(',', $hash_username[$id]); $this->names[$row] = $name[0]; $this->surnames[$row] = $name[1]; foreach ($assessment as $value) { //echo (string)$value->GlobalAssessment->Attribute; $this->header[0] = 'Nombre'; $this->header[1] = 'Apellido(s)'; $l = 2; if (isset($value->Dimension)) { foreach ($value->Dimension as $dimension) { foreach ($dimension->Subdimension as $subdimension) { foreach ($subdimension->Attribute as $attribute) { //echo (string)$attribute['name']; $this->header[$l] = (string) $attribute['name']; if (isset($attribute->selection->instance)) { print_r($attribute->selection->instance); $this->right_rows[$row][$l] = (string) $attribute->selection->instance; } elseif (isset($attribute->selection)) { $this->right_rows[$row][$l] = (string) $attribute->selection; } else { $this->right_rows[$row][$l] = (string) $attribute; } if ((string) $attribute['comment'] != '') { ++$l; $this->header[$l] = 'O'; if ((string) $attribute['comment'] != '1') { $this->right_rows[$row][$l] = (string) $attribute['comment']; } else { $this->right_rows[$row][$l] = ''; } } ++$l; } } } } elseif (isset($value->Attribute)) { foreach ($value->Attribute as $attribute) { $this->header[$l] = (string) $attribute['nameN'] . '/' . (string) $attribute['nameP']; $this->right_rows[$row][$l] = (string) $attribute; ++$l; } } } ++$row; } } exit; } }
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); }