Estrutura do Código que Processa a Sincronização dos Usuários


Nesta seção, exploraremos a estrutura do código responsável pela sincronização dos usuários. O objetivo é apresentar as classes, funções e o encadeamento entre elas que realizam essa tarefa de replicação dos usuários. Inicialmente, será exibido o código localizado na plataforma Badiu.Net. Em seguida, abordaremos o código presente na plataforma Moodle, especificamente no plugin Badiu Webservice.

1 - Classe e Funções do Badiu.Net que Gerenciam Sincronização dos Usuários

Vamos apresentar um conjunto de classes e funções, limitando as classes que são mais importantes para processar o cadastro e sincronização de usuário. Não entraremos no detalhe de código. O objetivo é orientar o desenvolvimento caso seja necessário fazer alguma customização ou identificar algum ponto a ser alterado em caso de erro.

Por padrão, na Badiu.Net, cada classe é estruturada dentro de um único arquivo e, em uma classe, há vários métodos. No entanto, vamos destacar apenas os métodos mais importantes.

A lista a seguir apresenta as classes mais importantes para o processamento de cadastro de usuário e sincronização:

  • BADIUNET_DIR_INSTALL/Badiu/System/UserBundle/Model/UserData.php

  • BADIUNET_DIR_INSTALL/Badiu/System/UserBundle/Model/UserFormController.php

  • BADIUNET_DIR_INSTALL/Badiu/System/UserBundle/Model/UserDefaultFormController.php

  • BADIUNET_DIR_INSTALL/Badiu/System/UserBundle/Model/UserSimpleFormController.php

  • BADIUNET_DIR_INSTALL/Badiu/Ams/EnrolBundle/Model/Lib/ManageSyncMoodle.php

  • BADIUNET_DIR_INSTALL/Badiu/Admin/ServerBundle/Model/Lib/ManageServerSyncUser.php

O arquivo BADIUNET_DIR_INSTALL/Badiu/System/UserBundle/Model/UserData.php é a classe responsável por registrar, na tabela do banco de dados, o cadastro do usuário. Esta classe recebe as requisições processadas pelas classes FormController.php.

A classe BADIUNET_DIR_INSTALL/Badiu/System/UserBundle/Model/UserData.php possui poucas funções, pois herda configurações da classe-mãe BADIUNET_DIR_INSTALL/Badiu/System/CoreBundle/Model/Functionality/BadiuDataBase.php, uma classe geral que processa inserção, edição, exclusão e recuperação de registros na base de dados.

Nesta classe, as funções insertNativeSql e updateNativeSql são responsáveis pela inserção e alteração direta na base de dados. Essas funções são chamadas indiretamente pela classe filha no arquivo UserData.php.

Os arquivos das classes UserFormController.php, UserDefaultFormController.php e UserSimpleFormController.php são controladores do processo de cadastro de usuário. Eles capturam os dados dos formulários de cadastro e encaminham para a classe UserData.php. Cada um desses controladores equivale a um formulário de cadastro de usuário, respectivamente: BADIUNET_URL/system/user/add, BADIUNET_URL/user/default/add e BADIUNET_URL/system/user/simple/add.

As classes referentes aos arquivos terminam com o padrão de nome FormController.php são subclasses que herdam as características da classe principal BADIUNET_DIR_INSTALL/Badiu/System/CoreBundle/Model/Functionality/BadiuFormController.php

É nesta classe principal que temos as funções save e edit, responsáveis por capturar os dados do formulário e encaminhá-los para a classe que faz a inserção no banco de dados. No caso em questão, essa classe é a UserData.php.

Recentemente foi identificado que o cadastro de e-mail do usuário vinha com espaço em branco. Quando o usuário digitava o e-mail no formulário e colocava um espaço em branco no início ou no final do e-mail, este não era tratado. No entanto, o registro na Badiu.Net ocorria com sucesso e, na hora de replicar no Moodle, dava erro. 

Neste caso, a solução foi efetuar a correção, nos arquivos, na função isEmailValid das classes UserFormController.php, UserDefaultFormController.php e UserSimpleFormController.php. Essa correção já está aplicada na versão II da plataforma Badiu.Net. Outros eventuais erros podem surgir, por isso o entendimento da estrutura das classes, das funções e da funcionalidade de cada uma é fundamental para mapear e corrigir os erros.

A classe BADIUNET_DIR_INSTALL/Badiu/Ams/EnrolBundle/Model/Lib/ManageSyncMoodle.php processa a solicitação de replicação de usuário e também da matrícula na plataforma Moodle. Ela realiza isso através do método process. A requisição é feita ao serviço que fica na plataforma Moodle, usando o conector Badiu Webservice. Ao receber a resposta da requisição, a classe ManageSyncMoodle.php invoca o método process da classe BADIUNET_DIR_INSTALL/Badiu/Admin/ServerBundle/Model/Lib/ManageServerSyncUser.php, que, por sua vez, registra o resultado da sincronização do usuário.



2 - Classe e Funções do Moodle que Gerenciam Sincronização dos Usuários

Toda a parte lógica de replicação de cadastro de usuário na plataforma Moodle é realizada pelo plugin Badiu Webservice, um conector cuja finalidade é processar as requisições da plataforma Badiu.Net.

A classe que processa o cadastro de dados do usuário no plugin Badiu Webservice é local_badiuws_webservice_user, localizada no arquivo MOODLE_DIR_INSTALL/local/badiuws/webservice/user/user.php. Nessa classe, a função create recebe a requisição, processa e devolve a resposta.

A função create utiliza a biblioteca da classe local_badiuws_lib_user (localizada em MOODLE_DIR_INSTALL/local/badiuws/webservice/user/lib/userlib.php) para processar a inserção de dados na tabela mdl_user do banco de dados do Moodle.

O Moodle dispõe de uma API que efetua o cadastro do usuário a partir dos parâmetros que recebe, porém esta não foi utilizada, uma vez que, na primeira versão, apresentou bastante instabilidade. Para ter maior garantia e controle de código, implementou-se uma camada que faz a manipulação direta com a biblioteca e o banco de dados.