Ejemplo n.º 1
0
$PAGE->set_pagelayout('standard');
$item = blended_get_item($itemid);
$groupingid = blended_get_groupingid($item);
// Print the page header ---------------------------------------------------------
$teams = blended_get_teams_from_form($item);
$teams = blended_get_grades_from_form($teams);
//Actualizaci�n del agrupamiento
$outputmessages = blended_actualizar_agrupamiento($teams, $item, $blended, $delete_empty);
if (!empty($array_return)) {
    $strinserted = blended_get_error_alert($array_return, "insert");
}
//Para cada equipo:
foreach ($teams as $team) {
    //Si se ha introducido calificaci�n:
    if (!empty($team->grade)) {
        $current_team = blended_get_team($team->id);
        if (!$current_team) {
            continue;
        }
        $rawgrade = $team->grade->grade == -1 ? null : $team->grade->grade;
        $newfinalgrade = !isset($team->grade->grade) || $team->grade->grade == -1 ? null : $item->adjust_raw_grade($team->grade->grade, $item->grademin, $item->grademax);
        //        $outputmessages.="<p>New finalgrade $newfinalgrade for team $current_team->name</p>";
        blended_grade_team($item, $current_team, $newfinalgrade);
        foreach ($team->members as $memberid) {
            //                                if ($team->grade->rewrite)
            //Introduzco de nuevo las calificaciones
            $grade_prev = $item->get_grade($memberid);
            // $outputmessages.="<p>User $memberid had grade $grade_prev->finalgrade</p>";
            if (!isset($grade_prev->finalgrade) && !isset($newfinalgrade)) {
                // skip students with no changes
                continue;
Ejemplo n.º 2
0
        $a->teamname = $name_team;
        echo $OUTPUT->notification(get_string('userenrolledtoteam', 'blended', $a));
    } else {
        if ($action == 'signup' && $blended->teammethod != TEAMS_BY_TEACHERS) {
            //Comprobar que:
            //-no esta en otro equipo
            //- que el tamaño no supere el tamaño maximo propuesto por el profesor
            $id_team = required_param('team', PARAM_INT);
            //id equipo
            $members = blended_get_team_members($id_team, $blended);
            if (count($members) >= $blended->nummembers || $grouping->maxmembers !== null && count($members) >= $grouping->maxmembers) {
                echo $OUTPUT->notification(get_string('teamisfull', 'blended'));
            } else {
                if (blended_enrol_user_to_team($id_team, $USER->id, $item, $blended)) {
                    $a = new stdClass();
                    $a->username = fullname($USER);
                    $a->teamname = blended_get_team($id_team)->name;
                    echo $OUTPUT->notification(get_string('userenrolledtoteam', 'blended', $a));
                }
            }
        } else {
            print_error('nopermissions', 'blended');
        }
    }
}
// Print the page and finish up --------------------------------------------------
//        echo $OUTPUT->continue_button(new moodle_url('signupteam.php',array('id'=>$id,'itemid'=>$itemid)));
redirect(new moodle_url('signupteam.php', array('id' => $id, 'itemid' => $itemid)));
?>
 
    
Ejemplo n.º 3
-1
function blended_actualizar_agrupamiento($updated_teams, grade_item $item, $blended, $delete_empty)
{
    global $DB;
    $output = '';
    $r = 0;
    //obtengo el identificador del curso
    $grouping = blended_get_grouping($item, $blended);
    //groups_get_grouping($groupingid,'*',MUST_EXIST);//$DB->get_record('groupings',array('id'=>$groupingid));
    $courseid = $grouping->courseid;
    //Obtención de la  lista de id de los usuarios introducidos en el curso:
    $lista_usuarios = get_enrolled_users(context_course::instance($courseid), '', 0, 'u.id,u.idnumber');
    $lista_idnumbers = array();
    // 	//Obtenci�n de la lista de 'idnumber' de estos usuarios
    foreach ($lista_usuarios as $id => $lista) {
        if (!empty($lista->idnumber)) {
            $lista_idnumbers[$id] = $lista->idnumber;
        }
        // 		$r++;
    }
    // 	$r=0;
    // 	$lista_id=array();
    // 	foreach($lista_idnumbers as $lista){
    // 		$lista_id[$r]=blended_clean_idnumber($lista);
    // 		$r++;
    // 	}
    $members_processed = array();
    /* Actualizo los grupos actualizando el nombre del grupo
       y volviendo a introducir los miembros comprobando que el usuario introducido existe */
    $r = 0;
    foreach ($updated_teams as $i => $updatedteam) {
        // Check members
        $form_members = array();
        foreach ($updatedteam->members as $memberid) {
            //compruebo que el usuario introducido existe y si es as� que lo guarde
            if (key_exists($memberid, $lista_idnumbers)) {
                // user is specified by moodle id
                if (array_search($memberid, $form_members) === false) {
                    $form_members[] = $memberid;
                }
            } else {
                if (key_exists($memberid, $lista_usuarios)) {
                    // user is specified by id_number
                    if (array_search($memberid, $form_members) === false) {
                        $form_members[] = $memberid;
                    }
                }
            }
        }
        // Update/Create/delete Group
        // Create/Update Group information
        //
        if (count($form_members) == 0 && $delete_empty) {
            // An empty membership deletes the group ??
            groups_delete_group($updatedteam->id);
        } else {
            //guardo los miembros en un array
            $current_team = blended_get_team($updatedteam->id);
            if ($current_team) {
                //si existe lo actualizo
                $current_team->name = $updatedteam->name;
                groups_update_group($current_team);
            } else {
                if (count($form_members) > 0 || $updatedteam->name != '') {
                    //si no existe lo creo
                    $itemname = blended_get_item_name($item);
                    $data = new stdClass();
                    $data->courseid = $courseid;
                    $data->name = $updatedteam->name;
                    $data->description_editor['text'] = "Group for activity:  '{$itemname}'.";
                    $data->description_editor['format'] = FORMAT_PLAIN;
                    $updatedteam->id = groups_create_group($data);
                    groups_assign_grouping($grouping->id, $updatedteam->id, time(), true);
                } else {
                    continue;
                    // team with no id, no name, and no components
                }
            }
            $current_team = blended_get_team($updatedteam->id, true);
            $current_members = array_keys($current_team->members);
            // find members to remove
            $members_to_delete = array_diff($current_members, $form_members);
            $members_to_add = array_diff($form_members, $current_members);
            // remove old members
            $need_reelect_leader = false;
            foreach ($members_to_delete as $memberid) {
                $need_reelect_leader = $current_team->leaderid == $memberid;
                blended_remove_team_member($current_team, $memberid);
                //				     groups_remove_member($team->id, $member->id);
            }
            // update team conf
            $current_team = blended_get_team($current_team);
            // Add current members
            foreach ($members_to_add as $memberid) {
                groups_add_member($current_team->id, $memberid);
                if ($memberid == $current_team->leaderid) {
                    $need_reelect_leader = false;
                }
                if (key_exists($memberid, $members_processed)) {
                    $members_processed[$memberid]++;
                } else {
                    $members_processed[$memberid] = 1;
                }
            }
            if (!isset($current_team->leaderid)) {
                $need_reelect_leader = true;
            }
            // check leadership
            if (count($members_to_add) > 0 && count($members_to_delete) > 0 && $need_reelect_leader) {
                // elect new leader
                blended_set_team_leaderid($current_team->id, $form_members[0]);
                global $OUTPUT, $DB;
                $a = new stdClass();
                $a->username = fullname($DB->get_record('user', array('id' => $form_members[0])));
                $a->teamname = $current_team->name;
                $output .= $OUTPUT->notification(get_string('userpromotedtoleader', 'blended', $a));
            }
        }
    }
    return $output;
    // 	//Actualizaci�n de las calificaciones(si existen) : comparar los miembros con los de "grade_grades" y si
    // 	//no estan en el vector borrarlos de la tabla
    $grades_moodle = grade_get_grades($courseid, $item->itemtype, $item->itemmodule, $item->iteminstance);
    $grades_item = $grades_moodle->items[0];
    $grades = $grades_item->grades;
    //Para cada miembro de la tabla miro si esta en el vector $miembros_grupos
    $cont_gr = 0;
    $cont_group = 0;
    foreach ($grades as $grade) {
        foreach ($miembros_grupos as $miembro_gr) {
            foreach ($miembro_gr as $miembro) {
                if ($grade->userid != $miembro->id) {
                    $cont_gr++;
                }
                if ($cont_gr == count($miembro_gr)) {
                    $cont_group++;
                    continue;
                }
            }
            if ($cont_gr == count($miembros_grupos)) {
                print_error("borra en tabla!!");
                //Entonces ese id no esta en los mimebros y hay que borrarlo de la tabla
                $DB->delete_records('grade_grades', array('itemid' => $grade_item->id, 'userid' => $grade->userid));
                continue;
            }
        }
    }
    // 	$DB->delete_records('grade_grades',array('itemid'=>$grade_item->id));
    //Comprobaci�n de la repetici�n de miembros en distintos equipos:
    $contador = array();
    foreach ($lista_idnumbers as $t) {
        $valor = 1;
        foreach ($miembros_grupos as $miembro_gr) {
            foreach ($miembro_gr as $miembro) {
                if ($miembro->idnumber == $t) {
                    //meto en un contador para el valor del id de cada usuario las veces que se repite
                    $contador[$miembro->id] = $valor;
                    $valor++;
                }
            }
        }
    }
    return $contador;
}