|
|
@ -4,33 +4,65 @@ |
|
|
|
*/ |
|
|
|
|
|
|
|
require_once($CFG->dirroot.'/config.php'); |
|
|
|
include_once($CFG->dirroot.'/blocks/escola_modelo/lib/httpful.phar'); |
|
|
|
include_once($CFG->dirroot . '/blocks/escola_modelo/lib/httpful.phar'); |
|
|
|
include_once($CFG->dirroot . '/course/externallib.php'); |
|
|
|
|
|
|
|
define("CURSO_CUSTOMFIELD_PUBLICO", "publico"); |
|
|
|
define("CURSO_CUSTOMFIELD_AREATEMATICA", "areatematica"); |
|
|
|
define("CURSO_CUSTOMFIELD_CARGAHORARIA", "cargahoraria"); |
|
|
|
define("CURSO_CUSTOMFIELD_SENADOR", "senador"); |
|
|
|
define("CURSO_CUSTOMFIELD_MUNICIPIO", "municipio"); |
|
|
|
define("CURSO_CUSTOMFIELD_TIPOOFICINA", "tipooficina"); |
|
|
|
define("CURSO_CUSTOMFIELD_INSTRUTOR", "instrutor"); |
|
|
|
define("CURSO_CUSTOMFIELD_MONITOR", "monitor"); |
|
|
|
|
|
|
|
/** |
|
|
|
* Verifica se um curso é público, conforme critérios da EVL. |
|
|
|
* Pelas regras estabelecidas, um curso é público se a categoria raiz em que ele |
|
|
|
* estiver for uma categoria pública. |
|
|
|
* Pelas regras estabelecidas, um curso é público se foi marcado como público |
|
|
|
* em campo customizado |
|
|
|
*/ |
|
|
|
function cursoPublico($course) { |
|
|
|
global $DB; |
|
|
|
|
|
|
|
$category = $DB->get_record('course_categories', array('id'=>$course->category)); |
|
|
|
$path = explode('/',$category->path); |
|
|
|
$root_category_id = $path[1]; |
|
|
|
$root_category = $DB->get_record('course_categories',array('id'=>$root_category_id)); |
|
|
|
// Um curso é público se estiver marcado como público em campo personalizado |
|
|
|
$publico = (obtemCampoCustomizadoCurso($course->id, CURSO_CUSTOMFIELD_PUBLICO) == '1'); |
|
|
|
return $publico; |
|
|
|
} |
|
|
|
|
|
|
|
return categoriaPublica($root_category); |
|
|
|
function evlHabilitada() { |
|
|
|
$config = get_config('block_escola_modelo'); |
|
|
|
return ($config->config_habilitar_evl == 1); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* Verifica se uma categoria é pública, conforme critérios da EVL |
|
|
|
* Pelas regras estabelecidas, uma categoria é pública se possuir idnumber iniciado por PUB_ |
|
|
|
*/ |
|
|
|
function categoriaPublica($category) { |
|
|
|
$idnumber=$category->idnumber; |
|
|
|
$isPublic=(strcasecmp(substr($idnumber,0,4), 'PUB_') == 0); |
|
|
|
// TODO mover para outro local, usado também em certificado |
|
|
|
function obtemCampoCustomizadoCurso($idCurso, $nomeCampo) { |
|
|
|
global $DB; |
|
|
|
|
|
|
|
$sql = " |
|
|
|
SELECT d.value, f.configdata::json->>'options' as options |
|
|
|
FROM mdl_course c |
|
|
|
JOIN mdl_context ctx |
|
|
|
ON c.id = ? |
|
|
|
AND ctx.contextlevel = 50 |
|
|
|
AND ctx.instanceid = c.id |
|
|
|
JOIN mdl_customfield_field f |
|
|
|
ON f.shortname = ? |
|
|
|
JOIN mdl_customfield_data d |
|
|
|
ON d.fieldid = f.id |
|
|
|
AND d.contextid = ctx.id |
|
|
|
"; |
|
|
|
|
|
|
|
$valueArray = $DB->get_record_sql($sql, [$idCurso, $nomeCampo]); |
|
|
|
$value = $valueArray->value; |
|
|
|
$options = $valueArray->options; |
|
|
|
|
|
|
|
if($options == null) { |
|
|
|
return $value; |
|
|
|
} else { |
|
|
|
|
|
|
|
return $isPublic; |
|
|
|
$optionsArray = preg_split("/\s*\n\s*/", trim($options)); |
|
|
|
return $optionsArray[$value-1]; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@ -56,8 +88,8 @@ function categoriaPublica($category) { |
|
|
|
*/ |
|
|
|
function atualizaCursoEVL($curso, $visivel = null) { |
|
|
|
global $DB, $CFG, $USER; |
|
|
|
mtrace("curso " . $curso->id); |
|
|
|
|
|
|
|
if( evlHabilitada() ) { |
|
|
|
// Detecta status, caso ele não tenha sido especificado |
|
|
|
$visivel = $visivel ?? cursoPublico($curso); |
|
|
|
|
|
|
@ -86,11 +118,13 @@ 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; // Precisa passar a chave do usuário |
|
|
|
$obj->key = $CFG->emApplicationToken; |
|
|
|
$json = json_encode($obj); |
|
|
|
|
|
|
|
$response = \Httpful\Request::post($uri) |
|
|
|
->sendsJson() |
|
|
|
->body($json) |
|
|
@ -102,6 +136,7 @@ function atualizaCursoEVL($curso, $visivel = null) { |
|
|
|
} else { |
|
|
|
mtrace("Erro sincronizando ". $curso->fullname . ": " . $response->code . " " ); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|