Hola a to2:
Buscando en Moodle he encontrado una función que devuelve un array con el número de posts no leidos para cada discusión de un foro determinado. Esta función se muestra a continuación:
function forum_count_unread_replies($forum="0") {
global $CFG, $USER;
if ($forum) {
$forumselect = ' AND d.forum = ''.$forum.''';
}
/// First, get a count of all replies to each discussion [of the forum].
if ($disc_replies = get_records_sql('SELECT p.discussion, (count(*)) as replies '
.' FROM '.$CFG->prefix.'forum_posts p, '
.' '.$CFG->prefix.'forum_discussions d '
.' WHERE p.parent > 0 '
.' AND p.discussion = d.id '
.$forumselect
.' GROUP BY p.discussion')) {
/// Then, go through the logs for each discussion that the user had read, and recount the replies
/// since that access.
foreach ($disc_replies as $reply) {
if ($read_disc = get_record_sql('SELECT l.info AS discussion, MAX(l.time) AS lastread '
.' FROM '.$CFG->prefix.'log l'
.' WHERE l.module = 'forum''
.' AND l.action = 'view discussion''
.' AND l.userid = '.$USER->id
.' AND l.info = ''.$reply->discussion.'''
.' GROUP BY discussion')) {
$disc_reply = get_record_sql('SELECT p.discussion, (count(*)) as replies '
.' FROM '.$CFG->prefix.'forum_posts p '
.' WHERE p.discussion = '.$reply->discussion
.' AND p.modified > '.$read_disc->lastread
.' GROUP BY p.discussion');
$disc_replies[$reply->discussion]->replies = (int)$disc_reply->replies;
}
}
}
return ($disc_replies);
}
Pues bien, me gustaría que si a alguién se le ocurre como obtener los identificadores de esos posts no leídos, en lugar de simplemente el número, pudiese y quisiese publicarlo aquí. Yo le he dado y le sigo dando muchas vueltas pero no hay forma de que lo logre hasta ahora.
Estaría eternamente agradecido.
Salu2,
David Rguez.