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
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/
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
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;
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.