Seite 1 von 1

[Erledigt] Custom Title: $auth->acl_get() immer FALSE

Verfasst: 01.04.2011 13:28
von SemiX
Hallo zusammen,

so habe ich es als alter phpBB2er dann doch mal gewagt, meine Nase in den Nachfolger zu stecken - und festgestellt, dass ich eine ganze Menge neu lernen muss *seufz*. So komplex geworden :geek:. Momentan versuche ich mich daran, phpBB 3.0.8 ein wenig zu modden und kleine Anpassungen vorzunehmen. Erste Schwierigkeiten bereitet mir dabei aber der "Custom Title Mod 3.0.0" für benutzerdefinierte Rangtitel: Wenn ich ihn installiere, kann ich zwar im ACP besagten Rangtitel abändern, im UCP taucht er jedoch nicht auf. Auf phpbb.com findet man das Problem häufiger, aber keine Lösung.

Nach einigem Suchen habe ich festgestellt, dass $auth->acl_get() im nachfolgenden Code-Abschnitt immer den Wert FALSE erhält, obwohl in der Datenbank in der phpbb_acl_options die Einträge u_title_edit und u_title_ignore_reqs vorhanden sind:

Code: Alles auswählen

$custom_title_enabled = false;
if ($auth->acl_get('u_title_edit'))
{
	if ($auth->acl_get('u_title_ignore_reqs'))
	{
		$custom_title_enabled = true;
	}
	else
	{
		$registered_seconds = time() - $user->data['user_regdate'];
		if (($registered_seconds >= $config['custom_title_days'] * 86400) && ($user->data['user_posts'] >= $config['custom_title_posts']))
		{
			$custom_title_enabled = true;
		}
	}
}
Setze ich zu Beginn $custom_title_enabled = true funktioniert der Mod. Das gleiche Problem taucht übrigens auch auf, wenn ich selber einen eigenen DB-Eintrag erstelle, was nach dieser Anleitung eigentlich hätte funktionieren sollen:

Code: Alles auswählen

INSERT INTO `phpbb_acl_options` (`auth_option_id`, `auth_option`, `is_global`, `is_local`, `founder_only`)
VALUES(120, 'u_test_perm', 1, 0, 0);
Wenn ich das mit

Code: Alles auswählen

print_r("<p>Wert von u_test_perm: [" . $auth->acl_get('u_test_perm') . "]</p>");
abfrage, erhalte ich ebenfalls stets FALSE. Wo könnte also der Fehler liegen? :oops:

Re: Custom Title: $auth->acl_get() liefert immer FALSE

Verfasst: 01.04.2011 22:35
von Balint
Hallo,

ich vermute aufgrund deiner Beschreibung, dass es sich doch um ein simples Rechteproblem handeln könnte. Lies dir mal bitte folgenden Artikel durch und teste mal die Berechtigungen. Vielleicht überschreibt ein Gruppenrecht ein anderes. phpBB3 ist in dieser Hinsicht etwas herausfordernd :-)

KB:rechte_verfolgen


Viele Grüße,
Bálint

Re: Custom Title: $auth->acl_get() liefert immer FALSE

Verfasst: 01.04.2011 22:48
von SemiX
Okay, mir hat's keine Ruhe gelassen. Aber dafür weiß ich nun ungefähr, woran es gelegen hat :-) Für andere Ratsuchende: Der Hund liegt in den Berechtigungs-Rollen begraben, genauer gesagt in der $user_permissions in der includes\auth.php. Die im Schlüssel user_permissions gespeicherten in Rechte bzw. Werte werden mit denen in der phpbb_acl_options abgeglichen. Da in den o. g. Fällen nur die Optionen für die Rollen ergänzt wurden, aber nicht die Benutzerrechte modifiziert, werden diese Optionen zunächst erstmal ignoriert - acl_get() liefert ein FALSE zurück. Damit daraus ein TRUE wird, müssen die Berechtigungsrollen im ACP aktualisiert werden. Für meinen oben gewälten Beispiel-Schlüssel taucht im ACP unter Berechtigungen/Benutzer-Rollen/<wähle irgendeinen Rollen-Namen>/Diverses der Eintrag "{ acl_u_test_perm }" auf. Ändert man dessen Wert auf Ja, geht's.

Edit: Ah, Balint Du warst schneller mit deiner Antwort. Mist, jetzt steh ich in der Verlegenheit, mich zu entschuldigen *hust* Ist ja wirklich ein simpler Fehler gewesen. Und ich hab eher damit gerechnet, dass was mit der Aufwärtskompatibilität des MODs nicht stimmt. Vielen Dank aber trotzdem, auch für den Link. Ich habe mich zwar vor einiger Zeit schon in das Rechtesystem (und in die Grundlagen objektorientierten Programmierens) eingelesen, aber mein erster Gedanke war danach "Oh Gott!" :grin: Jetzt kann ich das Gelesene besser zuordnen, thx!