phpBB triukas: visų forumų prenumerata el. paštu visiems vartotojams

>>>phpBB triukas: visų forumų prenumerata el. paštu visiems vartotojams

phpBB triukas: visų forumų prenumerata el. paštu visiems vartotojams

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ą.

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

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.

2016-10-24T10:57:03+00:00 2011-04-14|Programavimas|2 Comments

About the Author:

Gytis Repečka yra skaitmeninių technologijų profesionalas, besidomintis atvirojo kodo programine įranga, elektronika, automobiliais, duomenų apsauga ir privatumu.

2 Comments

  1. Detales 2012-05-27 at 12:23 - Reply

    Ar šis triukas tinka phpbb3 forumams?

    • Gytis Repečka 2012-05-27 at 19:34 - Reply

      Taip, tinka 3.0.x versijoms. Išbandyta su straipsnelio rašymo metu buvusia naujausia versija.

Komentuokite