Seite 1 von 2

Bestimmter BBCode nur für bestimmte User nutzbar

Verfasst: 28.05.2008 22:05
von brummel
Ich kann mich dunkel erinnern (hab nur nix gefunden), das es für phpBB2 einen Hack gab, dass nur bestimmte User einen bestimmten BBCode nutzen können.

Ich habe einen BBCode definiert (BBCodeBox3), den zwar nur ein eingeschränkter Kreis kennt, aber durch Zitieren ist er ja für andere erlernbar. Hat jemand einen Tipp, wie ich bei "Fremdnutzern" eine einfache Ersetzung vornehmen kann? (Im konkreten Fall wäre eine Ersetzung durch quote OK)

Verfasst: 29.05.2008 00:40
von 4seven

Verfasst: 02.06.2008 15:26
von brummel
4seven hat geschrieben:- Vereinfachtes Verbieten und Erlauben der BBCodes (Update 26.05.2008)
Das bringt leider jede Menge unschöne Meldungen (siehe unten) und wenn ich es richtig verstehe, klappt dann ja auch kein Zitieren, oder? Das war der Grund, warum ich statt striktem Verbot, gern ein Ersetzen möchte.

Aus

Code: Alles auswählen

[blub=ABC]def[/blub]
soll am besten

Code: Alles auswählen

[quote=ABC]def[/quote]
werden.

Hier noch die Meldungen, beim Versuch den Linktipp anzuwenden:

Code: Alles auswählen

[phpBB Debug] PHP Notice: in file /includes/message_parser.php on line 55: Invalid argument supplied for foreach()
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 3526: Cannot modify header information - headers already sent by (output started at /includes/functions.php:2956)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 3528: Cannot modify header information - headers already sent by (output started at /includes/functions.php:2956)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 3529: Cannot modify header information - headers already sent by (output started at /includes/functions.php:2956)
[phpBB Debug] PHP Notice: in file /includes/functions.php on line 3530: Cannot modify header information - headers already sent by (output started at /includes/functions.php:2956)

Verfasst: 03.06.2008 10:02
von brummel
OK, die Fehlermeldungen kommen jetzt nicht mehr.

Aber wie befürchtet, schlägt das Verbot dann auch beim Zitieren zu.
Das soll es aber nicht, da das rauseditieren des verbotenen Codes nicht zumutbar ist.

Wie im vorherigen Beitrag beschrieben, ein einfaches Ersetzen würde reichen. Moderatoren sollen den Code verwenden können, wenn der Code in Beiträgen von normalen Usern vorkommt, soll er ersetzt werden.

Verfasst: 03.06.2008 11:43
von 4seven
thema fehlermeldungen > Einbaufehler (evtl. auch falschen editor genommen)

ok, da lief wohl was falsch bei dir oder du hast den sinn dieses plugins nicht verstanden. es verhindert, das bestimmte gruppen bestimmte bbcodes benutzen können. das wars. es ist ja wohl nur logisch, das, wenn ich bestimmte bbcodes nicht benutzen darf, ich es auch beim zitieren nicht darf, sonst wäre es ja easy zu umgehen.
brummel hat geschrieben:Wie im vorherigen Beitrag beschrieben, ein einfaches Ersetzen würde reichen. Moderatoren sollen den Code verwenden können, wenn der Code in Beiträgen von normalen Usern vorkommt, soll er ersetzt werden.
Die Betonung liegt auf einfach *g. Das wäre ein "kleiner" Mod, da speziell. Wer sich da ran machen möchte, immer zu :wink:

Verfasst: 07.06.2008 04:42
von 4seven
brummel hat geschrieben:Aber wie befürchtet, schlägt das Verbot dann auch beim Zitieren zu.
Das soll es aber nicht, da das rauseditieren des verbotenen Codes nicht zumutbar ist.
Das Verbot schlägt jetzt beim Zitieren nicht mehr zu, sondern nur beim Eröffnen eines Threads und dem normalen Antworten. Lediglich der Klick auf den Zitierknopf erlaubt das Darstellen (Benutzen) des Codes. Es nützt also auch nichts
von Hand einzutragen.

Demo
http://sekuro.se.funpic.de/phpbb3/viewt ... 1&f=6&t=83

Bei Interesse stell ichs ein.

Verfasst: 07.06.2008 11:00
von brummel
4seven hat geschrieben:Bei Interesse stell ichs ein.
Ja, da besteht Interesse :grin:

Verfasst: 07.06.2008 14:27
von 4seven
.........

Verfasst: 07.06.2008 18:43
von brummel
1000 Dank!
Funktioniert prima!

Verfasst: 24.08.2008 10:58
von brummel
4seven hat geschrieben:.........
Oh, jetzt hast Du es entfernt :(

Da ich jetzt dieses Problem auf den damals hier diskutierten Code zurückführen konnte, wollte ich mal schauen, ob durch das Auto-Update auf Version 3.0.2 evtl. was verrutscht ist.

In der includes/message_parser.php wurde vor diese Zeilen

Code: Alles auswählen

		// Parse smilies
		if ($allow_smilies)
		{
			$this->smilies($config['max_' . $mode . '_smilies']);
		}
das hier eingefügt:

Code: Alles auswählen

// Only real Quote allow forbidden BBCodes by 4seven/2008
$post_id   = request_var('p', 0);
$topic_id   = request_var('t', 0);
$forum_id   = request_var('f', 0);
$draft_id   = request_var('d', 0);
$lastclick   = request_var('lastclick', 0);

$submit      = (isset($_POST['post'])) ? true : false;
$preview   = (isset($_POST['preview'])) ? true : false;
$save      = (isset($_POST['save'])) ? true : false;
$load      = (isset($_POST['load'])) ? true : false;
$delete      = (isset($_POST['delete'])) ? true : false;
$cancel      = (isset($_POST['cancel']) && !isset($_POST['save'])) ? true : false;

$refresh   = (isset($_POST['add_file']) || isset($_POST['delete_file']) || isset($_POST['cancel_unglobalise']) || $save || $load) ? true : false;
$mode      = ($delete && !$preview && !$refresh && $submit) ? 'delete' : request_var('mode', '');

$error = $post_data = array();
$current_time = time();
   
switch ($mode)
{
   case 'quote':
      if (!$post_id)
      {
         $user->setup('posting');
         trigger_error('NO_POST');
      }

      $sql = 'SELECT f.*, t.*, p.*, u.username, u.username_clean, u.user_sig, u.user_sig_bbcode_uid, u.user_sig_bbcode_bitfield
         FROM ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . ' t, ' . FORUMS_TABLE . ' f, ' . USERS_TABLE . " u
         WHERE p.post_id = $post_id
            AND t.topic_id = p.topic_id
            AND u.user_id = p.poster_id
            AND (f.forum_id = t.forum_id
               OR f.forum_id = $forum_id)";
   break;
}
// Only real Quote allow forbidden BBCodes by 4seven/2008

// Group-Request by Dr. Death
// Standardgruppen: 1 Gäste, 2 Registrierte,
// 4 Globale Moderatoren, 5 Administratoren.
// Tragt einfach die Gruppen IDs ein, entweder
// Einzelne: array(7) oder Mehrere: array(7,10,12)
$gruppen_id = array(2359,2360);
$benutzer_id = $user->data['user_id'];
$is_in_group = group_memberships($gruppen_id, $benutzer_id , true);
if ((!$is_in_group == true) && ($mode !== 'quote')){
//if (!$is_in_group == true){
// Group-Request by Dr. Death
// ---------------------------------------
// Forbid/Allow Custom BBCodes by 4seven/2008
// Erlaubt eingetragene BBCodes nur für bestimmte Gruppen.
// Die für die oben angegebene IDs freigegebenen BBCodes
// sind mit Komma zu trennen z.B. ('youtube, clipfish').
$disallow = array('mod=');
foreach ($disallow as $bool);
$this->bbcodes[$bool]['disabled'] = true;
}
// Forbid/Allow Custom BBCodes by 4seven/2008
Irgend eine Idee, warum da jetzt beim Zitieren die Smilie-Begrenzung nicht mehr zuschlägt?