Browse Source

Adicionando sincronização de matriculas e fazendo alguns ajustes

master
Matheus456 6 years ago
parent
commit
07fe850a26
  1. 21
      classes/task/escola_modelo.php
  2. 79
      classes/util.php

21
classes/task/escola_modelo.php

@ -33,8 +33,8 @@ class escola_modelo extends \core\task\scheduled_task {
$this->sincronizaDadosEscola($syncStartTime); $this->sincronizaDadosEscola($syncStartTime);
$this->sincronizaCursos($syncStartTime); $this->sincronizaCursos($syncStartTime);
//$this->sincronizaMatriculas($syncStartTime); $this->sincronizaMatriculas($syncStartTime);
//$this->sincronizaCertificados($syncStartTime); $this->sincronizaCertificados($syncStartTime);
} }
} }
@ -123,13 +123,13 @@ class escola_modelo extends \core\task\scheduled_task {
mtrace("Iniciando sincronização de certificados"); mtrace("Iniciando sincronização de certificados");
// Identifica eventuais cursos não sincronizados // Identifica eventuais cursos não sincronizados
$sqlCertificates = ' $sqlCertificates = "
SELECT c.id as courseid, u.username, ci.timecreated, gg.finalgrade, ci.code, cert.id SELECT ci.code, c.id as course, u.username as user, ci.timecreated, gg.finalgrade as gradefmt, cert.id as id
FROM ( FROM (
SELECT ci.timecreated, sc.time_sync, ci.code, ci.certificateid, ci.userid SELECT ci.timecreated, sc.time_sync, sc.certificate_id, ci.code, ci.certificateid, ci.userid
FROM {certificate_issues} ci FROM mdl_certificate_issues ci
LEFT JOIN {ilb_sync_certificate} sc LEFT JOIN mdl_ilb_sync_certificate sc
ON ci.id = sc.certificate_id ON ci.certificateid = sc.certificate_id
WHERE sc.time_sync is null WHERE sc.time_sync is null
OR ci.timecreated > sc.time_sync OR ci.timecreated > sc.time_sync
) ci ) ci
@ -141,16 +141,17 @@ class escola_modelo extends \core\task\scheduled_task {
ON u.id = ci.userid ON u.id = ci.userid
LEFT JOIN mdl_grade_items gi LEFT JOIN mdl_grade_items gi
ON gi.courseid = c.id ON gi.courseid = c.id
AND gi.itemtype = \'course\' AND gi.itemtype = 'course'
LEFT JOIN mdl_grade_grades gg LEFT JOIN mdl_grade_grades gg
ON gg.itemid = gi.id ON gg.itemid = gi.id
AND gg.userid = ci.userid AND gg.userid = ci.userid
'; ";
$certificados = $DB->get_records_sql($sqlCertificates,array()); $certificados = $DB->get_records_sql($sqlCertificates,array());
// Processa cada certificado, gerando chamada ao web service // Processa cada certificado, gerando chamada ao web service
foreach ($certificados as $certificado) { foreach ($certificados as $certificado) {
echo "CERTIFICADO -> " . $certificado->user . "\n";
atualizaCertificadoEVL($certificado); atualizaCertificadoEVL($certificado);
} }
mtrace("Fim da sincronização de certificados"); mtrace("Fim da sincronização de certificados");

79
classes/util.php

@ -222,9 +222,6 @@ function atualizaCategoriaEVL($categoria) {
function atualizaMatriculas($syncStartTime, $courseId = 0) { function atualizaMatriculas($syncStartTime, $courseId = 0) {
global $DB; 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 // Obtem todas as matrículas pendentes de sincronização
$sqlEnrolments = ' $sqlEnrolments = '
SELECT e.courseid, json_agg( u.username )::varchar as userlist, 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 ON ue.id = sue.user_enrolment_id
WHERE (sue.user_enrolment_id is null WHERE (sue.user_enrolment_id is null
OR ue.timemodified > sue.time_sync) 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) GROUP BY e.courseid, (coalesce(publicevl.intvalue,0) <> 0)
'; ';
$listaMatriculasCurso = $DB->get_records_sql($sqlEnrolments, $listaMatriculasCurso = $DB->get_records_sql($sqlEnrolments,
array($courseId, $courseId)); array($courseId, $courseId));
// Atualiza cada um dos cursos pendentes // Atualiza cada um dos cursos pendentes
foreach($listaMatriculasCurso as $matricula) { 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) { function atualizaMatriculaEVL($courseid, $userlist, $publicEVL) {
global $DB; global $DB, $CFG;
if( evlHabilitada() ) { 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 // Monta o JSON que será enviado ao Web Service
$obj->school = $school->shortname; // sigla da escola $obj = new StdClass();
$obj->course = $camposCurso; $obj->course = $courseid;
$obj->key = "k4B5YcbKa619ohu3wxk2xXbmtoxFuQqrwcKEOTAnZi7iy4tl9z"; $obj->key = evlAPIKey();
$obj->alunos = $userlist;
$obj->sigla = evlSiglaEscola();
$json = json_encode($obj); $json = json_encode($obj);
$response = \Httpful\Request::post($uri) if ($publicEVL){
->sendsJson() $uri = $CFG->emURLWS . '/matricula/alunos/';
->body($json) $response = \Httpful\Request::post($uri)
->send(); ->sendsJson()
->body($json)
// Se o registro foi criado no servidor, registra em tabela de controle ->send();
if(!$response->hasErrors()) {
registraSincronizacaoMatriculaUsuario($matricula);
} else {
mtrace("Erro sincronizando ". $matricula->fullname . ": " . $response->code . " " );
} }
// 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); $json = json_encode($mainArray);
echo "AQUI O CERT ARRAY -> {$json}\n";
$response = \Httpful\Request::post($uri) $response = \Httpful\Request::post($uri)
->sendsJson() ->sendsJson()

Loading…
Cancel
Save