Plugin Moodle SCORM 1-Clique
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-07-22 16:06:32 -03:00
src/local/scorm1clique chore: remove unused var $lastattempt e lang string scorm1clique:view 2026-07-22 14:00:05 -03:00
.gitignore chore: .gitignore para dist/ e artefatos 2026-07-22 16:06:32 -03:00
README.md docs: simbolos coloridos nos riscos do README 2026-07-22 14:50:13 -03:00

SCORM 1-Clique — local_scorm1clique

Plugin Moodle que elimina a tela intermediária do SCORM (mod/scorm/view.php), redirecionando o aluno diretamente ao player (mod/scorm/player.php).

Objetivo

Simplificar a experiência do usuário removendo um clique desnecessário antes do início do treinamento. Em vez de ver a página de visão geral e clicar "Jogar", o aluno acessa a atividade SCORM e o conteúdo é iniciado imediatamente.

Requisitos

  • Moodle 4.4+ (usa Hook API)
  • PHP 8.1+

Instalação

# Copiar para a pasta de plugins locais
cp -r local/scorm1clique /path/to/moodle/local/

# Executar upgrade
php admin/cli/upgrade.php --non-interactive

Configuração

Administração do Site → Plugins → Plugins locais → SCORM 1-Clique

Setting Descrição Default
Habilitar Ativar/desativar o redirecionamento
Pular para admins Não redirecionar usuários com permissão de relatório (admins/professores)
Múltiplas organizações Quando o SCORM tem múltiplas organizações: "first" redireciona à primeira, "skip" mantém a tela padrão first
Respeitar skipview nativo Quando ativo, só redireciona usuários com capability mod/scorm:skipview E cujo SCORM tenha "Pular página de visão geral" habilitado

Como funciona

O plugin usa a Hook API do Moodle (before_http_headers) para interceptar requisições a mod/scorm/view.php. Antes de redirecionar:

  1. Dispara o evento course_module_viewed (garantindo o funcionamento do Activity Completion)
  2. Verifica permissões (admin/professor não são redirecionados)
  3. Identifica o SCO correto e a organização (incluindo retomada de tentativas incompletas)
  4. Constrói a URL para player.php com os parâmetros adequados
  5. Redireciona

Se algo falhar, o plugin captura a exceção e permite que a página view.php seja exibida normalmente — sem quebrar o site.

Compatibilidade

Plugin Impacto
local_focusmode Funciona junto (scorm1clique priority 400, focusmode priority 500)
local_segurancaliteris Sem conflito — JS continua injetado no player.php
Outros hooks before_http_headers scorm1clique roda primeiro (priority 400)

Riscos

O que o plugin pode quebrar no Moodle

Componente Risco Motivo
Configuração "Skip view page" do SCORM 🟢 Ignorada por padrão O plugin redireciona todos os alunos, independente da configuração nativa. A setting respectskipview ativa o comportamento original.
SCORM em popup 🟢 Leve O aluno vê um flash da página intermediária antes do popup abrir (o plugin adiciona display=popup para minimizar o efeito).
Restrição de disponibilidade 🟢 Experiência subótima SCORM com "Disponível a partir de..." redireciona para o player, que exibe o erro — em vez de mostrar a mensagem na view.php.
Plugins no mesmo hook 🟡 Potencial Qualquer plugin registrado em before_http_headers com priority < 400 executará antes do redirecionamento. Se esse plugin chamar redirect() antes, pode conflitar.

Riscos de quebra futura

Este plugin depende de funções internas do módulo SCORM (scorm_get_toc, scorm_get_sco, scorm_has_tracks, etc.) que não fazem parte do Public API do Moodle. As mesmas funções são usadas pelo próprio scorm_simple_play() no core, então o risco é equivalente ao que o Moodle já assume.

Cenário Risco Impacto
view.php removido/renomeado 🟢 Baixo Plugin simplesmente para de redirecionar (falha silenciosa). Site continua funcionando.
player.php alterado 🟢 Baixo Redirect para URL inexistente (404).
Hook before_http_headers removido 🟢 Baixo Plugin nunca é chamado. Sem quebra, sem função.
Funções internas alteradas (scorm_get_toc, etc.) 🟡 Médio Podem ter assinatura alterada ou serem removidas. Plugin para de funcionar. Mesmo risco que o próprio Moodle corre.
Moodle 5.0 / reescrita do módulo SCORM 🟠 Médio-Alto Se o módulo SCORM for substituído por H5P, todo o fluxo muda. Qualquer solução que dependa do módulo SCORM teria esse risco.
PHP > 8.1 🟢 Baixo Código usa recursos básicos compatíveis com versões futuras.

Mitigações

  • O plugin é um plugin local — não altera core, não modifica banco, não interfere em outros módulos. Removê-lo restaura o comportamento original sem efeitos colaterais.
  • try/catch em todo o fluxo de redirecionamento: se algo falhar, o site continua funcionando normalmente.
  • Configurações permitem desabilitar o plugin sem desinstalá-lo.

Desenvolvimento

# Deploy para sandbox
scp -r src/local/scorm1clique usuario@servidor:/path/to/moodle/local/

# Verificar sintaxe
find src/local/scorm1clique -name '*.php' -exec php -l {} \;

Estrutura

local/scorm1clique/
├── version.php
├── db/hooks.php
├── settings.php
├── classes/
│   ├── hook/before_http_headers.php
│   └── redirector.php
└── lang/
    ├── en/local_scorm1clique.php
    └── pt_br/local_scorm1clique.php