Relatorios personalizados desenvolvidos pela comunidade

From MoodleDocs

Introdução

Relatórios

Relatórios Administrativos

Acessos únicos ao Moodle

Este relatório considera acesso únicos como qualquer ação de “visualização” de usuários distintos (contagem de "username"). Limitado ao período de 30 dias.

Observação: O Moodle registra a ação de "loggedin", mas esse parâmetro pode gerar inconsistências no relatório de acessos únicos por dia, uma vez que dependendo da configuração do Moodle o usuário pode permanecer autenticado por mais de um dia (no caso do Moodle App o padrão é 12 semanas) e por isso foi considerado a ação de visualização e não "login".

PostgreSQL

SELECT TO_CHAR(TO_TIMESTAMP(L.TIMECREATED),'DD-MM-YYYY') AS "Data",
	COUNT (DISTINCT U.USERNAME) AS "Acessos"
FROM PREFIX_LOGSTORE_STANDARD_LOG AS L
LEFT JOIN MDL_USER AS U ON L.USERID = U.ID
WHERE L.ACTION = 'viewed'
	AND TO_TIMESTAMP(L.TIMECREATED) >= NOW() - interval '30 days'
GROUP BY "Data"

Acessos únicos ao Moodle com dados de campo de perfil do usuário

Este relatório considera acesso únicos como qualquer ação de “visualização” de usuários distintos (contagem de "username"). Limitado ao período de 30 dias.

No exemplo abaixo foi adicionado uma "subquery" para adicionar um campo de perfil personalizado de nome "Pólo". Você pode alterar para qualquer valor de "shortname" (nome curto do campo).

PostgreSQL

SELECT TO_CHAR(TO_TIMESTAMP(L.TIMECREATED),	'DD-MM-YYYY') AS "Data",
	(SELECT D1.DATA
		FROM PREFIX_USER_INFO_DATA D1
		JOIN PREFIX_USER_INFO_FIELD F1 ON D1.FIELDID = F1.ID
		AND F1.SHORTNAME = 'polo'
		WHERE D1.USERID = U.ID ) AS "Pólo",
	COUNT (DISTINCT U.USERNAME) AS "Acessos"
FROM PREFIX_LOGSTORE_STANDARD_LOG AS L
LEFT JOIN PREFIX_USER AS U ON L.USERID = U.ID
WHERE L.ACTION = 'viewed'
	AND TO_TIMESTAMP(L.TIMECREATED) >= NOW() - interval '30 days'
GROUP BY "Data", "Pólo"

Dica: A pesquisa por texto é sempre mais lenta que a pesquisa por "chave primária", logo, recomendo trocar o "shortname" pelo "id" da tabela "mdl_user_info_field". No exemplo acima, a variável F1.SHORTNAME = 'polo' uma vez otimizada seria 'F1.ID = '1'. O número "1" corresponde a chave primária do campo de perfil "Pólo", para saber qual chave utilizar você deve checar a tabela "mdl_user_info_field".

Erros de acesso, motivo: usuário inexistente

O Moodle registra em seu log as tentativas de acesso malsucedidas e este relatório lista, dentro do intervalo de 30 dias, os acessos não concluídos devido a inexistência de cadastro ou erro de preenchimento dos dados de login.

PostgreSQL

SELECT JSON_EXTRACT_PATH_TEXT(OTHER :: JSON,'username') AS USERNAME,
	TO_CHAR(TO_TIMESTAMP(L.TIMECREATED),'DD/MM/YYYY HH:MM') AS DATA
FROM PREFIX_LOGSTORE_STANDARD_LOG AS L
WHERE L.ACTION = 'failed'
	AND L.TARGET = 'user_login'
	AND L.OTHER like '%reason":1%'
	AND TO_TIMESTAMP(L.TIMECREATED) >= NOW() - interval '30 days'
ORDER BY TIMECREATED DESC

Erros de acesso, motivo: senha inválida

Este relatório lista os usuários válidos, que nunca acessaram a plataforma devido a senha inválida. No início de semestre ou cadastro recém realizado, para ações proativas, o suporte poderá agir entrando em contato com o usuário.

PostgreSQL

SELECT DISTINCT U.USERNAME AS "Usuário", CONCAT (U.FIRSTNAME,' ',U.LASTNAME) AS "Nome completo",
	CONCAT('<a target="_new" href="%%WWWROOT%%/user/profile.php?id=',L.USERID,'">Acessar Perfil</a>') AS "Perfil",
	L.TARGET,
	L.ACTION
FROM PREFIX_LOGSTORE_STANDARD_LOG AS L
JOIN PREFIX_USER AS U ON U.ID = L.USERID
WHERE L.ACTION LIKE 'failed'
	AND L.TARGET LIKE 'user_login'
	AND TO_TIMESTAMP(L.TIMECREATED) >= NOW() - interval '7 days'
	AND U.LASTACCESS = 0

Usuários criados: Contagem por autor do cadastro

PostgreSQL

SELECT CONCAT(U2.FIRSTNAME,	' ', U2.LASTNAME) AS "Autor dos cadastros",
	COUNT(DISTINCT U.USERNAME) AS "Usuários criados"
FROM PREFIX_LOGSTORE_STANDARD_LOG AS L
JOIN PREFIX_USER AS U ON U.ID = L.RELATEDUSERID
JOIN PREFIX_USER AS U2 ON U2.ID = L.USERID
WHERE L.ACTION = 'created'
	AND L.TARGET = 'user'
GROUP BY "Autor dos cadastros"
ORDER BY "Usuários criados" DESC

Usuários criados: Últimos 30 dias

PostgreSQL

SELECT U.USERNAME,CONCAT(U.FIRSTNAME,' ',U.LASTNAME) AS "Usuário criado",
		CONCAT(U2.FIRSTNAME,' ',U2.LASTNAME) AS "Autor do cadastro",
		L.ORIGIN,
		TO_CHAR(TO_TIMESTAMP(L.TIMECREATED),'DD/MM/YYYY HH:MM') AS "Data de criação"
FROM PREFIX_LOGSTORE_STANDARD_LOG AS L
JOIN PREFIX_USER AS U ON U.ID = L.RELATEDUSERID
JOIN PREFIX_USER AS U2 ON U2.ID = L.USERID
WHERE L.ACTION = 'created'
	AND L.TARGET = 'user'
	AND TO_TIMESTAMP(L.TIMECREATED) >= NOW() - interval '30 days'
ORDER BY L.TIMECREATED DESC

Anexos: Dicas úteis