Hallo, Gast! (Registrieren)

Letzte Ankündigung: Sicherheitsupdate: MyBB 1.8.24 veröffentlicht (09.08.20)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Sprache des ACP (Backend) auslesen?
#1
1. Frontend
Welche Sprache wird in der ./inc/settings.php in der Zeile cplanguage gespeichert? Egal welche Sprache im ACP für das Frontend eingestellt wird, es steht immer nur deutsch_du in der vorgenannten Zeile. Die eingestellte Sprache wird jedoch korrekt ausgeführt. Was läuft oder verstehe ich da inkorrekt?

2. Backend
Stelle ich die Sprache für das Backend z.B. von deutsch_du auf english um, wird die Umstellung in der Spalte mybb_adminsoptions korrekt gepeichert und angewendet.

3a. Mit der Variable {$mybb_settings['cplanguage']} wird mir im generierten PN-Text die eingestellte Sprache des Frontend (Problem siehe "1") angezeigt
3b. Mit der Variable {$mybb_adminoptions['cplanguage']} wird mir die eingestellte Backendsprache nicht angezeigt. Frage, wie müssen die Syntaxe korrekt lauten, um die für das Backend eingestellte Sprache für IF-Bedingungen sowie zur lesbaren Ausgabe verwenden zu können?

Zielsetzung:
Wenn die Sprache des Users (Frontend) ungleich ACP-Sprache (Backend) dann zeige die eingestelle ACP-Sprache und tue etwas.
Wenn die Sprache des Users (Frontend) = ACP-Sprache (Backend) dann tue nichts.


Vorab besten Dank für Tipps, Anregungen, Erläuterungen und Hilfestellungen
nachtrag,

habe gerade festgestellt, das in der Tabelle mybb-adminoptions die Sprache nicht pauschal ausgelesen werden kann, da jeder als Admin (GID 4) eingetragene User seine eigene Sprache einstellen kann. Dies wird auch so in der Tabelle eingetragen (man lernt anhaltend hinzu)

Erhält somit der in den Settings eingestellte Admin-User mit z.B. UID 1234 die PNs, soll dessen eingestellte Sprache ausgewertet werden und als IF-Bedingung verwendbar sein. Vermute mal dass dazu zuerst eine individuelle Variable zu deklarieren ist, dessen Ergebnis erst dann in IF-Bedingungen verwendet bzw. angezeigt werden kann.

Wie kann man die eingestellte Sprache der über die Settings eingestellten User-ID =  $mybb->settings['pn_empfaenger_uid'] ermittelt und verwendet werden?
Wer fragt, ist gegebenenfalls für fünf Minuten ein Narr. Wer nicht fragt, bleibt ein Narr.
Wer angebotene Hilfe(n) nicht annimmt, dem ist nicht zu helfen!
Aktive Version: MyBB: 1.8.24 | PHP: 7.4.10 | SQL: 5.7.28 [Unixzeit <> Realzeit]
Zitieren
#2
(25.10.2020, 13:11)Gerti schrieb: Mit der Variable {$mybb_settings['cplanguage']} wird mir im generierten PN-Text die eingestellte Sprache des Frontend (Problem siehe "1") angezeigt

$mybb_settings['cplanguage'] greift das Setting für die ACP-Sprache ab und hat mit der Sprache im Frontend nichts zu tun.
Zitieren
#3
(25.10.2020, 15:28)Schnapsnase schrieb: $mybb_settings['cplanguage'] greift das Setting für die ACP-Sprache ab und hat mit der Sprache im Frontend nichts zu tun.
bblanguage ist Frontend, cplanguage ist Backend. So war mir das in Kenntnis.

Weil in der settings.php nicht umgestellt wenn ich eine andere Backend_Sprache im ACP umstelle, vermute mal, dass da nur default verwaltet wird, nicht aber die inviduellen Einstellungen der Admins.

Heute festgestellt:
Es kann jeder Admins seine eigene Backend-Sprache festlegen (siehe Tabelle mybb_adminoptions).
Wer fragt, ist gegebenenfalls für fünf Minuten ein Narr. Wer nicht fragt, bleibt ein Narr.
Wer angebotene Hilfe(n) nicht annimmt, dem ist nicht zu helfen!
Aktive Version: MyBB: 1.8.24 | PHP: 7.4.10 | SQL: 5.7.28 [Unixzeit <> Realzeit]
Zitieren
#4
(25.10.2020, 15:37)Gerti schrieb: Heute festgestellt:
Es kann jeder Admins seine eigene Backend-Sprache festlegen (siehe Tabelle mybb_adminoptions).

Ja natürlich geht das, aber was willst Du damit sagen?
Für mein Verständnis und ohne das ich mich weiter damit beschäftigt habe:
In der DB kann unter den Settings ja nur die "default-Einstellung" abgelegt werden.
Userspezifische Einstellungen können ja nur in der Tabelle "users" abgelegt sein, oder müssen Session-spezifisch geladen werden. - so meine Vorstellungen -
Zitieren
#5
(25.10.2020, 16:22)Schnapsnase schrieb: In der DB kann unter den Settings ja nur die "default-Einstellung" abgelegt werden.
Userspezifische Einstellungen können ja nur in der Tabelle "users" abgelegt sein, oder müssen Session-spezifisch geladen werden. - so meine Vorstellungen -
Dies gilt nicht für den Adminbereich. Jeder Admin kann seine eigene ACP-Sprache definieren. Dies wird in der Tabelle  mybb-adminoptions abgespeichert und je nachdem welcher Admin sich einloggt entsprechend ausgeführt.

Beispiel:
Admin-1 (mit UID=1) hat ACP-Sprache Deutsch_Du eingestellt, loggt sich Admin-1 ins ACP ein, wird ihm das ACP in Deutsch_Du angezeigt
Admin-2 (mit UID=12) hat ACP-Sprache Deutsch_Sie eingestellt, loggt sich Admin-2 ins ACP ein, wird ihm das ACP in Deutsch_Sie angezeigt
Admin-3 (mit UID=123) hat ACP-Sprache Englisch eingestellt, loggt sich Admin-3 ins ACP ein, wird ihm das ACP in Englisch angezeigt
Admin-4 (mit UID=1234) hat ACP-Sprache Spanisch eingestellt, loggt sich Admin-4 ins ACP ein, wird ihm das ACP in Spanisch angezeigt
Jeder Admin kann sich im Frontend unabhängig der ACP-Einstellung eine andere Sparche einstellen. Diese Gesamtmöglichkeit empfinde ich als ein tolles Feature.

Nur wenn keine Sprache eingetragen ist, wird die Default-Sprache (Fallback) verwendet. Gehe mal davon aus, dass die Default-Sprache die Einstellung in der ./inc/settings.php ist, welche bei der Installation eingestellt wurde. Sollte es anders sein, kann kann vllt. StefanT mehr/näheres dazu mitteilen.
Wer fragt, ist gegebenenfalls für fünf Minuten ein Narr. Wer nicht fragt, bleibt ein Narr.
Wer angebotene Hilfe(n) nicht annimmt, dem ist nicht zu helfen!
Aktive Version: MyBB: 1.8.24 | PHP: 7.4.10 | SQL: 5.7.28 [Unixzeit <> Realzeit]
Zitieren
#6
Hast Recht. Ich habe es gerade getestet.
Bei Einstellung "default" ist in der DB nichts eingetragen. Bei allen anderen (manuellen) Einstellungen wird es in der Tabelle mybb_adminoptions eingetragen.

Du könntest hier also eine DB-Abfrage machen.
Dann:

PHP-Code:
if ($meineAbfrage !== ($mybb->user['language']))
{
do 
it


oder so ähnlich... Wink
Zitieren
#7
(25.10.2020, 18:19)Schnapsnase schrieb: Hast Recht. Ich habe es gerade getestet.
Danke für die Bvestätigung meienr Erkenntnis
(25.10.2020, 18:19)Schnapsnase schrieb: Bei Einstellung "default" ist in der DB nichts eingetragen.
Doch! In der Tabelle mybb_settings steht in der Spalte Name "cplanguage", in der Spalte Optionscode "adminlanguage" und Spalte value die eingestelle Standardsprache
(25.10.2020, 18:19)Schnapsnase schrieb: Bei allen anderen (manuellen) Einstellungen wird es in der Tabelle mybb_adminoptions eingetragen.
Nicht anderen, sondern individuellen Einstellungen.

Soll der in mybb_settings eingestellte Admin-User mit z.B. UID 1234 die PNs erhalten, soll dessen in mybb_adminoptions eingestellte Sprache ermittelt und in IF-Bedingungen verwendbar sein. Ist keine Sprache definiert, gilt als Fallback die Standardsprache aus mybb_settings (cplanguage).

Ich weis nicht wie man die Sprache des Admins definiert (Fallback berücksichtigen) und dann damit wietr umgehen kann. Denke es muss zuerst eine individuelle Variable deklariert werden, dessen Ergebnis erst dann als IF-Bedingungen verwendet bzw. angezeigt werden kann.
Wer fragt, ist gegebenenfalls für fünf Minuten ein Narr. Wer nicht fragt, bleibt ein Narr.
Wer angebotene Hilfe(n) nicht annimmt, dem ist nicht zu helfen!
Aktive Version: MyBB: 1.8.24 | PHP: 7.4.10 | SQL: 5.7.28 [Unixzeit <> Realzeit]
Zitieren
#8
Verzeih mir evt. momentane Code-Fehler, da ich es nicht weiter geprüft habe.
Eigentlich sollte das so ähnlich gehen:
PHP-Code:
$pn_admin $mybb->settings['pn_empfaenger_uid'];
$pn_language $db->query("select cplanguage FROM ".TABLE_PREFIX."adminoptions WHERE uid='$pn_admin'"); 
Für ein Fallback müsstest Du in der if-Anweisung prüfen, ob $pn_language leer ist:
PHP-Code:
if (empty($pn_language)) {
fallback
} elseif (.....) {
.....

Zitieren
#9
@Schnapsnase:

Bitte beache, dass $db->query ersetzt wurde durch:
https://docs.mybb.com/1.8/development/pl...rite_query

Desweiteren bringt es nichts, nur einen Query zu schreiben und in eine Variable zu packen. Diesen musst du auch ausführen.

Beispiel / Ergänzung zu deinem Code:

PHP-Code:
$pn_admin $mybb->settings['pn_empfaenger_uid'];
$pn_language $db->write_query("select cplanguage FROM ".TABLE_PREFIX."adminoptions WHERE uid='$pn_admin'"); 
$pn_language $db->fetch_array($pn_language);

var_dump($pn_language); 
Zitieren
#10
(26.10.2020, 11:11)itsmeJAY schrieb: Bitte beache, dass $db->query ersetzt wurde durch:
https://docs.mybb.com/1.8/development/pl...rite_query
Von ersetzt lese ich da nichts, sondern nur von "bevorzugt". Cool 

Danke für die Vervollständigung meines Codes- war mir sicher, etwas übersehen zu haben... Wink
Zitieren