WOL - Location Plugin? - Druckversion +- MyBB.de Forum (https://www.mybb.de/forum) +-- Forum: Anpassungen (https://www.mybb.de/forum/forum-47.html) +--- Forum: Plugin-Diskussionen (https://www.mybb.de/forum/forum-38.html) +--- Thema: WOL - Location Plugin? (/thread-11123.html) Seiten: Seiten:
1
2
|
WOL - Location Plugin? - Manuel - 29.09.2008 Wäre es möglich, benutzerdefinierte Locations als ein Plugin zu schreiben? Also ich hab ja gesehen, dass es hooks in der functions_online.php gibt, aber jeglicher versuch ist gescheitert. Ich fände es einfacher (und übersichtlicher) es in ein Plugin zu schreiben, als alles manuell in die Datei reinzuschreiben zwecks update, etc. Außerdem wäre es auch besser für manche Plugin-Autoren, die benutzerdefinierte Locations benötigen würden... Hier ist das, was ich bis jetzt habe...aber leider funktioniert der Code nicht... PHP-Code: <? RE: WOL - Location Plugin? - Michael - 29.09.2008 Du hast sehr viele globals definiert, die gar nicht alle gebraucht werden. Dafür fehlen die wichtigen. In der Funktion customonlineloc_file() fehlt $user_activity und bei customonlineloc_location() fehlt $location_name. Sind diese nicht in den globals definiert, stehen die Variablen nur innerhalb der Funktion zur Verfügung. RE: WOL - Location Plugin? - Manuel - 29.09.2008 Ich hab halt die globals von der functions_online.php benutzt^^ Habs jetzt so, geht aber immer noch nicht... PHP-Code: function customonlineloc_file(&$user_activity) Fehler: (Alles bei "The following warnings occured" drinne)
RE: WOL - Location Plugin? - Michael - 30.09.2008 Versuchs mal so: PHP-Code: function customonlineloc_file() RE: WOL - Location Plugin? - Manuel - 30.09.2008 Gibt mir auch das:
RE: WOL - Location Plugin? - Zwoetzen - 01.10.2008 So, habe mich der Sache mal angenommen (weil ich das per Plugin auch sehr viel angenehmer find als direkt die Dateien zu ändern), und habe erfolgreich die ersten Seiten hinzugefügt. Hier hast ein paar Beispiel-Codeschnipsel PHP-Code: $plugins->add_hook("fetch_wol_activity_end", "myplugin_wol_activity"); PHP-Code: function myplugin_wol_activity($user_activity) PHP-Code: function myplugin_wol_location($array) btw: Muss man bei add_hook() nicht den ganzen Funktionsnamen angeben? Zumindest hab ich das immer so gemacht ^^ (Könnte den ersten Fehler erklären, weil er eben file() aufruft und nicht customonlineloc_file() ) RE: WOL - Location Plugin? - Manuel - 01.10.2008 Ich liebe dich dafür, dass es funktioniert!!! Es ist eine Schande, dass ich nicht mal die Hooks richtig hatte...und das nach 6 Plugins, die ich selbst gecoded habe!!! Also echt ein fettes Dankeschön! Edit: Hätte da doch was...Wie funktioniert das mit deinem Code, wenn man mehrere $mybb->input['action']'s hat? RE: WOL - Location Plugin? - Zwoetzen - 02.10.2008 Alle Variablen die per URL mit übergeben wurden sind im $parameters-Array, das heißt für die action brauchst du einfach $parameters['action'] auslesen und entsprechend die Fälle unterscheiden. (Wurde die Action allerdings per Formular übertragen hat man glaube keinen Zugriff mehr drauf, weil nur die URL für die Parameter herangezogen werden kann) Entweder du unterscheidest bereits im wol_activity(), dann hättest du im wol_location für jeden Aktion einen eigenen Case-Fall. Oder du speicherst in wol_activity() die Aktion erst zwischen ($user_activity['action'] = $parameters['action']) und unterscheidest erst in der wol_location() die einzelnen Fälle (anhand von $array['user_activity']['action']). (MyBB nutzt glaube die erste Variante) PS: Auch ein Mentor kann Fehler machen und muss nicht alles wissen ^_____^ RE: WOL - Location Plugin? - Manuel - 02.10.2008 MyBB nutzt keine der genannten Varianten. In der functions_online.php ist es relativ einfach dies zu tun^^ Die 1. Variante würde nicht einmal funktionieren. Denk daran, es wird .php und alles was danach kommt abgeschnitten, also würde es nicht funktionieren. Die 2. Variante verstehe ich ehrlich gesagt nicht ganz (Evtl. Beispiel??) RE: WOL - Location Plugin? - Zwoetzen - 02.10.2008 Du hast das mit dem Abschneiden wohl falsch verstanden: Klar im $filename hast du das nicht mehr, aber vorher werden ja in der Funktion, bevor der Plugin-Hook aufgerufen wird, die Parameter extrahiert und in $parameters gespeichert. Darauf greifen wir mit global $parameters zu Sofern eben die action in der URL steht, wird sie zwangsläufig auch in $parameters auftauchen. Aber hier trotzdem mal ein beispiel zu den zwei Varianten (Hab mich wohl doch etwas zu kurz gefasst ^__^): Variante 1: Untersuchen der Aktion in der myplugin_wol_activity() PHP-Code: function myplugin_wol_activity($user_activity) Variante 2: Untersuchen der Aktion in der myplugin_wol_location() PHP-Code: function myplugin_wol_activity($user_activity) Der Unterschied ist letztendlich, wann die Aktion untersucht und entsprechend reagiert wird. Bei der ersten Variante wird direkt untersucht und entsprechend der Wert für $user_activity['activity'] angepasst, sodass jede Aktion eine eigene Aktivität ist (Diesen Weg nimmt das MyBB in der functions_online.php). Bei der zweiten Varianten werden zuerst alle Aktionen auf die gleiche Aktivität abgebildet und zusätzlich die Aktion mit gegeben, sodass sie später in der wol_location() untersucht wird und entsprechend der Satz zugewiesen wird. |