function blended_gen_cleanidvalue($user, $blended)
{
    global $DB;
    // Tipo de identificador -----------------------------------------------------
    switch (substr($blended->idtype, 0, 1)) {
        // `idnumber` tabla "user"
        case "i":
            // idnumber
            if (!empty($user->idnumber)) {
                $code = $user->idnumber;
            } else {
                return -1;
            }
            break;
            // Si no se ha introducido el `idnumber` finalizamos pues lo necesitamos para el c�digo
        // Si no se ha introducido el `idnumber` finalizamos pues lo necesitamos para el c�digo
        case "u":
            //userid
            $code = $user->id;
            break;
            // `data` tabla "user_info_data"
        // `data` tabla "user_info_data"
        case "2":
            // customfield encoded as 2fieldname
            $fieldid = intval(substr($blended->idtype, 1));
            if (!($code = $DB->get_field('user_info_data', 'data', array('userid' => $user->id, 'fieldid' => (int) $fieldid)))) {
                return -2;
                break;
            }
            break;
    }
    //Limpia guion y letra final
    $code = blended_clean_idnumber($code);
    return $code;
}
function blended_update_group($courseid, $teamname, $mem, $groupid, $ya)
{
    global $DB;
    $data = new object();
    $data->courseid = $courseid;
    $data->name = $teamname;
    $data->description_editor['text'] = ' ';
    $data->description_editor['format'] = 1;
    $data->id = $groupid;
    groups_update_group($data);
    $oldmems = $DB->get_records('groups_members', array('groupid' => $groupid));
    if ($ya == null) {
        foreach ($oldmems as $oldmem) {
            groups_remove_member($groupid, $oldmem->userid);
        }
        $us = $DB->get_records('user');
        for ($y = 0; $y < count($mem); $y++) {
            $use = array();
            foreach ($us as $f => $u) {
                $use[$f] = blended_clean_idnumber($u->idnumber);
                if ($use[$f] == $mem[$y]) {
                    groups_add_member($groupid, $u->id);
                }
            }
        }
    } else {
        if ($ya == true) {
            $memid = $DB->get_records('user');
            foreach ($memid as $mid) {
                if ($mem == substr($mid->idnumber, 0, 8)) {
                    groups_add_member($groupid, $mid->id);
                    $DB->insert_record_raw('blended_member', array('userid' => $mid->id, 'id_member' => $mem, 'id_team' => $groupid, 'leader' => 0));
                    break;
                }
            }
        }
    }
    groups_update_grouping($data);
}
Example #3
0
function blended_insert_teams($teams, $course, $blended = null, $leader = null, grade_item $item = null, $original_itemid = null, $id = null, $currentuserid = null, $groupingid)
{
    global $DB;
    $insertedteam = new object();
    $insertedteams = array();
    $array_return = array();
    $lista_id = array();
    foreach ($teams as $team) {
        // $insertedteam=blended_insert_team($team, null, $insertedteam);
        // $insertedteams[$index]= $insertedteam;
        $memberids = $team->members;
        $members = array();
        if ($memberids === null) {
            $memberids = array();
        }
        foreach ($memberids as $memberid) {
            //lista de dni sin la letra
            $user = $DB->get_record('user', array('id' => $memberid));
            $members[] = $user;
            $lista_id[] = blended_clean_idnumber($user->id);
        }
        /*
         * Actualizo los grupos actualizando el nombre del grupo y volviendo a introducir
         * los miembros comprobando que el usuario introducido existe
         */
        $contador_miembros = 0;
        $contador_miembros_id = 0;
        $miembros_introducir_validos = array();
        foreach ($members as $member) {
            if (in_array($member->id, $lista_id)) {
                //compruebo para no introducir ningun DNI que no exista en la base de datos
                $miembros_introducir_validos[] = $member;
            }
        }
        //Si existe el id del agrupamiento:
        if ($groupingid !== null) {
            $groupid = blended_add_new_group($course->id, $team->name, $miembros_introducir_validos, $groupingid);
            // 							blended_update_assignment_and_gradebook($itemid, $original_itemid, $miembros_introducir_validos, $blended,
            // 							$id, $currentuserid);
            //                   if($contador_miembros==count($members)){//Si existe un grupo vac�o o con todos los dni no v�lidos se borrar�
            //                        groups_delete_group($groupid);
            //                    }
        } else {
            if ($groupingid === null) {
                //Si no existe el id del agrupamiento
                $groupingid = blended_get_groupingid($item);
                blended_add_new_group($course->id, $team->name, $miembros_introducir_validos, $groupingid);
            }
        }
        //                $ys=$DB->get_records('groupings_groups',array('groupingid'=>$groupingid));
        //                $m=array();
        //                foreach($ys as $u=>$y){
        //                    $m[$u]=$DB->get_records('groups_members',array('groupid'=>$y->groupid));
        //                }
        //                $mbss=array();
        //                foreach($m as $fs){
        //                    if(!empty($fs)){
        //                        foreach($fs as $t=>$f){
        //                            $mb=$DB->get_record('user',array('id'=>$f->userid));
        //                            $mbss[$t]=blended_clean_idnumber($mb->idnumber);
        //                        }
        //                    }
        //                }
        // Si hay ERROR al insertar los miembros se borra el equipo insertado
        if (!empty($return)) {
            // Array con los códigos de error ocurridos
            $array_return[$insertedteam->name] = $return;
            // Deprecated: Se borra el equipo insertado
            // TODO: comprobar que no es problematico dejar el equipo con algún usuario sin insertar
            //  solo borra si el equipo a resultado vacío.
            if (count($return) == 0) {
                blended_delete_all($insertedteam->id);
                unset($insertedteams[$index]);
            }
        }
    }
    // Si hubo ERROR
    if (!empty($array_return)) {
        return $array_return;
    }
}