Viename nedideliame forume, veikiančiame „phpBB“ pagrindu, prireikė automatizuotu būdu visiems diskusijų dalyviams nustatyti informavimą el. paštu apie naujas temas visuose formuose. Nesudėtinga rasti modifikaciją šiai užduočiai atlikti, tačiau, skirtingai nei „vBulletin“ sistemoje, įskiepių diegimas į „phpBB“ užtrunka ilgiau dėl būtinybės rankiniu būdu koreguoti failus. Dalinuosi SQL užklausa, duomenų bazės pusėje atliekančia darbą.

[code lang=”sql”] insert into prefiksas_forums_watch
select distinct f.forum_id, u.user_id, 0
from prefiksas_forums f, prefiksas_users u
where not exists (select 1 from prefiksas_forums_watch
where forum_id = f.forum_id
and user_id = u.user_id) and u.user_type = 0[/code]

Vietoje prefiksas reikia įrašyti jūsų pasirinktą lentelių prefiksą, kurį nurodėte diegimo metu. Standartinė reikšmė – phpbb.

Forumų prenumeratos saugomos lentelėje forums_watch, kurią sudaro trys laukai, iš kurių svarbūs du: forumo identifikatorius forum_id ir vartotojo identifikatorius user_id. Atitinkamai forumai ir vartotojai saugomi lentelėse forums ir users.

Šią užklausą radau „Stack Overflow“ svetainėje. Beje, pridėjau sąlygą user_type = 0, kuri forumų prenumeratas nustato tik įprastiems (registruotiems) vartotojams. Paieškų robotai (angl. bots) taip pat įrašyti vartotojų lentelėje, tačiau visiškai nėra prasmės jiems nustatyti prenumeratas.