Modificați setările de utilizator implicite - note ale codorului ATS

În phpBB3, utilizatorii pot configura diverse setări personale în zona personală (UCP). Pentru fiecare dintre aceste opțiuni este setată o valoare implicită, care va fi eficientă atunci când sunt înregistrați noi utilizatori și fiecare parametru are o valoare setată pentru utilizatorii înregistrați anterior. Acești parametri pot sau nu să corespundă valorilor implicite.

În acest articol, descriem modul de setare a acestor parametri impliciți la înregistrarea utilizatorilor noi și modul de modificare a valorilor stabilite anterior pentru utilizatorii deja înregistrați. Rețineți că utilizatorii vor putea în continuare să schimbe aceste valori la discreția lor, schimbându-le în ceva diferit de setările lor prestabilite. Acest articol nu descrie modul de a face aceste valori permanente și neschimbate.

Unele preferințele utilizatorului determinate în domenii speciale ale tabelului din utilizatorii bazei de date, iar altele sunt rezultatul evaluării biți individuale ale valorii, care este stocată în utilizatorii user_options de masă. Prin urmare, modalitățile de modificare a diferitelor setări de utilizatori sunt diferite și vom descrie mai jos fiecare.

Ce trebuie să știți pentru a începe

Modificarea parametrilor care sunt definiți în câmpurile individuale

Unele setări personalizate pe care utilizatorii le pot seta (cele definite în fișierul include / functions_user.php) sunt scrise în câmpuri separate în tabelul utilizatorilor. Acestea includ:

Cod: 'user_notify' => 0,
'user_notify_pm' => 1,
'user_notify_type' => NOTIFY_EMAIL,
'user_allow_pm' => 1,
'user_allow_viewonline' => 1,
'user_allow_viewemail' => 1,
'user_allow_massemail' => 1,

"0" înseamnă că opțiunea este oprită, "1" înseamnă că opțiunea este activată. Aceste setări acționează în mod prestabilit și sunt scrise în baza de date când sunt înregistrați noi utilizatori. Pentru a le modifica, trebuie să editați fișierul include / functions_user.php și să schimbați 0 la 1 sau invers. Pentru a modifica aceste setări pentru utilizatorii deja înregistrați, trebuie să executați interogarea:

Cod: UPDATE phpbb_users SET user_notify = 1 WHERE user_type <> 2;

Vă rugăm să rețineți, opțiunea user_notify_type diferă de alte exemple de realizare, în care acesta poate lua trei valori diferite, fiecare dintre care corespunde uneia din cele trei posibile valori numerice, care sunt definite în include / fișier constants.php. Dacă doriți să modificați opțiunea user_notify_type atunci când înregistrarea de noi utilizatori, trebuie să modificați aceste valori în include / fișier functions_user.php specificând NOTIFY_EMAIL (valoarea 0) sau NOTIFY_IM (valoarea 1) sau NOTIFY_BOTH (valoarea 2) la alegere. Pentru a modifica opțiunea user_notify_type pentru utilizatorii existenți, de exemplu, pentru a schimba NOTIFY_EMAIL NOTIFY_IM, pe care doriți să interogare:

Cod: UPDATE phpbb_users SET user_notify_type = 1 WHERE user_type <> 2;

Această solicitare se va schimba NOTIFY_EMAIL setările implicite, valoarea care este egală cu 0, pe NOTIFY_IM, valoarea care este egală cu 1. Rețineți că această interogare modifică valoarea acestei opțiuni pentru a NOTIFY_IM pentru toți utilizatorii, chiar și pentru cei care au ales o NOTIFY_BOTH (valoare 2 ). Dacă doriți să excludeți utilizatorii care au ales NOTIFY_BOTH și modificați numai acei utilizatori care sunt setate implicit NOTIFY_EMAIL, atunci interogarea ar trebui să arate astfel:

Cod: UPDATE phpbb_users SET user_notify_type = 1 WHERE user_type <> 2 ȘI user_notify_type! = 2;

Modificați setările stocate în câmpul utilizator_opțiuni

Unele setări de utilizator pe care utilizatorii le pot modifica sunt rezultatul adăugării variațiilor de creștere a numărului 2 la o anumită putere (cod binar) și sunt stocate în câmpul user_options din tabelul utilizatorilor ca un întreg întreg. Acestea includ:

După cum puteți vedea, acest număr în format binar arată astfel: 111000001101111111
Aceste valori implicite generează astfel suma totală a diferitelor grade ale numărului 2, care este înregistrată în fișierul include / functions_user.php și este egal cu 230271:

Cod: 'user_options' => 230271,

Pentru a schimba setările implicite la înregistrarea utilizatorilor noi, trebuie să modificați valoarea 230271 din fișier pentru a include / functions_user.php.
De exemplu, dacă doriți să viewsigs a fost oprit (0) în mod implicit, și viewimg activat (1), trebuie să scădeți 8 (2 ^ 3 = 2 la puterea 3), deoarece viewsigs valoare scrise în număr de biți 3, adică, acesta este cel de-al treilea bit al reprezentării binare a numărului utilizator_opțiuni. și adăugați 1 (2 ^ 0 = 2 la puterea de 0), deoarece valoarea de vizionare este scrisă în banda zero. Astfel, trebuie să modificați valoarea user_options în fișierul include / functions_user.php la 230 264 (230 271 -8 + 1).

Pentru a modifica valoarea opțiunii 0 - 1 pentru utilizatorii existenți, trebuie să utilizați o interogare cu un bitwise OR (|), schimbarea bit sau biți din tabelul de utilizatori user_options. Aceasta este, pentru a calcula valoarea de 2 ridicat la o putere corespunzătoare numărului de biți (sau în alte cuvinte, opțiunea de număr, de exemplu, au numărul de biți opțiunea attachsig 6: „attachsig“ => array (=> 6) Valoarea „bit“ pentru viewimg. va fi egal cu unul deoarece numărul de biți este 0 și 2 la puterea de 0 = 1.

De exemplu, o astfel de cerere ar schimba valoarea cu viewimg off la inclusiv prin adăugarea unei valori corespunzătoare, în cazul în care nu este inclusă în total user_options suma pentru fiecare utilizator:

Cod: UPDATE phpbb_users set user_options = user_options | 1 WHERE user_type <> 2;

Pentru a modifica valorile opțiunilor 1 la 0 de tranziție pentru utilizatorii existenți, este necesar să se utilizeze o interogare cu ajutorul unui operator de XOR bitwise (^) și un operator și la nivel de bit (), schimbarea bit sau biți în câmpul user_options. Aceasta scade valorile corespunzătoare din suma utilizator_opțiuni, dacă acestea sunt deja incluse în această sumă pentru fiecare utilizator. De exemplu, această interogare va schimba valoarea vizualizărilor de la pornire la oprire. Aici, valoarea 8, ca un număr de biți pentru viewsigs este 3 și 2 3 = 8 grade.

Cod: UPDATE phpbb_users SET user_options = (opțiuni utilizator) 8) ^ user_options WHERE user_type <> 2;

Schimbați setările pentru anumite grupuri sau utilizatori

Rețineți că puteți modifica, de asemenea, setările pentru un anumit utilizator sau utilizator, în special un grup. Cu toate acestea, puteți face acest lucru numai pentru utilizatorii existenți, și nu pentru utilizatorii viitori (fără modificări). De exemplu, această solicitare va schimba valoarea utilizatorului_allow_pm de la la la oprit pentru utilizatorii care fac parte din grupul "Înregistrat recent". Se presupune că grupul_id pentru acest grup este 7 (implicit).

Cod: phpbb_users UPDATE SET user_allow_pm = 0 UNDE user_id IN (SELECT user_id FROM WHERE phpbb_user_group group_id = 7);

Această solicitare va modifica valoarea opțiunii de vizionare de la pornire la oprire pentru utilizatorii care nu au o semnătură:

Cod: UPDATE phpbb_users SET user_options = (opțiuni utilizator) 2) ^ user_options WHERE user_sig = '';

Doi la puterea lui

Cod: 2 ^ 0 = 1
2 ^ 1 = 2
2 ^ 2 = 4
2 ^ 3 = 8
2 ^ 4 = 16
2 ^ 5 = 32
2 ^ 6 = 64
2 ^ 7 = 128 (Nefolosit în phpBB3, rezervat)
2 ^ 8 = 256
2 ^ 9 = 512
2 ^ 10 = 1024
2 ^ 11 = 2048 (Nefolosit în phpBB3, rezervat)
2 ^ 12 = 4096 (Nefolosit în phpBB3, rezervat)
2 ^ 13 = 8192 (Nefolosit în phpBB3, rezervat)
2 ^ 14 = 16384 (nu este folosit în phpBB3, rezervat)
2 ^ 15 = 32768
2 ^ 16 = 65536
2 ^ 17 = 131072

Valoarea user_options este un număr binar scris în format zecimal.
230271 în formă binară arată astfel:
111000001101111111
Transformați acest număr într-un format zecimal într-un mod simplu:
Biții sunt numărați de la dreapta la stânga, adică încep de la sfârșit. În cazul în care bitul este setat (1), ridicăm 2 la puterea egală cu numărul de biți, unde (0) este zero, astfel: