Browse Source

Ajustes em procedimento de sincronização de matrícula (em desenvolvimento)

master
Matheus Garcia 6 years ago
parent
commit
9e84c69395
  1. 32
      classes/task/escola_modelo.php
  2. 136
      classes/util.php

32
classes/task/escola_modelo.php

@ -15,7 +15,6 @@ global $CFG;
require_once($CFG->dirroot.'/config.php'); require_once($CFG->dirroot.'/config.php');
require_once($CFG->dirroot.'/blocks/escola_modelo/classes/util.php'); require_once($CFG->dirroot.'/blocks/escola_modelo/classes/util.php');
require_once('../util.php');
class escola_modelo extends \core\task\scheduled_task { class escola_modelo extends \core\task\scheduled_task {
@ -97,30 +96,13 @@ class escola_modelo extends \core\task\scheduled_task {
mtrace("Fim da sincronização de cursos"); mtrace("Fim da sincronização de cursos");
} }
// /** /**
// * Realiza procedimento de sincronização de matrículas de usuários a cursos, * Realiza procedimento de sincronização de matrículas de usuários a cursos,
// * as quais ainda não foram atualizadas na EVL * as quais ainda não foram atualizadas na EVL
// */ */
// public function sincronizaMatriculas($syncStartTime) { public function sincronizaMatriculas($syncStartTime) {
// global $DB; atualizaMatriculas($syncStartTime);
}
// // Obtem todas as matrículas pendentes de sincronização
// $sqlEnrolments = '
// SELECT ue.*
// FROM mdl_user_enrolments ue
// LEFT JOIN mdl_ilb_sync_user_enrolments sue
// ON ue.id = sue.user_enrolment_id
// WHERE sue.user_enrolment_id is null
// OR ue.timemodified > sue.time_sync
// ';
// $listaMatriculas = $DB->get_records_sql($sqlEnrolments,array());
// // Atualiza cada um dos cursos pendentes
// foreach($listaMatriculas as $matricula) {
// atualizaMatriculaEVL($matricula);
// }
// }
/** /**
* Realiza procedimento de sincronização de certificados ainda não * Realiza procedimento de sincronização de certificados ainda não

136
classes/util.php

@ -198,58 +198,96 @@ function atualizaCategoriaEVL($categoria) {
// Matrículas // Matrículas
// //
// Retirado pois supõe-se que matrículas serão feitas apenas na EVL function atualizaMatriculas($syncStartTime, $courseId = 0) {
// function atualizaMatriculaEVL($matricula) { global $DB;
// global $DB;
// // Detecta status, caso ele não tenha sido especificado // FIXME comentado para não atrapalhar apresentação para diretor amanhã
// $visivel = true; //$visivel ?? cursoPublico($curso); // (ainda em desenvolvimento)
/*
// Obtem todas as matrículas pendentes de sincronização
$sqlEnrolments = '
SELECT e.courseid, json_agg( u.username )::varchar as userlist,
(coalesce(publicevl.intvalue,0) <> 0) as publicevl
FROM mdl_user_enrolments ue
JOIN mdl_enrol e
ON e.id = ue.enrolid
JOIN mdl_user u
ON u.id = ue.userid
JOIN mdl_context ctx
ON ctx.contextlevel = 50
AND ctx.instanceid = e.courseid
JOIN mdl_customfield_data publicevl
ON publicevl.contextid = ctx.id
AND publicevl.fieldid = 1
LEFT JOIN mdl_ilb_sync_user_enrolments sue
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 = ?)
GROUP BY e.courseid, (coalesce(publicevl.intvalue,0) <> 0)
';
$listaMatriculasCurso = $DB->get_records_sql($sqlEnrolments,
array($courseId, $courseId));
// Atualiza cada um dos cursos pendentes
foreach($listaMatriculasCurso as $matricula) {
atualizaMatriculaEVL($matricula->courseid, $matricula->userlist, $matricula->publicevl);
}
*/
}
// // Hack: enquanto não há campos personalizados no curso, a carga horária function atualizaMatriculaEVL($courseid, $userlist, $publicEVL) {
// // precisa ser obtida a partir do idnumber global $DB;
// $idnumber = $curso->idnumber;
// $ch = 0;
// if(preg_match("/\_CH([0-9]+)/", $idnumber, $x)) {
// $ch = $x[1];
// }
// $school = $DB->get_record('course',array('id'=>'1')); // Detecta status, caso ele não tenha sido especificado
$visivel = true; //$visivel ?? cursoPublico($curso);
// $uri = $CFG->emURLWS . '/api/v1/cursos/registrar/';
// Hack: enquanto não há campos personalizados no curso, a carga horária
// $obj = new StdClass(); // precisa ser obtida a partir do idnumber
$idnumber = $curso->idnumber;
// $camposCurso = array( $ch = 0;
// "name" => $curso->fullname, if(preg_match("/\_CH([0-9]+)/", $idnumber, $x)) {
// "url" => "", $ch = $x[1];
// "description" => $curso->summary, }
// "logo" => "",
// "ead_id" => $curso->id, $school = $DB->get_record('course',array('id'=>'1'));
// "visible" => $visivel,
// "conteudista" => "", //$school->shortname, $uri = $CFG->emURLWS . '/api/v1/cursos/registrar/';
// "certificador" => $school->shortname,
// "carga_horaria" => $ch $obj = new StdClass();
// );
$camposCurso = array(
// // Monta o JSON que será enviado ao Web Service "name" => $curso->fullname,
// $obj->school = $school->shortname; // sigla da escola "url" => "",
// $obj->course = $camposCurso; "description" => $curso->summary,
// $obj->key = "k4B5YcbKa619ohu3wxk2xXbmtoxFuQqrwcKEOTAnZi7iy4tl9z"; "logo" => "",
"ead_id" => $curso->id,
// $json = json_encode($obj); "visible" => $visivel,
"conteudista" => "", //$school->shortname,
// $response = \Httpful\Request::post($uri) "certificador" => $school->shortname,
// ->sendsJson() "carga_horaria" => $ch
// ->body($json) );
// ->send();
// Monta o JSON que será enviado ao Web Service
// // Se o registro foi criado no servidor, registra em tabela de controle $obj->school = $school->shortname; // sigla da escola
// if(!$response->hasErrors()) { $obj->course = $camposCurso;
// registraSincronizacaoMatriculaUsuario($matricula); $obj->key = "k4B5YcbKa619ohu3wxk2xXbmtoxFuQqrwcKEOTAnZi7iy4tl9z";
// } else {
// mtrace("Erro sincronizando ". $matricula->fullname . ": " . $response->code . " " ); $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 . " " );
}
}
// /** // /**
// * Insere ou atualiza registro da última sincronização de determinada matricula // * Insere ou atualiza registro da última sincronização de determinada matricula

Loading…
Cancel
Save