Resolução de problema: relatório de atividades FLV Player (Media Player)

Resolução de problema: relatório de atividades FLV Player (Media Player)

por Wagner Tadeu -
Número de respostas: 0

Olá a todos!

A atividade (módulo) FLV Player ou Media Player não apresenta os registros de participação nos relatórios do Moodle, seguem abaixo as implementações necessárias para resolver este problema:

Atenção: faça backup dos arquivos/banco de dados originais, para o caso de problemas possa retornar a versão original

- No banco de dados:

Na tabela mdl_log_display, acrescentar os seguintes registros:

"module";"action";"mtable";"field"
"flv";"add";"flv";"name"
"flv";"update";"flv";"name"
"flv";"view";"flv";"name"

Com esta inserção, o nome do recurso aparecerá já corretamente em Relatórios do Curso. Pois geralmente aparece apenas o "id" na coluna "Informação".

- No relatório de participação

Neste relatório o Moodle apresenta um erro que está faltando um código de módulo (module missing code), sendo assim é necessário alterar o arquivo:

<raiz_do_moodle>/mod/flv/lib.php

Insira duas funções (padrões do Moodle segundo a documentação em http://docs.moodle.org/dev/Modules)

function flv_get_view_actions() {
    return array('view');
}

function flv_get_post_actions() {
    return array('update');
}

Com estas implentações, o problema da mensagem erro irá desaparecer, mas o relatório ainda mostrará apenas as ações de "update" ou "add", pois a ação de visualizar ("view") está incompleta na base de logs do Moodle, devido a outro problema: o flv player no momento de logar a visualização pelo participante, não está acrescentando a seguinte informação:

Na tabela mdl_log, deve haver as seguintes informações preenchidas (além das padrões e auto preenchidas):

course, module, cmid, action, url, info

O que ocorre: o FLV Player não está inserindo o "cmid" (que é o id da tabela mdl_course_modules) e na consulta que o Moodle faz, ele utiliza este campo. Para resolver este problema:

- No arquivo <raiz_do_moodle>/mod/flv/view.php

Na linha 60 (aproximadamente), existe a seguinte linha:

add_to_log($course->id, "flv", "view", "view.php?id=$cm->id", "$flv->id");

Altere para:

add_to_log($course->id, "flv", "view", "view.php?id=$cm->id", "$flv->id", $cm->id);

A partir deste momento, todo novo acesso será logado corretamente na tabela mdl_log. Sugiro que faça um ajuste nos registros dentro desta tabela, preenchendo este campo com o id da tabela mdl_course_modules do flv player inserido.

Para atualizar, você poderá utilizar o seguinte update:

update mdl_log set cmid = substring(url,locate('=',url)+1) where module = 'flv' and action = 'view' and cmid = 0;

Todos os registros que estão com o cmid ausente, serão atualizados para o id do player correto.

Com as implentações acima, os relatórios de participação já funcionam e também os logs de acesso. Falta ainda o relatório outline, que é aquele relatório individual por usuário ou a opção de relatório do curso (relatório das atividades).

- Novamente no arquivo <raiz_do_moodle>/mod/flv/lib.php

Na função flv_user_outline, vamos fazer a seguinte substituição:

De:

function flv_user_outline($course, $user, $mod, $flv)
{
return $return;
}

Para:

function flv_user_outline($course, $user, $mod, $flv)
{
    if ($logs = get_records_select("log", "userid='$user->id' AND module='flv'
                                          AND action='view' AND info='$flv->id'", "time ASC")) {

        $numviews = count($logs);
        $lastlog = array_pop($logs);

        $result = new object();
        $result->info = get_string("numviews", "", $numviews);
        $result->time = $lastlog->time;

        return $result;
    }
    return NULL;

}

Utilizei como exemplo a implementação que o módulo "book" (Livro) tem em seu arquivo lib.php, adequando apenas a identificação do módulo.

Agora é possível verificar se o aluno acessou o vídeo, quantas vezes e qual foi o último acesso.

Abraços!

Wagner Tadeu 

Contagem das avaliações:  -