Restrição de obrigatoriedade do lastname

Restrição de obrigatoriedade do lastname

por Sergio Perluzzi -
Número de respostas: 7

Bom dia pessoal, tenho o seguinte problema:

Meus usuários do moodle vêm de uma base externa, um sistema acadêmico. Porém no meu sistema, só existe o campo nome, trazendo o nome completo do aluno nele. Então ao fazer a integração, o campo lastname não é preenchido.

Qndo o usuário loga, ele é redirecionado para o perfil dele. Sempre...

Para corrigir isso estou inserindo um " . " no lastname, mas gostaria de saber como remover essa obrigatoriedade.

Meu moodle é o 2.8


Desde já agradeço

Contagem das avaliações:  -
Em resposta à Sergio Perluzzi

Re: Restrição de obrigatoriedade do lastname

por Daniel Neis Araujo -
Imagem de Core developers Imagem de Plugin developers Imagem de Translators

Olá,


parece mais uma das peculiaridades do Moodle.

Embora eu concorde que isso é plenamento factível, e as vezes até desejável,

até onde eu sei isso não é possível no Moodle.

Não investiguei a fundo, mas vi que não parece ter nada relacionado em http://tracker.moodle.org/

A única referência vais direta que achei sobre isso foi alguém usando a 1.9.11 em 2011 e

também querendo a mesma coisa: https://moodle.org/mod/forum/discuss.php?d=171412

Sugestão é você ou responder nesse fórum, ou criar uma "issue" do tipo "improvement" no tracker,

ou criar uma nova discussão em https://moodle.org/mod/forum/view.php?id=55 para argumentar

com o pessoal que essa é uma boa idéia.

Eu concordo e se você criar a issue eu até voto nela =)

Um ponto positivo é que "lastname" ao menos não é chave única na tabela de usuários.


Grande abraço,

Daniel

Contagem das avaliações:  (1)
Em resposta à Sergio Perluzzi

Re: Restrição de obrigatoriedade do lastname

por Eduardo Kraus -
Imagem de Plugin developers

LastName e FirstName existe pois alguns países o sobre-nome vem antes do nome. Então acho um pouco difícil o Moodle abandonar a sua obrigatoriedade. Problemas da internacionalização de sistemas.

Mais, a maneira mais simples é editar o plug-in de conexão com a base externa e ao pegar o nome quebra-lo em duas partes para colocar cada coisa em seu devido lugar. Acho que seria o mais simples e menos problemático.

Muito prazer, sou Eduardo Kraus
Teacher and loves Moodle
Meu Blog: moodle.eduardokraus.com
Meu Youtube: www.youtube.com/user/ProfEduardoKraus
Meu Facebook: www.facebook.com/ProfEduardoKraus

Contagem das avaliações:  (1)
Em resposta à Sergio Perluzzi

Re: Restrição de obrigatoriedade do lastname

por Sergio Perluzzi -
Olá eu encontrei esse artigo falando a respeito da versão 1.9

Hoje é um pouco diferente o código.

Dei uma estudada a fundo e fiz o seguinte:

1. Commentei a linha $mform->addRule ($fullname, $strrequired, 'required', null, 'client'); no arquivo user/editlib.php

2. Removi "or empty ($user->lastname)" da função user_not_fully_set_up($user) no arquivo lib/moodlelib.php

Pra mim funcionou.

Creio que esse tópico deve ser migrado para o forum de desenvolvimento.

Obrigado Eduardo e Daniel

Contagem das avaliações:  -
Em resposta à Sergio Perluzzi

Re: Restrição de obrigatoriedade do lastname

por Gisele Brugger -

Olá Sérgio

Sugiro não alterar direto no código fonte, pois sempre terá o mesmo retrabalho a cada migração de versão.

Também utilizo importação de usuário de base de dados externa e tenho um script que separa o firstname do lastname

Veja se te ajuda:


function separaNomeSobrenome($nomeCompleto){ 

        $nomeAte = 0; 

        //preposição para os sobrenomes "DOS SANTOS", "DA SILVA", "DE OLIVEIRA", ETC 

        $preposicao = array('DE', 'DA', 'DO', 'DAS', 'DOS'); 

        //pós nomes 

        $posNome = array('JR', 'JUNIOR', 'JÚNIOR', 'NETO', 'FILHO'); 

        //tira os espaços em excesso 

        $nomeCompleto = trim($nomeCompleto); 

        //divide o nome completo pelo espaço entre um e outro 

        $nome = explode(' ', $nomeCompleto); 

        //posiciona o ponteiro no último nome ($sobrenome) 

        $posSobrenome = sizeof($nome)-1; 

        //verifica se o último nome é um pós nome (junior, neto, etc) 

        if( in_array($nome[$posSobrenome], $posNome) ){ 

                //se for move o ponteiro uma posição atrás (para pegar o verdadeiro sobrenome) 

                $posSobrenome--; 

        } 

        //verifica se antes do sobrenome há uma preposição (do, da, dos, das, etc) 

        if( in_array($nome[$posSobrenome-1], $preposicao) ){ 

                //se tiver move o ponteiro uma posição para trás, para pegar como parte do sobrenome 

                $posSobrenome--; 

        } 

        //pega o nome até a última posição achada como sobrenome 

        $primeiroNome = implode(' ', array_splice($nome, 0, $posSobrenome)); 

        //pega o sobrenome 

        $sobrenome = implode(' ', $nome); 

        //retorna um array com o nome e sobrenome separado 

        $nomeCompleto = array($primeiroNome, $sobrenome); 

        return $nomeCompleto; 


depois basta pegar 

posição 0 (zero) do vetor e salvar em firtsname

posição 1 (um) do vetor e salvar em lastname


Até mais

Contagem das avaliações:  (1)
Em resposta à Gisele Brugger

Re: Restrição de obrigatoriedade do lastname

por Sergio Perluzzi -

Muito boa dica Gisele,

E este seu script vai resolver o meu problema.

Muito Obrigado

Att.

Contagem das avaliações:  (1)
Em resposta à Sergio Perluzzi

Re: Restrição de obrigatoriedade do lastname

por Gisele Brugger -

sorriso Faça bom proveito .. sempre bom compartilhar algo que possa ajudar outros modlers 


até mais

Contagem das avaliações:  (1)