Pozwolę sobie skorzystać z możliwości dev'a i odpowiedzieć w temacie wtyczki, zresztą nie mam problemu żadnego więc zakładanie nowego tematu nieco mijałoby się z celem.
Jeżeli wrzucimy ten plugin na jakieś forum z np. 1000 użytkowników to może nas to autentycznie zaboleć. Wszystko z powodu zapytania które buduje cache dla listy użytkowników. Przede wszystkim, skoro już musisz je wykonać, to pobieraj tylko to co potrzebne (teraz idzie wszystko, loginy, hasła, emaile, ustawienia).
Najlepiej byłoby jednak go wcale nie wykonywać i tutaj moja sugestia co można by zrobić.
1. W widoku strony głównej / widoku kategorii
W tym wypadku można zrobić zapytanie pobierające informacje o
avatarach dla każdego z działu, który jednocześnie nie jest kategorią oraz linkiem, dodatkowo bez zabawy z uprawnieniami. Co prawda również nie jest to idealne rozwiązanie, ale szybkie do wdrożenia a solidnie zmniejszające ilość rekordów - dla forum z 20 faktycznymi działami, będzie to właśnie 20 rekordów zamiast wspomnianych 1000.
2. W widoku działu
W tym wypadku można zrobić podobny "myk". Co prawda hook forumdisplay_thread leci w pętli foreach, ale da się tam zrobić tylko jedno zapytanie przy użyciu zmiennej statycznej: korzystając z globalnego $threadcache pobierasz dane z tematów które będą wyświetlane i pakujesz do niej, tylko przy pierwszym wywołaniu funkcji. W efekcie pobierze tyle rekordów, ile tematów będzie wyświetlanych.