- PHP 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| src/local/scorm1clique | ||
| .gitignore | ||
| README.md | ||
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:
- Dispara o evento
course_module_viewed(garantindo o funcionamento do Activity Completion) - Verifica permissões (admin/professor não são redirecionados)
- Identifica o SCO correto e a organização (incluindo retomada de tentativas incompletas)
- Constrói a URL para
player.phpcom os parâmetros adequados - 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/catchem 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