Olá a todos, seguem abaixo as instruções para que o log apresente na coluna "Informação" o título do capítulo que o aluno acessou, não apenas o nome do livro.
Passos:
1º Faça backup dos arquivos da pasta /moodle/mod/book e do seu banco de dados.
2º No arquivo view.php (do módulo book), aproximadamente na linha 98, faça a seguinte substituição:
add_to_log($course->id, 'book', 'view', 'view.php?id='.$cm->id.'&chapterid='.$chapter->id, $book->id, $cm->id);
Para:
add_to_log($course->id, 'book', 'view', 'view.php?id='.$cm->id.'&chapterid='.$chapter->id, $chapter->id, $cm->id);
Com isso, na coluna "Info" da tabela mdl_log, para cada acesso, o Moodle gravará o id do capítulo, não apenas o id do livro.
3º Na tabela mdl_log_display (lembrando que mdl é o prefixo definido na instalação do Moodle), devemos alterar o registro:
module: 'book'
action: 'view'
mtable: 'book'
field: 'name'
Para:
mtable: 'book_chapters'
field: 'title'
Os demais campos deverão permanecer como estavam. Com esta implementação, o moodle colocará o título do capítulo na coluna informação, quando emitirmos o relatório dos acessos.
4º Devemos atualizar os registros do log, pois a coluna info não possui mais a informação esperada, agora lá deverá ter o id o capítulo, para isso, devemos executar a seguinte atualização (sintaxe para MySQL):
update mdl_log set info = substring(url,locate('chapterid=',url)+10) where module = 'book' and action = 'view';
5º Agora por último, deveremos corrigir o relatório outline, pois com estas implementações, não apresentará mais os acessos do livro por aluno:
- No arquivo lib.php (dentro de /mod/book/), deveremos alterar a função function book_user_outline($course, $user, $mod, $book):
if ($logs = get_records_select("log", "userid='$user->id' AND module='book'
AND action='view' AND info='$book->id'", "time ASC")) {
...
}
Devemos alterar para:
if ($logs = get_records_select("log", "userid='$user->id' AND module='book'
AND action='view' AND cmid='$mod->id'", "time ASC")) {
...
}
Desta forma, o Moodle utilizará o campo "cmid" para contar os acessos do aluno, neste campo contém o id do mdl_course_module correspondente do livro inserido no curso.
Como informação final, segue o resumo das alterações:
Arquivos:
- moodle/mod/book/view.php - função "add_to_log()";
- moodle/mod/book/lib.php - função "book_user_outline()";
- registros da tabela mdl_log_display;
- registros da tabela mdl_log para corrigir as entradas antigas;
Abraços!
Wagner Tadeu