Caso você queira impedir que o nome e o sobrenome dos usuários sejam alterados após o cadastro, é necessário desativar esses campos na configuração do plugin de autenticação ou fazer um hacker no código do core do Moodle. O caminho mais indicado é usar interface de configuração do Moodle. Aqui demonstraremos como fazer isso via código PHP.
Para bloquear a edição dos campos nome e sobrenome no formulário de edição pelo código PHP, siga os seguintes passos:
1° Passo - Abrir o arquivo editlib.php
Abra em um editor de texto o seguinte arquivo:
$CFG->wwwroot /user/editlib.php
$CFG->wwwroot se refere ao endereço da pasta em que a aplicação do Moodle está instalada.
2° Passo - Inserir função de bloqueio edição
Insira o código abaixo em qualquer parte do arquivo editlib.php. Preferencialmente coloque antes da função useredit_shared_definition. Essa função fica geralmente na linha 70 na versão 1.9 e 80 na versão 2.x.
function readonly_form_element(){
if(has_capability('moodle/user:create',
get_context_instance(CONTEXT_SYSTEM))) return ' ';
else return ' READONLY ';
}
Essa função retorna o string READONLY apenas para usuários que não têm permissão de cadastrar usuário. O perfil de aluno e tutor não tem essa permissão. Já o perfil Administrador tem. O string READONLY é um código HTML que impede o campo do formulário de ser editado.
3° Passo - Localizar o campo nome e sobrenome do formulário de cadastro/edição
O código que gera campo de nome e sobrenome no formulário de cadastro/edição do usuário fica dentro da função useredit_shared_definition. Nessa função, localize os seguintes trechos do código:
if (fullname($nameordercheck) == 'b a' ) { // See MDL-4325
$mform->addElement('text', 'lastname', get_string('lastname'), 'maxlength="100" size="30"');
$mform->addElement('text', 'firstname', get_string('firstname'), 'maxlength="100" size="30"');
} else {
$mform->addElement('text', 'firstname', get_string('firstname'), 'maxlength="100" size="30"');
$mform->addElement('text', 'lastname', get_string('lastname'), 'maxlength="100" size="30"');
}
4° Passo - Desativar a edição dos campos nome o sobrenome
No final de cada linha de código que começa com $mform->addElement... adicione a função readonly_form_element()definida no passo 2. Feito isso, o trecho do código deve ficar assim:
if (fullname($nameordercheck) == 'b a' ) { // See MDL-4325
$mform->addElement('text', 'lastname', get_string('lastname'), 'maxlength="100" size="30"'.readonly_form_element());
$mform->addElement('text', 'firstname', get_string('firstname'), 'maxlength="100" size="30"'.readonly_form_element());
} else {
$mform->addElement('text', 'firstname', get_string('firstname'), 'maxlength="100" size="30"'.readonly_form_element());
$mform->addElement('text', 'lastname', get_string('lastname'), 'maxlength="100" size="30"'.readonly_form_element());
}
Ao adicionar a função, o HTML gerado terá o código READONLY para os usuários que não têm permissão de adicionar novos usuários no Moodle tais como aluno e tutor. Estes não conseguirão editar os campos nome e sobrenome ao modificar o perfil no Moodle.
4° Passo - Gravar alteração do arquivo editlib.php
Para que a alteração seja efetivada, grave o arquivo. Feito isso, basta acessar o formulário de edição do perfil com a senha do aluno ou do tutor para verificar se os campos nome e sobrenome estão bloqueados para edição. Confirme também que esses mesmos campos não estão bloqueados para edição ao acessar o Moodle com a senha do administrador.
Esse procedimento é um hacker do código, ou seja, altera o código padrão do Moodle. Em caso de atualização, esse código será perdido. Para manter, é necessário seguir os mesmos procedimentos após a atualização da versão.