sexta-feira, 13 de julho de 2012

Tornar o Campo Descrição Obrigatório ao Editar Perfil do Usuário pelo Código PHP

O campo descrição é opcional no formulário de cadastro e edição do perfil do usuário. Caso queira torná-lo obrigatório apenas ao editar o perfil, será necessário    fazer um hacker no código do core do Moodle. O hacker será desnecessário se houver alguma opção de configuração na interface do Moodle. Pelas pesquisas que fiz, não encontrei essa opção. Então vamos ao hacker. Se você descobrir como fazer essa configuração na interface do Moodle, não esquece de me avisar.
   
    Para obrigar o preenchimento do campo descrição na edição do perifl 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  - Localizar o campo descrição do formulário de cadastro/edição
    O código que gera o campo descrição no formulário de cadastro/edição do usuário fica  geralmente na linha  230. Na versão 2.2.2 na linha 260.

Moodle 1.9
Na versão 1.9.x, localize a seguinte linha de código:

$mform->setHelpButton('description', array('text', get_string('helptext')));

Abaixo dessa linha insira o seguinte código:

if(optional_param('id', 0,PARAM_INT)>0) $mform->addRule('description',  get_string('required'), 'required', null, 'client');

Moodle 2
Na versão 2.x , localize a seguinte linha de código:

$mform->addHelpButton('description_editor', 'userdescription');

Abaixo dessa linha insira o seguinte código:

if(optional_param('id', 0,PARAM_INT)>0) $mform->addRule('description_editor',  get_string('required'), 'required', null, 'client');

O código adicionado define a obrigatoriedade do campo descrição apenas se for a edição do  perfil e não o  cadastro de um novo usuário. A diferença do código da versão 1.9.x para 2.x está apenas no nome do campo que mudou de description  para description_editor.


O url de cadastro de usuário e de edição do perfil é  o mesmo . A diferença está no parâmetro id.

Url para cadastro de usuário:
$CFG->wwwroot /user/editadvanced.php?id=-1

Url para edição do perfil do  usuário:
$CFG->wwwroot /user/editadvanced.php?id=5

O parâmetro -1 indica é o processo de cadastro de um novo usuário. Se o parâmetro id for maior que zero, significa que se trata de edição do usuário. Id maior que zero é o id do usuário na base de dados.

O código   if(optional_param('id', 0,PARAM_INT)>0)   verifica se o valor do parâmetro id é maior que zero. Se for, a função addRule aplica a obrigatoriedade no campo descrição. 
 


3° 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  para verificar se o campo descrição ficou obrigatório. 


    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.

6 comentários:

  1. Muito bom esse post! Deu para sanar minhas dúvidas!

    ResponderExcluir
  2. Badiu,

    Na minha versão 2.1, no menu navegação - pagina inicial, tem uma opção de 'cursos', que lista todos os cursos cadastrado do moodle. Sabe como eu removo? já tentei de tudo mas não consigo. No administrador tem uma opção que remove a categoria(que eh uma subseção de 'cursos') mas não remove a opção 'cursos'. Já fui no código mas não conseguir remover.

    ResponderExcluir
    Respostas
    1. Eliezer,
      Você está referindo a área de conteúdo da página principal, abaixo do menu de navegação, onde geralmente aparece o texto Cursos Disponíveis, e em seguida, uma lista de curso cadastrados no Moodle?
      Tem como me mandar um print screen de tela para ver.

      Excluir
    2. Segue o link da imagem abaixo:

      http://img543.imageshack.us/img543/1900/moodlel.jpg

      Marquei em vermelho a opção "curso" que desejo remover.

      Excluir
    3. Eliezer,

      Encontrei uma solução para remover o link Cursos no bloco de navegação. É um hacker no código. Não encontrei nenhuma alternativa na interface gráfica.

      Para fazer hacker no código, siga os seguintes passos:

      1- Edite o arquivo
      MOODLE_INSTALL_DIR/blocks/navigation/renderer.php

      2-Adicione o código
      $content= substr($content, 0,strpos($content,"Cursos"));

      depois da linha 10 e antes do retorno da função navigation_tree. A linha 10 é uma referência. O importante é que fique antes código: return $content;

      O código inserido exclui do menu o termo Cursos. Caso no link do menu apareça outro termo que não seja Cursos, coloque o nome certo no parâmetro da função onde está "Cursos".

      3- Grave a alteração feita no arquivo

      4- Acesse o Moodle e verifique se o link Cursos sumiu do bloco de navegação.

      Esse procedimento é válido apendas para Moodle 2.x. Não se aplica na versão 1.9.x

      Excluir
  3. whoah, this weblog is excellent I like reading your articles.

    ResponderExcluir