Compare commits

...

4 Commits

  1. 20
      classes/observer.php
  2. 4
      classes/task/escola_modelo.php
  3. 98
      classes/util.php
  4. 4
      db/events.php
  5. 12
      lang/en/block_escola_modelo.php
  6. 28
      settings.php
  7. 2
      version.php

20
classes/observer.php

@ -49,6 +49,20 @@ class block_escola_modelo_observer {
atualizaCursoEVL($curso, false); atualizaCursoEVL($curso, false);
} }
/**
* Trata evento de visualização do curso
*/
public static function course_viewed(\core\event\base $event) {
global $DB, $CFG;
// Ignora curso 1 (página inicial do Moodle)
if ($event->objectid > 1) {
$curso = $DB->get_record('course',array('id'=>$event->objectid));
// Assegura que usuário está inscito na EVL
require_evl_ready($curso);
}
}
// EVENTOS RELACIONADOS A CERTIFICADOS // EVENTOS RELACIONADOS A CERTIFICADOS
public static function certificate_created(\core\event\base $event) { public static function certificate_created(\core\event\base $event) {
atualizaCertificadoEVL($event->other); atualizaCertificadoEVL($event->other);
@ -102,4 +116,10 @@ class block_escola_modelo_observer {
// atualizaMatriculaEVL($ue, false); // atualizaMatriculaEVL($ue, false);
// } // }
} }

4
classes/task/escola_modelo.php

@ -82,7 +82,7 @@ class escola_modelo extends \core\task\scheduled_task {
// Obtem todos os cursos pendentes de sincronização // Obtem todos os cursos pendentes de sincronização
$sqlCourses = ' $sqlCourses = '
SELECT c.*, d.value as ind_publico_evl SELECT c.*, coalesce(d.value,\'0\') as ind_publico_evl
FROM {course} c FROM {course} c
JOIN {context} ctx JOIN {context} ctx
ON ctx.contextlevel = 50 ON ctx.contextlevel = 50
@ -101,7 +101,7 @@ class escola_modelo extends \core\task\scheduled_task {
// Atualiza cada um dos cursos pendentes // Atualiza cada um dos cursos pendentes
foreach($listaCursos as $curso) { foreach($listaCursos as $curso) {
atualizaCursoEVL($curso); atualizaCursoEVL($curso, ($curso->ind_publico_evl == '1'));
} }
mtrace("Fim da sincronização de cursos"); mtrace("Fim da sincronização de cursos");
} }

98
classes/util.php

@ -25,8 +25,11 @@ function cursoPublico($course) {
global $DB; global $DB;
// Um curso é público se estiver marcado como público em campo personalizado // Um curso é público se estiver marcado como público em campo personalizado
$publico = (obtemCampoCustomizadoCurso($course->id, CURSO_CUSTOMFIELD_PUBLICO) == '1'); if(obtemCampoCustomizadoCurso($course->id, CURSO_CUSTOMFIELD_PUBLICO) === '1') {
return $publico; return true;
} else {
return false;
}
} }
function cursoCargaHoraria($course) { function cursoCargaHoraria($course) {
@ -47,6 +50,20 @@ function evlSiglaEscola() {
return $config->config_sigla_evl; return $config->config_sigla_evl;
} }
function evlMunicipio() {
$config = get_config('block_escola_modelo');
return $config->config_municipio;
}
function evlUF() {
$config = get_config('block_escola_modelo');
return $config->config_uf;
}
function evlMunicipioUF() {
return evlMunicipio() . '(' . evlUF() . ')';
}
function evlAPIKey() { function evlAPIKey() {
$config = get_config('block_escola_modelo'); $config = get_config('block_escola_modelo');
return $config->config_apikey; return $config->config_apikey;
@ -62,6 +79,11 @@ function evlURLWebServices() {
return $config->config_url_ws_evl; return $config->config_url_ws_evl;
} }
function evlURLCentralAutenticacao() {
$config = get_config('block_escola_modelo');
return $config->config_url_central_autenticacao;
}
// TODO mover para outro local, usado também em certificado // TODO mover para outro local, usado também em certificado
function obtemCampoCustomizadoCurso($idCurso, $nomeCampo) { function obtemCampoCustomizadoCurso($idCurso, $nomeCampo) {
global $DB; global $DB;
@ -81,15 +103,19 @@ function obtemCampoCustomizadoCurso($idCurso, $nomeCampo) {
"; ";
$valueArray = $DB->get_record_sql($sql, [$idCurso, $nomeCampo]); $valueArray = $DB->get_record_sql($sql, [$idCurso, $nomeCampo]);
$value = $valueArray->value;
$options = $valueArray->options;
if($options == null) { if($valueArray) {
return $value; $value = $valueArray->value;
$options = $valueArray->options;
if($options == null) {
return $value;
} else {
$optionsArray = preg_split("/\s*\n\s*/", trim($options));
return $optionsArray[$value-1];
}
} else { } else {
return '';
$optionsArray = preg_split("/\s*\n\s*/", trim($options));
return $optionsArray[$value-1];
} }
} }
@ -120,7 +146,6 @@ function atualizaCursoEVL($curso, $visivel = null) {
if( evlHabilitada() ) { if( evlHabilitada() ) {
// Detecta status, caso ele não tenha sido especificado // Detecta status, caso ele não tenha sido especificado
$visivel = $visivel ?? cursoPublico($curso); $visivel = $visivel ?? cursoPublico($curso);
$ch = cursoCargaHoraria($curso); $ch = cursoCargaHoraria($curso);
$school = $DB->get_record('course',array('id'=>'1')); $school = $DB->get_record('course',array('id'=>'1'));
@ -151,13 +176,16 @@ function atualizaCursoEVL($curso, $visivel = null) {
"description" => $curso->summary, "description" => $curso->summary,
"logo" => "$urlLogo", "logo" => "$urlLogo",
"ead_id" => $curso->id, "ead_id" => $curso->id,
"visible" => $visivel, "visible" => $visivel?true:false,
"conteudista" => "", "conteudista" => evlSiglaEscola(),
"certificador" => evlSiglaEscola(), "certificador" => evlSiglaEscola(),
"carga_horaria" => $ch, "carga_horaria" => $ch,
"category" => strtolower(obtemCampoCustomizadoCurso($curso->id, CURSO_CUSTOMFIELD_AREATEMATICA)) "category" => strtolower(obtemCampoCustomizadoCurso($curso->id, CURSO_CUSTOMFIELD_AREATEMATICA))
); );
//print_r($camposCurso);
// Monta o JSON que será enviado ao Web Service // Monta o JSON que será enviado ao Web Service
$obj->school = evlSiglaEscola(); $obj->school = evlSiglaEscola();
$obj->course = $camposCurso; $obj->course = $camposCurso;
@ -276,7 +304,7 @@ function atualizaMatriculaEVL($courseid, $userlist, $publicEVL) {
$school = $DB->get_record('course',array('id'=>'1')); $school = $DB->get_record('course',array('id'=>'1'));
$uri = $CFG->emURLWS . '/api/v1/cursos/registrar/'; $uri = evlURLWebServices() . '/api/v1/cursos/registrar/';
$obj = new StdClass(); $obj = new StdClass();
@ -430,3 +458,47 @@ function atualizaDadosEscola($dadosEscola) {
} }
////////////
// Redireciona usuários inscritos localmente, mas não remotamente,
// para preencherem quiz na EVL e assim realizarem inscrição remota
function require_evl_ready($id) {
if(evlHabilitada()) {
// verifica se usuário respondeu quiz no EVL
// chama ws, pega result
global $CFG, $USER;
// // Monta url para redirecionamento após matrícula
$urlRedirect = new moodle_url("/course/view.php?id=", array('id' => $id));
$obj = new StdClass();
$obj->school = evlSiglaEscola();
$obj->school_course = $id;
$obj->key = evlAPIKey();
$obj->user = $USER->username;
$obj->redirect = $urlRedirect->out(false); // false evita codificar '&' na url de redirecionamento
$json = json_encode($obj);
$uri = $CFG->emURLWS . '/cursos/registro/quiz';
$response = \Httpful\Request::get($uri)
->sendsJson()
->body($json)
->send();
if(!$response->body->result){
// // Monta url para matrícula
// echo "TESTE";
$urlEnrol = new moodle_url(evlURLWebServices() . '/cursos/registro?school=',
array(
'school' => evlSiglaEscola(),
'school_course' => $id,
'key' => evlAPIKey(),
'redirect' => $urlRedirect->out(false) // false evita codificar '&' na url de redirecionamento
));
redirect($urlEnrol, 'Você será redirecionado para a EVL', 0);
}
}
}

4
db/events.php

@ -14,6 +14,10 @@ $observers = array(
'eventname' => '\core\event\course_deleted', 'eventname' => '\core\event\course_deleted',
'callback' => 'block_escola_modelo_observer::course_deleted' 'callback' => 'block_escola_modelo_observer::course_deleted'
), ),
array(
'eventname' => '\core\event\course_viewed',
'callback' => 'block_escola_modelo_observer::course_viewed'
),
// Eventos de categorias // Eventos de categorias
array( array(
'eventname' => 'core\event\course_category_updated', 'eventname' => 'core\event\course_category_updated',

12
lang/en/block_escola_modelo.php

@ -16,3 +16,15 @@ $string['config_url_portal_evl_descricao'] = 'URL do Portal da EVL';
$string['config_url_ws_evl_titulo'] = 'Web Services da EVL'; $string['config_url_ws_evl_titulo'] = 'Web Services da EVL';
$string['config_url_ws_evl_descricao'] = 'URL Raiz do Servidor de Web Services da EVL'; $string['config_url_ws_evl_descricao'] = 'URL Raiz do Servidor de Web Services da EVL';
$string['config_url_central_autenticacao_titulo'] = 'Central de Autenticação';
$string['config_url_central_autenticacao_descricao'] = 'URL da Central de Autenticação';
$string['config_municipio_titulo'] = 'Nome do Município';
$string['config_municipio_descricao'] = 'Nome do Município (para constar nos certificados)';
$string['config_uf_titulo'] = 'Sigla da UF do município';
$string['config_uf_descricao'] = 'Sigla da Unidade da Federação em que o município se encontra';
$string['config_casa_legislativa_titulo'] = 'Nome da Casa Legislativa';
$string['config_casa_legislativa_descricao'] = 'Nome da Casa Legislativa (para constar nos certificados)';

28
settings.php

@ -29,13 +29,31 @@ defined('MOODLE_INTERNAL') || die();
if ($ADMIN->fulltree) { if ($ADMIN->fulltree) {
$setting = new admin_setting_configcheckbox('block_escola_modelo/config_habilitar_evl', $setting = new admin_setting_configcheckbox('block_escola_modelo/config_habilitar_evl',
get_string('config_habilitar_evl_titulo', 'block_escola_modelo'), get_string('config_habilitar_evl_titulo', 'block_escola_modelo'),
get_string('config_habilitar_evl_descricao', 'block_escola_modelo'), 1); get_string('config_habilitar_evl_descricao', 'block_escola_modelo'), 0);
$settings->add($setting); $settings->add($setting);
// Sigla da Escola na EVL // Sigla da Escola na EVL
$setting = new admin_setting_configtext('block_escola_modelo/config_sigla_evl', $setting = new admin_setting_configtext('block_escola_modelo/config_sigla_evl',
get_string('config_sigla_evl_titulo', 'block_escola_modelo'), get_string('config_sigla_evl_titulo', 'block_escola_modelo'),
get_string('config_sigla_evl_descricao', 'block_escola_modelo'), '', PARAM_TEXT, 3); get_string('config_sigla_evl_descricao', 'block_escola_modelo'), '', PARAM_TEXT, 5);
$settings->add($setting);
// Nome da Casa Legislativa
$setting = new admin_setting_configtext('block_escola_modelo/config_casa_legislativa',
get_string('config_casa_legislativa_titulo', 'block_escola_modelo'),
get_string('config_casa_legislativa_descricao', 'block_escola_modelo'), '', PARAM_TEXT, 50);
$settings->add($setting);
// Nome do Município
$setting = new admin_setting_configtext('block_escola_modelo/config_municipio',
get_string('config_municipio_titulo', 'block_escola_modelo'),
get_string('config_municipio_descricao', 'block_escola_modelo'), '', PARAM_TEXT, 50);
$settings->add($setting);
// Sigla da UF
$setting = new admin_setting_configtext('block_escola_modelo/config_uf',
get_string('config_uf_titulo', 'block_escola_modelo'),
get_string('config_uf_descricao', 'block_escola_modelo'), '', PARAM_TEXT, 3);
$settings->add($setting); $settings->add($setting);
// API Key desta instalação // API Key desta instalação
@ -55,4 +73,10 @@ if ($ADMIN->fulltree) {
get_string('config_url_ws_evl_titulo', 'block_escola_modelo'), get_string('config_url_ws_evl_titulo', 'block_escola_modelo'),
get_string('config_url_ws_evl_descricao', 'block_escola_modelo'), '', PARAM_TEXT, 100); get_string('config_url_ws_evl_descricao', 'block_escola_modelo'), '', PARAM_TEXT, 100);
$settings->add($setting); $settings->add($setting);
// URL da Central de Autenticação
$setting = new admin_setting_configtext('block_escola_modelo/config_url_central_autenticacao',
get_string('config_url_central_autenticacao_titulo', 'block_escola_modelo'),
get_string('config_url_central_autenticacao_descricao', 'block_escola_modelo'), '', PARAM_TEXT, 100);
$settings->add($setting);
} }

2
version.php

@ -1,5 +1,5 @@
<?php <?php
$plugin->version = 2019060701; $plugin->version = 2019082103;
$plugin->requires = 2017110800; $plugin->requires = 2017110800;
$plugin->component = 'block_escola_modelo'; $plugin->component = 'block_escola_modelo';

Loading…
Cancel
Save