Seite 3 von 3

Verfasst: 17.05.2008 11:45
von Helmut
Hallo 4seven,

in der Sache mit den Berechtigungen für BBCodes habe ich einen sehr interessanten Mod gefunden. Ob er geht, habe ich noch nicht getestet, der scheint aber genau das zu machen was wir wollten. Hier ist der Link zum Mod: [BETA] Custom BBcode Permissions (who can use them)

Ich habe es auch noch nicht probiert, ihn an die BBCode Box 3 anzupassen, du kannst ja mal schauen ob es geht.

Gruß Helmut :wink:

Verfasst: 17.05.2008 12:04
von 4seven
Hallo Helmut,

vielen dank für den Wink. Ich hatte ihn auch vor einigen Tagen gefunden und denke mal, das da was drin steckt, was ich verwenden könnte. Mit den anderen Ansätzen bin ich nicht weiter gekommen, da mir das letzte Quentchen php-Kenntnis fehlte, um zu einer Lösung zu kommen. Ich konnte zwar einen bestimmten BB-Code nicht parsen lassen (er stand dann einfach im Klartext da) aber den Code durch ein Ersatzbild zu ersetzen, ist mir bis dato nicht gelungen. Ich hatte es dann aufgegeben :-?

lg
4seven

Verfasst: 17.05.2008 12:19
von Helmut
Hallo 4seven,

ich habe den Mod erst Heute gefunden, hatte die letzten Wochen fast keine Zeit, um mich mit meiner neuen HP zu beschäftigen. So wie ich das gesehen habe, wird einmal die Darstellung der BBCode Buttons über die functions_display.php geregelt und die eigentliche Berechtigung zur Verwendung direkt in der posting.php. Du müsstest dann vermutlich für das Ersatzbild den Code für die posting.php entsprechend anpassen, denke ich.

Mit der Sortierung der BBCodes bin ich noch nicht viel weiter, der Teil mit der Sortierung selber über das ACP und der zusätzlichen Funktion in der functions_display.php für die Darstellung der grafischen Buttons geht schon. Ich habe dazu eineeigene Tabelle angelegt welche die Infos für die Grafiken und die Sortierposition angeben. Ich muss mir nur noch was einfallen lassen, wie ich einen Zeilenumbruch und die Trennzeichen zwischen die BBCodes rein bringe.

Gruß Helmut :wink:

Verfasst: 10.06.2008 00:03
von 4seven
Hallo Helmut,

du solltest das irgendwann, wenn du Muße hast, durchziehen,
weil es ist einfach mega-genial. Da zieh ich den Hut :oops:

Ich selbst hab mal wieder Stunden rumgefriemelt, doch nichts brauchbares ist dabei raus gekommen :roll:

---------------------------------------------------------------------

Also nochmal an alle PHP/SQL-Profis

Ich möchte erreichen, das statt eines Custom-BBCodes ein Ersatzbild geparst wird

Bei dem hardcoded [img] Tag ist es mir ja gelungen, wie bei dem [url]

Nur nicht bei den SQL-verdrahteten Custom-Tags (Custom-BBCodes).

Hier steckt enorm viel Input in diesem Thread und ich meine, das die bisherigen Inhalte nur einen Handbreit von der Lösung entfernt sind. Möglicherweise liegt die Lösung sogar schon vor mir, ich seh sie aber nicht. Hab nun schon etliche Std. mit Tests in der Richtung verbracht aber mein Latein ist da langsam am Ende. Ich brauche nur einen entscheidenden Wink. Bin PHP/SQL-mäßig kein Profiprogrammierer, sondern eher semiprofessioneller Erfinder.

Ich denke dabei an so etwas in der Art und ich weiß, es müßte so gehen. Soviel Kenntnisse hab ich. Ich krieg halt nur die richtige Anweisung nicht zusammen.

Code: Alles auswählen

if (($user->data['user_id'] == ANONYMOUS) && (Datenbankabfrage: Enthält das Post einen youtube Tag)) 
{ 
Parse den youtube-Tag und dessen Inhalt nicht, sondern zeige ein Ersatzbild 
} 
else 
{ 
Parse den youtube-Tag und dessen Inhalt 
}

Verfasst: 11.06.2008 19:06
von Helmut
Hallo 4seven,

klar werde ich das mit den BBCodes und der Sortierung durchziehen, auch mit den Bereichtigungen, nur ist mir bis jetzt auch noch nicht wirklich was brauchbares eingefallen.

So wie ich jetzt mitbekommen habe, willst du es bei dem Ersatzbild so haben, dass jemand der keine Berechtigung für den jeweiligen BBCode hat, auch in bereits bestehenden Posts diesen BBCode durch ein Bild ersetzt wird und nicht nur, dass der betreffende User den BBCode nicht für seine Posts verwenden kann.

Ich bin übrigens auch kein PHP und SQL Profi, habe mir die Sachen auch durch meistens abschauen angeeignet.

Gruß Helmut :wink:

Verfasst: 11.06.2008 19:24
von 4seven
Hallo Helmut,

Gäste sollen statt der geparsten Custom-Tags | zb [youtube] ein Ersatzbild ausgeliefert bekommen. Normale User dürfen alles sehen.
Im Grunde also ne einfache(!) Kiste, wenn man die richtigen Befehle und Stellen zum einpflegen kennt :-?

Mein Berechtigungssystem, wer was benutzen darf, hab ich ja schon perfekt hinbekommen. Funktioniert 1A.

- Vereinfachtes Verbieten und Erlauben der BBCodes (Update 26.05.2008)
Helmut hat geschrieben:willst du es bei dem Ersatzbild so haben, dass jemand der keine Berechtigung für den jeweiligen BBCode hat, auch in bereits bestehenden Posts diesen BBCode durch ein Bild ersetzt wird
Genau das. Bei den hardcoded [img] + [url] ist es mir ja gelungen:
Ausgeloggt > Keine Bilder zu sehen. Nur das Ersatzbild mit einer freundlichen Aufforderung zum registrieren.
Eingeloggt > Alle Bilder zu sehen.

-------------------------------------------------------

Das sind die mE heißeste Spuren:
Helmut hat geschrieben:Mir ist dazu noch ein anderer Lösungsweg eingefallen wenn du nur statt dem BBCode mit dem Inhalt an dieser Stelle was anderes anzeigen lassen willst und zwar könnte es in der viewtopic.php gehen. Das müsste die Stelle sein

Code: Alles auswählen

   // Parse the message and subject 
   $message = censor_text($row['post_text']); 

   // Second parse bbcode here 
   if ($row['bbcode_bitfield']) 
   { 
      $bbcode->bbcode_second_pass($message, $row['bbcode_uid'], $row['bbcode_bitfield']); 
   } 

   $message = bbcode_nl2br($message); 
   $message = smiley_text($message); 
Da könnte man doch mit sowas (Beispiel) was machen,

Code: Alles auswählen

      $row['post_text'] = preg_replace('/\[(center)\]\[(size)=[0-9][0-9][0-9]\:[0-9a-z\:]+\](.*?)\[\/?(size)\:[0-9a-z\:]+\]\[\/?(center)\]/sim', '', $row['post_text']);


den BBCode ausfiltern und durch was anderes ersetzen.
------------------------------------------------
Helmut hat geschrieben:Du könntest hier z.B. über eine zusätzliche Spalte in der Tabelle phpbb3_bbcodes die Berechtigungen mit verarbeiten. Dann könnte man noch im ACP eine zusätzliche Abfrage einbauen, welche Gruppe diesen BBCode verwenden darf.
Hatte ein zusätzliches Feld eingebaut: bbcode_allow_see mit einer einfachen Ja/Nein Abfrage (1/0). Hab mir dazu das Feld display_on_posting als Beispiel genommen.

Da hänge ich nun an der Stelle, welche/s zusätzliche/n Feld/er ich nun "kopieren" muss, auf das ich die Ja/Nein Abfrage beziehen kann und zwar das, was für die letztliche Darstellung des zb. [youtube] Tags zuständig ist. Ist es nun first_pass_replace und second_pass_match (und welche Rolle spielt im Zweifelsfalle noch second_pass_replace).

Dann könnte man in diese/s neue/n Feld/er eine feste Anweisung für jeden Tag integrieren, zb.

Code: Alles auswählen

[img:$uid\]http://www.blabla.de/mein_pfad/zum_ersatzbild.jpg[/img:$uid\]
oder sogar nur

Code: Alles auswählen

[img]http://www.blabla.de/mein_pfad/zum_ersatzbild.jpg[/img]
da das Bild ja immer gleich bleibt..

..und eine Zusätzliche Checkbox im ACP > Beiträge > BBCodes unter

Code: Alles auswählen

Einstellungen
Beim Verfassen eines Beitrags anzeigen [ ]
zb.

Code: Alles auswählen

BBCode im Beitrag für Gäste darstellen [ ]
Ok, wenn diese Fragen geklärt wären (besonders diese, ob es tatsächlich nur so bzw. ob es überhaupt so geht), würde es noch um die SQL-Abfrage gehen und um die Frage, wo genau friemelt man das in welcher *.php Datei ein.

Oh man :roll:

Verfasst: 13.06.2008 02:55
von 4seven
Bin ein Stück weiter :grin:

Die Ersetzung mit dem Bild hab ich schon :wink:

Es fehlt aber noch eine Kleinigkeit, bei der ich einfach nicht weiterkomme.

Wie frage ich ein message $row nach einem vorhandenen youtube-Tag ab?

Ich brauche so etwas (sinngemäß):

Code: Alles auswählen

if ($row['post_text'] == '[youtube]')
{
echo 'Youtube Tag';
}
möglicherweise auch

Code: Alles auswählen

if ($message == '[youtube]')
{
echo 'Youtube Tag';
}
Ich brauch natürlich nicht erwähnen, das die Variante nicht funktioniert,
da er hier immer 'Youtube Tag' auswirft, auch wenn ein andere Tag vorhanden ist.

Verfasst: 14.06.2008 21:15
von 4seven
Ich wollte nochmal nachhaken:

Wie realisiere ich eine Anfrage, ob in einem Post ein bestimmter Tag steckt (zb. youtube)?

...siehe auch ein Post drüber.

Jungs, ich bin nur noch ein Millimeter vom Ziel entfernt :roll:

Bitte erbarme sich wer *g

Verfasst: 14.06.2008 21:23
von Dr.Death

Verfasst: 14.06.2008 22:17
von 4seven
Bingo, Doc.

preg_match ist fixer :D

Ein Schönheitsfehler noch. Jetzt klappt zwar alles, aber .. es ist nicht nur der youtube-Tag + Inhalt weg, sondern das komplette Post wird mit einem Bild ersetzt.

http://sekuro.se.funpic.de/phpbb3/viewt ... ?f=14&t=75

Muss nun noch mittels preg_replace hinbekommen, das er nur den youtube Tag mit Inhalt ersetzt und nicht das ganze Post. Hierbei bräuchte ich evtl. noch einen Tip, wie ich das hinbekomme :-? Ansonsten bin ich erstmal zufrieden, weil die Lösung "im Grunde" ok wäre, aber halt nur ok (mit Beigeschmack). Wie gesagt, wäre chic, wenn auf den "letzten Metern" noch wer einen Tip für das preg_replace hätte.

----------------

Edit:

Habe es jetzt geschafft. Endlich, nach Monaten :D
Die Lösung wird in das BBCodeBox3 ACP-Plugin integriert :grin: