tag:blogger.com,1999:blog-23901186926079661162024-03-27T16:53:09.642-07:00Moodle PHPBadiuhttp://www.blogger.com/profile/00470683612556263079noreply@blogger.comBlogger24125tag:blogger.com,1999:blog-2390118692607966116.post-8810239558143565522016-03-19T04:29:00.004-07:002016-03-19T04:29:51.389-07:00Alterar identidade de todos os usuários para anônimo no Moodle com script PHPVocê fez uma cópia da base do Moodle que está na produção e colocou no ambiente de teste. Para evitar possíveis transtornos porque não mudar identidade de todos os usuários? Isso evita possíveis dores de cabeça.<br /><br />Vamos lá, para mudar identidade para que cada fique com nome anônima como : Usuário 3, Usuário 4 e Usuário 5 etc. Além de mudar o nome, mudar também o login e senha para um padrão simples. Exemplo: usuario3 é o login e senha do Usuário 3. Usuario4 é o login e senha do Usuário 4. <br /><br />Para fazer isso, basta executar o seguinte código PHP:<br /><br />
Continue a leitura deste post no fórum da comunidade Badiu: <br /><a href="http://comunidade.badiu.com.br/mod/forum/discuss.php?d=235" target="_blank">http://comunidade.badiu.com.br/mod/forum/discuss.php?d=235</a>Badiuhttp://www.blogger.com/profile/00470683612556263079noreply@blogger.com5tag:blogger.com,1999:blog-2390118692607966116.post-38994416261810392092016-03-19T04:26:00.000-07:002016-03-19T04:27:36.619-07:00Hackear login no Moodle usando API - Logar no Moodle sem login e senhaNesse post vou compartilhar com vocês como efetuar login automaticamente no Moodle sem passar login e senha usando API do Moodle. Esse procedimento requer acesso ao FTP / sistema de arquivos php do Moodle.<br />
<br />
O código apresentado a seguir mostra como fazer isso. Esse procedimento pode ser útil em seguintes situações:<br />
<br />
<ul>
<li>Perdeu a senha de administrador e precisa logar como admin para providenciar alteração de senha;</li>
<li>Precisa integrar sistemas para que um usuário entre no Moodle já logado vindo de outros sistema;</li>
<li>Acessar como um determinado aluno sem alterar/conhecer a senha dele;</li>
</ul>
Continue a leitura deste post no fórum da comunidade Badiu: <br />
<a href="http://comunidade.badiu.com.br/mod/forum/discuss.php?d=227">http://comunidade.badiu.com.br/mod/forum/discuss.php?d=227</a> Badiuhttp://www.blogger.com/profile/00470683612556263079noreply@blogger.com12tag:blogger.com,1999:blog-2390118692607966116.post-88428426809577956272015-10-23T19:58:00.001-07:002015-10-23T19:59:43.481-07:00Duplicar Curso do Moodle com API<span style="font-family: Arial,Helvetica,sans-serif;">Este post apresenta a codificação PHP para duplicar um curso do Moodle usando o API do próprio framework Moodle.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br /> A duplicação pelo código possibilita automatizar o processo de backup e restauração. Imagine a situação em que você tem um curso modelo com todo o conteúdo formatado e pronto para ofertar. Para cada turma no sistema acadêmico é criado uma instancia diferente do curso no Moodle com o mesmo conteúdo. Neste caso, ninguém merece o processo repetitivo de restaurar manualmente o backup para cada instancia do curso. Se isso for a sua situação, relaxe. Tome uma cerva gelada para se animar com as sopas de letrinhas reaproveitando o API do Moodle. </span><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;"></span><br />
<br />
Continue a leitura deste post no fórum da comunidade Badiu: <a href="http://comunidade.badiu.com.br/mod/forum/discuss.php?d=178" target="_blank">http://comunidade.badiu.com.br/mod/forum/discuss.php?d=178</a>Badiuhttp://www.blogger.com/profile/00470683612556263079noreply@blogger.com5tag:blogger.com,1999:blog-2390118692607966116.post-25179092498205827462013-12-06T09:19:00.002-08:002013-12-06T09:19:30.296-08:00Tipos de plugin do Moodle<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">A tabela abaixo lista os vários tipos de plugin que existem no Moodle. <br />A coluna local de instalação se refere a pasta do Moodle onde o plugin deve ficar instalado. <br /></span></span><br />
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><br /></span></span>
<table border="1" cellspacing="0" cols="2">
<tbody>
<tr>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><b>Tipo de Plugin </b></span></span></td>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><b>Local de Instalação</b></span></span></td>
</tr>
<tr>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Matrícula</span></span></td>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">moodle/enrol</span></span></td>
</tr>
<tr>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Autenticação</span></span></td>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">moodle/auth</span></span></td>
</tr>
<tr>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Relatório do curso</span></span></td>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">moodle/course/reporter</span></span></td>
</tr>
<tr>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Relatório de nota</span></span></td>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">moodle/grade/reporter</span></span></td>
</tr>
<tr>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Relatório no contexto do sistema</span></span></td>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">moodle/admin/report (até versão 2.1) </span></span><br />
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">moodle/report (a partir da verão 2.2)</span></span></td>
</tr>
<tr>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Exportação de nota</span></span></td>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">moodle /grade/export</span></span></td>
</tr>
<tr>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Tema (interface gráfica)</span></span></td>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">moodle/theme</span></span></td>
</tr>
<tr>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Formato de curso</span></span></td>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">moodle/course/format</span></span></td>
</tr>
<tr>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Tipo de questão</span></span></td>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">moodle/question/type</span></span></td>
</tr>
<tr>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Atividade</span></span></td>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">moodle/mod</span></span></td>
</tr>
<tr>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Campos para base de dados </span></span></td>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">moodle/mod/data/field</span></span></td>
</tr>
<tr>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Tipo de Atividade tarefa</span></span></td>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">moodle/mod/assignment/type</span></span></td>
</tr>
<tr>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Relatório de questionário</span></span></td>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">moodle/mod/quiz/report</span></span></td>
</tr>
<tr>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Blocos </span></span></td>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">moodle/blocks</span></span></td>
</tr>
<tr>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Campo de perfil de usuário</span></span></td>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">moodle/user/profile/field</span></span></td>
</tr>
<tr>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">Plugin deversos</span></span></td>
<td><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">moodle/local</span></span></td>
</tr>
</tbody>
</table>
Badiuhttp://www.blogger.com/profile/00470683612556263079noreply@blogger.com2tag:blogger.com,1999:blog-2390118692607966116.post-34503072424861255322013-12-05T18:25:00.007-08:002013-12-06T09:21:02.570-08:00Diretrizes gerais de desenvolvimento para Mooodle<span style="font-family: Arial,Helvetica,sans-serif;"><br /> Assim como qualquer framework, o Moodle oferece um ambiente de desenvolvimento em que o programador deve seguir um conjunto de regras para implementar código que seja compatível ou reconhecidos pelo kernel do sistema. Segue algumas regras básicas. </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br /><b>1- Modularização </b>- Para implementar uma nova funcionalidade ou alterar uma já existente sem modificar o código da distribuição padrão do Moodle, crie um novo módulo ou plugin. <br /><br />Para cada tipo de funcionalidade há um tipo de plugin do Moodle. Por exemplo, há plugin para cadastro/autenticação de usuário, matricula no curso, relatório de nota, relatório de curso etc. A implementação de cata tipo de plugin deve seguir uma regra para se integrar ao sistema do Moodle. A implementação do código fora da estrutura de modularização dificulta ou inviabiliza não só a portabilidade, como também a atualização do Moodle para versão mais recente sem perder o código que implementa as novas funcionalidades. </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><b><br />2- Padronização Nomes</b> – O framework Moodle faz integração dos plugins através do nome. O nome da pasta do plugin é a chave de identificação do plugin no framework. Dois plugin do mesmo tipo não podem ter o mesmo nome, ou seja, não podem ficar na mesma pasta. Cada tipo de plugin tem um local específico que deve ser instalado. Por exemplo, os plugins de matrícula ficam na pasta <span style="font-family: "Courier New",Courier,monospace;">MOODLE_DIR/enrol</span>. Cada subpasta da pasta enrol representa um plugin. Cada tipo de plugin deve ter uma estrutura de arquivos, classes e funções específicas. Por exemplo, o plugin de matrícula da versão 1.9 deve ter um arquivo enrol.php. Nesse arquivo deve existir uma classe <span style="font-family: "Courier New",Courier,monospace;">enrolment_plugin_NOME_PASTA_PLUGIN</span>. O nome do plugin deve compor o nome da classe para evitar duplicação de nome da classe. Dentro dessa classe deve existir um conjunto de função já definidas. Desse modo, o framework carrega dinamicamente o plugin e a classe. Da mesma forma, as tabelas do banco de dados do plugin devem ter o prefixo do nome do plugin. Isso evita duplicação de nome da tabela. Por outro lado, facilita a identificação das tabelas. </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br /><b>3- Permissão</b> - Para gerenciar as permissões de acesso as funcionalidade de um plugin, é necessário que todas as permissões do plugin sejam definidas no arquivo <span style="font-family: "Courier New",Courier,monospace;">access.php</span>. Na estrutura de arquivo padrão de qualquer plugin, o arquivo <span style="font-family: "Courier New",Courier,monospace;">access.php</span> deve ficar dentro da pasta bd. Esse arquivo é carregado automaticamente durante a instalação do plugin. O core do sistema lê as permissões definidas nesse arquivo e alimenta a tabela <span style="font-family: "Courier New",Courier,monospace;">mdl_capabilities</span> e <span style="font-family: "Courier New",Courier,monospace;">mdl_role_capabilities</span>. </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br /><b>4- Banco de dados</b> – Para gerar a tabela do banco de dados automaticamente durante o processo de instalação de um plugin, é necessário definir a estrutura da tabela no arquivo <span style="font-family: "Courier New",Courier,monospace;">install.xml</span>. Esse arquivo deve ficar na pasta db do plugin. O core do moodle faz leitura desse arquivo durante o processo de instalação e gera a tabela do banco de dados. </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><b><br />5- Internacionalização de idioma </b>– O core do framework Moodle gerencia o pacote de idioma de todos os plugins. Para isso, é necessário que todas as mensagens e textos do plugins sejam definidos no arquivo específico do pacato de idioma. Por padrão em qualquer plugin o pacote de idioma deve ficar na pasta lang. <br /><br /> Seguir essas regras durante o processo de desenvolvimento para Moodle garante total compatibilidade e portabilidade do código. Por outro lado, a atualização não compromete a customização já feita desde que não haja incompatibilidade do core da versão recente em relação a versão anterior. Na contramão está o hacker do código que impacta a portabilidade e a atualização. </span>Badiuhttp://www.blogger.com/profile/00470683612556263079noreply@blogger.com4tag:blogger.com,1999:blog-2390118692607966116.post-39463298577811817102012-07-18T18:05:00.001-07:002012-07-18T18:05:24.904-07:00Arquitetura do Sistema Moodle<div style="font-family: Arial,Helvetica,sans-serif;">
<span style="font-size: small;"> Moodle é um framework de desenvolvimento PHP. A sua arquitetura de organização e sistematização de dados é centralizada em curso, ou seja, na sala de aula virtual. <br /> A arquitetura da Plataforma Moodle é complexa. Para explicá-la de uma forma mais simples, vamos explorar a relação entre três elementos:</span></div>
<ul>
<li><span style="font-size: small;"> Material didático;</span></li>
<li><span style="font-size: small;"> Curso;</span></li>
<li><span style="font-size: small;"> Matrícula.</span></li>
</ul>
<div style="font-family: Arial,Helvetica,sans-serif;">
<span style="font-size: small;"><b>Material didático</b><br /> Material didático é o conteúdo do curso. São textos, arquivos, imagens, vídeos, recursos de comunicação síncrona / assíncrona, questionários etc. No ambiente do curso do Moodle, há um sistema de editoração de conteúdo sistematizado em recursos e atividades. Cada recurso e atividade é gerenciado por um módulo específico. Por exemplo, para criar um questionário, será usado o módulo quiz. Para criar um texto, será usado o módulo page. O material didático é um item dependente do curso. Este só pode existir se estiver vinculado a um curso. Isso significa que os módulos de recursos e atividades do Moodle só podem ser instanciados dentro do ambiente do curso. <br /><br /><b>Curso</b><br /> O curso é a sala de aula virtual. É um espaço de publicação do material didático. O curso é organizado em categorias. Uma categoria pode ter vários níveis de subcategoria. Um curso deve ser vinculado a uma determinada categoria. Da mesma forma, uma atividade deve ser vinculada a um curso. Nessa estrutura de organização, há três níveis:</span><span style="font-size: small;"> <br /></span></div>
<div style="font-family: Arial,Helvetica,sans-serif;">
<span style="font-size: small;"> 1. Categoria de curso</span></div>
<div style="font-family: Arial,Helvetica,sans-serif;">
<span style="font-size: small;"> 1.1</span><span style="font-size: small;"> Curso</span></div>
<div style="font-family: Arial,Helvetica,sans-serif;">
<span style="font-size: small;"> 1.1.1 Atividades (material didático)<br /><br /> A categoria ocupa o nível mais alto na hierarquia e a atividade o nível mais baixo. A categoria serve para sistematizar a oferta de curso. Em cada curso, há um conjunto de recursos e atividades que compõe o material didático. <br /><br /><b>Matrícula</b><br /> Matrícula é o vínculo de um usuário cadastrado na base do Moodle a um determinado curso. Um usuário pode ser vinculado a mais de um curso. Para efetuar a matrícula, é necessário definir o perfil. Pode ser aluno, tutor, professor etc. O perfil define a permissão do usuário no ambiente do curso. A matrícula pode ser efetuada em nível do curso, categoria de curso ou do sistema. A matrícula no contexto do sistema possibilita acesso a todos os cursos cadastrados do Moodle. Já no contexto da categoria de curso, dá acesso apenas aos cursos daquela categoria. <br /> O usuário matriculado no curso terá acesso a todas as atividades criadas dentro do curso. Quando o usuário realiza uma atividade, como postar uma mensagem no fórum, a postagem é vinculada à instância do usuário e não à da matrícula. Isso significa que os módulos de atividades são vinculados ao usuário e não à matrícula. O usuário só poderá ser instanciado na atividade se estiver matriculado no ambiente do curso ao qual a atividade está vinculada. <br /> Tendo em conta que o usuário é instanciado no módulo de atividade e não no de matrícula, em caso da exclusão da matrícula, o histórico de participação do usuário nas atividades do curso não será excluído em efeito cascata. O histórico permanecerá inalterado. Se a matrícula for reativada, o aluno continuará no curso do ponto onde havia parado. <br /> A matrícula no curso ainda pode ser estruturada em grupo e agrupamento. Após cadastrar um aluno no curso, este pode ser vinculado a um ou mais grupos. Grupos servem para efetuar divisão de turmas dentro do ambiente de um curso. Ainda há possibilidade de criar agrupamentos, grupos de grupos. Um agrupamento pode ter um ou mais grupos de usuários. Serve para isolar uma atividade apenas a determinado grupo de usuários. Geralmente é usado para atividade recuperação que só determinados alunos devem fazer. <br /><br /> Em suma, a arquitetura do Moodle é focada no ambiente do curso. O material didático é instanciado no curso. A matrícula é instância do usuário no ambiente do curso. O aluno acessa o material didático instanciado no curso. Pelo padrão da arquitetura, não há possibilidade de vincular um material didático ou atividade na instância da matrícula. Ou seja, não é possível alocar uma atividade só para um aluno. Isso gera uma grande restrição para projetos pedagógicos que demandam do professor uma atuação personalizada para cada aluno.<br /> Essa restrição fica muito evidente quando um aluno reprova em um curso e precisa refazê-lo novamente. Como não é possível rematricular na mesma sala de aula, será necessário replicar o curso numa nova sala de aula e inscrever o aluno. É comum fazer backup de um curso inteiro e restaurar numa nova instância do curso apenas para um aluno que ficou em recuperação. <br /> Embora o Moodle seja um framework modularizado, toda sua estrutura seguem as regras da arquitetura. É possível fazer um módulo que solucione essa restrição. No entanto, isso implica reescrever alguns APIs para atender ao desvio do padrão do framework. <br /></span></div>Badiuhttp://www.blogger.com/profile/00470683612556263079noreply@blogger.com46tag:blogger.com,1999:blog-2390118692607966116.post-5108627978931606652012-07-13T19:25:00.001-07:002012-07-14T06:39:11.078-07:00Tornar o Campo Descrição Obrigatório ao Editar Perfil do Usuário pelo Código PHP<div style="font-family: Arial,Helvetica,sans-serif;">
<span style="font-size: small;">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. <br /> <br /> Para obrigar o preenchimento do campo descrição na edição do perifl pelo código PHP, siga os seguintes passos:<br /><br /><b>1° Passo - Abrir o arquivo editlib.php</b><br /> Abra em um editor de texto o seguinte arquivo: <br /> $CFG->wwwroot /user/editlib.php<br />$CFG->wwwroot se refere ao endereço da pasta em que a aplicação do Moodle está instalada. </span></div>
<div style="font-family: Arial,Helvetica,sans-serif;">
<span style="font-size: small;"><br /><b style="font-family: Arial,Helvetica,sans-serif;">2° Passo - Localizar o campo descrição do formulário de cadastro/edição</b><br style="font-family: Arial,Helvetica,sans-serif;" /><span style="font-family: Arial,Helvetica,sans-serif;"> 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. </span><br /><br /><i><b>Moodle 1.9</b></i><br /><i>Na versão 1.9.x</i>, localize a seguinte linha de código:<br /><br /><span style="font-family: "Courier New",Courier,monospace;">$mform->setHelpButton('description', array('text', get_string('helptext')));</span><br /><br />Abaixo dessa linha insira o seguinte código:<br /><br style="font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f4cccc; font-family: "Courier New",Courier,monospace;">if(optional_param('id', 0,PARAM_INT)>0) $mform->addRule('description', get_string('required'), 'required', null, 'client');</span><br /><br /><b>Moodle 2</b><br />Na versão 2.x , localize a seguinte linha de código:<br /><br /><span style="font-family: "Courier New",Courier,monospace;">$mform->addHelpButton('description_editor', 'userdescription');</span><br /><br />Abaixo dessa linha insira o seguinte código:<br /><br /><span style="background-color: #f4cccc; font-family: "Courier New",Courier,monospace;">if(optional_param('id', 0,PARAM_INT)>0) $mform->addRule('description_editor', get_string('required'), 'required', null, 'client');</span><br /><br />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 <span style="font-family: "Courier New",Courier,monospace;">description </span> para <span style="font-family: "Courier New",Courier,monospace;">description_editor.</span></span><br />
<span style="font-size: small;"><span style="font-family: "Courier New",Courier,monospace;"><br /><span style="font-family: Arial,Helvetica,sans-serif;">O url de cadastro de usuário e de edição do perfil é o mesmo . A diferença está no parâmetro id. </span><br /><br /><span style="font-family: Arial,Helvetica,sans-serif;">Url para cadastro de usuário:</span><br />$CFG->wwwroot /user/editadvanced.php?id=-1<br /><br /><span style="font-family: Arial,Helvetica,sans-serif;">Url para edição do perfil do usuário:</span><br />$CFG->wwwroot /user/editadvanced.php?id=5<br /><br /><span style="font-family: Arial,Helvetica,sans-serif;">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. </span><br /><br /><span style="font-family: Arial,Helvetica,sans-serif;">O código <span style="background-color: #f4cccc; font-family: "Courier New",Courier,monospace;"> if(optional_param('id', 0,PARAM_INT)>0)</span> verifica se o valor do parâmetro id é maior que zero. Se for, a função<span style="background-color: #f4cccc; font-family: "Courier New",Courier,monospace;"> addRule</span><span style="font-family: "Courier New",Courier,monospace;"> </span>aplica a obrigatoriedade no campo descrição. </span> <br /> </span><br /><br /><b>3° Passo - Gravar alteração do arquivo editlib.php</b><br /> 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. <br /><br /><br /> 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. </span></div>Badiuhttp://www.blogger.com/profile/00470683612556263079noreply@blogger.com6tag:blogger.com,1999:blog-2390118692607966116.post-17118891163288590382012-06-02T04:04:00.000-07:002012-06-02T04:04:19.229-07:00Moodle é um Framework de Ensino Online<div style="font-family: Arial,Helvetica,sans-serif;">
<span style="font-size: small;"> A Plataforma Moodle não é apenas um sistema de gestão de ensino online. É também um framework de desenvolvimento PHP.<br /> O ambiente de desenvolvimento do Moodle disponibiliza ao programador PHP um conjunto de diretrizes a serem seguidos e bibliotecas prontas para serem reaproveitadas de forma similar a outros frameworks PHP como Zend Framework e cakePHP.<br /> <br /><b>Diretrizes de desenvolvimento do Moodle</b><br /> Os diretrizes de desenvolvimento são um conjunto de regras que o programador PHP deve seguir para criar módulos/plugins seguindo o padrão do framework Moodle. Segue um breve resumo das principais diretrizes de desenvolvimento:</span></div>
<ul style="font-family: Arial,Helvetica,sans-serif;">
<li><span style="font-size: small;"><b>Estrutura de arquivos</b> – Define a estrutura de organização de pastas e arquivos padrões que os plugins devem ter para que possam ser reconhecidos automaticamente pelo core do sistema Moodle. <br /></span></li>
<li><span style="font-size: small;"><b>Tabelas da base de dados </b>– Define as especificações para gerar tabelas do banco de dados de forma automática durante a instalação de um plugin. <br /></span></li>
<li><span style="font-size: small;"><b>Sistema de permissão</b> - Define como os plugins devem tratar as permissões para serem gerenciadas pelo core do Moodle. <br /></span></li>
<li><span style="font-size: small;"><b>Internacionalização de idiomas</b> – Define como os plugins devem tratar as mensagens e textos, que são exibidos na interface do usuário, para que estes tenham suporte multilíngues e possam ser gerenciados pelo core do Moodle.<br /></span></li>
<li><span style="font-size: small;"><b>Padronização de nomes </b>– Define as regras sobre o nome do plugin. O nome do plugin funciona como uma chave de identidade para o core do sistema Moodle. A estrutura de alguns arquivos do plugin deve seguir o padrão de nomes para garantir a acoplagem ao core do Moodle. </span></li>
</ul>
<div style="font-family: Arial,Helvetica,sans-serif;">
<span style="font-size: small;"><br /><b>Biblioteca de código do Moodle</b><br /> Ao implementar o código no ambiente Moodle, o programador pode reduzir o tempo de trabalho ao reaproveitar as várias bibliotecas disponibilizadas na Plataforma Moodle. A seguir será apresentada alguns APIs acompanhado de uma breve descrição e link que aponta para a documentação oficial do Moodle. </span></div>
<ul>
<li><span style="font-size: small;"> <span style="font-family: Arial,Helvetica,sans-serif;"><b>API do banco de dados </b>- É um conjunto de funções para manipular o acesso ao banco de dados configurado no ambiente Moodle. Para mais detalhes, acesse o link: <a href="http://docs.moodle.org/dev/Data_manipulation_API">http://docs.moodle.org/dev/Data_manipulation_API</a><br /></span></span></li>
<li style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"> <b>API do formulário</b> – O formlib do Moodle possibilita efetuar o gerenciamento de formulários: define tipo de entrada de dado, campos obrigatórios, captura e crítica os dados inseridos. Para mais detalhes, acesse o link: <a href="http://docs.moodle.org/dev/Form_API">http://docs.moodle.org/dev/Form_API</a><br /></span></li>
<li style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"> <b>API de Acesso</b>- Esse API oferece um conjunto de funções que controla permissão de acesso do usuário no ambiente Moodle. Para mais detalhes, acesse o link: <a href="http://docs.moodle.org/dev/Access_API">http://docs.moodle.org/dev/Access_API<br /></a></span></li>
<li style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"> <b>API de Autenticação</b> - Esse API tem um conjunto de funções que efetue cadastro e autenticação do usuário. Para mais detalhes, acesse o link: <a href="http://docs.moodle.org/dev/Authentication_API">http://docs.moodle.org/dev/Authentication_API<br /></a></span></li>
<li style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"> <b>API do String </b>– Define as regras como estruturar arquivos nos plugins para gerenciar string, ou seja, mensagens e texto exibidos na interface do usuário com suporte multilíngues. Para mais detalhes, acesse o link: <a href="http://docs.moodle.org/dev/String_API">http://docs.moodle.org/dev/String_API<br /></a></span></li>
<li><span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"> Theme – Define a estrutura de arquivos que o plugin do theme (interface gráfica) deve contemplar. Por outro lado, especifica as funções do core do Moodle para gerenciar theme. Para mais detalhes, acesse o link: <a href="http://docs.moodle.org/19/en/Theme_basics">http://docs.moodle.org/19/en/Theme_basics</a></span></span></li>
</ul>
<div style="font-family: Arial,Helvetica,sans-serif;">
<span style="font-size: small;"> Moodle não é meramente um website. É um ambiente de desenvolvimento com uma arquitetura voltado para o ensino online. É um framework de desenvolvimento modular que oferece ao usuário a possibilidade de adicionar novas funcionalidades. A distribuição padrão do Moodle traz o core do sistema e alguns módulos já acoplados. Há inúmeros outros módulos disponíveis na internet que podem ser baixados e instalados no Moodle. <br /><br /> Do ponto de vista técnico, o Moodle é um ambiente aberto. Pode ser ajustado para atender qualquer demanda pedagógica criando novos módulos/plugins. Para isso, basta seguir as diretrizes de desenvolvimento. Ainda o trabalho pode ser facilitado ao usar os APIs do Moodle. <br /></span></div>Badiuhttp://www.blogger.com/profile/00470683612556263079noreply@blogger.com0tag:blogger.com,1999:blog-2390118692607966116.post-33499600785394908832012-05-15T05:23:00.001-07:002012-06-02T08:05:59.266-07:00Bloquear Edição do Nome e Sobrenome dos Usuários Cadastrados no Moodle pelo Código PHP<span style="font-size: small;"></span><br />
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;">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 <a href="http://moodleeduc.blogspot.com.br/2012/06/bloquear-edicao-dos-campos-do-perfil-do.html">configuração do plugin de autenticação</a> 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. </span></span><br />
<span style="font-size: small;"><span class="Apple-tab-span" style="white-space: pre;"><span style="font-family: Arial,Helvetica,sans-serif;"> </span></span></span><br />
<span style="font-size: small;"><span style="font-family: Arial,Helvetica,sans-serif;"><span class="Apple-tab-span" style="white-space: pre;"> </span>Para bloquear a edição dos campos nome e sobrenome no formulário de edição pelo código PHP, siga os seguintes passos:</span></span><br />
<div>
<span style="font-size: small;"><br /></span></div>
<span style="font-size: small;"><br style="font-family: Arial,Helvetica,sans-serif;" /><b><span style="font-family: Arial,Helvetica,sans-serif;">1° Passo - Abrir o arquivo editlib.php</span></b><br style="font-family: Arial,Helvetica,sans-serif;" /><span style="font-family: Arial,Helvetica,sans-serif;"> Abra em um editor de texto o seguinte arquivo: </span><br style="font-family: Arial,Helvetica,sans-serif;" /><span style="font-family: Arial,Helvetica,sans-serif;"> $CFG->wwwroot /user/editlib.php</span><br style="font-family: Arial,Helvetica,sans-serif;" /><span style="font-family: Arial,Helvetica,sans-serif;">$CFG->wwwroot se refere ao endereço da pasta em que a aplicação do Moodle está instalada. </span><br style="font-family: Arial,Helvetica,sans-serif;" /><br style="font-family: Arial,Helvetica,sans-serif;" /><b><span style="font-family: Arial,Helvetica,sans-serif;">2° Passo - Inserir função de bloqueio edição</span></b><br style="font-family: Arial,Helvetica,sans-serif;" /><span style="font-family: Arial,Helvetica,sans-serif;"> 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.</span><br style="font-family: Arial,Helvetica,sans-serif;" /><br style="font-family: Arial,Helvetica,sans-serif;" /><span style="font-family: 'Courier New',Courier,monospace; font-size: small;"><span style="background-color: #fff2cc;">function readonly_form_element(){ </span><br style="background-color: #fff2cc;" /><span style="background-color: #fff2cc;"> if(has_capability('moodle/user:create',</span></span></span><br />
<span style="font-size: small;"><span style="font-family: 'Courier New',Courier,monospace; font-size: small;"><span style="background-color: #fff2cc;"> get_context_instance(CONTEXT_SYSTEM))) return ' ';</span><br style="background-color: #fff2cc;" /><span style="background-color: #fff2cc;"> else return ' READONLY ';</span><br style="background-color: #fff2cc;" /><span style="background-color: #fff2cc;"> }</span></span><br style="font-family: Arial,Helvetica,sans-serif;" /><br style="font-family: Arial,Helvetica,sans-serif;" /><span style="font-family: Arial,Helvetica,sans-serif;">Essa função retorna o string <span style="font-family: 'Courier New',Courier,monospace;">READONLY</span> 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 <span style="font-family: 'Courier New',Courier,monospace;">READONLY </span>é um código HTML que impede o campo do formulário de ser editado. </span><br style="font-family: Arial,Helvetica,sans-serif;" /><span style="font-family: Arial,Helvetica,sans-serif;"> </span><br style="font-family: Arial,Helvetica,sans-serif;" /><br style="font-family: Arial,Helvetica,sans-serif;" /><b><span style="font-family: Arial,Helvetica,sans-serif;">3° Passo - Localizar o campo nome e sobrenome do formulário de cadastro/edição</span></b><br style="font-family: Arial,Helvetica,sans-serif;" /><span style="font-family: Arial,Helvetica,sans-serif;"> 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: </span><br style="font-family: Arial,Helvetica,sans-serif;" /><br style="font-family: Arial,Helvetica,sans-serif;" /><span style="background-color: #fff2cc; font-family: 'Courier New',Courier,monospace; font-size: small;">if (fullname($nameordercheck) == 'b a' ) { // See MDL-4325<br /> $mform->addElement('text', 'lastname', get_string('lastname'), 'maxlength="100" size="30"');</span></span><br />
<span style="font-size: small;"><span style="background-color: #fff2cc; font-family: 'Courier New',Courier,monospace; font-size: small;"><br /> $mform->addElement('text', 'firstname', get_string('firstname'), 'maxlength="100" size="30"');</span></span><br />
<span style="font-size: small;"><span style="background-color: #fff2cc; font-family: 'Courier New',Courier,monospace; font-size: small;"><br /> } else {<br /> $mform->addElement('text', 'firstname', get_string('firstname'), 'maxlength="100" size="30"');<br /><br /> $mform->addElement('text', 'lastname', get_string('lastname'), 'maxlength="100" size="30"');<br /> }</span><br style="font-family: Arial,Helvetica,sans-serif;" /><br style="font-family: Arial,Helvetica,sans-serif;" /><b><br style="font-family: Arial,Helvetica,sans-serif;" /><span style="font-family: Arial,Helvetica,sans-serif;">4° Passo - Desativar a edição dos campos nome o sobrenome</span></b><br style="font-family: Arial,Helvetica,sans-serif;" /><span style="font-family: Arial,Helvetica,sans-serif;"> 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:</span><br style="font-family: Arial,Helvetica,sans-serif;" /><span style="font-family: Arial,Helvetica,sans-serif;"> <span style="background-color: #fff2cc; font-family: 'Courier New',Courier,monospace; font-size: small;"> if (fullname($nameordercheck) == 'b a' ) { // See MDL-4325</span></span><span style="background-color: #fff2cc; font-family: 'Courier New',Courier,monospace; font-size: small;"><br /> $mform->addElement('text', 'lastname', get_string('lastname'), 'maxlength="100" size="30"'<span style="background-color: orange;">.readonly_form_element()</span>);<br /><br /> $mform->addElement('text', 'firstname', get_string('firstname'), 'maxlength="100" size="30"'<span style="background-color: orange;">.readonly_form_element()</span>);<br /><br /> } else {<br /> $mform->addElement('text', 'firstname', get_string('firstname'), 'maxlength="100" size="30"'<span style="background-color: orange;">.readonly_form_element()</span>);<br /><br /> $mform->addElement('text', 'lastname', get_string('lastname'), 'maxlength="100" size="30"'<span style="background-color: orange;">.readonly_form_element()</span>);<br /> }</span><br style="font-family: Arial,Helvetica,sans-serif;" /><br style="font-family: Arial,Helvetica,sans-serif;" /><span style="font-family: Arial,Helvetica,sans-serif;">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. </span><br style="font-family: Arial,Helvetica,sans-serif;" /><span style="font-family: Arial,Helvetica,sans-serif;"> </span><br style="font-family: Arial,Helvetica,sans-serif;" /><br style="font-family: Arial,Helvetica,sans-serif;" /><b><span style="font-family: Arial,Helvetica,sans-serif;">4° Passo - Gravar alteração do arquivo editlib.php</span></b><br style="font-family: Arial,Helvetica,sans-serif;" /><span style="font-family: Arial,Helvetica,sans-serif;"> 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. </span><br style="font-family: Arial,Helvetica,sans-serif;" /><br style="font-family: Arial,Helvetica,sans-serif;" /><br style="font-family: Arial,Helvetica,sans-serif;" /><span style="font-family: Arial,Helvetica,sans-serif;"> 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. </span></span>Badiuhttp://www.blogger.com/profile/00470683612556263079noreply@blogger.com29tag:blogger.com,1999:blog-2390118692607966116.post-55985060896456337282011-04-14T21:47:00.000-07:002011-04-14T21:56:48.429-07:00Extrair o Primeiro Acesso de um Participante no Curso do Moodle com Programação PHP<div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"> Este post apresenta a codificação PHP para extrair a data do primeiro acesso de um participante no curso do Moodle. Será apresentado código tanto para versão 1.9 quanto para versão 2.0 do Moodle. </span></div><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"><br />
Para explorar um pouco mais o comando SQL que efetiva a consulta do primeiro acesso no banco de dados, consulte o link: <a href="http://moodlesql.blogspot.com/2011/04/extrair-o-primeiro-acesso-do-aluno-no.html">http://moodlesql.blogspot.com/2011/04/extrair-o-primeiro-acesso-do-aluno-no.html</a> <br />
<br />
A código apresentado a seguir, faz uma consulta da data do primeiro acesso no banco de dados e imprime na tela. <br />
<br />
Então vamos iniciar a programação. Siga os passos a seguir.<br />
<br />
<b>1° Passo</b> <br />
Importe a <a href="http://moodlephp.blogspot.com/2010/11/usar-bibliotecas-de-funcoes-do-sistema.html">biblioteca de funções</a> do Moodle:<br />
<br />
<span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">require_once("../config.php");</span><br />
<b><br />
2° Passo </b><br />
Receba os parâmetro do id do usuário e id do curso passados pelo método GET:<br />
<br />
<span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">$user=$_GET['user'];</span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">$course=$_GET['course'];</span><br />
Faça crítica de dados caso os parâmetros não forem passados:<br />
<br />
<span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">if(empty($user)){echo "Id do usuário é um parâmetro obrigatório";exit;}</span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">if(empty($course)){echo "Id do curso é um parâmetro obrigatório";exit;}</span><br />
<b><br />
3° Passo</b> <br />
Faça a consulta no banco de dados:<br />
<br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">$sql="SELECT MIN(time) AS firstaccess FROM {$CFG->prefix}log WHERE userid=$user AND course=$course";</span><br />
<br />
Se estiver usando <b>Moodle 2.0 </b>, use esse código:<br />
<span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">$access=$DB->get_record_sql($sql);</span></span></div><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"></span><br />
Para <b>Moodle 1.9</b> e demais, use esse código:<br />
<span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">$access=get_record_sql($sql);</span><br />
Já deu para notar que a diferença da versão 1.9 para 2.0 é que as funções de acesso ao banco de dados são invocadas no objeto $DB na versão 2.0. Veja a diferença dos dois códigos destacado pela cor vermelha.<br />
<br />
<span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;"> $access=get_record_sql($sql); </span><br style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;"> $access=<b style="color: #cc0000;">$DB-></b>get_record_sql($sql);</span><br />
<br />
<b>4° Passo</b><br />
Imprima a data na tela: <br />
<br />
Verifique se o usuário nunca acessou o curso:<br />
<br style="font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">if(empty($access->firstaccess)){echo "O usuário ainda não acessou o curso";exit;}</span><br />
Caso tenha acessado, informe a data:<br />
<br />
<span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">echo date("d/m/Y H:i",$access->firstaccess);</span></span></div><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"><br />
<b>Código Completo</b></span></div><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><? </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">require_once("../config.php");</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> //receber parârmetro </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> $user=$_GET['user'];</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> $course=$_GET['course'];</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> //crítica de dados</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> if(empty($user)){echo "Id do usuário é um parâmetro obrigatório";exit;}</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> if(empty($course)){echo "Id do curso é um parâmetro obrigatório";exit;}</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> //extrair primeiro acesso </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> $sql="SELECT MIN(time) AS firstaccess FROM {$CFG->prefix}log WHERE userid=$user AND course=$course";</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">//para Moodle 2.0</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> $access=$DB->get_record_sql($sql);</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> //para Moodle 1.9</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">// $access=get_record_sql($sql);</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> //mensagem caso ainda não tenha acesado</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">if(empty($access->firstaccess)){echo "O usuário ainda não acessou o curso";exit;}</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">//imprimir data</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">echo date("d/m/Y H:i",$access->firstaccess);</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">?></span><b><br />
</b></span></div><div style="font-family: Arial,Helvetica,sans-serif;"><br />
<span style="font-size: small;"><b>Implementar no Moodle</b><br />
Para executar esse código no Moodle, crie uma pasta denominado <b>_extra</b> dentro da raiz da instalação do Moodle. Em seguida, crie um arquivo denominado <b>user_first_access_course.php</b> dentro dessa pasta. Digite o código php nesse arquivo. <br />
<br />
Feito isso, acesse o endereço: <br />
http://[endereço do moodle]/_extra/user_first_access_course.php?user=2&course=1<br />
<i>Substitua os parâmetro pelo id do curso e id do usuário pelos dados da sua pesquisa</i><br />
<br />
<br />
<b>Download </b></span></div><ul><li><span style="font-size: small;"><a href="http://www.badiu.net/blogger/moodlephp/2/user_first_access_course.zip">Moodle 2.0</a></span></li>
<li><span style="font-size: small;"> <a href="http://www.badiu.net/blogger/moodlephp/user_first_access_course.zip">Moodle 1.9 </a></span></li>
</ul><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"><br />
Descompacte o arquivo e cole na pasta<b> _extra</b> na raiz do seu Moodle. Caso essa pasta não exista, crie-a. Agora faça o teste. <br />
<br />
Esse código foi testado na versão 2.0 e 1.9.11. Pode funcionar em qualquer versão do Moodle que use as funções do PDO para manipular a base de dados. Lembrando que nas versões inferiores a 2.0, as funções do acesso ao banco de dados não são invocados por meio de um objeto. <br />
<br />
<br />
<br />
</span></div>Badiuhttp://www.blogger.com/profile/00470683612556263079noreply@blogger.com5tag:blogger.com,1999:blog-2390118692607966116.post-90766656342369286612011-04-11T04:36:00.000-07:002011-04-11T06:08:08.335-07:00GMoodle X-Link – Bloco do Moodle que Gera Link Dinâmico<div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"> GMoodle X-Link é um bloco HTML do Moodle que pode gerar link dinâmico. É um bloco normal igual ao bloco HTML. A única diferença é que substitui todas as ocorrências <span style="font-family: "Courier New",Courier,monospace;">@ID_USR </span>pelo id do usuário logado e <span style="font-family: "Courier New",Courier,monospace;">@ID_CURSO</span> pelo id do curso em que o usuário está navegando. Gera link com parâmetros personalizados. </span></div><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"><br />
Vamos imaginar uma situação em que você precisa gerar um link dentro do ambiente de um curso que aponta para um sistema externo ou mesmo para o próprio Moodle. Um link que deve enviar dois parâmetro:</span></div><ul><li><span style="font-size: small;">id do curso do curso</span></li>
<li><span style="font-size: small;">id do usuário que está logado</span></li>
</ul><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;">Desse modo, o url do link será:<br />
<span style="font-family: "Courier New",Courier,monospace;">http://www.qualquersite.com.br?user=15&curso=3</span></span></div><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"><span style="font-family: "Courier New",Courier,monospace;"></span>Nesse exemplo, 15 é id do usuário e 3 é o id do curso. Para tornar esse link dinâmico, substitua o valor dos parâmetros pelo texto especial. </span></div><ul><li><span style="font-size: small;"><span style="font-family: "Courier New",Courier,monospace;">@ID_USR </span>– para id do usuário </span></li>
<li><span style="font-size: small;"><span style="font-family: "Courier New",Courier,monospace;">@ID_CURSO</span> - para id do curso</span></li>
</ul><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9N2PthocVQh2tN3RUeOewEB365_KwMjYw1yFsAoXCBhn9L4iT6kOSbO1WkMEPXxC4jY42kB_tLZQs7yPwmLsafxcVyfmgdjGKvOyaOLLflnNYW_4SKeAZG7La32Ai5N6xJryxPNqwJcM/s1600/0_moodle_bloco_opt.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a></div><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;">Aplicando isso no link, o url deverá ficar assim: <br />
<span style="font-family: "Courier New",Courier,monospace;">http://www.qualquersite.com.br?user=@ID_USR&curso=@ID_CURSO </span><br />
Assim, esse link será diferente para cada usuário que logar e para cada ambiente do curso em que estiver navegando. Coloque o link no bloco GMoodle X-Link. A programação do bloco substitui o texto especial pelo valor correspondente.<br />
<br />
Vamos ver na prática como funciona o bloco GMoodle X-Link. Para isso, vamos fazer um exercício. Como o bloco não faz parte da instalação padrão do Moodle, é necessário instalá-lo. Para isso, siga as instruções no link: <a href="http://moodlephp.blogspot.com/2011/04/instalar-bloco-ou-modulo-no-moodle.html"><span>http://moodlephp.blogspot.com/2011/04/instalar-bloco-ou-modulo-no-moodle.html</span></a></span><br />
<span style="font-size: small;"> <br />
<b>1° Passo – Acesse o Moodle </b><br />
Logue no Moodle como tutor ou administrador. Acesse o ambiente do curso ou da página principal onde pretende criar o bloco. <br />
<b><br />
2° Passo – Ative o modo de edição</b><br />
Clique no botão ativar edição na parte superior direito da página. Feito isso, a opção para adicionar o bloco será exibido no lateral da página. <br />
</span><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9N2PthocVQh2tN3RUeOewEB365_KwMjYw1yFsAoXCBhn9L4iT6kOSbO1WkMEPXxC4jY42kB_tLZQs7yPwmLsafxcVyfmgdjGKvOyaOLLflnNYW_4SKeAZG7La32Ai5N6xJryxPNqwJcM/s1600/0_moodle_bloco_opt.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi9N2PthocVQh2tN3RUeOewEB365_KwMjYw1yFsAoXCBhn9L4iT6kOSbO1WkMEPXxC4jY42kB_tLZQs7yPwmLsafxcVyfmgdjGKvOyaOLLflnNYW_4SKeAZG7La32Ai5N6xJryxPNqwJcM/s1600/0_moodle_bloco_opt.jpg" /></a><br />
<span style="font-size: small;"><b>3° Passo – Selecione o bloco GMoodle X-Link</b><br />
No menu de seleção para adicionar bloco, selecione a opção GMoodle X-Link.</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh73ENsjdDdyUTB5ItXE206acQaHoMvOqArrjKST5jhY-wzQcvkAS_HhRZ3O1st5avGV0XQiupTISeLpIf5Mz-lLG43z-IADTECv7HltGt-0IE1VwI4eFvLw_YIchKYJdjUDisIPfV-12tn/s1600/3_block_admin_select_gmoodlexlink.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh73ENsjdDdyUTB5ItXE206acQaHoMvOqArrjKST5jhY-wzQcvkAS_HhRZ3O1st5avGV0XQiupTISeLpIf5Mz-lLG43z-IADTECv7HltGt-0IE1VwI4eFvLw_YIchKYJdjUDisIPfV-12tn/s1600/3_block_admin_select_gmoodlexlink.jpg" /></a></div><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"><br />
<br />
Ao selecionar, será adicionada uma instância do bloco na página.<br />
Se essa opção não aparecer, significa GMoodle X-Link não foi instalado ainda. Neste caso, siga as instruções de instalação no link: <a href="http://moodlephp.blogspot.com/2011/04/instalar-bloco-ou-modulo-no-moodle.html"><span>http://moodlephp.blogspot.com/2011/04/instalar-bloco-ou-modulo-no-moodle.html</span></a></span><span style="font-size: small;"> <br />
<br />
<b>4° Passo – Adicionar conteúdo no bloco</b><br />
Clique no ícone de edição do bloco. <br />
</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxqLRoGsTW3fjWI-YE0wQUWkkxaOpokGpE0sPNclWR0XkRf93UOiv2lSjFoKumqKijlsa_RQHi0EsRA0bo3FUAChFC07DbAilxEEXJwUNqMkohfWVsYM9dO10cYzms7wttAwNSSeWgbvKq/s1600/bloco_conf.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxqLRoGsTW3fjWI-YE0wQUWkkxaOpokGpE0sPNclWR0XkRf93UOiv2lSjFoKumqKijlsa_RQHi0EsRA0bo3FUAChFC07DbAilxEEXJwUNqMkohfWVsYM9dO10cYzms7wttAwNSSeWgbvKq/s1600/bloco_conf.jpg" /></a></div><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"><br />
<br />
Feito isso, será exibido o formulário de edição de conteúdo. <br />
<b><br />
5° Passo – Crie um link</b><br />
Preencha o formulário com um título qualquer. No conteúdo, coloque qualquer coisa. Nessa demonstração, vamos criar um link. <br />
Digite o texto do link, selecione-o e clique no ícone do link. Feito isso, será aberta uma janela para colocar o URL do link. </span></div><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"></span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmVjw27x2Rr0fdjIMOXfBiTJwGNrJEsygs9u6_htFBgadLMqvH0loJiCo713RudTvpg-6wd8__5xaWJ1pMh_fGCBoX2fF2Z2xFyQKPb4HcwW5HuVtHVItubJ0sJKpWjAbhFImVL2-iVDal/s1600/edit_link.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgmVjw27x2Rr0fdjIMOXfBiTJwGNrJEsygs9u6_htFBgadLMqvH0loJiCo713RudTvpg-6wd8__5xaWJ1pMh_fGCBoX2fF2Z2xFyQKPb4HcwW5HuVtHVItubJ0sJKpWjAbhFImVL2-iVDal/s1600/edit_link.jpg" /></a></div><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"><br />
<b>6° Passo – Coloque URL do link</b><br />
Coloque o URL com texto especial no valor do parâmetro como mostra a figura abaixo.</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhjmIhDcStn-tr51WZaPS8l7A-No6qSFwK_IP9EXXVFzGAQDvt2cdZ-tPacDhVqMB2QjYeqklv-ygLvrFVpUhBRDEteDdEcVUH2BIWvnorUAIjSLGXafCeYJf2mtKLaEksXKoUGqUcygBU/s1600/add_link_form.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhhjmIhDcStn-tr51WZaPS8l7A-No6qSFwK_IP9EXXVFzGAQDvt2cdZ-tPacDhVqMB2QjYeqklv-ygLvrFVpUhBRDEteDdEcVUH2BIWvnorUAIjSLGXafCeYJf2mtKLaEksXKoUGqUcygBU/s1600/add_link_form.jpg" /></a></div><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"><br />
<br />
Você pode passar ambos os parâmetros ou apenas um. O texto especial será substituído pelo valor do id na hora de execução. </span></div><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"><br />
<b>7° Passo – Salvar a configuração </b><br />
Clique no botão Salvar mudanças. Feito isso, será redirecionado ao ambiente do curso. O conteúdo do bloco será exibido. Clique no link e verifique se texto especial foi realmente substituído por id. </span></div><div style="font-family: Arial,Helvetica,sans-serif;"><br />
</div><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"></span></div><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"></span></div><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"><br />
Esse bloco é útil para fazer integração do Moodle com sistema externo. O usuário do Moodle pode acessar outro sistema passando o parâmetro id do usuário. Neste caso, a integração deve ter sincronização do usuário. Esse bloco foi projetado pela empresa Badiu para os usuários do Moodle (tutor, aluno , coordenador, administrador etc.) acessarem <a href="http://www.badiu.net/nportal/index.php?option=com_content&view=article&id=16">relatórios gerenciais do Moodle</a> no sistema <a href="http://www.badiu.net/nportal/index.php?option=com_content&view=article&id=6">GMoodle</a>. <br />
</span></div>Badiuhttp://www.blogger.com/profile/00470683612556263079noreply@blogger.com9tag:blogger.com,1999:blog-2390118692607966116.post-52767122834405387062011-04-10T11:36:00.000-07:002011-04-11T04:38:26.218-07:00Instalar Bloco e Módulo no Moodle<div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;">O Procedimento para instalar um bloco ou Módulo no Moodle é muito simples. A plataforma Moodle é um sistema Modular. A sua distribuição padrão traz um conjunto de blocos, plugins e módulos. Você pode customizar, ampliando as funcionalidades, adicionando novos blocos, módulos e plugins. </span></div><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"><br />
Nesse post, vamos explicar como instalar o bloco GMoodle X-Link. Trata-se de um bloco de publicação de conteúdo HTML que gera link dinâmico. Foi desenvolvido pela empresa <a href="http://www.badiu.net/">Badiu</a> para integrar Moodle com <a href="http://www.badiu.net/nportal/index.php?option=com_content&view=article&id=6&Itemid=7">GMoodle</a> – Sistema de Gestão do Moodle. Pode ser utilizado para integrar Moodle com qualquer outro sistema por meio de link. Veja mais detalhes no link: <a href="http://moodlephp.blogspot.com/2011/04/gmoodle-x-link-bloco-do-moodle-que-gera.html">http://moodlephp.blogspot.com/2011/04/gmoodle-x-link-bloco-do-moodle-que-gera.html</a><br />
<br />
O procedimento para instalar o bloco GMoodle X-Link é mesmo para instalar qualquer bloco no Moodle. <br />
<br />
<b>1° Passo – Download</b><br />
Faça download GMoodle X-Link de acordo com a versão do seu Moodle<br />
<br />
<b><i>Para Moodle 1.8 e 1.9:</i></b></span></div><ul><li><a href="http://www.badiu.net/download/gmoodle_xlink.zip"><span style="font-size: small;">gmoodle_xlink.zip</span></a></li>
<li><a href="http://www.badiu.net/download/gmoodle_xlink.tar.gz"><span style="font-size: small;">gmoodle_xlink.tar.gz</span></a></li>
</ul><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"><i><b>Para Moodle 2.0:</b></i></span></div><ul><li><a href="http://www.badiu.net/download/gmoodle_xlink-moodle20.zip"><span style="font-size: small;">gmoodle_xlink-moodle20.zip</span></a></li>
<li><a href="http://www.badiu.net/download/gmoodle_xlink-moodle20.tar.gz"><span style="font-size: small;">gmoodle_xlink-moodle20.tar.gz</span></a></li>
</ul><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"> <br />
É necessário ressaltar que na versão 2.0 do Moodle a estrutura dos blocos mudou muito. Pois, blocos projetados para versão 1.8 ou 1.9 não funcionam na versão 2.0. <br />
<b><br />
2º Passo – Descompacte o arquivo</b> <br />
Descompacte o arquivo. Feito isso, certifique há uma pasta <b>gmoodle_xlink</b>. Dentro dessa pasta há os seguintes arquivos/pasta:</span></div><ul><li><span style="font-size: small;">lang</span></li>
<li><span style="font-size: small;">block_gmoodle_xlink.php</span></li>
<li><span style="font-size: small;">e.t.c</span></li>
</ul><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj93KFFLkaN9CvkOjPJ8Ab2T6dmbosFDZR3nmtWO1pwRrlUBHf8FFqE1GBwgZXATcopmv_drBcxPLRXpES6VML5PTuLOUhr0aDQkf05hhOEaRfxrbPtEBQv7YM4Ql5iHcJ9o7ZkkdE_62gt/s1600/1-+pasta_blocks_moodle.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a></div><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"><b>3° Passo – Coloque o arquivo no sistema do Moodle </b><br />
Coloque a pasta gmoodle_xlink dentro da pasta blocks da instalação do Moodle. A pasta blocks fica na raiz da instalação do Moodle. Está no mesmo nível de hierarquia que as pastas admin,course, mod como mostra a figura a baixo.<br />
</span></div><div style="font-family: Arial,Helvetica,sans-serif;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj93KFFLkaN9CvkOjPJ8Ab2T6dmbosFDZR3nmtWO1pwRrlUBHf8FFqE1GBwgZXATcopmv_drBcxPLRXpES6VML5PTuLOUhr0aDQkf05hhOEaRfxrbPtEBQv7YM4Ql5iHcJ9o7ZkkdE_62gt/s1600/1-+pasta_blocks_moodle.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj93KFFLkaN9CvkOjPJ8Ab2T6dmbosFDZR3nmtWO1pwRrlUBHf8FFqE1GBwgZXATcopmv_drBcxPLRXpES6VML5PTuLOUhr0aDQkf05hhOEaRfxrbPtEBQv7YM4Ql5iHcJ9o7ZkkdE_62gt/s1600/1-+pasta_blocks_moodle.jpg" /></a><br />
<span style="font-size: small;">Tratando-se da instalação de um módulo, basta colocar dentro da pasta mod. Se for um plugin de autenticação, deve ser colocada dentro da pasta auth. Bem, já deu para notar como é a arquitetura Modular do Moodle. <br />
<b><br />
4° Passo – Instalar no sistema</b><br />
Logue no Moodle como administrador, clique em Avisos no bloco de administração do site.</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzt8N42eUZUo2kz5QhhaCmeE_eSv_EoD3UhBjx6cUsWN8SgvcHMg_fLrmLsBhTiS92THLCRuxiyhjnvfC9mhdpkVIuUJpeEB_nxKka4b6kokD8qCBFuLKGFtjCd1ctAVGuVO_iP9y-EqP8/s1600/2_bloco_admin_avisos_moodle.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzt8N42eUZUo2kz5QhhaCmeE_eSv_EoD3UhBjx6cUsWN8SgvcHMg_fLrmLsBhTiS92THLCRuxiyhjnvfC9mhdpkVIuUJpeEB_nxKka4b6kokD8qCBFuLKGFtjCd1ctAVGuVO_iP9y-EqP8/s1600/2_bloco_admin_avisos_moodle.jpg" /></a></div><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"><br />
Feito isso, o bloco GMoodle X-Link será automaticamente detectado. Basta clicar no botão <b>Continuar</b> (versão 1.9) ou <b>Atualizar</b> (Versão 2.0) no final da tela para finalizar a instalação. <br />
<br />
Para instalação de um módulo, vale o mesmo procedimento. <br />
<b><br />
5º - Confirmar a Instalação</b><br />
Para confirmar que o bloco foi instalado com sucesso, acesse o ambiente do curso ou da página principal do Moodle. Em seguida, ative a edição. Vá para o lateral da página, clique na opção para adicionar um bloco. Feito isso, confirme se o bloco GMoodle X-Link aparece na lista dos blocos, como mostra a figura abaixo. <br />
</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh73ENsjdDdyUTB5ItXE206acQaHoMvOqArrjKST5jhY-wzQcvkAS_HhRZ3O1st5avGV0XQiupTISeLpIf5Mz-lLG43z-IADTECv7HltGt-0IE1VwI4eFvLw_YIchKYJdjUDisIPfV-12tn/s1600/3_block_admin_select_gmoodlexlink.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh73ENsjdDdyUTB5ItXE206acQaHoMvOqArrjKST5jhY-wzQcvkAS_HhRZ3O1st5avGV0XQiupTISeLpIf5Mz-lLG43z-IADTECv7HltGt-0IE1VwI4eFvLw_YIchKYJdjUDisIPfV-12tn/s1600/3_block_admin_select_gmoodlexlink.jpg" /></a></div><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"><br />
<br />
Se aparecer na lista, significa que a instalação foi efetuada com sucesso. Tratando-se de um módulo, confirme a instalação na opção para adicionar recurso ou atividade. <br />
<br />
Embora focamos na instalação do bloco GMoodle X-Link, o procedimento para instalar um bloco ou módulo é o mesmo. Caso você tenha necessidade de ampliar as funcionalidades do seu Moodle já sabe como proceder. Agora lhe desejo bom trabalho para ampliara as funcionalidades do seu Moodle. <br />
</span></div>Badiuhttp://www.blogger.com/profile/00470683612556263079noreply@blogger.com11tag:blogger.com,1999:blog-2390118692607966116.post-79441341578761198282011-03-20T20:35:00.000-07:002011-03-20T20:35:29.193-07:00Redirecionar Login do Moodle Para Um Sistema Externo<div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"> Quanto o Moodle é integrado com outro sistema, o formulário de login pode ser desativado se os usuários logam no sistema externo e depois acessam o Moodle. Neste caso, o Moodle deve ser customizado para redirecionar à página de login do sistema externo todas as vezes que os usuários clicarem no link Acesso no ambiente do Moodle. <br />
<br />
Essa implementação deve ser feita por meio de alteração do código PHP do Moodle. <br />
<br />
Para redirecionar o login do Moodle para um sistema externo, siga os seguintes passos:<br />
<br />
<b>1° Passo - Abrir o arquivo que processa o login</b><br />
Abra em um editor de texto o seguinte arquivo: </span></div><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"> <span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">$CFG->wwwroot/login/index.php</span><br />
<br />
<b>2° Passo - Inserir URL do sistema externo</b><br />
No final do arquivo, antes da linha do código <br />
<span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">print_header("$site->...</span><br />
aproximadamente na linha 319, insera seguinte trecho do código:<br />
<span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">header( 'Location: http://NOVO_ENDERECO_LOGIN') ;</span><br />
<br />
Substitua o texto NOVO_ENDERECO_LOGIN pelo url de login do sistema externo. <br />
<br />
Esse trecho do código interrompe e execução e redireciona para o site do sisteme externo. <br />
<br />
<b>3° Passo - Gravar alteração do arquivo</b><br />
Para que a alteração seja efetivada, grave o arquivo. Feito isso, o Moodle redireciona os usuários para logarem em um sistema externo.<br />
<br />
Com essa alteração, o formulário de login do Moodle fica desativada. Esse procedimento é recomendado em caso de integração em que o sistema externo assume a autenticação dos usuários.</span></div>Badiuhttp://www.blogger.com/profile/00470683612556263079noreply@blogger.com22tag:blogger.com,1999:blog-2390118692607966116.post-76793137334880836492011-03-18T13:24:00.000-07:002011-03-18T13:24:48.631-07:00Ativar Exibição do Erro no Moodle De repente a tela do Moodle fica em branco. O que está acontecendo ninguém sabe. É claro que nos bastidores ocorreu alguma falha. Para descobrir isso, é necessário ativar a exibição do erro. Só assim o programador, desenvolvedor ou webmaster poderá decifrar o que está acontecendo nos bastidores, ou seja, na camada da aplicação ou do do banco de dados. <br />
<br />
Para ativar a exibição dos erros, siga os seguintes passos:<br />
<b><br />
1° Passo – Acesse o Moodle</b><br />
Acesse o Moodle com a senha do administrador <br />
<br />
<b>2° Passo – Acesse o Link Debugging </b><br />
No bloco Administração de site navegue em:<br />
<br />
Na versão do Moodle 2.0: Development/Debugging<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhio1YOjC5x9WAgpmriMFyicN7wIJDibiEUhWx-xs87Yhfb28YHhDgQ-WZAzZH0uzDrugA54MRCBJH1JuZYnmkPcC8Rr9r9cD1jpN9olVvmcNyXOypog8qqZmg1AHDfAhdObb6NJ92A0Wuz/s1600/moodle_bloco_admin_debug.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhio1YOjC5x9WAgpmriMFyicN7wIJDibiEUhWx-xs87Yhfb28YHhDgQ-WZAzZH0uzDrugA54MRCBJH1JuZYnmkPcC8Rr9r9cD1jpN9olVvmcNyXOypog8qqZmg1AHDfAhdObb6NJ92A0Wuz/s1600/moodle_bloco_admin_debug.jpg" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieAi3FODPiizrw8adbHpEzke9VM8MmSif4OJFArQKTzr2RW9OSEhuvMR_NbAbts6rzD7bvCdvvijwi4hyphenhyphenX2mAp0ImvnAqf1iHBXgQS_eB3Rce4iq-vBWsCahsqxvqiRXTCDo9aWSpeAfFb/s1600/moodle_bloco_admin_debug_1_9.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br />
</a></div> Na versão do Moodle 1.9 : Servidor/Debugging<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieAi3FODPiizrw8adbHpEzke9VM8MmSif4OJFArQKTzr2RW9OSEhuvMR_NbAbts6rzD7bvCdvvijwi4hyphenhyphenX2mAp0ImvnAqf1iHBXgQS_eB3Rce4iq-vBWsCahsqxvqiRXTCDo9aWSpeAfFb/s1600/moodle_bloco_admin_debug_1_9.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieAi3FODPiizrw8adbHpEzke9VM8MmSif4OJFArQKTzr2RW9OSEhuvMR_NbAbts6rzD7bvCdvvijwi4hyphenhyphenX2mAp0ImvnAqf1iHBXgQS_eB3Rce4iq-vBWsCahsqxvqiRXTCDo9aWSpeAfFb/s1600/moodle_bloco_admin_debug_1_9.jpg" /></a></div>Ao clicar no link Debugging, será exibido um formulário de configuração sobre a exibição do erro.<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv2tp5rK5KHWY638pP1ZWxbW65TXDLDD0Xi4YdEps4pvjfQym2SvS52VyO7WhmB72RpUwO2lrlCtjPqWL-F2Jw8oXSNiaXYsCept91JrF0emMiHTdZ59TnR3ETZm6_61-NjNH74isdQCkO/s1600/moodle_debug_form.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgv2tp5rK5KHWY638pP1ZWxbW65TXDLDD0Xi4YdEps4pvjfQym2SvS52VyO7WhmB72RpUwO2lrlCtjPqWL-F2Jw8oXSNiaXYsCept91JrF0emMiHTdZ59TnR3ETZm6_61-NjNH74isdQCkO/s1600/moodle_debug_form.jpg" /></a></div><br />
<br />
<b>3° Passo – Selecione a mensagem de erro a ser exibida</b><br />
Por padrão, nenhuma mensagem de erro é exibida. Há vários níveis de exibição. O mais detalhado é a opção desenvolvedor. Se você for programador ou desenvolvedor, ative essa opção.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyctkgRQ17OXvs-3CoaJMscJH_KtDo5Q4cwrQQNDJTacC8ghK8YXxN-caa65YTudmKKPkCniIicEMxvtiD9KhvMbfPqiMFD4lZSRhUMnVQnWhPfUras73OejREx-STV9vr2mBSwYVAl2yS/s1600/moodle_debug_option_form.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhyctkgRQ17OXvs-3CoaJMscJH_KtDo5Q4cwrQQNDJTacC8ghK8YXxN-caa65YTudmKKPkCniIicEMxvtiD9KhvMbfPqiMFD4lZSRhUMnVQnWhPfUras73OejREx-STV9vr2mBSwYVAl2yS/s1600/moodle_debug_option_form.jpg" /></a></div><br />
Bem, isso é tudo que você precisa para saber o que está acontecendo com o seu Moodle por traz dos panos. A exibição de erro não é recomendada em ambiente de produção. Caso tenha que ser feito, ative-a apenas durante o momento de reparo, assim causará menos transtorno aos alunos e tutores que poderão ficar mais confuso ainda com as sopas de letrinas. <br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhio1YOjC5x9WAgpmriMFyicN7wIJDibiEUhWx-xs87Yhfb28YHhDgQ-WZAzZH0uzDrugA54MRCBJH1JuZYnmkPcC8Rr9r9cD1jpN9olVvmcNyXOypog8qqZmg1AHDfAhdObb6NJ92A0Wuz/s1600/moodle_bloco_admin_debug.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br />
</a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEieAi3FODPiizrw8adbHpEzke9VM8MmSif4OJFArQKTzr2RW9OSEhuvMR_NbAbts6rzD7bvCdvvijwi4hyphenhyphenX2mAp0ImvnAqf1iHBXgQS_eB3Rce4iq-vBWsCahsqxvqiRXTCDo9aWSpeAfFb/s1600/moodle_bloco_admin_debug_1_9.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><br />
</a></div>Badiuhttp://www.blogger.com/profile/00470683612556263079noreply@blogger.com17tag:blogger.com,1999:blog-2390118692607966116.post-2095245608649500042011-02-28T12:31:00.000-08:002011-02-28T12:31:51.881-08:00Cancelar Atualização Obrigatória do Formulário Perfil para Destrancar a Navegar no Moodle<div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"> No sistema Moodle é obrigatório que o perfil do usuário tenha nome, sobrenome e e-mail. Se você desativar a obrigatoriedade deses campos no formulário de cadastro, ou efetuar inserção SQL diretamente no banco de dados, a navegação no ambiente do Moodle, após o login, fica trancada até o que esses dados sejam atualizados.<br />
<br />
Se você estiver recebendo reclamação dos alunos de que toda as vezes que logam no Moodle aparece o formulário de perfil que os impeçam de acessar o curso enquanto o maldito formulário não for atualizada, fique frio. A solução será desativar a função da biblioteca do Moodle responsável por essa dor cabeça. Então vamos lá, para resolver isso, siga os seguintes passos: <br />
<br />
<b> 1° Passo - Abrir o arquivo moodlelib.php</b><br />
Abra em um editor de texto o seguinte arquivo: <br />
<span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> $CFG->wwwroot/lib/moodlelib.php</span><br />
<br />
<br />
<b>2° Passo - Localizar função user_not_fully_set_up</b><br />
Localize no arquivo o seguinte código:<br />
<br />
<span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">function user_not_fully_set_up($user) {</span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> return ($user->username != 'guest' and (empty($user->firstname) or empty($user->lastname) or empty($user->email) or over_bounce_threshold($user)));</span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">}</span><br />
<br />
Esse código fica normalmente na linha 2330. Define os campos do perfil que são obrigatório. <br />
<br />
<b>3° Passo - Desativar a função user_not_fully_set_up parcialmente ou totalmente</b><br />
<b><i><br />
a) Parcialmente</i></b><br />
Para desativar a função parcialmente, eliminando a obrigatoriedade apenas do sobrenome, apague o seguinte trecho do código: <span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">or empty($user->lastname)</span><br />
Feito isso, o código ficará assim:<br />
<br />
<span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">function user_not_fully_set_up($user) {</span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> return ($user->username != 'guest' and (empty($user->firstname) or empty($user->email) or over_bounce_threshold($user)));</span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">}</span><br />
<br />
<i><b>b) Totalmente</b></i><br />
Para desativar a função totalmente, simplesmente substitua toda a linha de código dentro da função </span><span style="font-size: small;"> <span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">return false</span></span><span style="font-size: small;">. <br />
Feito isso, o código ficará assim:<br />
<br />
<span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">function user_not_fully_set_up($user) {</span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> return false;</span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">}</span><br />
<br />
<b>4° Passo - Gravar alteração do arquivo moodlelib.php</b><br />
Para que a alteração seja efetivada, grave o arquivo. Feito isso, os alunos não terão mais dor de cabeça com o formulário do perfil e você não perderá seu sono pensando em como descascar o abacaxi.<br />
<br />
O ideal é manter a linha de código original desativado com comando de comentário. Isso é importante caso queira voltar para a configuração original depois.<br />
Foi feito teste disso na versão 1.9.3 e 1.9.7. Tendo em conta que se trata do padrão básico do Moodle, em tese, isso pode funcionar em qualquer versão seja 1.8 ou 2.0, basta testar. <br />
É bom lembrar que esse tipo de operação cirúrgica alterar o padrão do Moodle. Sendo assim, ao atualizar o Moodle para a nova versão, o problema voltará. A solução é alterar novamente o código PHP. <br />
<br />
<b>Veja também</b><br />
<a href="http://moodlephp.blogspot.com/2011/01/tornar-campo-sobrenome-opcional-no.html">Tornar Campo Sobrenome Opcional no Formulário de Cadastro de Usuário no Moodle </a></span></div>Badiuhttp://www.blogger.com/profile/00470683612556263079noreply@blogger.com0tag:blogger.com,1999:blog-2390118692607966116.post-79118483080847669872011-01-31T17:54:00.000-08:002015-08-26T18:23:39.671-07:00Tornar Campo Sobrenome Opcional no Formulário de Cadastro de Usuário no Moodle<div style="font-family: Arial,Helvetica,sans-serif;">
<span style="font-size: small;"><br />
Caso você queira customizar o formulário de cadastro de usuário do Moodle para que o campo sobrenome não seja obrigatório, é necessário alterar o código PHP. <br />
</span><br />
<span style="font-size: small;"><b>Observação:</b><br />Se estiver usando a verão 2.7 ou superior, veja atualização desse post no fórum da comunidade Badiu nesse link: <a href="http://comunidade.badiu.com.br/mod/forum/discuss.php?d=132" target="_blank">http://comunidade.badiu.com.br/mod/forum/discuss.php?d=132</a></span><br />
<span style="font-size: small;"><br />
Para tornar opcional o preenchimento do campo sobrenome, siga os seguintes passos:<br />
<b><br />
1° Passo - Abrir o arquivo editlib.php</b><br />
Abra em um editor de texto o seguinte arquivo: <br />
<span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> $CFG->wwwroot /user/editlib.php</span><br />
<br />
<i><span style="font-family: "Courier New",Courier,monospace;">$CFG->wwwroo</span>t se refere ao endereço da pasta em que a aplicação do Moodle está instalado. </i><br />
<br />
<b>2° Passo - Localizar a regra do campo sobrenome</b><br />
Localize no arquivo o seguinte código: <br />
<br />
<span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">$mform->addRule('lastname', $strrequired, 'required', null, 'client');</span><br />
<br />
Esse código fica normalmente na linha 97. Define que o campo sobrenome do usuário deve ser preenchido.<br />
<br />
<b><br />
3° Passo - Desativar a regra do campo sobrenome</b><br />
Faça comentário na linha do código que define a regra de obrigatoriedade ou simplesmente apague a linha de código. Se fizer o comentário, a linha de código deve ficar assim:<br />
<br />
<span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"><span style="background-color: #ea9999;">//</span>$mform->addRule('lastname', $strrequired, 'required', null, 'client');</span><br />
<br />
<br />
<b>4° Passo - Gravar alteração do arquivo editlib.php</b><br />
Para que a alteração seja efetivada, grave o arquivo. Feito isso, basta acessar o formulário de cadastro e verificar que o campo sobrenome se tornou opcional. <br />
</span><br />
<span style="font-size: small;"><br />
<b>5° Passo - Desabilite a obrigatoriedade do sobrenome na biblioteca do sistema</b><br />
Para evitar que o formulário de perfil tranque a navegação após o login, desabilite o sobrenome na função função<span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> user_not_fully_set_up</span>. Para isso, siga as instrução no link: <a href="http://moodlephp.blogspot.com/2011/02/cancelar-atualizacao-obrigatoria-do.html">http://moodlephp.blogspot.com/2011/02/cancelar-atualizacao-obrigatoria-do.html</a><br />
<br />
Essa alteração não é recomendado nos campos que são definidos obrigatórios a nível do banco de dados como a caso dos campos nome e e-mail.</span></div>
Badiuhttp://www.blogger.com/profile/00470683612556263079noreply@blogger.com16tag:blogger.com,1999:blog-2390118692607966116.post-83110501899008146742010-12-13T18:42:00.000-08:002010-12-13T18:42:57.005-08:00Listar Alunos que Ainda não Acessaram o Curso no Moodle num Determinado Período com Programação PHP<div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"> Este post implementa o código PHP para extrair relatório dos alunos que não acessaram o curso em um determinado intervalo de tempo. Trata-se de codificação PHP do post publicado em Moodle SQL: <br />
<a href="http://moodlesql.blogspot.com/2010/12/listar-alunos-que-ainda-nao-acessaram-o.html">http://moodlesql.blogspot.com/2010/12/listar-alunos-que-ainda-nao-acessaram-o.html</a><br />
<br />
Então vamos iniciar os passos da programação. <br />
<b><br />
1° Passo </b><br />
Importe a <a href="http://moodlephp.blogspot.com/2010/11/usar-bibliotecas-de-funcoes-do-sistema.html">biblioteca de funções</a> do Moodle:<br />
<br />
<span style="background-color: #fff2cc;"><span style="font-family: "Courier New",Courier,monospace;">require_once("../config.php");</span></span><br />
<b>2° Passo </b><br />
Receba os parâmetros do curso e quantidade de dias pelo método GET:<br />
<br />
<span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">$curso=$_GET['curso'];</span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> $dia=$_GET['dia'];</span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> if(empty($curso)){echo "Id do curso &eacute; um par&acirc;metro obrigat&oacute;rio";exit;}</span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> if(empty($dia)){$dia=7;} //Se o parâmetro dia não for definida, será tomado 7 dia por padrão, ou seja, uma semana. </span><br />
<br />
O parâmetro id do curso define em qual curso deve ser extraído o relatório. O parâmetro quantidade de dia serve para definir o intervalo do tempo em que não ocorreu acesso. Caso nenhum valor for passado, será definido por padrão uma semana, ou seja, 7 dias. <br />
<br />
<b>3° Passo </b><br />
Calcule o período a partir de quantidade de dias.<br />
<br />
<span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">$data1=$data=time()-($dia*24*60*60); //Calcular data retroativa</span><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> $data2=$data=time();//Data atual;</span><br />
<br />
A <span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">$data1 </span>é a data retroativa, ou seja, a data atual menos a quantidade de dias. A função time() retorna a data atual em segundos. Para saber a data retroativa, basta converter os dias em segundos através do cálculo <span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">$dia*24*60*60</span> ($dia* 24hora *60 minuto *60 segundos ) e subtrair pela data atual. <br />
<b><br />
4° Passo </b><br />
Fazer consulta no banco de dados<br />
<br />
<span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">$sql="SELECT u.id, u.firstname,u.lastname,u.email FROM mdl_role_assignments rs INNER JOIN mdl_user u ON u.id=rs.userid INNER JOIN mdl_context e ON rs.contextid=e.id WHERE e.contextlevel=50 AND rs.roleid=5 AND e.instanceid=$curso AND u.id NOT IN (SELECT DISTINCT userid FROM mdl_log WHERE course=$curso AND time >=$data1 AND time <=$data2)";</span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">$usrs=get_records_sql($sql);<br />
</span><br />
Essa consulta retorna a lista dos alunos inscritos no curso que ainda não acessaram o ambiente do curso no intervalo de tempo definido.<br />
<br />
<b>5° Passo</b><br />
Imprimir relatório: <br />
<br />
<span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"><table border="1"></span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"><tr></span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"><td><b>Id</b></td></span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"><td><b>Nome</b></td></span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"><td><b>E-mail</b></td></span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"></tr></span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"><? foreach ($usrs as $usr){ </span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> ?></span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> <tr></span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> <td><?=$usr->id?></td></span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> <td><?=$usr->firstname ." ".$usr->lastname ?></td></span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> <td><?=$usr->email?></td></span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"><?}?></span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"></table></span><br />
O relatório é organizado em uma tabela que com três colunas:</span></div><ul><li><span style="font-size: small;"><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">Id</span> - Id do aluno na tabela mdl_user</span></li>
<li><span style="font-size: small;"><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">Nome</span> – Nome do aluno</span></li>
<li><span style="font-size: small;"><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">E-mail</span> – E-mail do aluno </span></li>
</ul><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"> <br />
<b>Código Completo</b><br />
Até então vimos o código em pedaço. Juntando tudo fica assim:<br />
<br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"><?php</span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;">require_once("../config.php");</span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> //receber parármetro </span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> $curso=$_GET['curso'];</span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> $dia=$_GET['dia'];</span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> if(empty($curso)){echo "Id do curso &eacute; um par&acirc;metro obrigat&oacute;rio";exit;}</span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> if(empty($dia)){$dia=7;} //Se o parâmetro dia não for definida, será tomado 7 dia por padrão, ou seja, uma semana. </span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> </span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> //Definir data em quantidade de segundos </span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> $data1=$data=time()-($dia*24*60*60); //Calcular data retroativa a partir da quantidade dias passado no parâmetro</span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> $data2=$data=time();//Data atual;</span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> </span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> $sql="SELECT u.id, u.firstname,u.lastname,u.email FROM mdl_role_assignments rs INNER JOIN mdl_user u ON u.id=rs.userid INNER JOIN mdl_context e ON rs.contextid=e.id WHERE e.contextlevel=50 AND rs.roleid=5 AND e.instanceid=$curso AND u.id NOT IN (SELECT DISTINCT userid FROM mdl_log WHERE course=$curso AND time >=$data1 AND time <=$data2)";</span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> $usrs=get_records_sql($sql);</span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> </span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> ?></span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> <table border="1"></span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"><tr></span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"><td><b>Id</b></td></span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"><td><b>Nome</b></td></span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"><td><b>E-mail</b></td></span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"></tr></span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"><? foreach ($usrs as $usr){ </span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> ?></span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> <tr></span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> <td><?=$usr->id?></td></span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> <td><?=$usr->firstname ." ".$usr->lastname ?></td></span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"> <td><?=$usr->email?></td></span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"><?}?></span><br style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #fff2cc; font-family: "Courier New",Courier,monospace;"></table></span><br />
<b>Implementar no Moodle</b><br />
Para executar esse código no Moodle, crie uma pasta denominado _extra dentro da raiz da instalação do Moodle. Em seguida, crie um arquivo denominado <b>user_curso_sapp.php</b> dentro da pasta <b>_extra</b>. Coloque o código php nesse arquivo. <br />
<br />
Feito isso, acesse o endereço: <br />
http://[endereço do moodle]/_extra/user_curso_sapp.php?curso=2&dia=10<br />
<br />
<b><a href="http://www.badiu.net/blogger/moodlephp/user_curso_sapp.zip">Download</a></b> <br />
Se estiver com preguiça de criar o arquivo e digitar o código, faça <a href="http://www.badiu.net/blogger/moodlephp/user_curso_sapp.zip">download</a> desse exemplo. Descompacte o arquivo e cole na pasta _extra na raiz do seu Moodle. Caso a pasta _extra não exista ainda, crie-a. Agora faça o teste. <br />
<br />
Esse pode funcionar em qualquer versão do Moodle que use as funções do PDO para manipular a base de dados. Não funciona nas versões inferiores a 1.7 pela incompatibilidade da estrutura das tabelas da matrícula. <br />
</span></div>Badiuhttp://www.blogger.com/profile/00470683612556263079noreply@blogger.com7tag:blogger.com,1999:blog-2390118692607966116.post-50132499120603493172010-12-01T01:34:00.000-08:002010-12-01T01:34:39.893-08:00Relatório do Período da Validade da Inscrição no Moodle Filtrado por um Determinado Participante (Aluno/Tutor) com Programação PHP<div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"> Este post apresenta a codificação PHP para extrair um relatório sobre o período da validade de inscrição de um determinado participante (aluno, tutor e.t.c) no Moodle. O código PHP usa as bibliotecas de funções do ambiente do Moodle.<br />
<br />
Esse relatório informa a data de expiração da matrícula de um usuário, ou seja, participante em todos os cursos em que está inscrito.<br />
<br />
Para entender as regras de funcionamento sobre o tempo de validade de inscrição no ambiente Moodle leia o seguinte post: <a href="http://moodlesql.blogspot.com/2010/11/desmistificando-periodo-de-inscricao-do.html"> http://moodlesql.blogspot.com/2010/11/desmistificando-periodo-de-inscricao-do.html</a> <br />
Então vamos iniciar a programação. Siga os passos a seguir.<br />
<br />
<b>1° Passo</b> <br />
Importe a <a href="http://moodlephp.blogspot.com/2010/11/usar-bibliotecas-de-funcoes-do-sistema.html">biblioteca de funções</a> do Moodle:<br />
<br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">require_once("../config.php");</span><br style="background-color: #eeeeee;" /><br />
<b>2° Passo </b><br />
Receba o parâmetro do usuário passado pelo método GET:<br />
<br style="font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">$user=$_GET['user'];</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">if(empty($user)){echo "Id do usu&aacute;rio &eacute; um par&acirc;metro obrigat&oacute;rio";exit;}</span><br style="background-color: #eeeeee;" /><br />
Passe o parâmetro com id do usuário que pretenda extrair o relatório. Caso queira saber como encontrar id do curso consulte o post: <a href="http://moodlesql.blogspot.com/2010/10/extrair-id-do-usuario-e-do-curso-no.html">http://moodlesql.blogspot.com/2010/10/extrair-id-do-usuario-e-do-curso-no.html</a><span id="goog_432680054"></span><span id="goog_432680055"></span><br />
<br />
<b>3° Passo </b><br />
Fazer consulta no banco de dados<br />
<span style="font-family: "Courier New",Courier,monospace;"> </span><br style="font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">$sql="SELECT c.id,c.fullname, rs.timestart,rs.timeend FROM {$CFG->prefix}course c INNER JOIN {$CFG->prefix}context e ON c.id=e.instanceid INNER JOIN {$CFG->prefix}role_assignments rs ON e.id=rs.contextid WHERE e.contextlevel=50 AND rs.userid=$user";</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><br />
$cursos=get_records_sql($sql);</span><br />
<br />
Essa consulta extrai a informações do banco de dados sobre a data inicial e final da validade da inscrição de todos os cursos que o usuário está inscrito. <br />
<b><br />
4° Passo</b><br />
Imprimir relatório: <br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><table border="1"></span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><tr></span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><td><b>Id</b></td></span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><td><b>Curso</b></td></span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><td><b>Data de Inicio</b></td></span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><td><b>Data de Finaliza&ccedil;&atilde;o</b></td></span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"></tr></span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><? foreach ($cursos as $curso){ </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> //formatar data</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> $dataInicio=$curso->timestart;</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> if($dataInicio==0){$dataInicio="--";}</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> else {$dataInicio=date("d/m/Y",$curso->timestart);}</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> $dataFim=$curso->timeend;</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> if($dataFim==0){$dataFim="--";}</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> else {$dataFim=date("d/m/Y",$curso->timeend);}</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> ?></span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> <tr></span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> <td><?=$curso->id?></td></span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> <td><?=$curso->fullname?></td></span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> <td><?= $dataInicio?></td></span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> <td><?=$dataFim?></td></span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><?}?></span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"></table></span><br />
O relatório é organizado em uma tabela que com três colunas:</span></div><ul><li><span style="font-size: small;"><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">Id </span>– Id do curso</span></li>
<li><span style="font-size: small;"><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">Curso </span>- Nome do curso</span></li>
<li><span style="font-size: small;"><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">Data de Inicio</span> – Data que a inscrição foi feita</span></li>
<li><span style="font-size: small;"><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">Data da Finalização</span> – Data final da validade da inscrição. </span></li>
</ul><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"> A data final da validade da inscrição é a data da inscrição mais os dias da validade da inscrição que é definido no momento do cadastro. <br />
<b><br />
Código Completo</b><br />
Até então vimos o código em pedaço. Juntando tudo fica assim:<br />
<br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><?php</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">require_once("../config.php");</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> //receber parármetro </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> $user=$_GET['user'];</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> if(empty($user)){echo "Id do usu&aacute;rio &eacute; um par&acirc;metro obrigat&oacute;rio";exit;}</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> $sql="SELECT c.id,c.fullname, rs.timestart,rs.timeend FROM {$CFG->prefix}course c INNER JOIN {$CFG->prefix}context e ON c.id=e.instanceid INNER JOIN {$CFG->prefix}role_assignments rs ON e.id=rs.contextid WHERE e.contextlevel=50 AND rs.userid=$user";</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> $cursos=get_records_sql($sql);</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> ?></span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> <table border="1"></span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><tr></span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><td><b>Id</b></td></span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><td><b>Curso</b></td></span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><td><b>Data de Inicio</b></td></span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><td><b>Data de Finaliza&ccedil;&atilde;o</b></td></span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"></tr></span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><? foreach ($cursos as $curso){ </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> //formatar data</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> $dataInicio=$curso->timestart;</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> if($dataInicio==0){$dataInicio="--";}</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> else {$dataInicio=date("d/m/Y",$curso->timestart);}</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> $dataFim=$curso->timeend;</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> if($dataFim==0){$dataFim="--";}</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> else {$dataFim=date("d/m/Y",$curso->timeend);}</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> ?></span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> <tr></span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> <td><?=$curso->id?></td></span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> <td><?=$curso->fullname?></td></span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> <td><?= $dataInicio?></td></span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> <td><?=$dataFim?></td></span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><?}?></span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"></table></span><br />
<br />
<b>Implementar no Moodle</b><br />
Para executar esse código no Moodle, crie uma pasta denominado _extra dentro da raiz da instalação do Moodle. Em seguida, crie um arquivo denominado <b>participante_curso_pvalidade_inscricao.php</b> dentro da pasta _extra. Coloque o código php nesse arquivo. <br />
<br />
Feito isso, acesse o endereço: <br />
http://[endereço do moodle]/_extra/participante_curso_pvalidade_inscricao.php? user=12 <br />
Substitua o parâmetro pelo id do usuário<br />
<br />
<br />
<a href="http://www.badiu.net/blogger/moodlephp/participante_curso_pvalidade_inscricao.zip">Download</a><br />
Se estiver com preguiça de criar o arquivo e digitar o código, faça <a href="http://www.badiu.net/blogger/moodlephp/participante_curso_pvalidade_inscricao.zip">download</a> desse exemplo. Descompacte o arquivo e cole na pasta _extra na raiz do seu Moodle. Caso a pasta _extra não exista ainda, crie-a. Agora faça o teste. <br />
<br />
Esse código foi testado na versão 1.9.3 mas pode funcionar em qualquer versão do Moodle que use as funções do PDO para manipular a base de dados. Não funciona na versão 1.6 e 2.0<br />
</span><b><br />
Veja Também:</b><br />
<a href="http://moodlesql.blogspot.com/2010/11/desmistificando-periodo-de-inscricao-do.html">Desmistificando Período de Inscrição do Curso no Moodle com Comando SQL</a><br />
<br />
<a href="http://moodlephp.blogspot.com/2010/11/relatorio-do-periodo-da-validade-da.html">Relatório do Período da Validade da Inscrição dos Participantes no Curso do Moodle com Programação PHP </a></div><div style="font-family: Arial,Helvetica,sans-serif;"><br />
</div><h3 class="post-title entry-title" style="font-family: Arial,Helvetica,sans-serif; font-weight: normal;"><a href="http://moodlephp.blogspot.com/2010/11/relatorio-da-configuracao-do-periodo-da.html"><span style="font-size: small;">Relatório da Configuração do Período da Validade da Inscrição no Curso do Moodle com Programação PHP</span></a></h3><div style="font-family: Arial,Helvetica,sans-serif;"></div><div style="font-family: Arial,Helvetica,sans-serif;"></div><div style="font-family: Arial,Helvetica,sans-serif;"><br />
<a href="http://moodlesql.blogspot.com/2010/07/data-de-inscricao-do-aluno-no-curso-do.html">Data de inscrição do aluno no curso do Moodle</a><br />
<span style="font-size: small;"><br />
</span></div>Badiuhttp://www.blogger.com/profile/00470683612556263079noreply@blogger.com0tag:blogger.com,1999:blog-2390118692607966116.post-81923040901689231252010-11-29T05:54:00.000-08:002010-12-01T00:44:50.692-08:00Relatório da Configuração do Período da Validade da Inscrição no Curso do Moodle com Programação PHP<div style="font-family: Arial,Helvetica,sans-serif;"> Este post apresenta a codificação PHP para extrair um relatório sobre a configuração do período da validade de inscrição do curso no Moodle. O código PHP usa as bibliotecas de funções do ambiente do Moodle. <br />
<br />
Para entender as regras de funcionamento sobre o tempo de validade de inscrição no ambiente Moodle leia o seguinte post: <a href="http://moodlesql.blogspot.com/2010/11/desmistificando-periodo-de-inscricao-do.html">http://moodlesql.blogspot.com/2010/11/desmistificando-periodo-de-inscricao-do.html</a> <br />
Então vamos iniciar a programação. Siga os passos a seguir.<br />
<br />
<b>1° Passo </b><br />
Importe a <a href="http://moodlephp.blogspot.com/2010/11/usar-bibliotecas-de-funcoes-do-sistema.html">biblioteca de funções</a> do Moodle:<br />
<span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;">require_once("../config.php");</span><br />
<b><br />
2° Passo </b><br />
Fazer consulta no banco de dados:<br />
<br />
<div style="background-color: white;"><span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;">$sql="SELECT id,fullname,startdate,enrolperiod FROM {$CFG->prefix}course";</span></div><div style="background-color: white;"><span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;">$cursos=get_records_sql($sql);</span></div><div style="background-color: white;"><span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;">$periodo="";</span></div><br />
Essa consulta extrai a informações do banco de dados sobre a configuração do curso. A informação que mais nos interessa está na coluna enrolperiod. Esse campo traz a quantidade de dias em segundo sobre a validade de inscrição. <br />
<br />
<b>3° Passo</b>Imprimir relatório:<br />
<br />
<div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><table border="1"></div><div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><tr></div><div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><td><b>Id</b></td></div><div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><td><b>Curso</b></td></div><div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><td><b>Data de Inicio</b></td></div><div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><td><b>Configura&ccedil;&atilde;o da Inscri&ccedil;&atilde;o</b></td></div><div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"></tr></div><div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><? foreach ($cursos as $curso){</div><div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> //formatar data</div><div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> $dataInicio=$curso->startdate;</div><div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> if($dataInicio==0){$dataInicio="--";}</div><div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> else {$dataInicio=date("d/m/Y",$curso->startdate);}</div><div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> </div><div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> if($curso->enrolperiod==0){</div><div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> $periodo="Ilimitado";</div><div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> }else{</div><div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> $periodo=$curso->enrolperiod/60/60/24;</div><div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> $periodo=$periodo." dia";</div><div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> }</div><div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> </div><div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> ?></div><div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> <tr></div><div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> <td><?=$curso->id?></td></div><div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> <td><?=$curso->fullname?></td></div><div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> <td><?= $dataInicio?></td></div><div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> <td><?=$periodo?></td></div><div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> </div><div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><?}?></div><div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"></table></div><br />
O relatório é organizado em uma tabela que com quatros colunas:<br />
<ul><li><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">Id </span> - Id do curso</li>
<li><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">Curso</span> – Nome do curso</li>
<li><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">Data inicial</span> – Data em que o curso será iniciado</li>
<li><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">Configuração da Inscrição</span> – Indica a quantidade de dias da validade da inscrição.</li>
</ul>Para calcular a quantidade de dias é necessário converter a quantidade de segundos em dias. Por isso que foi feito o seguinte cálculo:<br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">$periodo=$curso->enrolperiod/60/60/24;</span><br />
A primeira divisão por 60 converte para minutos. A segunda divisão por 60 converte para hora. A terceira divisão por 24 converte para dia. <br />
<br />
Essa configuração é usada no momento da inscrição do aluno ou tutor no curso para calcular a data final da validade de inscrição. <br />
<br />
<b>Código Completo</b><br />
Até então vimos o código em pedaço. Juntando tudo fica assim:<br />
<br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><?php</span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">require_once("../config.php");</span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> </span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> $sql="SELECT id,fullname,startdate,enrolperiod FROM {$CFG->prefix}course";</span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> $cursos=get_records_sql($sql);</span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> $periodo="";</span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> ?></span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> <table border="1"></span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><tr></span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><td><b>Id</b></td></span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><td><b>Curso</b></td></span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><td><b>Data de Inicio</b></td></span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><td><b>Configura&ccedil;&atilde;o da Inscri&ccedil;&atilde;o</b></td></span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"></tr></span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><? foreach ($cursos as $curso){</span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> //formatar data</span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> $dataInicio=$curso->startdate;</span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> if($dataInicio==0){$dataInicio="--";}</span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> else {$dataInicio=date("d/m/Y",$curso->startdate);}</span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> </span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> if($curso->enrolperiod==0){</span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> $periodo="Ilimitado";</span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> }else{</span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> $periodo=$curso->enrolperiod/60/60/24;</span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> $periodo=$periodo." dia";</span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> }</span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> </span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> ?></span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> <tr></span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> <td><?=$curso->id?></td></span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> <td><?=$curso->fullname?></td></span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> <td><?= $dataInicio?></td></span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> <td><?=$periodo?></td></span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> </span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><?}?></span><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"></table></span></div><div style="font-family: Arial,Helvetica,sans-serif;"><br />
<b>Implementar no Moodle</b><br />
Para executar esse código no Moodle, crie uma pasta denominado _extra dentro da raiz da instalação do Moodle. Em seguida, crie um arquivo denominado <b>curso_pvalidade_inscricao.php</b> dentro da pasta _extra. Coloque o código php nesse arquivo. <br />
<br />
Feito isso, acesse o endereço: <br />
http://[endereço do moodle]/_extra/curso_pvalidade_inscricao.php <br />
<br />
<br />
<a href="http://www.badiu.net/blogger/moodlephp/curso_pvalidade_inscricao.zip"><b>Download</b></a><br />
Se estiver com preguiça de criar o arquivo e digitar o código, faça <a href="http://www.badiu.net/blogger/moodlephp/curso_pvalidade_inscricao.zip">download</a> desse exemplo. Descompacte o arquivo e cole na pasta _extra na raiz do seu Moodle. Caso a pasta _extra não exista ainda, crie-a. Agora faça o teste. <br />
<br />
Esse código foi testado na versão 1.9.3 mas pode funcionar em qualquer versão do Moodle que use as funções do PDO para manipular a base de dados. Não funciona na versão 2.0.<br />
<br />
<b>Veja Também:</b><br />
<a href="http://moodlesql.blogspot.com/2010/11/desmistificando-periodo-de-inscricao-do.html">Desmistificando Período de Inscrição do Curso no Moodle com Comando SQL</a><br />
<br />
<a href="http://moodlephp.blogspot.com/2010/11/relatorio-do-periodo-da-validade-da.html">Relatório do Período da Validade da Inscrição dos Participantes no Curso do Moodle com Programação PHP </a><br />
<br />
<a href="http://moodlesql.blogspot.com/2010/07/data-de-inscricao-do-aluno-no-curso-do.html">Data de inscrição do aluno no curso do Moodle</a></div>Badiuhttp://www.blogger.com/profile/00470683612556263079noreply@blogger.com0tag:blogger.com,1999:blog-2390118692607966116.post-14186482935785935302010-11-29T05:44:00.000-08:002010-12-01T00:43:42.239-08:00Relatório do Período da Validade da Inscrição dos Participantes no Curso do Moodle com Programação PHP<span style="font-family: Arial,Helvetica,sans-serif;"></span><span style="font-family: Arial,Helvetica,sans-serif;"> Este post apresenta a codificação PHP para extrair um relatório sobre o período da validade de inscrição dos participantes de um determinado curso no Moodle. O código PHP usa as bibliotecas de funções do ambiente do Moodle. </span><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;"> Para entender as regras de funcionamento sobre o tempo de validade de inscrição no ambiente Moodle leia o seguinte post: <a href="http://moodlesql.blogspot.com/2010/11/desmistificando-periodo-de-inscricao-do.html">http://moodlesql.blogspot.com/2010/11/desmistificando-periodo-de-inscricao-do.html</a><br />
</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Esse relatório informa a data de expiração da matrícula de cada participante inscrito no curso. </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Então vamos iniciar a programação. Siga os passos a seguir.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br />
<b>1° Passo </b></span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Importe a <a href="http://moodlephp.blogspot.com/2010/11/usar-bibliotecas-de-funcoes-do-sistema.html">biblioteca de funções</a> do Moodle:</span><br />
<span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;">require_once("../config.php");</span><br />
<br />
<b><span style="font-family: Arial,Helvetica,sans-serif;">2° Passo </span></b><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Receba o parâmetro do curso passado pelo método GET:</span><br />
<br />
<span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;">$curso=$_GET['curso'];</span><br />
<span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;">if(empty($curso)){echo "Id do curso &eacute; um par&acirc;metro obrigat&oacute;rio";exit;}</span><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Passe o parâmetro com id do curso que pretenda extrair o relatório. Caso queira saber como encontrar id do curso consulte o post: <a href="http://www.blogger.com/goog_1697494817">http://moodlesql.blogspot.com/2010/10/extrair-id-do-usuario-e-do-curso-no.html</a></span><a href="http://moodlesql.blogspot.com/2010/10/extrair-id-do-usuario-e-do-curso-no.html"><br style="font-family: Arial,Helvetica,sans-serif;" /></a><br />
<b><span style="font-family: Arial,Helvetica,sans-serif;">3° Passo </span></b><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Fazer consulta no banco de dados</span>:<br />
<br />
<span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;">$sql="SELECT u.firstname,u.lastname,rs.timestart,rs.timeend FROM {$CFG->prefix}role_assignments rs INNER JOIN {$CFG->prefix}user u ON u.id=rs.userid INNER JOIN {$CFG->prefix}context e ON rs.contextid=e.id WHERE e.contextlevel=50 AND e.instanceid=$curso";</span><br />
<br />
<span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;">$users=get_records_sql($sql);</span><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Essa consulta extrai a informações do banco de dados sobre a data inicial e final da validade da inscrição de cada participante. </span><br />
<b><span style="font-family: Arial,Helvetica,sans-serif;"><br />
4° Passo</span></b><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Imprimir relatório: </span><br />
<div style="font-family: "Courier New",Courier,monospace;"><br />
</div><div style="font-family: "Courier New",Courier,monospace;"> <span style="background-color: #cccccc;"> <table border="1"></span></div><div style="font-family: "Courier New",Courier,monospace;"><span style="background-color: #cccccc;"><tr></span></div><div style="font-family: "Courier New",Courier,monospace;"><span style="background-color: #cccccc;"><td><b>Participante</b></td></span></div><div style="font-family: "Courier New",Courier,monospace;"><span style="background-color: #cccccc;"><td><b>Data de Inicio</b></td></span></div><div style="font-family: "Courier New",Courier,monospace;"><span style="background-color: #cccccc;"><td><b>Data de Finaliza&ccedil;&atilde;o</b></td></span></div><div style="font-family: "Courier New",Courier,monospace;"><span style="background-color: #cccccc;"></tr></span></div><div style="font-family: "Courier New",Courier,monospace;"><span style="background-color: #cccccc;"><? foreach ($users as $user){ </span></div><span style="background-color: #cccccc; font-family: Arial,Helvetica,sans-serif;">//formatar data<br />
$dataInicio=$user->timestart;<br />
if($dataInicio==0){$dataInicio="--";}<br />
else {$dataInicio=date("d/m/Y",$user->timestart);}<br />
<br />
$dataFim=$user->timeend;<br />
if($dataFim==0){$dataFim="--";}<br />
else {$dataFim=date("d/m/Y",$user->timeend);}<br />
?><br />
<tr><br />
<td><?=$user->firstname ." ".$user->lastname?></td><br />
<td><?= $dataInicio?></td><br />
<td><?=$dataFim?></td></span><br />
<div style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><span style="background-color: #cccccc;"> </span></div><div style="font-family: "Courier New",Courier,monospace;"><span style="background-color: #cccccc;"><?}?></span></div><div style="font-family: "Courier New",Courier,monospace;"><span style="background-color: #cccccc;"></table> </span> </div><span style="font-family: Arial,Helvetica,sans-serif;"><br />
</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">O relatório é organizado em uma tabela que com três colunas:</span><br />
<ul><li><span style="font-family: Arial,Helvetica,sans-serif;"><span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;">Participante</span> – Nome do participante</span></li>
<li><span style="font-family: Arial,Helvetica,sans-serif;"><span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;">Data de Inicio</span> – Data que a inscrição foi feita</span></li>
<li><span style="font-family: Arial,Helvetica,sans-serif;"><span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;">Data da Finalização</span> – Data final da validade da inscrição. </span></li>
</ul><span style="font-family: Arial,Helvetica,sans-serif;"> A data final da validade da inscrição é a data da inscrição mais os dias da validade da inscrição que é definido no momento do cadastro. </span><br />
<br />
<b><span style="font-family: Arial,Helvetica,sans-serif;">Código Completo</span></b><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Até então vimos o código em pedaço. Juntando tudo fica assim:</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"><br />
<span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;"><?php</span></span><br />
<span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;">require_once("../config.php");</span><br />
<span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;">//receber parármetro </span><br />
<span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;"> $curso=$_GET['curso'];</span><br />
<span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;"> </span><br />
<span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;"> if(empty($curso)){echo "Id do curso &eacute; um par&acirc;metro obrigat&oacute;rio";exit;}</span><br />
<span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;"> </span><br />
<span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;"> $sql="SELECT u.firstname,u.lastname,rs.timestart,rs.timeend FROM {$CFG->prefix}role_assignments rs INNER JOIN {$CFG->prefix}user u ON u.id=rs.userid INNER JOIN {$CFG->prefix}context e ON rs.contextid=e.id WHERE e.contextlevel=50 AND e.instanceid=$curso";</span><br />
<span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;"> $users=get_records_sql($sql);</span><br />
<span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;"> </span><br />
<span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;"> ?></span><br />
<span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;"> <table border="1"></span><br />
<span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;"><tr></span><br />
<span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;"><td><b>Participante</b></td></span><br />
<span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;"><td><b>Data de Inicio</b></td></span><br />
<span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;"><td><b>Data de Finaliza&ccedil;&atilde;o</b></td></span><br />
<span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;"></tr></span><br />
<span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;"><? foreach ($users as $user){</span><br />
<span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;">//formatar data<br />
$dataInicio=$user->timestart;<br />
if($dataInicio==0){$dataInicio="--";}<br />
else {$dataInicio=date("d/m/Y",$user->timestart);}<br />
<br />
$dataFim=$user->timeend;<br />
if($dataFim==0){$dataFim="--";}<br />
else {$dataFim=date("d/m/Y",$user->timeend);}<br />
?><br />
<tr><br />
<td><?=$user->firstname ." ".$user->lastname?></td><br />
<td><?= $dataInicio?></td><br />
<td><?=$dataFim?></td></span><span style="background-color: #cccccc;"></span><br />
<div style="background-color: #999999; font-family: "Courier New",Courier,monospace;"><span style="background-color: #cccccc;"> </span></div><span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;"><?}?></span><br />
<span style="background-color: #cccccc; font-family: "Courier New",Courier,monospace;"></table> </span><br />
<br />
<b><span style="font-family: Arial,Helvetica,sans-serif;">Implementar no Moodle</span></b><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Para executar esse código no Moodle, crie uma pasta denominado _extra dentro da raiz da instalação do Moodle. Em seguida, crie um arquivo denominado <b>participante_pvalidade_inscricao.php</b> dentro da pasta _extra. Coloque o código php nesse arquivo. </span><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Feito isso, acesse o endereço: </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">http://[endereço do moodle]/_extra/participante_pvalidade_inscricao.php?curso=2 </span><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Substitua o parâmetro pelo id do curso</span><br />
<br />
<br />
<a href="http://www.badiu.net/blogger/moodlephp/participante_pvalidade_inscricao.zip"><span style="font-family: Arial,Helvetica,sans-serif;">Download</span></a><br />
<span style="font-family: Arial,Helvetica,sans-serif;">Se estiver com preguiça de criar o arquivo e digitar o código, faça <a href="http://www.badiu.net/blogger/moodlephp/participante_pvalidade_inscricao.zip">download</a> desse exemplo. Descompacte o arquivo e cole na pasta _extra na raiz do seu Moodle. Caso a pasta _extra não exista ainda, crie-a. Agora faça o teste. </span><br />
<br />
<span style="font-family: Arial,Helvetica,sans-serif;">Esse código foi testado na versão 1.9.3 mas pode funcionar em qualquer versão do Moodle que use as funções do PDO para manipular a base de dados. Não funciona na versão 1.6 e 2.0.</span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"> </span><br />
<b><span style="font-family: Arial,Helvetica,sans-serif;">Veja Também:</span></b><br />
<span style="font-family: Arial,Helvetica,sans-serif;"></span><a href="http://moodlesql.blogspot.com/2010/11/desmistificando-periodo-de-inscricao-do.html"><span style="font-family: Arial,Helvetica,sans-serif;">Desmistificando Período de Inscrição do Curso no Moodle com Comando SQL</span></a><br />
<span style="font-family: Arial,Helvetica,sans-serif;"></span><br />
<a href="http://moodlephp.blogspot.com/2010/11/relatorio-da-configuracao-do-periodo-da.html"><span style="font-family: Arial,Helvetica,sans-serif;">Relatório da Configuração do Período da Validade da Inscrição no Curso do Moodle com Programação PHP </span></a><br />
<span style="font-family: Arial,Helvetica,sans-serif;"></span><br />
<span style="font-family: Arial,Helvetica,sans-serif;"></span><a href="http://moodlesql.blogspot.com/2010/07/data-de-inscricao-do-aluno-no-curso-do.html"><span style="font-family: Arial,Helvetica,sans-serif;">Data de inscrição do aluno no curso do Moodle</span></a><br />
<span style="font-family: Arial,Helvetica,sans-serif;"></span>Badiuhttp://www.blogger.com/profile/00470683612556263079noreply@blogger.com1tag:blogger.com,1999:blog-2390118692607966116.post-12544417958343916562010-11-19T17:13:00.000-08:002010-11-29T06:04:01.867-08:00Recuperar Senha de Administrador do Moodle com Programação PHP<div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;">O objetivo principal desse poste é desenvolver programação em linguagem PHP, em ambiente do Moodle, que recupere ou altere a senha do usuário administrador do Moodle. <br />
Então vamos iniciar a programação. Siga os passos a seguir.<br />
<b><br />
1° Passo </b><br />
Importe a <a href="http://moodlephp.blogspot.com/2010/11/usar-bibliotecas-de-funcoes-do-sistema.html">biblioteca de funções</a> do Moodle:<br />
<br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">require_once("../config.php");</span><br />
<b><br />
2° Passo </b><br />
Receba o parâmetro da senha passado pelo método GET:<br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><br />
$password=$_GET['password'];</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">//caso for vazio use 12345 como senha padrão</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">if(empty($password)){$password="12345";}</span><br />
<br />
Caso o parâmetro não for passado, a senha será 12345. Isso indica que a passagem de parâmetro é opcional. <br />
<br />
<b>3° Passo</b><br />
Recuperar id do usuário administrador pelo login:<br />
<br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">$sql="SELECT id FROM {$CFG->prefix}user WHERE username='admin'";</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> $user=get_record_sql($sql);</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">if(empty($user->id)){echo "Não existe nenhum usuário cadastrado no Moodle com login admin";exit;}</span><br />
<br />
O login padrão do administrador é admin. Caso tenha mudado isso após a instalação, atualize o novo login no parâmetro SQL. Você pode também colocar login de qualquer usuário que não seja o administrador para alterar a senha. O processo de alteração da senha é a mesma para qualquer usuário. <br />
<br />
<b>4° Passo</b><br />
Processar alteração na base de dados. <br />
<br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">$user->password=hash_internal_user_password($password);</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">$result= update_record('user', $user); </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">if($result){echo "Senha alterado com sucesso";}</span><br />
<br />
Nessa etapa, o comando SQL é executado no banco de dados através de funções da biblioteca PDO do ambiente Moodle. <br />
<b><br />
Código Completo</b><br />
Até então vimos o código em pedaço. Juntando tudo fica assim:<br />
</span></div><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><?php</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> require_once("../config.php");</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> //receber parâmetro </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> $password=$_GET['password'];</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> //caso for vazio use 12345 como senha padrão</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> if(empty($password)){$password="12345";}</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> //extrair id do usuário admin pelo login</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> $sql="SELECT id FROM {$CFG->prefix}user WHERE username='admin'";</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> $user=get_record_sql($sql);</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">if(empty($user->id)){echo "Não existe nenhum usuário cadastrado no Moodle com login admin";exit;}</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">//atualizar senha</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">$user->password=hash_internal_user_password($password);</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">$result= update_record('user', $user); </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">if($result){echo "Senha alterado com sucesso";}</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">?></span><br />
<br />
<b>Implementar no Moodle</b><br />
Para executar esse código no Moodle, crie uma pasta denominado <b>_extra</b> dentro da raiz da instalação do Moodle. Em seguida, crie um arquivo denominado <b>admin_change_password.php</b> dentro da pasta _extra. Coloque o código php nesse arquivo. <br />
<br />
Feito isso, acesse o endereço: <br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">http://[endereço do moodle]/_extra/admin_change_password.php?password=12345</span><br />
<br />
O url já passa o parâmetro da senha que é opcional. É necessário lembrar que caso nenhum parâmetro for passado, o a será 12345. <span id="goog_1465558848"></span> <br />
<br />
<a href="http://www.badiu.net/blogger/moodlephp/admin_change_password.zip">Download</a><span id="goog_1465558849"></span> <br />
Se estiver com preguiça de criar o arquivo e digitar o código, faça <a href="http://www.badiu.net/blogger/moodlephp/admin_change_password.zip">download</a> desse exemplo. Descompacte o arquivo e cole na pasta _extra na raiz do seu Moodle. Caso a pasta _extra não exista ainda, crie-a. Agora faça o teste. <br />
<br />
Esse código foi testado na versão 1.9.3 mas pode funcionar em qualquer versão do Moodle que use as funções do PDO para manipular a base de dados.<br />
<br />
<b><br />
Veja Também:</b><a href="http://moodlesql.blogspot.com/2010/08/recuperar-senha-do-administrador-do.html"> <br />
Recuperar Senha do Administrador do Moodle com Comando SQL</a><br />
</span> </div>Badiuhttp://www.blogger.com/profile/00470683612556263079noreply@blogger.com1tag:blogger.com,1999:blog-2390118692607966116.post-55080413929658814442010-11-15T17:55:00.000-08:002020-04-23T13:03:33.281-07:00Cadastrar Usuário no Moodle com Programação PHP<div style="font-family: Arial,Helvetica,sans-serif;">
<span style="font-size: small;">Veja <a href="https://comunidade.badiu.com.br/mod/forum/discuss.php?d=604" target="_blank">versão atualizada</a> desse post na comunidade Badiu - <a href="https://comunidade.badiu.com.br/mod/forum/discuss.php?d=604">https://comunidade.badiu.com.br/mod/forum/discuss.php?d=604</a> o código foi atualizado para ficar compatível com a versão 2.x e 3.x do Moodle. </span><br />
<br />
<span style="font-size: small;">Para cadastrar usuário no Moodle através código PHP, siga os seguintes passos:<br />
<b><br />
1° Passo </b><br />
Importe a <a href="http://moodlephp.blogspot.com/2010/11/usar-bibliotecas-de-funcoes-do-sistema.html">biblioteca de funções </a>do Moodle:<br />
<br />
<span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;">require_once("../config.php");</span><br />
<br />
<b>2° Passo </b><br />
Receba os parâmetros do usuário passado pelo método GET:<br />
<br />
<span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $firstname=$_GET['firstname'];</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $lastname=$_GET['lastname'];</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $username=$_GET['username'];</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $email=$_GET['email'];</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $password=$username;</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> if(empty($firstname)){echo "Nome é um parâmetro obrigatório";exit;}</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> if(empty($lastname)){echo "Sobrenome é um parâmetro obrigatório";exit;}</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> if(empty($username)){echo "Login é um parâmetro obrigatório";exit;}</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> if(empty($email)){echo "E-mail é um parâmetro obrigatório";exit;}</span><br />
<br />
Não foi passado o parâmetro senha. Pois a senha é igual ao ligin como monstra o código: <span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;">$password=$username;</span><br />
<br />
<b>3° Passo </b><br />
Verificar se não há duplicação de dados de login e e-mail. Esses dados devem ser únicos para cada usuário. <br />
<br />
<span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $existLogin=record_exists('user', 'username', $username);</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> if($existLogin)echo "Login já existe <br>"; </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $existEmail=record_exists('user', 'email', $email);</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> if($existEmail)echo "E-mail já existe<br>"; </span><br />
<b><br />
4° Passo</b><br />
<br />
Criar uma instância do objeto usuário. A instância reflete um mapeamento da tabela de <span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;">mdl_user</span>. Cada campo do objeto usuário dever corresponder a um campo da tabela <span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;">mdl_user</span>. <br />
<br />
<span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser= new object();</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->id='';</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->auth='manual';</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->confirmed=1;</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->policyagreed=0;</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->deleted=0;</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->mnethostid=1; </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->username=$username;</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->password=hash_internal_user_password($password);</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->idnumber='';</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->firstname=$firstname;</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->lastname=$lastname;</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->email=$email;</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->emailstop=0;</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->icq='';</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->skype='';</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->yahoo='';</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->aim='';</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->msn='';</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->phone1='';</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->phone2='';</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->institution='';</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->department='';</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->address='';</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->city=" ";</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->country='BR';</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->lang='pt_br_utf8';</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->theme='';</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->timezone=99;</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->firstaccess=0;</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->lastaccess=0;</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->lastlogin=0;</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->currentlogin='';</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->lastip='';</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->secret='';</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->picture=0;</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->url='';</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->description='';</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->mailformat=1;</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->maildigest=0;</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->maildisplay=2;</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->htmleditor=1;</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->ajax=1;</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->autosubscribe=1;</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->trackforums=0;</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->timemodified='';</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->trustbitmask='';</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->imagealt='';</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "courier new" , "courier" , monospace;"> $newuser->screenreader=0;</span><br style="background-color: #eeeeee;" /><br />
<br />
Neste exemplo, a instância do usuário inicializa todos os campos que existem na tabela <span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;">mdl_user</span> da versão 1.9.3. Isso não é necessário. Mas é indispensável inicializar no objeto todos os campos que são obrigatórios na tabela mdl_user como:</span></div>
<ul style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;">
<li><span style="font-size: small;">firstname</span></li>
<li><span style="font-size: small;">lastname</span></li>
<li><span style="font-size: small;">e-mail</span></li>
<li><span style="font-size: small;">username</span></li>
<li><span style="font-size: small;">password</span></li>
</ul>
<div style="font-family: Arial,Helvetica,sans-serif;">
<span style="font-size: small;"><br />
<b>5° Passo</b><br />
Efetuar cadastro na base de dados e imprimir na tela o resultado, ou seja, o id do usuário recém cadastrado. <br />
<br />
<br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> if(!$existLogin && !$existEmail){</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->id = insert_record('user', $newuser);</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> echo "Cadastro efetuado com sucesso. O id o usuário recém cadastrado é: ".$newuser->id;</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> }</span><br />
<br />
O cadastro só deve ser feito caso não houver duplicação de login e e-mail. <br />
<br />
<br />
Bem, esses 5 passos é tudo que você precisa para cadastrar um usuário no Moodle. Viu como é moleza. <br />
<br />
<b>Código Completo</b><br />
Até então vimos o código em pedaço. Juntando tudo fica assim:<br />
<br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"><?php</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> require_once("../config.php");</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> </span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> //receber parármetro </span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $firstname=$_GET['firstname'];</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $lastname=$_GET['lastname'];</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $username=$_GET['username'];</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $email=$_GET['email'];</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $password=$username;</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> </span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> if(empty($firstname)){echo "Nome é um parâmetro obrigatório";exit;}</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> if(empty($lastname)){echo "Sobrenome é um parâmetro obrigatório";exit;}</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> if(empty($username)){echo "Login é um parâmetro obrigatório";exit;}</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> if(empty($email)){echo "E-mail é um parâmetro obrigatório";exit;}</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> //verificar se login já existe</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $existLogin=record_exists('user', 'username', $username);</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> if($existLogin)echo "Login já existe <br>"; </span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> </span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> //verificar se e-mail já existe</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $existEmail=record_exists('user', 'email', $email);</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> if($existEmail)echo "E-mail já existe<br>"; </span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> </span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> </span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> //criar um objeto usuário</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser= new object();</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> </span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->id='';</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->auth='manual';</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->confirmed=1;</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->policyagreed=0;</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->deleted=0;</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->mnethostid=1; </span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->username=$username;</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->password=hash_internal_user_password($password);</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->idnumber='';</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->firstname=$firstname;</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->lastname=$lastname;</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->email=$email;</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->emailstop=0;</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->icq='';</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->skype='';</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->yahoo='';</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->aim='';</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->msn='';</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->phone1='';</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->phone2='';</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->institution='';</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->department='';</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->address='';</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->city=" ";</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->country='BR';</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->lang='pt_br_utf8';</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->theme='';</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->timezone=99;</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->firstaccess=0;</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->lastaccess=0;</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->lastlogin=0;</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->currentlogin='';</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->lastip='';</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->secret='';</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->picture=0;</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->url='';</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->description='';</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->mailformat=1;</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->maildigest=0;</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->maildisplay=2;</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->htmleditor=1;</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->ajax=1;</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->autosubscribe=1;</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->trackforums=0;</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->timemodified='';</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->trustbitmask='';</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->imagealt='';</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->screenreader=0;</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> </span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> //Cadastrar usuário </span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> if(!$existLogin && !$existEmail){</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> $newuser->id = insert_record('user', $newuser);</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> echo "Cadastro efetuado com sucesso. O id o usuário recém cadastrado é: ".$newuser->id;</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> }</span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> </span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;"> </span><br style="background-color: #f3f3f3; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;">?></span><br />
<br />
<br />
<b>Implementar no Moodle</b><br />
Para executar esse código no Moodle, crie uma pasta denominado <b>_extra</b> dentro da raiz da instalação do Moodle. Em seguida, crie um arquivo denominado<b> user_add.php</b> dentro da pasta _extra. Coloque o código php nesse arquivo. <br />
<br />
Feito isso, acesse o endereço: <br />
<span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;">http://[endereço do moodle]/_extra/user_add.php?firstname=Pedro&lastname=Silva&username=pedro&email=pedro_2010@gmail.com</span><br />
<br />
O url já passa os parâmetros necessários. Para ter certeza que tudo funcionou bem, tente logar com o usuário que cadastrou. Se funcionar é sinal que tudo está ok. <br />
<br />
<a href="http://www.badiu.net/blogger/moodlephp/user_add.zip">Download</a><br />
Se estiver com preguiça de criar o arquivo e digitar o código, faça<a href="http://www.badiu.net/blogger/moodlephp/user_add.zip"> download</a> desse exemplo. Descompacte o arquivo e cole na pasta _extra na raiz do seu Moodle. Caso a pasta _extra não exista ainda, crie-a. Agora faça o teste. <br />
<br />
Esse código foi testado na versão 1.9.3 do Moodle. Caso ocorrer alguma falha com a versão do seu Moodle, tente editar o código para que cada campo do objeto seja igual a um campo da tabela <span style="background-color: #f3f3f3; font-family: "courier new" , "courier" , monospace;">mdl_user</span>. <br />
<br />
<br />
<b>Veja Também:</b><br />
<a href="http://moodlesql.blogspot.com/2010/07/cadastrar-usuario-no-moodle-pelo.html">Cadastrar Usuário no Moodle pelo Comando SQL</a><br />
</span></div>
Badiuhttp://www.blogger.com/profile/00470683612556263079noreply@blogger.com25tag:blogger.com,1999:blog-2390118692607966116.post-56104863969851036252010-11-14T05:23:00.000-08:002010-11-14T05:25:47.482-08:00Listar Usuários Online do Moodle com Programação PHP<div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"><br />
Para exibir os usuários online nos últimos 5 minutos com programação em PHP, siga os seguintes passos:<br />
<br />
<br />
<b>1° Passo </b><br />
Importe a <a href="http://moodlephp.blogspot.com/2010/11/usar-bibliotecas-de-funcoes-do-sistema.html">biblioteca de funções</a> do Moodle:<br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">require_once("../config.php");</span><br />
<br />
<br />
<b>2° Passo </b><br />
Calcule a data em segundos de 5 minutos atrás: <br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">$data=time()-(5*60);</span><br />
<br />
<b>3° Passo </b><br />
Escreva o <a href="http://moodlesql.blogspot.com/2010/11/listar-usuarios-online-do-moodle-com.html">comando SQL</a> para consultar os usuários online nos últimos 5 minutos:<br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">$sql="SELECT DISTINCT u.id, u.firstname, u.lastname FROM {$CFG->prefix}user u INNER JOIN {$CFG->prefix}log l ON u.id = l.userid WHERE time >= $data " ;</span><br />
<b><br />
4° Passo </b><br />
Execute a consulta no Banco de Dados:<br />
<span style="font-family: "Courier New",Courier,monospace;"><span style="background-color: #eeeeee;">$users=get_records_sql($sql);</span> </span><br style="font-family: "Courier New",Courier,monospace;" /><br />
<b>5° Passo </b><br />
Imprime na tela os usuários online:<br />
<br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">$cont=0; </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> foreach ($users as $user){ </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> echo $user->id;</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> echo " ";</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> echo $user->firstname ." ".$user->lastname."<br>";</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> $cont++;</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> }</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> </span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> echo $cont." usuario online";</span><br />
<br />
<br />
Viu como é moleza. Agora juntando todo o código fica assim:<br />
<br />
<span style="background-color: #eeeeee;"><?php</span><br style="background-color: #eeeeee;" /><span style="background-color: #eeeeee;"> require_once("../config.php");</span><br style="background-color: #eeeeee;" /><span style="background-color: #eeeeee;"> $data=time()-(5*60);</span><br style="background-color: #eeeeee;" /><span style="background-color: #eeeeee;"> $sql="SELECT DISTINCT u.id, u.firstname, u.lastname FROM {$CFG->prefix}user u INNER JOIN {$CFG->prefix}log l ON u.id = l.userid WHERE time >= $data " ;</span><br style="background-color: #eeeeee;" /><span style="background-color: #eeeeee;"> $users=get_records_sql($sql);</span><br style="background-color: #eeeeee;" /><span style="background-color: #eeeeee;"> </span><br style="background-color: #eeeeee;" /><span style="background-color: #eeeeee;"> $cont=0; </span><br style="background-color: #eeeeee;" /><span style="background-color: #eeeeee;"> foreach ($users as $user){ </span><br style="background-color: #eeeeee;" /><span style="background-color: #eeeeee;"> echo $user->id;</span><br style="background-color: #eeeeee;" /><span style="background-color: #eeeeee;"> echo " ";</span><br style="background-color: #eeeeee;" /><span style="background-color: #eeeeee;"> echo $user->firstname ." ".$user->lastname."<br>";</span><br style="background-color: #eeeeee;" /><span style="background-color: #eeeeee;"> $cont++;</span><br style="background-color: #eeeeee;" /><span style="background-color: #eeeeee;"> }</span><br style="background-color: #eeeeee;" /><span style="background-color: #eeeeee;"> </span><br style="background-color: #eeeeee;" /><span style="background-color: #eeeeee;"> echo $cont." usuario online";</span><br style="background-color: #eeeeee;" /><span style="background-color: #eeeeee;">?></span><br />
<b>Implementar no Moodle</b><br />
Para executar esse código no Moodle, crie uma pasta denominado <b>_extra</b> dentro da raiz da instalação do Moodle. Em seguida, crie um arquivo denominado<b> user_online.php</b> dentro da pasta <b>_extra</b>. Coloque o código php nesse arquivo. <br />
<br />
Feito isso, acesse o endereço: http://[endereço do moodle]/_extra/user_online.php<br />
<br />
<a href="http://www.badiu.net/blogger/moodlephp/user_online.zip"> Download</a><br />
Se estiver com preguiça de criar o arquivo e digitar o código, faça <a href="http://www.badiu.net/blogger/moodlephp/user_online.zip">download</a> desse exemplo. Descompacte o arquivo e cole na pasta _extra na raiz do seu Moodle. Caso a pasta _extra não exista ainda, crie-a. Agora faça o teste. </span><br />
<br />
<span style="font-size: small;"><b>Veja Também:</b><br />
<a href="http://moodlesql.blogspot.com/2010/11/listar-usuarios-online-do-moodle-com.html">Listar Usuários Online do Moodle com Comando SQL</a></span></div>Badiuhttp://www.blogger.com/profile/00470683612556263079noreply@blogger.com6tag:blogger.com,1999:blog-2390118692607966116.post-37247387626517889632010-11-08T00:49:00.000-08:002010-11-15T06:15:10.715-08:00Usar Bibliotecas de Funções do Sistema do Moodle para Desenvolvimento<div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;">A Plataforma Moodle tem uma excelente biblioteca. Trata-se de um conjunto de funções que compõe o core do sistema. Essas funções são utilizadas para implementar os módulos que compõem a Plataforma. </span></div><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"><br />
O trabalho de desenvolvimento e customização do Moodle se torna muito mais rápido e fácil com o uso dessa biblioteca. </span></div><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"></span></div><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"><br />
Toda biblioteca fica organizada na pasta lib no endereço raiz da instalação do Moodle. Para torná-la disponível basta incluir o arquivo config.php no início do arquivo de programação php com o seguinte comando:<br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> require_once("config.php");</span><br />
</span></div><div style="font-family: Arial,Helvetica,sans-serif;"><br />
</div><div style="font-family: Arial,Helvetica,sans-serif;"><span style="font-size: small;"><b>Exercício</b><br />
Para não ficar só na conversa, vamos fazer um exercício. <br />
<br />
<i><b>1° Passo</b></i><br />
</span><span style="font-size: small;"> <span style="font-size: small;">Crie uma pasta denominado <b>_extra</b> dentro da raiz da instalação do Moodle</span>.</span><span style="font-size: small;"> Dentro dessa pasta, crie um arquivo <span style="font-family: "Courier New",Courier,monospace;">testelib.php</span>. A pasta _extra será o local parta testes todos os exercícios de programação do Moodle. O nome _extra é para não confundir com as outras pastas que são padrões do Moodle. </span><br />
<span style="font-size: small;"><br />
<b><i>2° Passo</i></b><br />
Coloque o seguinte código no arquivo:<br />
<br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"><?php</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> require_once("../config.php");</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> $sql="SELECT COUNT(id) AS cont FROM {$CFG->prefix}user ";</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> $usr=get_record_sql($sql);</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;"> echo $usr->cont;</span><br style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;" /><span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">?></span><br />
<i><b>3° Passo</b></i><br />
Execucte o arquivo no navegador chamando pelo http://[endereço do moodle]/testelib.php<br />
Feito isso, será impresso na tela a quantidade de usuários cadastrados na tabela usuário do Moodle. <br />
<br />
<b>Decifrar o Código</b><br />
Viu como é moleza. Agora vamos decifrar o código:<br />
<br />
<b><i>Primeira Linha de Código</i></b><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">require_once("config.php"); </span><br />
Esse comando importa as bibliotecas de função e inicializa as variáveis globais e sessão do Moodle. <br />
<b><u><i>Observação</i></u></b><br />
Você já deve ter notado que os arquivos<span style="font-family: "Courier New",Courier,monospace;"> config.php</span> e <span style="font-family: "Courier New",Courier,monospace;">testelib.php</span> estão na mesma pasta, ou seja, a raiz da instalação do Moodle. Caso você crie uma subpasta <span style="font-family: "Courier New",Courier,monospace;">teste</span> para colocar o arquivo <span style="font-family: "Courier New",Courier,monospace;"> testelib.php</span>, altere o endereço de importação do arquivo <span style="font-family: "Courier New",Courier,monospace;">config.php</span> para <span style="font-family: "Courier New",Courier,monospace;">require_once("../config.php");</span><br />
<br />
<i><b>Segunda Linha de Código</b></i><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">$sql="SELECT COUNT(id) AS cont FROM {$CFG->prefix}user ";</span><br />
Esse comando monta SQL para consulta no banco de dados. O comando <span style="font-family: "Courier New",Courier,monospace;"><span style="background-color: #eeeeee;">{$CFG->prefix}</span> </span>indica o prefixo da tabela. <br />
<br />
<i><b>Terceira Linha de Código</b></i><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">$usr=get_record_sql($sql);</span><br />
Esse linha de comando executa a consulta no banco. Você deve estar perguntando: - Uai cadê o código que faz conexão como o banco? Bem, para sua surpresa, a biblioteca do Moodle cuida disso. Cabe você cuidar apenas da lógica de programação. <br />
<br />
<i><b>Quarta Linha de Código</b></i><br />
<span style="background-color: #eeeeee; font-family: "Courier New",Courier,monospace;">echo $usr->cont;</span><br />
Esse comando você já está careca de saber que apenas imprime na tela o resultado da consulta feita no banco. <br />
<br />
<a href="http://www.badiu.net/blogger/moodlephp/testelib.zip"><b>Download</b></a><br />
Se estiver com preguiça de criar o arquivo e digitar o código, faça <a href="http://www.badiu.net/blogger/moodlephp/testelib.zip">download</a> desse exemplo. Descompacte o arquivo <span style="font-family: "Courier New",Courier,monospace;">testelib.php</span> </span><span style="font-size: small;"> e coloque </span><span style="font-size: small;">na pasta raiz do seu Moodle e bom teste. <br />
<br />
Bem, é primeiro teste é o nosso alou mundo de programação do Moodle. Mais novidades virão por aí. <br />
</span></div>Badiuhttp://www.blogger.com/profile/00470683612556263079noreply@blogger.com37