Probleme bei Anpassung eines "verwaisten" Plugins - Druckversion +- MyBB.de Forum (https://www.mybb.de/forum) +-- Forum: Sonstiges (https://www.mybb.de/forum/forum-1.html) +--- Forum: Programmierung (https://www.mybb.de/forum/forum-32.html) +--- Thema: Probleme bei Anpassung eines "verwaisten" Plugins (/thread-21471.html) |
RE: Probleme bei Anpassung eines "verwaisten" Plugins - Jockl - 12.06.2009 (12.06.2009, 06:28)Zwoetzen schrieb: In der letzten Zeile des Codeschnipsels: Muss das nicht ein "$db->query()" oder sogar ein "$db->write_query()" sein (Glaub letzteres, weil ja etwas in die DB geschrieben wird.)Du hast recht, wenn man das auf Basis von MyBB macht. Allerdings sehen die MySQL-Zeilen in dem kompletten Plugin so aus und funktionieren im Prinzip auch, da ja z.B. die Werte für's Rating (SET total_votes = total_votes + 1, total_value = total_value + ".$rating.") erfolgreich geschrieben werden. Die ganzen MySQL-Statements in dem kompletten Plugin umzuschreiben wäre der wahrscheinlich der Wahnsinn.....:undecided: (12.06.2009, 06:28)Zwoetzen schrieb: ....vorrausgesetzt dass $rating_uid bereits die vorherigen UIDs alle enthält (wovon ich mal ausgehe)Da bin ich mir nicht sicher. Habe mal per echo() die aktuelle uid auf dem Bildschirm ausgegeben und das klappte auch. Aber was die "vorherigen UIDs angeht: Ganz zu Beginn ist die Tabelle ja leer und wird erst mit der Anzahl der Votings mit UIDs gefüllt. Vermutlich ist da aber der Wurm drin, denn auch diese beiden Zeilen beschreiben die DB nicht: PHP-Code: query("UPDATE ".$dbtable." SET used_ips='".$string_uid."' WHERE id = '".$id."'"); (12.06.2009, 06:28)Zwoetzen schrieb: PS: Eventuell sollte man noch darüber nachdenken, die entsprechende Spalte in der DB umzubenennen, da du in 2 Monaten event. vergessen hast, dass nun die UIDs in der IP-Salte stehen und dich wunderst, was das für ein Müll ist ^^ (JAja, hab ich alles schon erlebt xD)Das hätte ich mir vorgenommen, wenn mal alles funktioniert, denn ich sehe das genauso wie Du. RE: Probleme bei Anpassung eines "verwaisten" Plugins - Jockl - 13.06.2009 Also irgendwie mache ich nur noch Rückschritte. Ich scheine die uid nicht mehr übergeben zu können. In die Datei habe ich folgende Zeilen übernommen PHP-Code: define("IN_MYBB", 1); Wenn ich aber require("../../../global.php"); schreibe, dann erhalte ich folgende Fehlermeldung Code: Fatal error: require_once() [function.require]: Failed opening required '../../../global.php' (include_path='.:/usr/share/php:/usr/share/pear') in ..........gallery/zp-core/plugins/rating.php on line 9 RE: Probleme bei Anpassung eines "verwaisten" Plugins - Jockl - 13.06.2009 Habe mich jetzt mal nach diesem Beitrag orientiert. Die Fehlermeldung ist zwar verschwunden, aber die uid scheine ich immer noch nicht übergeben zu bekommen. RE: Probleme bei Anpassung eines "verwaisten" Plugins - Zwoetzen - 14.06.2009 DU arbeitest doch immernoch mit PLugin-Dateien, also die Dateien klinken sich via $plugin->add_hook() am Anfang in das Forensystem ein? Dann brauchst du die global.php nicht einzubinden, da diese automatisch vorher eingebunden wird. Hast du in der entsprechenden Funktion das "gobal $mybb;" eingefügt, um auf das MyBB-Objekt zuzugreifen? (Da sollte auch bereits schon $db etc. rumstehen ^^) (Die global.php muss man nur einbinden, wenn man ein neues Script schreibt, was durch einen direkten Link auf das Script abgerufen wird, zum Beispiel eine impressum.php. In Plugins ist das überflüssig.) Wegen oben: Mir ist ehrlich gesagt keine Funktion "query()" bekannt, wobei ich auch sagen muss, dass ich mich mit der MySQL-Anbindung nicht so gut auskenne (weil dann irgendwann MyBB mit dem $db kam ^^). Aber allgemein ist zu empfehlen, immer $db für Zugriffe auf die DB zu nehmen. RE: Probleme bei Anpassung eines "verwaisten" Plugins - Jockl - 14.06.2009 Hallo Zwoetzen, vielen Dank für Deine Antwort!! Leider habe ich mich bereits meinem ersten Post unglücklich ausgedrückt. Eigentlich ist es keine Plugin im herkömmlichen Sinn, das im ACP aktiviert wird. Es ist im Prinzip ein extra Script, das für MyBB 1.4 so angepasst wurde, dass es sich quasi als "neue Seite" einbindet. Wie in der damaligen Ankündigung beschrieben, ist die global.php über require_once() entsprechend in das Theme einzubinden. Und damit müssten meinem Verständnis nach eigentlich die globalen Variablen von MyBB zur Verfügung stehen!? Wegen der MySQL-Befehle: ich vermute, dass diese einfach auf dem ursprünglichen ZenPhoto Script belassen wurden. Eine Überarbeitung aller Code-Zeilen wäre wahrscheinlich zu aufwändig gewesen. Du hast aber vermutlich recht; wenn die globalen Variablen von MyBB zur Verfügung stehen, müsste sich auch $db einbinden lassen. RE: Probleme bei Anpassung eines "verwaisten" Plugins - Jockl - 15.06.2009 nochmal eine Verständnisfrage zu dem Aufruf der Fkt. require_once() bzw. zur Verfügbarkeit der globalen Variablen von MyBB: Wenn in einem externen File die global.php mit require_once() und mit "global $mybb, $db" die entsprechenden Variablen eingebunden werden, stehen die dann nur innerhalb dieses Files zur Verfügung oder auch in "beteiligten" php-Files? Wäre super, wenn mir das jemand beantworten könnte. Danke! RE: Probleme bei Anpassung eines "verwaisten" Plugins - StefanT - 15.06.2009 Die stehen überall zur Verfügung. Nur innerhalb von Funktionen brauchst du global. RE: Probleme bei Anpassung eines "verwaisten" Plugins - Jockl - 15.06.2009 (15.06.2009, 18:05)StefanT schrieb: Nur innerhalb von Funktionen brauchst du global. Au Backe, kann ich global nicht außerhalb von Funktionen setzen? Kann es daran liegen, dass ich die uid deshalb nicht übergeben bekomme? Nachtrag: vermutlich konnte ich mir die Frage gerade selbst beantworten!? http://phpforum.de/php/php-handbuch/static/language.variables.scope.html RE: Probleme bei Anpassung eines "verwaisten" Plugins - Zwoetzen - 15.06.2009 Alle Variablen, die außerhalb von Funktionen deklariert sind, sind automatsich global und somit überall verfügbar, auch in später eingebundenen Dateien. Innerhalb werden diese globalen Variablen aber "ausgeblendet", ein Zugriff auf diese muss mit dem global-Schlüsselwort erfolgen. Das wiederum bedeutet: Wurde diem global.php eingebunden, stehen direkt in der nächsten Zeile des Scriptes $mybb, $db, $templates, $theme, $plugins und wie sie nicht alle heißen zur Verfügung Jockl schrieb:Au Backe, kann ich global nicht außerhalb von Funktionen setzen?Es macht also keinen Sinn, global außerhalb von Funktionen zu nutzen: Die Variablen sind bereits alle sichtbar, da gibt es nix mehr zu "globalisieren" RE: Probleme bei Anpassung eines "verwaisten" Plugins - Jockl - 15.06.2009 Dankeschön für die Erklärung! Da keimt doch glatt ein kleiner Hoffnungsschimmer auf. Werde das nachher von zuhaue aus mal probieren und hoffe, damit einen kleinen Schritt weiter zu kommen. "Globalisierung" muss also nicht immer gut sein...... |