Also gut jetzt schaue ich doch noch mal in die Funktion rein, ich habe das nämlich schon irgendwann mal gebraucht in ähnlicher Art und Weise....
So wie ich das angegeben habe wird das grob funktionieren. Ich spiele das mal anhand des bbcodes für das IMG Tag durch, es funktioniert aber auch bei jedem beliebigen anderen.
Also:
Öffne die includes/bbcode.php und betrachte dort die funktion bbencode_first_pass($text, $uid):
Hier findet sich der folgende Code für das IMG Tag:
Code: Alles auswählen
// [img]image_url_here[/img] code..
$text = preg_replace("#\[img\]((http|ftp|https|ftps)://)([^ \?&=\#\"\n\r\t<]*?(\.(jpg|jpeg|gif|png)))\[/img\]#sie", "'[img:$uid]\\1' . str_replace(' ', '%20', '\\3') . '[/img:$uid]'", $text);
Dieser macht aus
Soetwas:
Code: Alles auswählen
[img:a32de]http://www.testbild.de/bild.jpg[/img:a32de]
Wenn das :a32de fehlt wird der Code beim Anzeigen nicht ersetzt sondern so wie er ist dargestellt.
=> If Abfrage drum herum.
Die sieht dann z.B. so aus:
Code: Alles auswählen
global $db,$userdata;
$sql = 'SELECT user_id FROM '. USER_GROUP_TABLE . ' WHERE (group_id=8) AND user_id='.$userdata['user_id'];
if (!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not obtain group data', '', __LINE__, __FILE__, $sql);
}
if($db->sql_numrows($result) || $userdata['user_level'] == ADMIN)
{
---CODE---
}
Fertig sieht das ganze dann also so aus:
Code: Alles auswählen
global $db,$userdata;
$sql = 'SELECT user_id FROM '. USER_GROUP_TABLE . ' WHERE (group_id=8) AND user_id='.$userdata['user_id'];
if (!$result = $db->sql_query($sql))
{
message_die(GENERAL_ERROR, 'Could not obtain group data', '', __LINE__, __FILE__, $sql);
}
if($db->sql_numrows($result) || $userdata['user_level'] == ADMIN)
{
// [img]image_url_here[/img] code..
$text = preg_replace("#\[img\]((http|ftp|https|ftps)://)([^ \?&=\#\"\n\r\t<]*?(\.(jpg|jpeg|gif|png)))\[/img\]#sie", "'[img:$uid]\\1' . str_replace(' ', '%20', '\\3') . '[/img:$uid]'", $text);
}
Danach können in diesem Fall nur noch user, die in Gruppe 8 Mitglied sind diesen Tag verwenden. - Zumindest in der Theorie, denn getestet habe ich das jetzt noch nicht, aber es funktioniert bei mir in einer ähnlichen Situation.
--> Backup machen und ausprobieren.
EDIT: Ups da habe ich ursprünglich den Originalcode kopiert der in einem anderen Kontext ist, daher ist der 2. Codeblock mit If Abfrage leider falsch gewesen und der Teil mit der Admin-Abfrage bewirkt genau das Gegenteil des gewünschten. Bitte korrigieren.