BBCode Berechtigung nur in viewtopic prüfen

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
Benutzeravatar
Kirk
Supporter
Supporter
Beiträge: 7858
Registriert: 24.05.2010 08:31
Kontaktdaten:

BBCode Berechtigung nur in viewtopic prüfen

Beitrag von Kirk »

Hallo
Ich arbeite an einer Extension von mir, dort kann man über die Benutzerrechten/Gruppenrechten u. a. einstellen wer Beiträge zitieren darf.
Entzieht man z.b. einer Gruppe das Recht "Kann Beiträge zitieren", bekommt diese Gruppe wenn sie den BBCode quote (manuelle Eingabe in den Editor) benutzt, diese Meldung angezeigt:
Du darfst bestimmte BBCodes nicht verwenden: quote.
Die Überprüfung in der listener.php dafür sieht so aus:

Code: Alles auswählen

	public function check_quote_permissions($event)
	{
		if ($this->config['quote_enable'] == 0 || $this->config['noquote_lastpost_perm_phpbb'] && !$this->auth->acl_gets('u_view_reply_with_quote'))
		{
			$event['parser']->disable_bbcode('quote');
		}
	}
Das entsprechende php Event so:

Code: Alles auswählen

'core.text_formatter_s9e_parse_before'		=> 'check_quote_permissions',
Leider greift dies auch bei PN´s
Ist es irgenwie möglich das diese Überprüfung nur in viewtopic greift?
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: BBCode Berechtigung nur in viewtopic prüfen

Beitrag von BNa »

und ein einfaches if_viewtopic ist nicht möglich?

https://www.phpbb.com/community/viewtop ... #p13214444
Benutzeravatar
canonknipser
Ehemaliges Teammitglied
Beiträge: 2053
Registriert: 10.09.2011 11:14
Kontaktdaten:

Re: BBCode Berechtigung nur in viewtopic prüfen

Beitrag von canonknipser »

Du kannst aus der Server-Variable REQUEST_URI ermitteln, ob du in der viewtopic.php bist. Sauberer Zugriff über die request-Klasse
Oder du nimmst es aus der session-Klasse, da gibt es ein Attribut page
Schau mal in API-Dokumentation: https://area51.phpbb.com/docs/code/3.2.x/
BNa hat geschrieben:und ein einfaches if_viewtopic ist nicht möglich?

https://www.phpbb.com/community/viewtop ... #p13214444
Nö, das ginge im template, aber nicht im php-Teil
Grüße, canonknipser
"there are only 10 types of people: those, who understand binary and those, who don't"
just arrived ;) - Bilder
Kein Support via PN, nur im Board und (manchmal) im IRC
Benutzeravatar
Kirk
Supporter
Supporter
Beiträge: 7858
Registriert: 24.05.2010 08:31
Kontaktdaten:

Re: BBCode Berechtigung nur in viewtopic prüfen

Beitrag von Kirk »

Mit der Server-Variable REQUEST_URI komme ich überhaupt nicht klar, das andere session_page da habe ich volgende Variablen ausprobiert:

Code: Alles auswählen

strrpos($event['row']['session_page'], '/viewtopic')
strrpos($this->user->data['session_page'], '/viewtopic')
dies an verschiedenen Stellen, entweder die Überprüfung der Berechtigungen greift in viewtopic und bei PN´s oder gar nicht.
Die API-Dokumentation ist auch wenig hilfreich.

@BNa
Wäre schön gewesen wenn dies funktioniert hätte.
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: BBCode Berechtigung nur in viewtopic prüfen

Beitrag von BNa »

$user->page['page_name'] sollte helfen

https://www.phpbb.com/community/viewtopic.php?t=2447956
Benutzeravatar
Kirk
Supporter
Supporter
Beiträge: 7858
Registriert: 24.05.2010 08:31
Kontaktdaten:

Re: BBCode Berechtigung nur in viewtopic prüfen

Beitrag von Kirk »

Danke für den Tip, habe es jetzt so gelöst if ($this->user->page['page_name'] == 'posting.' .$this->php_ext), allerdings darf es nicht mit anderen Bedingungen kombiniert werden.
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: BBCode Berechtigung nur in viewtopic prüfen

Beitrag von BNa »

Grad direkt in der viewtopic.php getestet,
haut sauber viewtopic raus

Code: Alles auswählen

$us_erpage = $user->data['session_page'];
$us_erpage = strstr($us_erpage, '.', true);
if ($us_erpage = 'viewtopic'){
echo 'dahoam is dahoam';} 
und kann auch normal abgefragt/kombiniert werden.

Code: Alles auswählen

$us_erpage = $user->data['session_page'];
$us_erpage = strstr($us_erpage, '.', true);
// echo $us_erpage;
if ((($us_erpage = 'viewtopic') & $irgendwas) || $hastenichtgesehen){
$on_us_erpage = true;}
else{
$on_us_erpage = false;} 
Daher warsch. einfach auf $this-> umbauen...
Benutzeravatar
Kirk
Supporter
Supporter
Beiträge: 7858
Registriert: 24.05.2010 08:31
Kontaktdaten:

Re: BBCode Berechtigung nur in viewtopic prüfen

Beitrag von Kirk »

Bei mir funktioniert es nur wenn es vor den anderen Bedindingungen und "allein" steht.
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: BBCode Berechtigung nur in viewtopic prüfen

Beitrag von BNa »

Hast Du es denn mit 'session_page' probiert?
Ist ja eine andere Variable.

Ansonsten mußt halt kaskadieren. Nicht so elegant aber geht ja auch.

Oder im Zweifelsfalle erst einzelne Variablen erzeugen:

Code: Alles auswählen

$posting_true   = ($this->user->page['page_name'] == 'posting.' .$this->php_ext) ? true : false;
$viewtopic_true = ($this->user->page['page_name'] == 'viewtopic.' .$this->php_ext) ? true : false;

Code: Alles auswählen

if ($posting_true || $viewtopic_true){
echo 'yes';} 
Benutzeravatar
Kirk
Supporter
Supporter
Beiträge: 7858
Registriert: 24.05.2010 08:31
Kontaktdaten:

Re: BBCode Berechtigung nur in viewtopic prüfen

Beitrag von Kirk »

So funktioniert es bei mir:

Code: Alles auswählen

    public function check_quote_permissions($event)
    {
        if ($this->user->page['page_name'] == 'posting.' .$this->php_ext)
        {
            if ($this->config['quote_enable'] == 0 || $this->config['noquote_lastpost_perm_phpbb'] && !$this->auth->acl_gets('u_view_quote_bbcode'))
            {
                $event['parser']->disable_bbcode('quote');
            }
        }
    }
 
So wird die Meldung auch bei PN´s angezeigt:

Code: Alles auswählen

    public function check_quote_permissions($event)
    {
        if ($this->user->page['page_name'] == 'posting.' .$this->php_ext && $this->config['quote_enable'] == 0 || $this->config['noquote_lastpost_perm_phpbb'] && !$this->auth->acl_gets('u_view_quote_bbcode'))
        {
            $event['parser']->disable_bbcode('quote');
        }
    }
 
Das hier:

Code: Alles auswählen

        if ($this->user->page['page_name'] == 'posting.' .$this->php_ext || $this->user->page['page_name'] == 'viewtopic.' .$this->php_ext))
funktioniert schon, aber anscheined nicht mit den Variablen der Ext selbst.
Antworten

Zurück zu „Extension Bastelstube“