Exemplo n.º 1
0
/**
 * A student is an user that participates in a course 'moodle/course:view'
 * and can't manage groups 'moodle/course:managegroups'
 * @global type $USER
 * @global type $DB
 * @param type $blended
 * @param type $course
 * @param type $context_course
 * @return \stdClass
 */
function alert_messages($blended, $course, $context_course)
{
    global $USER, $DB;
    $alert = new stdClass();
    //Ningún estudiante está matriculado
    $alert->no_students_in_course_alert = true;
    // Ningún estudiante está activo
    $alert->none_is_active_alert = true;
    // Hay estudiantes inactivos
    $alert->student_not_active_alert = false;
    $alert->iamstudent = false;
    $alert->no_DNI_alert = false;
    $alert->no_userinfodata_alert = false;
    list($students, $non_students, $activeuserids, $user_records) = blended_get_users_by_type($context_course);
    if ($students) {
        $alert->no_students_in_course_alert = false;
        // Comprobamos que al menos hay un estudiante activo (ha entrado al menos una vez)
        // en el curso. Nos devuelve array con todos los estudiantes
        if (count($activeuserids) > 0) {
            // Se desactiva la alerta de que ningún estudiante está activo si el array tiene
            // al menos un elemento
            $alert->none_is_active_alert = false;
        }
    }
    // Devuelve un array que contiene todos los valores de $alluserids que no
    // aparezcan $activeuserids, es decir, los estudiantes inactivos
    $inactivemembers = array_diff($students, $activeuserids);
    //Comprobamos si el usuario está activo
    if (count($inactivemembers) > 0) {
        $alert->student_not_active_alert = true;
        $alert->inactive_students = $inactivemembers;
    }
    foreach ($students as $student) {
        // $user = get_record('user','id',$student->id);
        $user = $student;
        $code = blended_gen_idvalue($user_records[$student], $blended);
        //print $code.'<BR>';
        // Código EAN a partir de `idnumber` (dni): el estudiante no lo ha introducido
        // en su perfil: $code == -1
        if ($code == -1 && $blended->idtype == 2) {
            $alert->no_DNI_alert = true;
        } else {
            if ($code == -2 && ($blended->idtype = 3)) {
                $alert->no_userinfodata_alert = true;
            }
        }
        // Comprobar si el usuario actual del modulo es un estudiante
        if ($user_records[$student]->id === $USER->id) {
            $alert->iamstudent = true;
            break;
        }
    }
    return $alert;
}
Exemplo n.º 2
0
$strnone = get_string('noselected', 'blended');
$strnosigned = get_string('nodefinedteams', 'blended');
// Print the main part of the page -----------------------------------------------
$link = "selectassignment.php?id=" . $cm->id;
$PAGE->navbar->add($strsignupteampage, $link);
$PAGE->navbar->add('Inscribirse');
echo $OUTPUT->header();
echo $OUTPUT->spacer(array('height' => 20));
echo $OUTPUT->heading(format_string($strsignupteampage) . ' ' . blended_get_item_name($item) . $OUTPUT->help_icon('signupteampage', 'blended'));
echo $OUTPUT->spacer(array('height' => 20));
// Get all teams in the current activity---------------------------------------
$grouping = blended_get_grouping($item, $blended);
$teams = blended_get_teams($item, true);
$not_DNI_out = false;
$not_DNI_in = false;
$code = blended_gen_idvalue($USER, $blended);
// Si el id es el dni y el estudiante no lo ha introducido en su perfil
if ($code == -1) {
    $not_DNI_in = true;
    $not_DNI_out = true;
}
$url14 = "selectassignment.php?id={$cm->id}";
if ($not_DNI_in) {
    echo $OUTPUT->notification("Hasta que posea código de identififación no puede inscribirse en ningun equipo", $url14);
}
// Flags de control --------------------------------------------------------------
// Flag para imprimir el boton "Eliminar miembros"
$printdeletebutton = false;
$current_member_enrolled = false;
// Compruebo si el profesor ha creado previamente un agrupamiento para esa tarea
$groupingid = blended_get_groupingid($item);
function blended_print_student_label($pdf, $blended, $codebartype, $style, $identifyLabels, $user, $columnsWidth, $rowsHeight)
{
    $x = $pdf->getX();
    $y = $pdf->getY();
    $align = '';
    $code = blended_gen_idvalue($user, $blended);
    // 	if($identifyLabels!='none')
    $identifyHeight = 3;
    // 	else
    // 	$identifyHeight=0;
    switch ($identifyLabels) {
        case 'fullname':
            $idText = fullname($user);
            break;
        case 'id':
            $idText = $code;
            break;
            //blended_gen_cleanidvalue($user,$blended);break; // cleanidvalue do not include checksum needed for EAN13
        //blended_gen_cleanidvalue($user,$blended);break; // cleanidvalue do not include checksum needed for EAN13
        case 'none':
            $idText = '';
            break;
        case 'code':
            $idText = "ID:{$code}";
    }
    if ($code == -1 || $code == -2) {
        $pdf->writeHTMLCell($columnsWidth, $rowsHeight - $identifyHeight, '', '', fullname($user) . ": No posee código de identificación.", 0, 2, 0, true, 'C');
    } else {
        switch ($codebartype) {
            case 'EAN13':
                if ($identifyLabels != 'none' && $identifyLabels != 'code') {
                    $pdf->Cell($columnsWidth, $identifyHeight, $idText, '', 2, 'L', 0, '', 0);
                }
                $pdf->SetXY($x, $identifyHeight + $y);
                $pdf->write1DBarcode($code, $codebartype, '', '', $columnsWidth, $rowsHeight - $identifyHeight, 0.2, $style, $align);
            default:
                $dim = min($columnsWidth, $rowsHeight);
                if ($identifyLabels != 'none') {
                    //	$pdf->SetXY($x+$dim,$identifyHeight+$y);
                    $pdf->writeHTMLCell($columnsWidth - $dim, $rowsHeight, '', '', $idText, 0, 0);
                } else {
                    $pdf->writeHTMLCell($columnsWidth - $dim, $rowsHeight, '', '', "ID not shown.", 0, 0);
                }
                $pdf->SetXY($x + $columnsWidth - $dim, $y);
                $pdf->write2DBarcode($code, $codebartype, $x + $columnsWidth - $dim + 2, $y + 2, $dim - 4, $dim - 4);
                //				$pdf->writeBlended2DBarcode($code,'QRCode,Q',$x+$columnsWidth-$dim,$y,$dim,$dim);
                break;
        }
    }
    $pdf->Rect($x, $y, $columnsWidth, $rowsHeight);
}
Exemplo n.º 4
0
 // $emptyteam=false;
 if (!($user = $DB->get_record('user', array('id' => $memberuserid)))) {
     $emptyteam = true;
 }
 if (!$emptyteam) {
     // Foto y vinculo a perfil de `user`
     if ($piclink = has_capability('moodle/user:viewdetails', $context) || has_capability('moodle/user:viewdetails', $usercontext)) {
         $userpic = $OUTPUT->user_picture($user);
         $profilelink = '<a href="' . $CFG->wwwroot . '/user/view.php?id=' . $user->id . '&course=' . $course->id . '">' . fullname($user, true) . '</a>';
     }
     // Estudiante lider de un equipo
     if (isset(current($members)->leader) && current($members)->leader == 1) {
         $profilelink = '<strong>' . $profilelink . '  (leader)' . '</strong>';
     }
     // ID del miembro del equipo
     $membervalue = blended_gen_idvalue(current($members), $blended);
     if ($membervalue == -1) {
         $membervalue = "\"\"";
         $stridnumber = get_string('withoutidnumber', 'blended');
     } else {
         if ($membervalue == -2) {
             $membervalue = "\"\"";
             $stridnumber = get_string('withoutuserinfodata', 'blended');
         } else {
             $stridnumber = "";
             $membervalue = blended_generate_memberid_field(current($members), $blended);
         }
     }
     if ($membervalue == ' ') {
         prev($members);
         continue;
Exemplo n.º 5
0
function blended_generate_groups_table($item, $blended, $is_grading = true)
{
    global $DB, $OUTPUT, $CFG;
    $context_course = context_course::instance($item->courseid);
    $context = context_module::instance($blended->id);
    //Obtenci�n de los grupos del agrupamiento asociado a la tarea elegida
    //Obtengo los parámetros del agrupamiento
    $grouping = blended_get_grouping($item, $blended);
    $groups = groups_get_all_groups($item->courseid, null, $grouping->id);
    $i = 0;
    //Introducci�n de los miembros del agrupamiento en un vector
    // array[groupid][userid] for group/members
    $group_members = [];
    $users_in_teams = [];
    $numteams = count($groups) + 1;
    $nummembers = 0;
    foreach ($groups as $gr) {
        $members_loc = groups_get_members($gr->id);
        // obtengo el numero de cuadros a poner en el formulario segun la
        // maxima longitud del mayor equipo
        if ($nummembers < count($members_loc)) {
            $nummembers = count($members_loc);
        }
        $group_members[$gr->id] = $members_loc;
        $users_in_teams = array_merge($users_in_teams, $members_loc);
    }
    //Contador del numero de repticiones de cada miembro
    $repetir_miembro = blended_num_members($context_course, $group_members, 'teamsmanagement');
    //Introduzco un cuadro m�s por si se desea introducir otro miembro
    $nummembers = $nummembers + 1;
    $t = 0;
    $stridteam = get_string('idteam', 'blended');
    $stridmembers = get_string('idmembers', 'blended');
    $strgrade = get_string('grade', 'blended');
    $stralertcol = get_string('viewalertsdesc', "blended");
    $strnone = get_string('nograded', 'blended');
    $strrewritegrades = get_string('rewritegrades', 'blended');
    //Grading
    //Obtengo las calificaciones(Si existen) de los miembros tanto de la tabla "blended_grade" con de "grade_grades"
    if ($is_grading) {
        $user_grades = blended_get_users_grades($item, $users_in_teams);
        $gradearray = blended_get_scale_array($item);
        $grademax = $item->grademax;
        $gradelength = 3;
    }
    $table = new html_table();
    $table->align = array("left");
    if ($is_grading) {
        $table->head = array($stridteam, $stridmembers, $strgrade, $stralertcol);
    } else {
        $table->head = array($stridteam, $stridmembers, $stralertcol);
    }
    $table->headspan = array(1, $nummembers, 1, 1);
    // Realizo el formulario rellenado con los campos que corresponden
    foreach ($groups as $group) {
        $rewriteteam = "rewrite_team_" . $t;
        $fontsize = 1;
        $gradealert = "";
        $idteam = "team_" . $t . "_id";
        $teamname = "team_" . $t . "_name";
        $tablerow = new html_table_row();
        //Obtengo los grupos por su id
        $teamfield = "<input type=\"hidden\" name=\"{$idteam}\" id=\"{$group->id}\" value=\"{$group->id}\" >" . "<input type=\"text\" name=\"{$teamname}\" id=\"{$teamname}\" value=\"{$group->name}\" size=\"6\" maxlength=\"8\"  align=\"center\">";
        $tablerow->cells[] = $teamfield;
        // Obtengo los miembros de cada grupo
        $mem = $group_members[$group->id];
        // bucle miembros
        for ($f = 0; $f < $nummembers; $f++) {
            $membername = "team_" . $t . "_member_" . $f;
            // Nombre actual del campo de texto "Identificador" (utilizando el contador)
            $emptyteam = false;
            $member = current($mem);
            if ($f < count($mem)) {
                // Objeto `user`
                $memberuserid = $member->id;
                if (!($user = $DB->get_record('user', array('id' => $memberuserid)))) {
                    $emptyteam = true;
                }
                if (!$emptyteam) {
                    // Foto y vinculo a perfil de `user`
                    if ($piclink = has_capability('moodle/user:viewdetails', $context) || has_capability('moodle/user:viewdetails', $usercontext)) {
                        $userpic = $OUTPUT->user_picture($user);
                        $profilelink = '<a href="' . $CFG->wwwroot . '/user/view.php?id=' . $user->id . '&course=' . $item->courseid . '">' . fullname($user, true) . '</a>';
                    }
                    // Estudiante lider de un equipo
                    if (isset($member->leader) && $member->leader == 1) {
                        $profilelink = '<strong>' . $profilelink . '  (leader)' . '</strong>';
                    }
                    // ID del miembro del equipo
                    $membervalue = blended_gen_idvalue($member, $blended);
                    if ($membervalue == -1) {
                        $membervalue = "\"\"";
                        $stridnumber = get_string('withoutidnumber', 'blended');
                    } else {
                        if ($membervalue == -2) {
                            $membervalue = "\"\"";
                            $stridnumber = get_string('withoutuserinfodata', 'blended');
                        } else {
                            $stridnumber = "";
                            $membervalue = blended_generate_memberid_field($member, $blended);
                        }
                    }
                    if ($membervalue == ' ') {
                        prev($mem);
                        continue;
                    }
                    $teammember_field = $userpic;
                    /* Si la calificaci�n de "blended_grade" y "grade_grades"
                     * no coincide se muestra un mensaje de alerta al usuario */
                    if ($is_grading) {
                        $user_grade = $user_grades[$memberuserid];
                        if ($user_grade->blended != '' && $user_grade->grade != '' && (double) $user_grade->blended != (double) $user_grade->grade) {
                            $grade_string = grade_format_gradevalue($user_grade->grade, $item);
                            $icon_url = $OUTPUT->pix_url('alerta', 'blended');
                            //									$teammember_field = "$userpic <img alt=\"$stralertanota.Nota individual: $cal_gr_int\" title=\"$stralertanota.Nota individual: $cal_gr_int\" src=\"../../../mod/blended/pix/alerta.jpg\">";
                            $a = new stdClass();
                            $a->grade = $grade_string;
                            $a->finalgrade = $user_grade->grade;
                            $stralertanota = get_string('alertgrade', "blended", $a);
                            $stralertanota = htmlentities($stralertanota);
                            $teammember_grade_alert = " <img alt=\"{$stralertanota}\" title=\"{$stralertanota}\" src=\"{$icon_url}\">";
                            $teammember_field .= $teammember_grade_alert;
                        }
                    }
                    /* Si existe un miembro repetido en distintos grupos se recuadra
                     * el miembro en color rojo */
                    if ($repetir_miembro[$memberuserid] == 1) {
                        $teammember_field .= "<input type=\"text\" name=\"{$membername}\" id=\"ac-userid\" value=\"{$membervalue}\" size=\"7\"\r\n                                                                maxlength=\"8\"  align=\"center\"><br><font size=\"1\">{$profilelink}<font size=\"1\" color=\"#FF0000\">{$stridnumber}</font>";
                    } else {
                        $teammember_field .= "<input type=\"text\" style=\"border-color:red\" title=\"Id repetido la calificacion individual puede ser distinta a la grupal\" name=\"{$membername}\" id=\"ac-userid\" value=\"{$membervalue}\" size=\"7\"\r\n                                                                maxlength=\"8\"  align=\"center\"><br><font size=\"1\">{$profilelink}<font size=\"1\" color=\"#FF0000\">{$stridnumber}</font>";
                    }
                    next($mem);
                } else {
                    // Campo de texto "Identificador" vacio.
                    $teammember_field = "<input type=\"text\" name=\"{$membername}\" id=\"ac-userid\" value=\"\" size=\"7\"\r\n                                                        maxlength=\"8\"  align=\"center\">";
                }
            } else {
                // Campo de texto "Identificador" vacio.
                $teammember_field = "<input type=\"text\" name=\"{$membername}\" id=\"ac-userid\" value=\"\" size=\"7\" maxlength=\"8\"  align=\"center\">";
            }
            //
            $tablerow->cells[] = $teammember_field;
        }
        //Fin del bucle MEMBERS
        //GRADES:
        $alert = false;
        $rewriteteam = "rewrite_team_" . $t;
        // Si equipo vac�o
        if ($emptyteam == true) {
            $gradealert = get_string('teamempty', 'blended');
        }
        if ($is_grading) {
            list($grade, $alert) = blended_get_team_grade($group, $item);
            // Nombre del campo de texto "Calificación"
            $grade_text_input_name = "team_" . $t . "_grade";
            // Nombre para las opciones de la lista deplegable "Calificación"
            $grade_select_input_name = "team_" . $t . "_gradelist";
            //Si equipo no calificado
            if (!$grade) {
                if ($emptyteam == true) {
                    $gradealert = get_string('teamempty', 'blended');
                } else {
                    $gradealert = get_string('teamnotgraded', 'blended');
                }
                //Fin if-else
                $gvalue = null;
                $fontsize = 2;
                $gradehidden_field = '';
            } else {
                // Si calificación individual distinta a la de grupo
                if ($alert) {
                    $gradealert = $strrewritegrades;
                    $gradealert = $gradealert . "<center><input type=\"checkbox\" name=\"{$rewriteteam}\" id=\"{$rewriteteam}\" value=\"rewrite\" checked=\"true\"></center>";
                    $fontsize = 1;
                } else {
                    $gradealert = "" . "<input type=\"hidden\" name=\"{$rewriteteam}\" id=\"{$rewriteteam}\" value=\"rewrite\">";
                    $fontsize = null;
                }
                //Fin if-else
                if (empty($teamsfromassignmentid) || !empty($grade)) {
                    // `id` de la tabla "blended_grade"
                    $idgradevalue = $grade->id;
                    // `grade` de la tabla "blended_grade"
                    $gvalue = $grade->grade;
                    // Nombre del campo oculto `id` de "blended_grade"
                    $idgrade = "team_" . $t . "_gradeid";
                    // Campo oculto con `id` de la tabla "blended_grade"
                    $gradehidden_field = "<input type=\"hidden\" name=\"{$idgrade}\" id=\"{$idgrade}\" value= \"{$idgradevalue}\" >";
                } else {
                    $gvalue = null;
                }
                //Fin if-else
            }
            // Fin if-else
            if ($gradearray !== null) {
                // Campo de texto "Calificación"
                // Lista desplegable "Calificación"
                $gvalue = $gvalue !== null ? (int) $gvalue : null;
                // scales uses integer values
                $grade_select_field = "<select name=\"{$grade_select_input_name}\" id=\"{$grade_select_input_name}\" align=\"left\" onchange=\"setGradeTextField(this,{$grade_text_input_name})\">";
                $grade_select_field .= "<option value=\"-1\">{$strnone}</option>";
                foreach ($gradearray as $key => $val) {
                    if ($gvalue !== null && $key == $gvalue) {
                        $grade_select_field .= "<option value=\"{$key}\" selected=\"selected\">{$val}</option>";
                    } else {
                        $grade_select_field .= "<option value=\"{$key}\">{$val}</option>";
                    }
                }
                $grade_select_field .= "</select>";
            } else {
                $grade_select_field = '';
            }
            $grade_field = "<input type=\"text\" name=\"{$grade_text_input_name}\" id=\"{$grade_text_input_name}\" value=\"{$gvalue}\"  size=\"{$gradelength}\" maxlength=\"{$gradelength}\"  align=\"center\" onkeyup=\"setGradeSelect(this,{$grade_select_input_name},{$gradelength},null,{$grademax})\">";
            //                                        $grade_field="<input type=\"text\" name=\"$gname\" id=\"$gname\" value=\"$gvalue\"  size=\"$gradelength\" maxlength=\"$gradelength\"  align=\"center\" >";
            $tablerow->cells[] = $gradehidden_field . $grade_field . $grade_select_field;
        }
        $tablerow->cells[] = $gradealert;
        $t++;
        $table->data[] = $tablerow;
    }
    //Fin bucle TEAMS groups
    $tablerow = new html_table_row();
    //Introducci�n de un grupo vac�o
    $groups = groups_get_all_groups($item->courseid);
    $idteam = "team_" . $t . "_id";
    $teamname = "team_" . $t . "_name";
    $tablerow->cells[] = "<input type=\"hidden\" name=\"{$idteam}\" id=\"newTeam\" value=\"\" > <input type=\"text\" name=\"{$teamname}\" id=\"newTeamName\" value=\"\" size=\"6\"\r\n\t\t\t    maxlength=\"8\"  align=\"center\">";
    // mostramos los identificadores de los miembros del grupo
    // bucle miembros
    for ($f = 0; $f < $nummembers; $f++) {
        $membername = "team_" . $t . "_member_" . $f;
        // Campo de texto "Identificador" vacio.
        $tablerow->cells[] = "<input type=\"text\" name=\"{$membername}\" id=\"ac-userid\" value=\"\" size=\"7\" maxlength=\"8\"  align=\"center\">";
    }
    $gradealert = get_string('teamempty', 'blended');
    if ($is_grading) {
        $gvalue = null;
        $fontsize = 2;
        // Nombre del campo de texto "Calificación"
        $grade_text_input_name = "team_" . $t . "_grade";
        // Nombre para las opciones de la lista deplegable "Calificación"
        $grade_select_input_name = "team_" . $t . "_gradelist";
        // Campo de texto "Calificación"
        $gradehidden_field = "<input type=\"text\" name=\"{$grade_text_input_name}\" id=\"{$grade_text_input_name}\" value=\"{$gvalue}\"  size=\"{$gradelength}\" maxlength=\"{$gradelength}\"  align=\"center\" onkeyup=\"setGradeSelect(this,{$grade_select_input_name},{$gradelength},null,{$grademax})\">";
        //                            $gradehidden_field = "<input type=\"text\" name=\"$gname\" id=\"$gname\" value=\"$gvalue\"  size=\"$gradelength\" maxlength=\"$gradelength\"  align=\"center\" >";
        // Lista desplegable "Calificación"
        $grade_select_field = "<select name=\"{$grade_select_input_name}\" id=\"{$grade_select_input_name}\" align=\"left\" onchange=\"setGradeTextField(this,{$grade_text_input_name})\">";
        $grade_select_field .= "<option value=\"-1\">{$strnone}</option>";
        foreach ($gradearray as $key => $val) {
            if ($gvalue !== null && $val == $gvalue) {
                $grade_select_field = $grade_select_field . "<option value=\"{$key}\" selected=\"selected\">{$val}</option>";
            } else {
                $grade_select_field = $grade_select_field . "<option value=\"{$key}\">{$val}</option>";
            }
        }
        $grade_select_field .= "</select>";
        $tablerow->cells[] = "{$gradehidden_field} {$grade_select_field}";
    }
    $tablerow->cells[] = $gradealert;
    $table->data[] = $tablerow;
    //Fin de la tabla
    return $table;
}
Exemplo n.º 6
0
 $not_DNI_out = false;
 $not_userinfodata_out = false;
 $not_active_out = false;
 foreach ($userids as $userid) {
     $not_DNI_in = false;
     $not_userinfodata_in = false;
     $not_active_in = false;
     //Comprobamos si el usuario esta activo
     if (!array_search($userid, $activeids)) {
         $not_active_in = true;
         $not_active_out = true;
     }
     // Obtenemos el objeto 'user' de cada estudiante del curso
     $user = $users[$userid];
     // Obtenemos el codigo EAN de la etiqueta de cada estudiante
     $code = blended_gen_idvalue($user, $blended);
     // Si el id es el dni y el estudiante no lo ha introducido en su perfil
     if ($code == -1) {
         $not_DNI_in = true;
         $not_DNI_out = true;
     } else {
         if ($code == -2) {
             $not_userinfodata_in = true;
             $not_userinfodata_out = true;
         }
     }
     // Obtenemos el nombre completo de cada estudiante
     $fullname = fullname($user, true);
     if ($not_active_in) {
         $fullname = $fullname . " (*)";
     }