Matheus Garcia
6 years ago
11 changed files with 690 additions and 99 deletions
@ -0,0 +1,8 @@ |
|||||
|
|
||||
|
Plugin para Escolas Modelo |
||||
|
|
||||
|
- implementa mecanismos para atualização síncrona (por meio de eventos) e assíncrona (por meio de tarefa) de cursos, certificados e matrículas na EVL |
||||
|
- define uma API para ser consultada externamente, provendo informações sobre a Escola Modelo |
||||
|
|
||||
|
|
||||
|
|
@ -0,0 +1,164 @@ |
|||||
|
<?php |
||||
|
|
||||
|
/** |
||||
|
* escola_modelo.php |
||||
|
* |
||||
|
* Implementa procedimentos para sincronização de informações de uma instalação |
||||
|
* da Escola Modelo com o servidor da EVL |
||||
|
* |
||||
|
**/ |
||||
|
|
||||
|
namespace block_escola_modelo\task; |
||||
|
|
||||
|
|
||||
|
global $CFG; |
||||
|
|
||||
|
require_once($CFG->dirroot.'/config.php'); |
||||
|
require_once($CFG->dirroot.'/blocks/escola_modelo/classes/util.php'); |
||||
|
|
||||
|
class escola_modelo extends \core\task\scheduled_task { |
||||
|
|
||||
|
public function get_name() { |
||||
|
return get_string('escola_modelo', 'block_escola_modelo'); |
||||
|
} |
||||
|
|
||||
|
// Ponto de entrada da task |
||||
|
public function execute() { |
||||
|
global $DB; |
||||
|
// Momento do início do procedimento, para fins de gravação em |
||||
|
// tabelas de controle |
||||
|
$syncStartTime = $DB->get_record_sql('SELECT extract(epoch from now())::int8'); |
||||
|
|
||||
|
$this->sincronizaDadosEscola($syncStartTime); |
||||
|
$this->sincronizaCursos($syncStartTime); |
||||
|
//$this->sincronizaMatriculas($syncStartTime); |
||||
|
$this->sincronizaCertificados($syncStartTime); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Realiza procedimento de sincronização nos cursos criados e/ou atualizados |
||||
|
* que ainda não foram atualizados na EVL |
||||
|
*/ |
||||
|
public function sincronizaDadosEscola($syncStartTime) { |
||||
|
global $DB, $CFG; |
||||
|
mtrace("Iniciando sincronização de dados da escola"); |
||||
|
|
||||
|
// Obtem todos os cursos pendentes de sincronização |
||||
|
$sqlDadosEscola = ' |
||||
|
SELECT ? as sigla_escola, ? as url_escola, c.fullname as nome_escola, |
||||
|
? || \'/pluginfile.php/1/core_admin/logo/0x150/-1\' || logo.value as url_logo_escola |
||||
|
FROM mdl_course c |
||||
|
JOIN ( |
||||
|
SELECT value |
||||
|
FROM mdl_config_plugins |
||||
|
WHERE plugin = \'core_admin\' |
||||
|
AND name = \'logocompact\' |
||||
|
) logo |
||||
|
ON 1 = 1 |
||||
|
WHERE c.id = 1 |
||||
|
'; |
||||
|
|
||||
|
$dadosEscola = $DB->get_record_sql($sqlDadosEscola,array($CFG->emSigla, $CFG->emURL, $CFG->emURL)); |
||||
|
|
||||
|
// Atualiza cada um dos cursos pendentes |
||||
|
atualizaDadosEscola($dadosEscola); |
||||
|
|
||||
|
mtrace("Fim da sincronização de dados da escola"); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
/** |
||||
|
* Realiza procedimento de sincronização nos cursos criados e/ou atualizados |
||||
|
* que ainda não foram atualizados na EVL |
||||
|
*/ |
||||
|
public function sincronizaCursos($syncStartTime) { |
||||
|
global $DB; |
||||
|
mtrace("Iniciando sincronização de cursos"); |
||||
|
|
||||
|
// Obtem todos os cursos pendentes de sincronização |
||||
|
$sqlCourses = ' |
||||
|
SELECT c.* |
||||
|
FROM {course} c |
||||
|
LEFT JOIN {ilb_sync_course} sc |
||||
|
ON c.id = sc.course_id |
||||
|
WHERE sc.course_id is null |
||||
|
OR c.timemodified > sc.time_sync |
||||
|
'; |
||||
|
|
||||
|
$listaCursos = $DB->get_records_sql($sqlCourses,array()); |
||||
|
|
||||
|
// Atualiza cada um dos cursos pendentes |
||||
|
foreach($listaCursos as $curso) { |
||||
|
atualizaCursoEVL($curso); |
||||
|
} |
||||
|
mtrace("Fim da sincronização de cursos"); |
||||
|
} |
||||
|
|
||||
|
// /** |
||||
|
// * Realiza procedimento de sincronização de matrículas de usuários a cursos, |
||||
|
// * as quais ainda não foram atualizadas na EVL |
||||
|
// */ |
||||
|
// public function sincronizaMatriculas($syncStartTime) { |
||||
|
// global $DB; |
||||
|
|
||||
|
// // 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 |
||||
|
* atualizados na EVL |
||||
|
*/ |
||||
|
public function sincronizaCertificados($syncStartTime) { |
||||
|
global $DB; |
||||
|
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 |
||||
|
FROM ( |
||||
|
SELECT ci.timecreated, sc.time_sync, ci.code, ci.certificateid, ci.userid |
||||
|
FROM mdl_certificate_issues ci |
||||
|
LEFT JOIN mdl_ilb_sync_certificate sc |
||||
|
ON ci.id = sc.certificate_id |
||||
|
WHERE sc.time_sync is null |
||||
|
OR ci.timecreated > sc.time_sync |
||||
|
) ci |
||||
|
JOIN mdl_certificate cert |
||||
|
ON cert.id = ci.certificateid |
||||
|
JOIN mdl_course c |
||||
|
ON c.id = cert.course |
||||
|
JOIN mdl_user u |
||||
|
ON u.id = ci.userid |
||||
|
LEFT JOIN mdl_grade_items gi |
||||
|
ON gi.courseid = c.id |
||||
|
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) { |
||||
|
atualizaCertificadoEVL($certificado); |
||||
|
} |
||||
|
mtrace("Fim da sincronização de certificados"); |
||||
|
} |
||||
|
} |
||||
|
?> |
@ -0,0 +1,317 @@ |
|||||
|
<?php |
||||
|
/** |
||||
|
* Funções utilitárias para plugin da Escola Modelo |
||||
|
*/ |
||||
|
|
||||
|
require_once($CFG->dirroot.'/config.php'); |
||||
|
include('httpful.phar'); |
||||
|
|
||||
|
/** |
||||
|
* 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. |
||||
|
*/ |
||||
|
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)); |
||||
|
|
||||
|
return categoriaPublica($root_category); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* 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); |
||||
|
|
||||
|
return $isPublic; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Registra um determinado curso na EVL, com o status informado |
||||
|
* |
||||
|
* Formato do JSON: |
||||
|
* { |
||||
|
* "school": "Iniciais da escola", |
||||
|
* "course": |
||||
|
* { |
||||
|
* "name": "nome do curso", |
||||
|
* "url": "url do curso", |
||||
|
* "description": "descrição do curso", |
||||
|
* "logo":"endereco da logo", |
||||
|
* "ead_id": "id do curso no moodle", |
||||
|
* "visible": Visibilidade do curso(Público ou privado, de acordo com a categoria do moodle), |
||||
|
* "conteudista": "", |
||||
|
* "certificador": "", |
||||
|
* "carga_horaria": "" |
||||
|
* }, |
||||
|
* "key": "k4B5YcbKa619ohu3wxk2xXbmtoxFuQqrwcKEOTAnZi7iy4tl9z" |
||||
|
* } |
||||
|
*/ |
||||
|
function atualizaCursoEVL($curso, $visivel = null) { |
||||
|
global $DB; |
||||
|
|
||||
|
mtrace("curso " . $curso->id); |
||||
|
|
||||
|
// Detecta status, caso ele não tenha sido especificado |
||||
|
$visivel = $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 = 'https://escolamodelows.interlegis.leg.br/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"; |
||||
|
$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()) { |
||||
|
registraSincronizacaoCurso($curso); |
||||
|
} else { |
||||
|
mtrace("Erro sincronizando ". $curso->fullname . ": " . $response->code . " " ); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Insere ou atualiza registro da última sincronização de determinado curso |
||||
|
*/ |
||||
|
function registraSincronizacaoCurso($curso) { |
||||
|
global $DB; |
||||
|
|
||||
|
$qry = ' |
||||
|
INSERT INTO {ilb_sync_course} (course_id, time_sync) |
||||
|
VALUES (?,?) |
||||
|
ON CONFLICT (course_id) DO UPDATE |
||||
|
SET time_sync = ?'; |
||||
|
$params = array($curso->id, $curso->timemodified, $curso->timemodified); |
||||
|
|
||||
|
return $DB->execute($qry, $params); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Identifica e atualiza registro de todos os cursos da categoria especificada |
||||
|
* (excluindo subcategorias) |
||||
|
*/ |
||||
|
function atualizaCategoriaEVL($categoria) { |
||||
|
global $DB; |
||||
|
|
||||
|
$visivel = categoriaPublica($categoria); |
||||
|
|
||||
|
$cursos = $DB->get_records('course', array('category'=>$categoria->id)); |
||||
|
|
||||
|
foreach ($cursos as $curso) { |
||||
|
atualizaCursoEVL($curso, $visivel); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// |
||||
|
// Matrículas |
||||
|
// |
||||
|
|
||||
|
// Retirado pois supõe-se que matrículas serão feitas apenas na EVL |
||||
|
// function atualizaMatriculaEVL($matricula) { |
||||
|
// global $DB; |
||||
|
|
||||
|
// // 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 = 'https://escolamodelows.interlegis.leg.br/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"; |
||||
|
|
||||
|
// $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 |
||||
|
// */ |
||||
|
// function registraSincronizacaoMatriculaUsuario($userEnrolment) { |
||||
|
// global $DB; |
||||
|
|
||||
|
// $qry = ' |
||||
|
// INSERT INTO {ilb_sync_user_enrolments} (user_enrolment_id, time_sync) |
||||
|
// VALUES (?,?) |
||||
|
// ON CONFLICT (user_enrolment_id) DO UPDATE |
||||
|
// SET time_sync = ?'; |
||||
|
// $params = array($userEnrolment->id, $userEnrolment->timemodified, $userEnrolment->timemodified); |
||||
|
|
||||
|
// return $DB->execute($qry, $params); |
||||
|
// } |
||||
|
|
||||
|
// |
||||
|
// CERTIFICADOS |
||||
|
// |
||||
|
|
||||
|
function atualizaCertificadoEVL($certificado) { |
||||
|
global $DB, $CFG; |
||||
|
|
||||
|
mtrace("certificado " . $certificado->code); |
||||
|
|
||||
|
$school = $DB->get_record('course',array('id'=>'1')); |
||||
|
|
||||
|
$uri = 'https://escolamodelows.interlegis.leg.br/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, |
||||
|
'date' => $certificado->timecreated, |
||||
|
'grade' => $certificado->finalgrade, |
||||
|
'code' => $certificado->code, |
||||
|
); |
||||
|
array_push($certArray, $certItem); |
||||
|
|
||||
|
$mainArray = array( |
||||
|
'school' => $CFG->emSigla, |
||||
|
'certificates' => $certArray, |
||||
|
'key' => "k4B5YcbKa619ohu3wxk2xXbmtoxFuQqrwcKEOTAnZi7iy4tl9z" |
||||
|
); |
||||
|
$json = json_encode($mainArray); |
||||
|
|
||||
|
$response = \Httpful\Request::post($uri) |
||||
|
->sendsJson() |
||||
|
->body($json) |
||||
|
->send(); |
||||
|
|
||||
|
// Se o registro foi criado no servidor, registra em tabela de controle |
||||
|
if(!$response->hasErrors()) { |
||||
|
registraSincronizacaoCertificado($certificado); |
||||
|
} else { |
||||
|
mtrace("Erro sincronizando certificado " . $certificado->code . ": " . $response->code . " " ); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Insere ou atualiza registro da última sincronização de determinado certificado |
||||
|
*/ |
||||
|
function registraSincronizacaoCertificado($certificado) { |
||||
|
global $DB; |
||||
|
|
||||
|
$qry = ' |
||||
|
INSERT INTO {ilb_sync_certificate} (certificate_id, time_sync) |
||||
|
VALUES (?,?) |
||||
|
ON CONFLICT (certificate_id) DO UPDATE |
||||
|
SET time_sync = ?'; |
||||
|
$params = array($certificado->id, $certificado->timecreated, $certificado->timecreated); |
||||
|
|
||||
|
return $DB->execute($qry, $params); |
||||
|
} |
||||
|
|
||||
|
// |
||||
|
// DADOS DA ESCOLA |
||||
|
// |
||||
|
|
||||
|
function atualizaDadosEscola($dadosEscola) { |
||||
|
global $DB; |
||||
|
|
||||
|
$school = $DB->get_record('course',array('id'=>'1')); |
||||
|
|
||||
|
$uri = 'https://escolamodelows.interlegis.leg.br/api/v1/escolas/atualizar/'; |
||||
|
|
||||
|
$obj = new StdClass(); |
||||
|
|
||||
|
// Gravação de certificado para envio ao Web Service da EVL |
||||
|
$schoolArray = array( |
||||
|
'name' => $dadosEscola->nome_escola, |
||||
|
'url' => $dadosEscola->url_escola, |
||||
|
'logo' => $dadosEscola->url_logo_escola, |
||||
|
'initials' => $dadosEscola->sigla_escola |
||||
|
); |
||||
|
|
||||
|
$mainArray = array( |
||||
|
'initials_school' => $dadosEscola->sigla_escola, |
||||
|
'school' => $schoolArray, |
||||
|
'key' => "k4B5YcbKa619ohu3wxk2xXbmtoxFuQqrwcKEOTAnZi7iy4tl9z" |
||||
|
); |
||||
|
$json = json_encode($mainArray); |
||||
|
|
||||
|
$response = \Httpful\Request::patch($uri) |
||||
|
->sendsJson() |
||||
|
->body($json) |
||||
|
->send(); |
||||
|
|
||||
|
// Se o registro foi criado no servidor, registra em tabela de controle |
||||
|
if($response->hasErrors()) { |
||||
|
mtrace("Erro sincronizando dados da escola " . $dadosEscola->sigla_escola); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
|
@ -0,0 +1,35 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<XMLDB PATH="blocks/escola_modelo/db" VERSION="20180604" COMMENT="XML para criação de tabelas para escola_modelo." |
||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
||||
|
xsi:noNamespaceSchemaLocation="../../../lib/xmldb/xmldb.xsd" |
||||
|
> |
||||
|
<TABLES> |
||||
|
<TABLE NAME="mdl_ilb_sync_course" COMMENT="Tabela de sincronização de informações de cursos"> |
||||
|
<FIELDS> |
||||
|
<FIELD NAME="course_id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/> |
||||
|
<FIELD NAME="time_sync" TYPE="int" LENGTH="8" NOTNULL="true" SEQUENCE="false"/> |
||||
|
</FIELDS> |
||||
|
<KEYS> |
||||
|
<KEY NAME="primary" TYPE="primary" FIELDS="course_id"/> |
||||
|
</KEYS> |
||||
|
</TABLE> |
||||
|
<TABLE NAME="mdl_ilb_sync_certificate" COMMENT="Tabela de sincronização de informações de certificados"> |
||||
|
<FIELDS> |
||||
|
<FIELD NAME="certificate_id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/> |
||||
|
<FIELD NAME="time_sync" TYPE="int" LENGTH="8" NOTNULL="true" SEQUENCE="false"/> |
||||
|
</FIELDS> |
||||
|
<KEYS> |
||||
|
<KEY NAME="primary" TYPE="primary" FIELDS="certificate_id"/> |
||||
|
</KEYS> |
||||
|
</TABLE> |
||||
|
<TABLE NAME="mdl_ilb_sync_user_enrolments" COMMENT="Tabela de sincronização de informações de matrículas"> |
||||
|
<FIELDS> |
||||
|
<FIELD NAME="user_enrolment_id" TYPE="int" LENGTH="10" NOTNULL="true" SEQUENCE="false"/> |
||||
|
<FIELD NAME="time_sync" TYPE="int" LENGTH="8" NOTNULL="true" SEQUENCE="false"/> |
||||
|
</FIELDS> |
||||
|
<KEYS> |
||||
|
<KEY NAME="primary" TYPE="primary" FIELDS="user_enrolment_id"/> |
||||
|
</KEYS> |
||||
|
</TABLE> |
||||
|
</TABLES> |
||||
|
</XMLDB> |
@ -0,0 +1,13 @@ |
|||||
|
<?php |
||||
|
|
||||
|
$tasks = [ |
||||
|
[ |
||||
|
'classname' => 'block_escola_modelo\task\escola_modelo', |
||||
|
'blocking' => 0, |
||||
|
'minute' => '30', |
||||
|
'hour' => '17', |
||||
|
'day' => '*', |
||||
|
'month' => '1,7', |
||||
|
'dayofweek' => '0', |
||||
|
], |
||||
|
]; |
@ -1,3 +1,9 @@ |
|||||
<?php |
<?php |
||||
$string['pluginname'] = 'Bloco para Escola Modelo'; |
$string['pluginname'] = 'Escola Modelo'; |
||||
$string['escola_modelo'] = 'Customizações para Escola Modelo'; |
$string['escola_modelo'] = 'Bloco para Escola Modelo'; |
||||
|
|
||||
|
$string['config_sigla_evl_titulo'] = 'Sigla da Escola Modelo'; |
||||
|
$string['config_sigla_evl_descricao'] = 'Sigla da Escola Modelo na EVL'; |
||||
|
|
||||
|
$string['config_apikey_titulo'] = 'Chave de API'; |
||||
|
$string['config_apikey_descricao'] = 'Chave de API para interação com EVL'; |
||||
|
@ -0,0 +1,40 @@ |
|||||
|
<?php |
||||
|
|
||||
|
// This file is part of Moodle - http://moodle.org/ |
||||
|
// |
||||
|
// Moodle is free software: you can redistribute it and/or modify |
||||
|
// it under the terms of the GNU General Public License as published by |
||||
|
// the Free Software Foundation, either version 3 of the License, or |
||||
|
// (at your option) any later version. |
||||
|
// |
||||
|
// Moodle is distributed in the hope that it will be useful, |
||||
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
|
// GNU General Public License for more details. |
||||
|
// |
||||
|
// You should have received a copy of the GNU General Public License |
||||
|
// along with Moodle. If not, see <http://www.gnu.org/licenses/>. |
||||
|
|
||||
|
/** |
||||
|
* Configurações para o plugin Escola Modelo |
||||
|
* |
||||
|
* @package enrol_evl |
||||
|
* @author Interlegis |
||||
|
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later |
||||
|
* |
||||
|
*/ |
||||
|
|
||||
|
defined('MOODLE_INTERNAL') || die(); |
||||
|
|
||||
|
if ($ADMIN->fulltree) { |
||||
|
// Sigla da Escola na EVL |
||||
|
$setting = new admin_setting_configtext('block_escola_modelo/config_sigla_evl', |
||||
|
get_string('config_sigla_evl_titulo', 'block_escola_modelo'), |
||||
|
get_string('config_sigla_evl_descricao', 'block_escola_modelo'), '', PARAM_ALPHA, 3); |
||||
|
$settings->add($setting); |
||||
|
|
||||
|
$setting = new admin_setting_configtext('block_escola_modelo/config_apikey', |
||||
|
get_string('config_apikey_titulo', 'block_escola_modelo'), |
||||
|
get_string('config_apikey_descricao', 'block_escola_modelo'), '', PARAM_ALPHA, 50); |
||||
|
$settings->add($setting); |
||||
|
} |
@ -1,4 +1,5 @@ |
|||||
<?php |
<?php |
||||
$plugin->version = 2018061801; |
$plugin->version = 2019012101; |
||||
$plugin->requires = 2017110800; |
$plugin->requires = 2017110800; |
||||
$plugin->component = 'block_escola_modelo'; |
$plugin->component = 'block_escola_modelo'; |
||||
|
|
Loading…
Reference in new issue