Example #1
0
 $action = required_param('action', PARAM_ALPHANUMEXT);
 $userid = optional_param('userid', FALSE, PARAM_INT);
 $vpl = new mod_vpl($id);
 //TODO use or not sesskey
 //require_sesskey();
 require_login($vpl->get_course(), false);
 $PAGE->set_url(new moodle_url('/mod/vpl/forms/editor.json.php', array('id' => $id, 'action' => $action)));
 echo $OUTPUT->header();
 // Send headers.
 $raw_data = file_get_contents("php://input");
 $raw_data_size = strlen($raw_data);
 if ($_SERVER['CONTENT_LENGTH'] != $raw_data_size) {
     throw new Exception("Ajax POST error: CONTENT_LENGTH expected " . $_SERVER['CONTENT_LENGTH'] . " found {$raw_data_size})");
 }
 $data = json_decode($raw_data);
 if (!$vpl->is_submit_able()) {
     throw new Exception(get_string('notavailable'));
 }
 if (!$userid || $userid == $USER->id) {
     // Make own submission
     $userid = $USER->id;
     $vpl->require_capability(VPL_SUBMIT_CAPABILITY);
     if (!$vpl->pass_network_check()) {
         throw new Exception(get_string('opnotallowfromclient', VPL) . ' ' . getremoteaddr());
     }
     if (!$vpl->pass_password_check()) {
         throw new Exception(get_string('requiredpassword', VPL));
     }
 } else {
     // Make other user submission
     $vpl->require_capability(VPL_MANAGE_CAPABILITY);
Example #2
0
function vpl_extend_navigation(navigation_node $vplnode, $course, $module, $cm)
{
    global $CFG, $USER, $DB;
    //FIXME
    //Student
    //Descripción
    //Entrega
    //Edición
    //Ver entrega
    //En grupos visibles lista de entregas
    //Profesor
    //Descripción
    //Lista de entregas
    //Similaridad
    //Si se esta accediendo a la información de un alumno
    //Entrega
    //Editar
    //Ver entrega
    //Calificar
    //Lista de entregas previas
    $vpl = new mod_vpl($cm->id);
    $viewer = $vpl->has_capability(VPL_VIEW_CAPABILITY);
    $submiter = $vpl->has_capability(VPL_SUBMIT_CAPABILITY);
    $similarity = $vpl->has_capability(VPL_SIMILARITY_CAPABILITY);
    $grader = $vpl->has_capability(VPL_GRADE_CAPABILITY);
    $manager = $vpl->has_capability(VPL_MANAGE_CAPABILITY);
    $userid = optional_param('userid', false, PARAM_INT);
    if (!$userid && $USER->id != $userid) {
        $parm = array('id' => $cm->id, 'userid' => $userid);
    } else {
        $userid = $USER->id;
        $parm = array('id' => $cm->id);
    }
    $strdescription = get_string('description', VPL);
    $strsubmission = get_string('submission', VPL);
    $stredit = get_string('edit', VPL);
    $strsubmissionview = get_string('submissionview', VPL);
    $urlforms = '/mod/' . VPL . '/forms/';
    $urlviews = '/mod/' . VPL . '/views/';
    if ($viewer) {
        $vplnode->add($strdescription, new moodle_url('/mod/vpl/view.php', $parm), navigation_node::TYPE_SETTING);
    }
    $example = $vpl->get_instance()->example;
    $submit_able = $manager || $grader && $USER->id != $userid || !$grader && $submiter && $vpl->is_submit_able();
    if ($submit_able && !$example && !$vpl->get_instance()->restrictededitor) {
        $vplnode->add($strsubmission, new moodle_url('/mod/vpl/forms/submission.php', $parm), navigation_node::TYPE_SETTING);
    }
    if ($submit_able) {
        $vplnode->add($stredit, new moodle_url('/mod/vpl/forms/edit.php', $parm), navigation_node::TYPE_SETTING);
    }
    if (!$example) {
        if ($grader && $USER->id != $userid) {
            $text = get_string('grade');
            $vplnode->add($text, new moodle_url('/mod/vpl/forms/gradesubmission.php', $parm), navigation_node::TYPE_SETTING);
        }
        $vplnode->add($strsubmissionview, new moodle_url('/mod/vpl/forms/submissionview.php', $parm), navigation_node::TYPE_SETTING);
        if ($grader || $similarity) {
            $strlistprevoiussubmissions = get_string('previoussubmissionslist', VPL);
            $vplnode->add($strlistprevoiussubmissions, new moodle_url('/mod/vpl/views/previoussubmissionslist.php', $parm), navigation_node::TYPE_SETTING);
        }
        if ($grader || $manager) {
            $strsubmissionslist = get_string('submissionslist', VPL);
            $vplnode->add($strsubmissionslist, new moodle_url('/mod/vpl/views/submissionslist.php', $parm), navigation_node::TYPE_SETTING);
        }
        if ($similarity) {
            $strssimilarity = get_string('similarity', VPL);
            $vplnode->add($strssimilarity, new moodle_url('/mod/vpl/similarity/similarity_form.php', $parm), navigation_node::TYPE_SETTING);
        }
    }
}