Bloquear Edição do Nome e Sobrenome dos Usuários Cadastrados no Moodle pelo Código PHP
Autor: Badiu | Publicado: 2012-05-15T05:23:00-07:00


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 &nbsp;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.&nbsp;
 
 Para bloquear a edição dos &nbsp;campos nome e sobrenome no formulário de edição pelo código PHP, siga os seguintes passos:


1° Passo&nbsp; - Abrir o arquivo editlib.php&nbsp;&nbsp; &nbsp;Abra em um editor de texto o seguinte arquivo: &nbsp;&nbsp; &nbsp;$CFG-&gt;wwwroot /user/editlib.php$CFG-&gt;wwwroot&nbsp; se refere ao endereço da pasta em que a aplicação do Moodle está instalada. 2° Passo&nbsp; - Inserir função de bloqueio edição&nbsp;&nbsp; &nbsp;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&nbsp; e 80 na versão 2.x.function readonly_form_element(){ &nbsp;&nbsp; if(has_capability('moodle/user:create',
&nbsp;&nbsp;&nbsp; get_context_instance(CONTEXT_SYSTEM)))&nbsp; return ' ';&nbsp; else return ' READONLY ';&nbsp;}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. &nbsp;3° Passo&nbsp; - Localizar o campo nome e sobrenome do formulário de cadastro/edição&nbsp;&nbsp; &nbsp;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' ) {&nbsp; // See MDL-4325&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $mform-&gt;addElement('text', 'lastname',&nbsp; get_string('lastname'),&nbsp; 'maxlength="100" size="30"');
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $mform-&gt;addElement('text', 'firstname', get_string('firstname'), 'maxlength="100" size="30"');
&nbsp;&nbsp;&nbsp; } else {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $mform-&gt;addElement('text', 'firstname', get_string('firstname'), 'maxlength="100" size="30"');&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $mform-&gt;addElement('text', 'lastname',&nbsp; get_string('lastname'),&nbsp; 'maxlength="100" size="30"');&nbsp;&nbsp;&nbsp; }4° Passo&nbsp; -&nbsp; Desativar a edição dos campos nome o sobrenome&nbsp;&nbsp; &nbsp;No final de cada linha de código que começa com $mform-&gt;addElement...&nbsp; adicione a função readonly_form_element()definida no passo 2. Feito isso, o trecho do código deve ficar assim:&nbsp;&nbsp; &nbsp;if (fullname($nameordercheck) == 'b a' ) {&nbsp; // See MDL-4325&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $mform-&gt;addElement('text', 'lastname',&nbsp; get_string('lastname'),&nbsp; 'maxlength="100" size="30"'.readonly_form_element());&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $mform-&gt;addElement('text', 'firstname', get_string('firstname'), 'maxlength="100" size="30"'.readonly_form_element());&nbsp;&nbsp;&nbsp; } else {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $mform-&gt;addElement('text', 'firstname', get_string('firstname'), 'maxlength="100" size="30"'.readonly_form_element());&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $mform-&gt;addElement('text', 'lastname',&nbsp; get_string('lastname'),&nbsp; 'maxlength="100" size="30"'.readonly_form_element());&nbsp;&nbsp;&nbsp; }Ao adicionar a função, o HTML gerado terá o código&nbsp; READONLY para os usuários que não têm permissão de adicionar novos usuários no Moodle tais como aluno e tutor.&nbsp; Estes não conseguirão editar os campos nome e sobrenome ao modificar o perfil no Moodle. &nbsp;4° Passo&nbsp; - Gravar alteração do arquivo editlib.php&nbsp;&nbsp; &nbsp;Para que a alteração seja efetivada, grave o arquivo. Feito isso, basta acessar o formulário de edição do perfil&nbsp; 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&nbsp; administrador. &nbsp;&nbsp;&nbsp; &nbsp;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.