Sajnos a PHPBB fejlesztői számomra ismeretlen indokból (Talán a GDPR fszság miatt?) úgy döntöttek, hogy a fórummotor ezentúl az újonnan regisztrált felhasználók számára alapértelmezett módon kikapcsolt állapotban hagyja a privát üzenetek (továbbiakban PM-ek) emailes levélértesítésére szolgáló jelölő négyzetet.
Tehát, ha te is üzemeltetsz PHP Bulletin Board fórumrendszert, az újonnan regisztrált tagok alapértelmezetten nem kapnak email értesítést, arról, hogy privát üzenetük érkezett. Régebben ez alapértelmezetten be volt kapcsolva. Ha egy user nem akart erről emailt kapni, volt lehetősége kikapcsolni.
Mit kell tenni annak érdekében, hogy megmókoljuk ezt a dolgot?
Lépjünk be a fórum scripjeinek könyvtárába majd az ebben található "Includes" mappába. Nyissuk meg szerkesztésre a functions_user.php-t.
A 364. sorban keressük meg ezt:// Use default notifications settings if notifications_data is not set
if ($notifications_data === null)
{
$notifications_data = array(
array(
'item_type' => 'notification.type.post',
'method' => 'notification.method.email',
),
array(
'item_type' => 'notification.type.topic',
'method' => 'notification.method.email',
),
);
}
Itt ahogy az angol szöveg is jelzi, beállíthatjuk a default, azaz alapértelmezett értékeket. Ezt kell a következőre módosítani:
if ($notifications_data === null)
{
$notifications_data = array(
array(
'item_type' => 'notification.type.post',
'method' => 'notification.method.email',
),
array(
'item_type' => 'notification.type.topic',
'method' => 'notification.method.email',
),
array(
'item_type' => 'notification.type.pm',
'method' => 'notification.method.email',
),
);
}
Azaz annyi történt, hogy egy 'item_type' => 'notification.type.pm', résszel bővítettük a kódot.
Mit is csinál ez a kód?
A PHPBB rendszerünkhöz tartozik egy adatbázis, amiben táblák találhatók, defaultban phpbb_táblanév előtagú táblákkal. De az előtag meg is változtatható. Ha te megváltoztattad, akkor erre figyelj oda. Én most a default szerint csinálom ezt a leírást.
A kód a phpbb_user_notifications táblában az újonnan regisztrált userek ID-jével az alábbihoz hasonló sorokat vesz fel:
[U]Item_type Item_ID User_ID Method Notify[/U]
notification.type.pm 0 1 notification.method.email 1
notification.type.pm 0 2 notification.method.email 1
notification.type.pm 0 3 notification.method.email 1
... ... ... .... ....
Vannak még más sorok, más Item Type-k, pl a posztokhoz trartozó email notification method stb is a táblában, de ezekkel most ezen írás keretei között nem foglalkozok.
Ha a fenti kód nincs a functions_user.php fájlban, akkor ezek nem jönnek létre, tehát nem az van, hogy létezik, csak a Notify érték 0 lesz, hanem egyszerűen nincs az user ID-jéhez kapcsolódóan ilyen sor. Természetesen, ha már módosítottuk a fájlt, akkor is csak a módosítás után regisztrált felhasználóknak jön létre, akik enélkül regisztráltak, azoknak nem. Tehát ők, továbbra sem értesülnek emailben a PM-jeikről. Ez sajnos látogatottság kiesést is jelent főleg olyan fórumokon, ahol az Userek sokat privátoznak egymással.
Éppen ezért ha ez a szám jelentős, akkor SQL utasításokkal, manuálisan kell felvinni ezeket a sorokat a táblába, hogy a már létező usereknek bekapcsoljuk az email értesítést.
A parancs a következő:INSERT INTO `phpbb_user_notifications` (`item_type`, `item_id`, `user_id`, `method`, `notify`) VALUES ('notification.type.pm', '0', '107199', 'notification.method.email', '1');
Ezt kell lefuttatnunk USER ID-nként, bármilyen SQL parancsértelmezőben, ami a tárhelyünk szerverén elérhető számunkra. Én a PHPMYADMIN értelmezőjét használtam.
A fenti példában most a 107199-es ID számú USER-nek kapcsoltam be, a PM-ek email értesítését. De mit tehetünk, ha 1000 vagy több ilyen sort kell bevinni.
Ekkor segít nekünk a jóöreg MS-Excel. Ahol egy húzásra lehetőség van rá, hogy a számokat az USER ID résznél egyel növeljük.
Én így csináltam ezt meg:
A1-18 oszlopba beírtam az SQL parancs elejét. B1-18 moszlopba az USER ID-ket többszöröztem. Egy egyszerű egeres lehúzásos művelettel mindig az előző cella értékéhez ad eggyel többet. Így nagyon gyorsan több ezer sort tudunk készíteni, anélkül, hogy nekünk kéne kézzel egyesével beirogatni. A C1-18 oszlopba, pedig az SQL parancs végét írtam be. A D1-18 oszlopban, pedig egyesítettem az A, B, C oszlopok értékeit egy függvénnyel. A neve CONCATENATE. A képen látható, hogyan kell bevinni. Természetesen minden új sornál a megfelelő sorszámra kell hivatkoznunk, tehát pl a 3. sorban a D3 cella értékek =CONCATENATE(A3;B3;C3) s így tovább.
Innen már egyenes volt az út, a PHPMYADMIN nevű MySQL szerkesztő program SQL parancsértelmezőjébe bemásolni a sorokat és máris bekapcsolódott azon usereknél is az email értesítés, akiknél eddig nem volt.
Természetesen regisztrációnál jelezzétek a tagoknak ezt, vagy a felhsználási feltételekbe írjátok bele, hogy egyetértenek ezzel, ez a minimum.