From 07fe850a266f6a4e3af7627ae97e0a346f94f775 Mon Sep 17 00:00:00 2001 From: Matheus456 Date: Thu, 27 Jun 2019 13:12:37 -0300 Subject: [PATCH] =?UTF-8?q?Adicionando=20sincroniza=C3=A7=C3=A3o=20de=20ma?= =?UTF-8?q?triculas=20e=20fazendo=20alguns=20ajustes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- classes/task/escola_modelo.php | 23 +++++----- classes/util.php | 81 ++++++++++++---------------------- 2 files changed, 39 insertions(+), 65 deletions(-) diff --git a/classes/task/escola_modelo.php b/classes/task/escola_modelo.php index ef9062f..05079b5 100644 --- a/classes/task/escola_modelo.php +++ b/classes/task/escola_modelo.php @@ -33,8 +33,8 @@ class escola_modelo extends \core\task\scheduled_task { $this->sincronizaDadosEscola($syncStartTime); $this->sincronizaCursos($syncStartTime); - //$this->sincronizaMatriculas($syncStartTime); - //$this->sincronizaCertificados($syncStartTime); + $this->sincronizaMatriculas($syncStartTime); + $this->sincronizaCertificados($syncStartTime); } } @@ -123,13 +123,13 @@ class escola_modelo extends \core\task\scheduled_task { mtrace("Iniciando sincronização de certificados"); // Identifica eventuais cursos não sincronizados - $sqlCertificates = ' - SELECT c.id as courseid, u.username, ci.timecreated, gg.finalgrade, ci.code, cert.id + $sqlCertificates = " + SELECT ci.code, c.id as course, u.username as user, ci.timecreated, gg.finalgrade as gradefmt, cert.id as id FROM ( - SELECT ci.timecreated, sc.time_sync, ci.code, ci.certificateid, ci.userid - FROM {certificate_issues} ci - LEFT JOIN {ilb_sync_certificate} sc - ON ci.id = sc.certificate_id + SELECT ci.timecreated, sc.time_sync, sc.certificate_id, ci.code, ci.certificateid, ci.userid + FROM mdl_certificate_issues ci + LEFT JOIN mdl_ilb_sync_certificate sc + ON ci.certificateid = sc.certificate_id WHERE sc.time_sync is null OR ci.timecreated > sc.time_sync ) ci @@ -141,16 +141,17 @@ class escola_modelo extends \core\task\scheduled_task { ON u.id = ci.userid LEFT JOIN mdl_grade_items gi ON gi.courseid = c.id - AND gi.itemtype = \'course\' + AND gi.itemtype = 'course' LEFT JOIN mdl_grade_grades gg ON gg.itemid = gi.id AND gg.userid = ci.userid - '; + "; $certificados = $DB->get_records_sql($sqlCertificates,array()); - + // Processa cada certificado, gerando chamada ao web service foreach ($certificados as $certificado) { + echo "CERTIFICADO -> " . $certificado->user . "\n"; atualizaCertificadoEVL($certificado); } mtrace("Fim da sincronização de certificados"); diff --git a/classes/util.php b/classes/util.php index 86e9227..d734ba1 100644 --- a/classes/util.php +++ b/classes/util.php @@ -222,9 +222,6 @@ function atualizaCategoriaEVL($categoria) { function atualizaMatriculas($syncStartTime, $courseId = 0) { global $DB; - // FIXME comentado para não atrapalhar apresentação para diretor amanhã - // (ainda em desenvolvimento) -/* // Obtem todas as matrículas pendentes de sincronização $sqlEnrolments = ' SELECT e.courseid, json_agg( u.username )::varchar as userlist, @@ -244,72 +241,49 @@ function atualizaMatriculas($syncStartTime, $courseId = 0) { ON ue.id = sue.user_enrolment_id WHERE (sue.user_enrolment_id is null OR ue.timemodified > sue.time_sync) - AND (? = 0 OR ue.courseid = ?) + AND (? = 0 OR e.courseid = ?) GROUP BY e.courseid, (coalesce(publicevl.intvalue,0) <> 0) '; $listaMatriculasCurso = $DB->get_records_sql($sqlEnrolments, array($courseId, $courseId)); - // Atualiza cada um dos cursos pendentes + // Atualiza cada um dos cursos pendentes foreach($listaMatriculasCurso as $matricula) { - atualizaMatriculaEVL($matricula->courseid, $matricula->userlist, $matricula->publicevl); + // Ver uma maneira melhor de se transformar a string que está vindo em vetor + $arrayusers = array_map('trim', explode(',', str_replace('"', "", str_replace(']', '', str_replace('[', '', $matricula->userlist))))); + atualizaMatriculaEVL($matricula->courseid, $arrayusers, $matricula->publicevl); } - */ } function atualizaMatriculaEVL($courseid, $userlist, $publicEVL) { - global $DB; + global $DB, $CFG; if( evlHabilitada() ) { - - // Detecta status, caso ele não tenha sido especificado - $visivel = true; //$visivel ?? cursoPublico($curso); - - // Hack: enquanto não há campos personalizados no curso, a carga horária - // precisa ser obtida a partir do idnumber - $idnumber = $curso->idnumber; - $ch = 0; - if(preg_match("/\_CH([0-9]+)/", $idnumber, $x)) { - $ch = $x[1]; - } - - $school = $DB->get_record('course',array('id'=>'1')); - - $uri = $CFG->emURLWS . '/api/v1/cursos/registrar/'; - - $obj = new StdClass(); - - $camposCurso = array( - "name" => $curso->fullname, - "url" => "", - "description" => $curso->summary, - "logo" => "", - "ead_id" => $curso->id, - "visible" => $visivel, - "conteudista" => "", //$school->shortname, - "certificador" => $school->shortname, - "carga_horaria" => $ch - ); - // Monta o JSON que será enviado ao Web Service - $obj->school = $school->shortname; // sigla da escola - $obj->course = $camposCurso; - $obj->key = "k4B5YcbKa619ohu3wxk2xXbmtoxFuQqrwcKEOTAnZi7iy4tl9z"; - + $obj = new StdClass(); + $obj->course = $courseid; + $obj->key = evlAPIKey(); + $obj->alunos = $userlist; + $obj->sigla = evlSiglaEscola(); $json = json_encode($obj); - $response = \Httpful\Request::post($uri) - ->sendsJson() - ->body($json) - ->send(); - - // Se o registro foi criado no servidor, registra em tabela de controle - if(!$response->hasErrors()) { - registraSincronizacaoMatriculaUsuario($matricula); - } else { - mtrace("Erro sincronizando ". $matricula->fullname . ": " . $response->code . " " ); - } + if ($publicEVL){ + $uri = $CFG->emURLWS . '/matricula/alunos/'; + $response = \Httpful\Request::post($uri) + ->sendsJson() + ->body($json) + ->send(); + } + // FIX ME -> Como será o comportamento ao transformar um curso em privado? + // Excluir os cursos que estão na EVL? + /*else { + $uri = $CFG->emURLWS . '/api/v1/matricula/apagar/'; + $response = \Httpful\Request::post($uri) + ->sendsJson() + ->body($json) + ->send(); + }*/ } } @@ -361,7 +335,6 @@ function atualizaCertificadoEVL($certificado) { ); $json = json_encode($mainArray); - echo "AQUI O CERT ARRAY -> {$json}\n"; $response = \Httpful\Request::post($uri) ->sendsJson()