Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 3 Gast/Gäste
Probleme bei Anpassung eines "verwaisten" Plugins
#11
(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 Wink (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) Wink
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."'");
//oder auch
query("UPDATE ".$dbtable." SET used_ips='".$uid."' WHERE id = '".$id."'"); 
Huh


(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. Wink
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#12
Also irgendwie mache ich nur noch Rückschritte. Sad

Ich scheine die uid nicht mehr übergeben zu können. In die Datei habe ich folgende Zeilen übernommen
PHP-Code:
define("IN_MYBB"1);
require(
"../global.php");
global 
$mybb;
$uid $mybb->user['uid']; 
Leider scheint das nicht zu funktionieren. Vermutlich deshalb, weil die global.php nicht eine sondern drei Ebene weiter oben zu finden ist.

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
Über einen Tipp wäre ich äußerst dankbar! Wink
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#13
Habe mich jetzt mal nach diesem Beitrag orientiert. Die Fehlermeldung ist zwar verschwunden, aber die uid scheine ich immer noch nicht übergeben zu bekommen. Sad
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#14
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? Wink (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.
Was ist der Unterschied zwischen der Politik und der Informatik?
In der Informatik ignoriert man führende Nullen...
Zitieren
#15
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.
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#16
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!
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#17
Die stehen überall zur Verfügung. Nur innerhalb von Funktionen brauchst du global.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#18
(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? Blush

Kann es daran liegen, dass ich die uid deshalb nicht übergeben bekomme?


Nachtrag: vermutlich konnte ich mir die Frage gerade selbst beantworten!? Wink
http://phpforum.de/php/php-handbuch/stat...scope.html
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren
#19
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 Wink

Jockl schrieb:Au Backe, kann ich global nicht außerhalb von Funktionen setzen? Blush
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" Big Grin
Was ist der Unterschied zwischen der Politik und der Informatik?
In der Informatik ignoriert man führende Nullen...
Zitieren
#20
Dankeschön für die Erklärung! Da keimt doch glatt ein kleiner Hoffnungsschimmer auf. Smile

Werde das nachher von zuhaue aus mal probieren und hoffe, damit einen kleinen Schritt weiter zu kommen. Rolleyes

"Globalisierung" muss also nicht immer gut sein...... Wink
viele Grüße
Jockl
übersetzte und eigene Plugins
Zitieren