MyBB.de Forum
Hilfe bzgl. Plugin-Ausführung - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Anpassungen (https://www.mybb.de/forum/forum-47.html)
+--- Forum: Plugin-Entwicklung (https://www.mybb.de/forum/forum-74.html)
+--- Thema: Hilfe bzgl. Plugin-Ausführung (/thread-36251.html)

Seiten: Seiten: 1 2 3


Hilfe bzgl. Plugin-Ausführung - itsmeJAY - 13.02.2019

Guten Tag zusammen,

ich habe bereits einige PHP Projekte hinter mir gelassen (kleinere) und widme mich momentan Stück für Stück MyBB. Ich blicke bei dem Plugin-Schema aber noch nicht so ganz durch.

Ich versuche mein Problem mal grob zu beschreiben:

Ich habe ein Plugin gefunden für MyBB, welches Gästen nicht erlaubt Links zu sehen - sondern nur Registrierten Benutzern. Dies nehme ich derzeit als Referenz für den Aufbau (unter anderem!). Dazu folgender Code unten im PlugIn:

PHP-Code:
// Run plugin
function hidelinks_hide(&$message)
{
global 
$settings$mybb;

if (
$mybb->settings['hidelinks_enabled'] == "1")
{
if(
$mybb->user['usergroup'] == "1")
{
$message preg_replace("!<a[^>]*(http|www)(.*)</a>!siU""{$mybb->settings['hidelinks_message']}"$message);
}
}


Ich denke folgender Abschnitt ist für jeden klar:

PHP-Code:
if ($mybb->settings['hidelinks_enabled'] == "1")
{
if(
$mybb->user['usergroup'] == "1"

Nur verstehe ich nicht, was danach kommt - zumindest von der Logik nicht. Die Variable $message - wo wird diese denn definiert bzw. woher weiß das Plugin, dass es sich um Beiträge handelt? Wir schreiben in $message rein wenn die if-Bedingung zutrifft und ersetzen Links durch reguläre Ausdrücke - ok! Aber was ist $message in dem Fall? Woher kommt diese Variable und vorallem: Woher weiß das Script, dass es sich um Beiträge handelt? Ich finde den Zusammenhang einfach nicht.

Ich hoffe ich konnte es irgendwie verständlich erklären und mir kann das erklärt werden.

Grüße,
JAY

Ach im Anhang ist das Plugin von welchem ich schrieb. Habe ich irgendwo im MyBB Archiv gefunden.


RE: Hilfe bzgl. Plugin-Ausführung - doylecc - 13.02.2019

Am leichtesten kann man das sehen, wenn man nachschaut, welchen Hook das Plugin verwendet, in diesem Fall ist es parse_message (Zeile 15 im Plugin)
Dann kann man zB. in der Doku nachsehen und entdeckt, dass dieser Hook sich in der Datei inc/class_parser.php in der Funktion parse_message() befindet, die für die Verarbeitung von BBCodes usw. zuständig ist. Die Variable $message enthält den zu verarbeitenden Inhalt, das können Posts sein, aber auch Signaturen oder PN's usw.

In diesem Inhalt $message ersetzt das Plugin für Gäste alles, was sich zwischen den <a> Tags befindet, also die Links durch einen Text.


RE: Hilfe bzgl. Plugin-Ausführung - itsmeJAY - 13.02.2019

(13.02.2019, 18:07)doylecc schrieb: Am leichtesten kann man das sehen, wenn man nachschaut, welchen Hook das Plugin verwendet, in diesem Fall ist es parse_message (Zeile 15 im Plugin)
Dann kann man zB. in der Doku nachsehen und entdeckt, dass dieser Hook sich in der Datei inc/class_parser.php in der Funktion parse_message() befindet, die für die Verarbeitung von BBCodes usw. zuständig ist. Die Variable $message enthält den zu verarbeitenden Inhalt, das können Posts sein, aber auch Signaturen oder PN's usw.

In diesem Inhalt $message ersetzt das Plugin für Gäste alles, was sich zwischen den <a> Tags befindet, also die Links durch einen Text.

Danke. Sehr verständlich erklärt. Kurz und schmerzfrei. Eine Frage bleibt noch, weshalb steht in

PHP-Code:
// Run plugin

function hidelinks_hide(&$message

ein &-Zeichen vor $message?

Liebe Grüße


RE: Hilfe bzgl. Plugin-Ausführung - itsmeJAY - 14.02.2019

Okay. Das mit dem & hat sich geklärt. Ich habe das ganze Plugin nochmal neu für 1.8 geschrieben mit paar zusätzlichen Feldern in den Einstellungen. Kriege es nur nicht hochgeladen hier. Steht immer wieder, dass ein internet Fehler auftritt. War ein kleines gutes Plugin zum Verständnis. Danke nochmal für die Hilfe.


RE: Hilfe bzgl. Plugin-Ausführung - StefanT - 14.02.2019

Bei technischen Problemen mit der Website wende dich bitte direkt an mich. Lange herumprobieren bringt nichts.
Den Thread kann ich dann wohl löschen? https://www.mybb.de/forum/thread-36252.html


RE: Hilfe bzgl. Plugin-Ausführung - itsmeJAY - 14.02.2019

Hi

ja - klar, gerne. Ich lade es später nochmal neu hoch.

Grüsse
jay


RE: Hilfe bzgl. Plugin-Ausführung - StefanT - 14.02.2019

Was stimmt mit diesem hier nicht? https://www.mybb.de/erweiterungen/18x/plugins-verschiedenes/verstecke-url-vor-benutzergruppen-hide-url/


RE: Hilfe bzgl. Plugin-Ausführung - itsmeJAY - 14.02.2019

Hi,

ist das richtige - kann natürlich drin bleiben. Ich hatte das normal hochgeladen, es wurde mir ständig ein "interner Fehler" angezeigt - ich dachte dadurch wäre die Datei nie am Server angekommen. Aber dann passt es ja.

Grüße


RE: Hilfe bzgl. Plugin-Ausführung - itsmeJAY - 14.02.2019

(13.02.2019, 18:07)doylecc schrieb: Die Variable $message enthält den zu verarbeitenden Inhalt, das können Posts sein, aber auch Signaturen oder PN's usw.

Was genau mache ich denn, wenn ich nur Beiträge bearbeiten will und keine Signaturen. Ist das möglich? Scheint die gleiche Klasse zu sein?

Grüsse


RE: Hilfe bzgl. Plugin-Ausführung - doylecc - 14.02.2019

(14.02.2019, 16:47)itsmeJAY schrieb:
(13.02.2019, 18:07)doylecc schrieb: Die Variable $message enthält den zu verarbeitenden Inhalt, das können Posts sein, aber auch Signaturen oder PN's usw.

Was genau mache ich denn, wenn ich nur Beiträge bearbeiten will und keine Signaturen. Ist das möglich? Scheint die gleiche Klasse zu sein?

Grüsse

Dann würde ich stattdessen wahrscheinlich eher den Hook "postbit" verwenden und den Inhalt von $post['message'] ersetzen anstatt von $message. Das betrifft dann nur die Posts.