diff --git a/classes/observer.php b/classes/observer.php index 9f258dc..fbe0edf 100644 --- a/classes/observer.php +++ b/classes/observer.php @@ -2,7 +2,7 @@ require_once($CFG->dirroot.'/config.php'); -include_once('../lib/httpful.phar'); +include_once($CFG->dirroot.'/blocks/escola_modelo/lib/httpful.phar'); include_once('util.php'); class block_escola_modelo_observer { @@ -34,10 +34,9 @@ class block_escola_modelo_observer { public static function course_updated(\core\event\base $event) { global $DB, $CFG; $curso = $DB->get_record($event->objecttable,array('id'=>$event->objectid)); - atualizaCursoEVL($curso); } - + /** * Trata evento de remoção de um curso. * TODO: tratar situações em que isso pode ou não ocorrer, bem como a forma adequada de tratar o evento. @@ -45,11 +44,17 @@ class block_escola_modelo_observer { public static function course_deleted(\core\event\base $event) { global $DB, $CFG; $curso = $DB->get_record($event->objecttable,array('id'=>$event->objectid)); - + // Por enquanto, atualizamos o curso na EVL, porém o mesmo fica invisível atualizaCursoEVL($curso, false); } + // EVENTOS RELACIONADOS A CERTIFICADOS + public static function certificate_created(\core\event\base $event) { + atualizaCertificadoEVL($event->other); + } + + // // EVENTOS RELACIONADOS A CATEGORIAS // @@ -66,9 +71,8 @@ class block_escola_modelo_observer { public static function course_category_updated(\core\event\base $event) { global $DB, $CFG; $categoria = $DB->get_record($event->objecttable,array('id'=>$event->objectid)); - - // A forma mais segura de fazê-lo é modificar timemodified de todos os cursos, - // de modo que na próxima sincronização eles tenham seu status modificado + A forma mais segura de fazê-lo é modificar timemodified de todos os cursos, + de modo que na próxima sincronização eles tenham seu status modificado atualizaCategoriaEVL($categoria); } diff --git a/classes/util.php b/classes/util.php index 29fd80a..463da7e 100644 --- a/classes/util.php +++ b/classes/util.php @@ -4,7 +4,7 @@ */ require_once($CFG->dirroot.'/config.php'); -include_once('../lib/httpful.phar'); +include_once($CFG->dirroot.'/blocks/escola_modelo/lib/httpful.phar'); /** * Verifica se um curso é público, conforme critérios da EVL. @@ -56,7 +56,6 @@ function categoriaPublica($category) { */ function atualizaCursoEVL($curso, $visivel = null) { global $DB, $CFG, $USER; - mtrace("curso " . $curso->id); // Detecta status, caso ele não tenha sido especificado @@ -87,13 +86,11 @@ function atualizaCursoEVL($curso, $visivel = null) { "certificador" => $CFG->emSigla, "carga_horaria" => $ch ); - // Monta o JSON que será enviado ao Web Service $obj->school = $CFG->emSigla; $obj->course = $camposCurso; - $obj->key = $CFG->emApplicationToken; + $obj->key = $CFG->emApplicationToken; // Precisa passar a chave do usuário $json = json_encode($obj); - $response = \Httpful\Request::post($uri) ->sendsJson() ->body($json) @@ -112,14 +109,17 @@ function atualizaCursoEVL($curso, $visivel = null) { */ function registraSincronizacaoCurso($curso) { global $DB; - + + // VALUES (' . $curso->id . ',' . date('H:i:s') . ') + // ON CONFLICT (' . $curso->id . ') DO UPDATE + // SET time_sync = ?'; $qry = ' INSERT INTO {ilb_sync_course} (course_id, time_sync) VALUES (?,?) ON CONFLICT (course_id) DO UPDATE - SET time_sync = ?'; + SET time_sync = ?'; $params = array($curso->id, $curso->timemodified, $curso->timemodified); - + return $DB->execute($qry, $params); } @@ -218,7 +218,6 @@ function atualizaCategoriaEVL($categoria) { function atualizaCertificadoEVL($certificado) { global $DB, $CFG, $USER; - mtrace("certificado " . $certificado->code); $school = $DB->get_record('course',array('id'=>'1')); @@ -226,31 +225,31 @@ function atualizaCertificadoEVL($certificado) { $uri = $CFG->emURLWS . '/api/v1/certificados/adicionar/'; $obj = new StdClass(); - $certArray = array(); // Gravação de certificado para envio ao Web Service da EVL $certItem = array( - 'course' => $certificado->courseid, - 'student' => $certificado->username, + 'course' => $certificado->course, + 'student' => $certificado->user, 'date' => $certificado->timecreated, - 'grade' => $certificado->finalgrade, - 'code' => $certificado->code, + 'grade' => $certificado->gradefmt, + 'code' => $certificado->id, ); array_push($certArray, $certItem); - $mainArray = array( + 'key' => $CFG->emApplicationToken, 'school' => $CFG->emSigla, 'certificates' => $certArray, - 'key' =>$ $CFG->emApplicationToken ); + $json = json_encode($mainArray); + echo "AQUI O CERT ARRAY -> {$json}\n"; $response = \Httpful\Request::post($uri) ->sendsJson() ->body($json) - ->send(); - + ->send(); + // Se o registro foi criado no servidor, registra em tabela de controle if(!$response->hasErrors()) { registraSincronizacaoCertificado($certificado); @@ -264,7 +263,6 @@ function atualizaCertificadoEVL($certificado) { */ function registraSincronizacaoCertificado($certificado) { global $DB; - $qry = ' INSERT INTO {ilb_sync_certificate} (certificate_id, time_sync) VALUES (?,?) @@ -293,8 +291,8 @@ function atualizaDadosEscola($dadosEscola) { 'name' => $dadosEscola->nome_escola, 'url' => $dadosEscola->url_escola, 'logo' => $dadosEscola->url_logo_escola, - 'initials' => $dadosEscola->sigla_escola, - 'key' => $CFG->emApplicationToken + 'initials' => $dadosEscola->sigla_escola, + 'key' => $CFG->emApplicationToken ); $json = json_encode($schoolArray); diff --git a/db/events.php b/db/events.php index b625857..8fe2d16 100644 --- a/db/events.php +++ b/db/events.php @@ -21,9 +21,9 @@ $observers = array( ), // Eventos de certificados array( - 'eventname' => 'mod_certificate\event\certificates_created', - 'callback' => 'block_escola_modelo_observer::certificates_created' - ) + 'eventname' => 'mod_certificate\event\certificate_created', + 'callback' => 'block_escola_modelo_observer::certificate_created' + ), // ), // // Eventos de matrícula a cursos // array(