Seite 1 von 2

BBCode Berechtigung nur in viewtopic prüfen

Verfasst: 09.08.2019 19:38
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?

Re: BBCode Berechtigung nur in viewtopic prüfen

Verfasst: 09.08.2019 22:58
von BNa
und ein einfaches if_viewtopic ist nicht möglich?

https://www.phpbb.com/community/viewtop ... #p13214444

Re: BBCode Berechtigung nur in viewtopic prüfen

Verfasst: 09.08.2019 23:12
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

Re: BBCode Berechtigung nur in viewtopic prüfen

Verfasst: 10.08.2019 13:49
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.

Re: BBCode Berechtigung nur in viewtopic prüfen

Verfasst: 10.08.2019 21:33
von BNa
$user->page['page_name'] sollte helfen

https://www.phpbb.com/community/viewtopic.php?t=2447956

Re: BBCode Berechtigung nur in viewtopic prüfen

Verfasst: 10.08.2019 22:39
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.

Re: BBCode Berechtigung nur in viewtopic prüfen

Verfasst: 11.08.2019 17:43
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...

Re: BBCode Berechtigung nur in viewtopic prüfen

Verfasst: 11.08.2019 17:53
von Kirk
Bei mir funktioniert es nur wenn es vor den anderen Bedindingungen und "allein" steht.

Re: BBCode Berechtigung nur in viewtopic prüfen

Verfasst: 11.08.2019 17:55
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';} 

Re: BBCode Berechtigung nur in viewtopic prüfen

Verfasst: 11.08.2019 18:43
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.