From feca758785bffc3d32a096f770c0517c14bee57f Mon Sep 17 00:00:00 2001 From: Matheus Garcia Date: Mon, 4 Nov 2019 17:22:41 -0200 Subject: [PATCH] =?UTF-8?q?Evento=20de=20visualiza=C3=A7=C3=A3o=20de=20cur?= =?UTF-8?q?so,=20ajustes=20em=20par=C3=A2metros=20e=20outros.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- classes/observer.php | 20 +++++++++++ classes/task/escola_modelo.php | 4 +-- classes/util.php | 62 ++++++++++++++++++++++++++++++--- db/events.php | 4 +++ lang/en/block_escola_modelo.php | 3 ++ settings.php | 14 +++++--- version.php | 2 +- 7 files changed, 98 insertions(+), 11 deletions(-) diff --git a/classes/observer.php b/classes/observer.php index 226ea8a..0cb6fe4 100644 --- a/classes/observer.php +++ b/classes/observer.php @@ -49,6 +49,20 @@ class block_escola_modelo_observer { 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 public static function certificate_created(\core\event\base $event) { atualizaCertificadoEVL($event->other); @@ -102,4 +116,10 @@ class block_escola_modelo_observer { // atualizaMatriculaEVL($ue, false); // } + + + + + + } diff --git a/classes/task/escola_modelo.php b/classes/task/escola_modelo.php index ef9062f..33c1d1c 100644 --- a/classes/task/escola_modelo.php +++ b/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 $sqlCourses = ' - SELECT c.*, d.value as ind_publico_evl + SELECT c.*, coalesce(d.value,\'0\') as ind_publico_evl FROM {course} c JOIN {context} ctx ON ctx.contextlevel = 50 @@ -101,7 +101,7 @@ class escola_modelo extends \core\task\scheduled_task { // Atualiza cada um dos cursos pendentes foreach($listaCursos as $curso) { - atualizaCursoEVL($curso); + atualizaCursoEVL($curso, ($curso->ind_publico_evl == '1')); } mtrace("Fim da sincronização de cursos"); } diff --git a/classes/util.php b/classes/util.php index 8bb2e9b..89bd807 100644 --- a/classes/util.php +++ b/classes/util.php @@ -25,8 +25,11 @@ function cursoPublico($course) { global $DB; // Um curso é público se estiver marcado como público em campo personalizado - $publico = (obtemCampoCustomizadoCurso($course->id, CURSO_CUSTOMFIELD_PUBLICO) == '1'); - return $publico; + if(obtemCampoCustomizadoCurso($course->id, CURSO_CUSTOMFIELD_PUBLICO) === '1') { + return true; + } else { + return false; + } } function cursoCargaHoraria($course) { @@ -76,6 +79,11 @@ function evlURLWebServices() { 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 function obtemCampoCustomizadoCurso($idCurso, $nomeCampo) { global $DB; @@ -138,7 +146,6 @@ function atualizaCursoEVL($curso, $visivel = null) { if( evlHabilitada() ) { // Detecta status, caso ele não tenha sido especificado $visivel = $visivel ?? cursoPublico($curso); - $ch = cursoCargaHoraria($curso); $school = $DB->get_record('course',array('id'=>'1')); @@ -169,13 +176,16 @@ function atualizaCursoEVL($curso, $visivel = null) { "description" => $curso->summary, "logo" => "$urlLogo", "ead_id" => $curso->id, - "visible" => $visivel, + "visible" => $visivel?true:false, "conteudista" => evlSiglaEscola(), "certificador" => evlSiglaEscola(), "carga_horaria" => $ch, "category" => strtolower(obtemCampoCustomizadoCurso($curso->id, CURSO_CUSTOMFIELD_AREATEMATICA)) ); + //print_r($camposCurso); + + // Monta o JSON que será enviado ao Web Service $obj->school = evlSiglaEscola(); $obj->course = $camposCurso; @@ -448,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); + } + } +} + + diff --git a/db/events.php b/db/events.php index 27ebd17..3e24d78 100644 --- a/db/events.php +++ b/db/events.php @@ -14,6 +14,10 @@ $observers = array( 'eventname' => '\core\event\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 array( 'eventname' => 'core\event\course_category_updated', diff --git a/lang/en/block_escola_modelo.php b/lang/en/block_escola_modelo.php index b6d4bc5..40e6d9e 100644 --- a/lang/en/block_escola_modelo.php +++ b/lang/en/block_escola_modelo.php @@ -17,6 +17,9 @@ $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_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)'; diff --git a/settings.php b/settings.php index 3c4f40b..e8c3c01 100644 --- a/settings.php +++ b/settings.php @@ -29,25 +29,25 @@ defined('MOODLE_INTERNAL') || die(); if ($ADMIN->fulltree) { $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_descricao', 'block_escola_modelo'), 1); + get_string('config_habilitar_evl_descricao', 'block_escola_modelo'), 0); $settings->add($setting); // Sigla da Escola na 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_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, 3); + 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, 3); + get_string('config_municipio_descricao', 'block_escola_modelo'), '', PARAM_TEXT, 50); $settings->add($setting); // Sigla da UF @@ -73,4 +73,10 @@ if ($ADMIN->fulltree) { get_string('config_url_ws_evl_titulo', 'block_escola_modelo'), get_string('config_url_ws_evl_descricao', 'block_escola_modelo'), '', PARAM_TEXT, 100); $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); } diff --git a/version.php b/version.php index 6f3db7e..91f0d27 100644 --- a/version.php +++ b/version.php @@ -1,5 +1,5 @@ version = 2019072602; +$plugin->version = 2019082103; $plugin->requires = 2017110800; $plugin->component = 'block_escola_modelo';