Пример #1
0
/**
 * Update grades in central gradebook
 * @param object $rcontent null means all rcontentbases
 * @param int $userid specific user only, 0 mean all
 */
function rcontent_update_grades($rcontent = null, $userid = 0, $nullifnone = true)
{
    global $CFG, $DB;
    if (!function_exists('grade_update')) {
        //workaround for buggy PHP versions
        require_once $CFG->libdir . '/gradelib.php';
    }
    if ($rcontent != null) {
        if ($grades = rcontent_get_user_grades($rcontent, $userid)) {
            rcontent_grade_item_update($rcontent, $grades);
        } else {
            if ($userid and $nullifnone) {
                $grade = new object();
                $grade->userid = $userid;
                $grade->rawgrade = NULL;
                rcontent_grade_item_update($rcontent, $grade);
            } else {
                rcontent_grade_item_update($rcontent);
            }
        }
    } else {
        $sql = "SELECT s.*, cm.idnumber as cmidnumber\n                  FROM {$CFG->prefix}rcontent s, {$CFG->prefix}course_modules cm, {$CFG->prefix}modules m\n                 WHERE m.name='rcontent' AND m.id=cm.module AND cm.instance=s.id";
        if ($rs = $DB->get_recordset_sql($sql)) {
            while ($rcontent = rs_fetch_next_record($rs)) {
                rcontent_update_grades($rcontent, 0, false);
            }
            rs_close($rs);
        }
    }
}
Пример #2
0
    // Save data in bd
    $update = new stdClass();
    $update->id = $data->gradeid;
    $update->grade = round($data->grade, 2);
    $update->comments = $data->comment_editor['text'];
    $update->timemodified = time();
    // Retrieve data of that registry from db to know if status must be update or not
    if ($rdatastatus = $DB->get_field('rcontent_grades', 'status', array('id' => $update->id))) {
        if ($rdatastatus == "POR_CORREGIR") {
            $update->status = "CORREGIDO";
        }
    }
    $DB->update_record('rcontent_grades', $update);
    // Update gradebook
    $rcontent = $DB->get_record('rcontent', array('id' => $rcontent->id));
    rcontent_update_grades($rcontent, $data->user);
    add_to_log($course->id, 'rcontent', 'update grades', 'grade.php?id=' . $data->id . '&user='******'popup');
$PAGE->navbar->add(get_string('comments', 'rcontent') . ':' . $struserfullname . ':' . format_string($rcontent->name), null, null, navigation_node::TYPE_CUSTOM, null);
echo $OUTPUT->header();
echo $OUTPUT->heading($heading);
// Print user information
$picture = $OUTPUT->user_picture($user, array('courseid' => $course->id));
$userlink = '<a href="' . $CFG->wwwroot . '/user/view.php?id=' . $user->id . '&amp;course=' . $rcontent->course . '">' . fullname($user, has_capability('moodle/site:viewfullnames', $contextmodule)) . '</a>';
echo $picture . ' ' . $userlink . ' (' . $user->email . ')';
// Print form
$mform->display();
echo $OUTPUT->footer($course);
Пример #3
0
function get_ResultadoDetalleExtendido($ResultadoExtendido, $user, $passwd)
{
    global $CFG, $USER, $DB;
    set_time_limit(0);
    try {
        // Seek rcontent data
        $rcontent = $DB->get_record('rcontent', array('id' => $ResultadoExtendido->idContenidoLMS));
        if (!$rcontent) {
            return generate_error("InvalidIdContenidoLMS", $ResultadoExtendido->idContenidoLMS, "ResultadoDetalleExtendido");
        }
        // Search book
        $book = rcommon_book::get($rcontent->bookid);
        if (!$book) {
            return generate_error("LibroInvalido", $rcontent->bookid, "ResultadoDetalleExtendido");
        }
        //MARSUPIAL ********** AFEGIT -> Validating activity, unit and content in case of forzarGuardar = 1
        //06/02/2014 . @naseq
        if (isForzarGuardar($ResultadoExtendido)) {
            $real_rcontent = get_real_rcontent($ResultadoExtendido, $rcontent, $book->id);
            if ($real_rcontent) {
                $rcontent = $real_rcontent;
                $ResultadoExtendido->idContenidoLMS = $real_rcontent->id;
                log_to_file('ForzarGuardar changed idContenidoLMS to ' . $ResultadoExtendido->idContenidoLMS);
            }
        }
        //*********** FI
        $cm = get_coursemodule_from_instance('rcontent', $rcontent->id, $rcontent->course);
        if (!rcommon_book::check_auth($book->id, $user, $passwd)) {
            return generate_error("Autenticacion", "", "ResultadoDetalleExtendido", $cm->id);
        }
        if ($CFG->center != $ResultadoExtendido->idCentro) {
            return generate_error("CentroInvalido", get_string('center', 'rcontent') . ": {$CFG->center} - {$ResultadoExtendido->idCentro}", "ResultadoDetalleExtendido", $cm->id);
        }
        // Valid mandatory
        if (!isset($ResultadoExtendido->idUsuario) || !isset($ResultadoExtendido->idContenidoLMS) || !valid_result_details($ResultadoExtendido)) {
            return generate_error("ValoresObligatorios", "", "ResultadoDetalleExtendido", $cm->id);
        }
        if (!valid_status_result($ResultadoExtendido)) {
            return generate_error("EstadoInvalido", "", "ResultadoDetalleExtendido", $cm->id);
        }
        if ($rcontent->course == SITEID) {
            if (!$DB->record_exists('user', array('id' => $ResultadoExtendido->idUsuario))) {
                return generate_error("UsrNoExisteEnCurso", get_string('user') . ": {$ResultadoExtendido->idUsuario} - " . get_string('course') . ": {$rcontent->course}", "ResultadoDetalleExtendido", $cm->id);
            }
        } else {
            if (!valid_user($ResultadoExtendido->idUsuario, $rcontent->course)) {
                return generate_error("UsrNoExisteEnCurso", get_string('user') . ": {$ResultadoExtendido->idUsuario} - " . get_string('course') . ": {$rcontent->course}", "ResultadoDetalleExtendido", $cm->id);
            }
            $contextmodule = context_module::instance($cm->id);
            if (!has_capability('mod/rcontent:savetrack', $contextmodule, $ResultadoExtendido->idUsuario)) {
                return generate_error("SinPermisosGuardarSeguimiento", get_string('user') . ": {$ResultadoExtendido->idUsuario}", "ResultadoDetalleExtendido", $cm->id);
            }
        }
        $unidad = valid_unit($ResultadoExtendido, $book, $rcontent->unitid);
        if (!$unidad) {
            return generate_error("UnidadInvalida", $ResultadoExtendido->idUnidad, "ResultadoDetalleExtendido");
        }
        $unidadid = isset($unidad->id) ? $unidad->id : 0;
        $actividad = valid_activity($ResultadoExtendido, $book, $rcontent->activityid, $unidadid);
        if (!$actividad) {
            return generate_error("ActividadInvalida", $ResultadoExtendido->idActividad, "ResultadoDetalleExtendido");
        }
        $actividadid = isset($actividad->id) ? $actividad->id : 0;
        // Prepare to insert/modify rcontent_grade
        $instance = new stdClass();
        $instance->userid = $ResultadoExtendido->idUsuario;
        $instance->rcontentid = $ResultadoExtendido->idContenidoLMS;
        $instance->unitid = $unidadid;
        $instance->activityid = $actividadid;
        $instance->sumweights = isset($ResultadoExtendido->SumaPesos) ? $ResultadoExtendido->SumaPesos : 100;
        $instance->timemodified = time();
        if (!empty($ResultadoExtendido->Resultado)) {
            require_once "{$CFG->dirroot}/mod/rcontent/lib.php";
            $dat_result = $ResultadoExtendido->Resultado;
            $status = isset($dat_result->Estado) ? $dat_result->Estado : "FINALIZADO";
            $instance->status = TiposEstado::Tipos($status);
            $instance->comments = isset($dat_result->Observaciones) ? $dat_result->Observaciones : "";
            $instance->mingrade = isset($dat_result->MinCalificacion) ? $dat_result->MinCalificacion : 0;
            $instance->maxgrade = isset($dat_result->MaxCalificacion) ? $dat_result->MaxCalificacion : 100;
            $instance->attempt = isset($dat_result->Intentos) ? $dat_result->Intentos : 1;
            $instance->maxattempts = isset($dat_result->MaxIntentos) ? $dat_result->MaxIntentos : 1;
            if (isset($dat_result->Calificacion)) {
                $instance->grade = $dat_result->Calificacion;
            }
            if (isset($dat_result->FechaHoraInicio)) {
                $instance->starttime = $dat_result->FechaHoraInicio;
            }
            if (isset($dat_result->Duracion)) {
                $instance->totaltime = $dat_result->Duracion;
            }
            if (isset($dat_result->MaxDuracion)) {
                $instance->maxtotaltime = $dat_result->MaxDuracion;
            }
            if (isset($dat_result->URLVerResultados)) {
                $instance->urlviewresults = $dat_result->URLVerResultados;
            }
            $select = array('userid' => $instance->userid, 'rcontentid' => $instance->rcontentid, 'unitid' => $instance->unitid, 'activityid' => $instance->activityid, 'attempt' => $instance->attempt);
            if (!($rcont_gradeid = $DB->get_field('rcontent_grades', 'id', $select))) {
                $instance->timecreated = $instance->timemodified;
                $rcont_gradeid = $DB->insert_record('rcontent_grades', $instance);
            } else {
                $instance->id = $rcont_gradeid;
                $DB->update_record('rcontent_grades', $instance);
            }
            rcontent_update_grades($rcontent, $USER->id);
            if (!$rcont_gradeid) {
                return generate_error("GuardarGrades", "", "ResultadoDetalleExtendido", $cm->id);
            }
        }
        // Save details
        if (isset($ResultadoExtendido->Detalles)) {
            $detalles = $ResultadoExtendido->Detalles;
            if (is_array($detalles)) {
                $detalles = array_shift($detalles);
            }
        }
        if (isset($detalles) && isset($detalles->DetalleResultado)) {
            $detalles_resultado = $detalles->DetalleResultado;
            if (!is_array($detalles_resultado)) {
                $detalles_resultado = array($detalles_resultado);
            }
            foreach ($detalles_resultado as $detalle) {
                $instance = new stdClass();
                $instance->userid = $ResultadoExtendido->idUsuario;
                $instance->rcontentid = $ResultadoExtendido->idContenidoLMS;
                $instance->unitid = $unidadid;
                $instance->activityid = $actividadid;
                $instance->timemodified = time();
                $instance->mingrade = isset($detalle->MinCalificacion) ? $detalle->MinCalificacion : 0;
                $instance->maxgrade = isset($detalle->MaxCalificacion) ? $detalle->MaxCalificacion : 100;
                $instance->attempt = isset($detalle->Intentos) ? $detalle->Intentos : 1;
                $instance->maxattempts = isset($detalle->MaxIntentos) ? $detalle->MaxIntentos : 1;
                $instance->typeid = isset($detalle->IdTipoDetalle) ? strtoupper($detalle->IdTipoDetalle) : 'PREGUNTA';
                $instance->weight = isset($detalle->Peso) ? $detalle->Peso : 1;
                if (isset($detalle->Calificacion)) {
                    $instance->grade = $detalle->Calificacion;
                }
                if (isset($detalle->FechaHoraInicio)) {
                    $instance->starttime = $detalle->FechaHoraInicio;
                }
                if (isset($detalle->Duracion)) {
                    $instance->totaltime = $detalle->Duracion;
                }
                if (isset($detalle->MaxDuracion)) {
                    $instance->maxtotaltime = $detalle->MaxDuracion;
                }
                if (isset($detalle->IdDetalle)) {
                    $instance->code = $detalle->IdDetalle;
                }
                if (isset($detalle->Descripcion)) {
                    $instance->description = $detalle->Descripcion;
                }
                if (isset($detalle->URLVerResultados)) {
                    $instance->urlviewresults = $detalle->URLVerResultados;
                }
                $select = array('userid' => $instance->userid, 'rcontentid' => $instance->rcontentid, 'unitid' => $instance->unitid, 'activityid' => $instance->activityid, 'code' => $instance->code, 'attempt' => $instance->attempt);
                if (!($rcont_gradeid = $DB->get_field('rcontent_grades_details', 'id', $select))) {
                    $instance->timecreated = $instance->timemodified;
                    $rcont_gradeid = $DB->insert_record('rcontent_grades_details', $instance);
                } else {
                    $instance->id = $rcont_gradeid;
                    $DB->update_record('rcontent_grades_details', $instance);
                }
                if (!$rcont_gradeid) {
                    return generate_error("GuardarGradesDetail", "", "ResultadoDetalleExtendido", $cm->id);
                }
            }
        }
    } catch (Exception $e) {
        return generate_error($e->getMessage(), "", "ResultadoDetalleExtendido", $cm->id);
    }
    $ret2 = new ResultadoDetalleExtendidoResponse();
    $ret2->setOK();
    return $ret2;
}