13.12.2023, 10:13
13.12.2023, 10:56
Danke für den informativen MyBB-Link.
Auf Deutsch übersetzt lautet es:
ist ähnlich der Methode query, außer dass write_query die Abfrage auf der Slave-Datenbank ausführt, falls Sie einen Server mit mehreren Datenbanken eingerichtet haben. write_query wird jetzt gegenüber query bevorzugt.
Eine Slave-Datenbank bei einem MyBB-Forum ist mir zumindest in all den Jahren noch nicht bewusst unter gekommen. Für MyBB-Foren (so zumindest meine Erfahrung) wird eigentlich eine autonome = Master-Datenbank verwendet.
Was tatsächlich in einem Hosting-Account hinsichtlich der Servergegebenheiten gegeben ist, entzieht sich doch faktisch jedem PlugIn-Éntwickler. Daher verstehe ich den eingebrachten Zusammenhang bzgl. Master-/Slave-Datenbank von StefanT bzgl. der PlugIn-Entwicklung nicht. (Stichwort: Kerzenlicht)
Bzgl. der Angabe: "write_query wird jetzt gegenüber query bevorzugt" ergibt sich für mich die Frage:
Soll beim Anlegen von Spalten anstelle:
stattdessen nur noch:
verwendet werden oder gilt ist dies abhängig von der:
Datenbankeinrichtung Master/Slave bzw. der eingesetzten MySQL-Version des Hosters?
Die Ursache dieser Meldung entzieht sich meiner Kenntnis. Ich vernehme sie zum ersten mal. Vom PlugIn Schneefall kann sie meines Erachtens nicht sein. Es gibt fachlich bessere IT-ler auf MyBB als meine Wenigkeit welche dazu vllt. etwas inhaltliches zu dieser Meldung aussagen können.
Auf Deutsch übersetzt lautet es:
PHP-Code:
$db->write_query
Eine Slave-Datenbank bei einem MyBB-Forum ist mir zumindest in all den Jahren noch nicht bewusst unter gekommen. Für MyBB-Foren (so zumindest meine Erfahrung) wird eigentlich eine autonome = Master-Datenbank verwendet.
Was tatsächlich in einem Hosting-Account hinsichtlich der Servergegebenheiten gegeben ist, entzieht sich doch faktisch jedem PlugIn-Éntwickler. Daher verstehe ich den eingebrachten Zusammenhang bzgl. Master-/Slave-Datenbank von StefanT bzgl. der PlugIn-Entwicklung nicht. (Stichwort: Kerzenlicht)
Bzgl. der Angabe: "write_query wird jetzt gegenüber query bevorzugt" ergibt sich für mich die Frage:
Soll beim Anlegen von Spalten anstelle:
PHP-Code:
$db->query
PHP-Code:
$db->write_query
Datenbankeinrichtung Master/Slave bzw. der eingesetzten MySQL-Version des Hosters?
(12.12.2023, 22:25)ReStro schrieb: [ -> ]Moin Gerti, das du meine Fragen in deinem Beitrag beantwortet hast stimmt nicht ganz. Ein nicht unbeachtlicher Teil funktioniert ja schon mit einer älteren Version. Sorry wenn ich auf dem Schlauch stehen sollte.Welcher Version?
(12.12.2023, 22:25)ReStro schrieb: [ -> ]Der Schneefall funktioniert auch bei aktiver RIN Shoutbox.Sorry, von der RIN-Shoutbox lese ich jetzt zum ersten mal. Bisher war die DVZ-Shoutbox gemeint.
(12.12.2023, 22:25)ReStro schrieb: [ -> ]Das einzige was mich im Moment stört ist dieser Satz Changes to MyBB core templates on (de)activation are disabledLeider schreibst Du nicht dazu in welchem Zusammenhang die Meldung entsteht.
Die Ursache dieser Meldung entzieht sich meiner Kenntnis. Ich vernehme sie zum ersten mal. Vom PlugIn Schneefall kann sie meines Erachtens nicht sein. Es gibt fachlich bessere IT-ler auf MyBB als meine Wenigkeit welche dazu vllt. etwas inhaltliches zu dieser Meldung aussagen können.
13.12.2023, 11:36
@Gerti
Ich habe gerade die Vers. 2.4.1 in meinem Testboard getestet und bin etwas irritiert.
Nach dem Aktivieren werden weder Settinggroup, Settings, Datenbankeinträge noch Templateänderungen vorgenommen.
Das Plugin steht im Datacache als aktiviert, aber alles andere fehlt.
Eine Deinstallation führt logischerweise zu einem SQL-Error, da zu löschende DB-Spalte nicht vorhanden ist.
Hier funktioniert erstmal gar nichts. Ich habe mir aber den Plugincode auch nicht angesehen.
Ich habe gerade die Vers. 2.4.1 in meinem Testboard getestet und bin etwas irritiert.
Nach dem Aktivieren werden weder Settinggroup, Settings, Datenbankeinträge noch Templateänderungen vorgenommen.
Das Plugin steht im Datacache als aktiviert, aber alles andere fehlt.
Eine Deinstallation führt logischerweise zu einem SQL-Error, da zu löschende DB-Spalte nicht vorhanden ist.
Hier funktioniert erstmal gar nichts. Ich habe mir aber den Plugincode auch nicht angesehen.
13.12.2023, 12:10
(13.12.2023, 11:36)Schnapsnase schrieb: [ -> ]Ich habe gerade die Vers. 2.4.1 in meinem Testboard getestet und bin etwas irritiert.Dich bzgl. PHP zu irritieren ist selten und daher irgendwie erfreulicher wenn es mal gelingt.
Zur Thematik:
Der PHP-Fehler ist mir gesten auch in drei Foren aufgefallen und da er protokolliert wurde konnte ich dies wie nachstehnde erläutert umgehen.
Kurzfristige Abhilfe war:
In der PlugIn-Datei die Zeilen 195 und 254 den SQL-Befehl auskommentieren und wenn alles korrekt abgelaufen ist, die Auskommentierung wieder entfernen. Danach funktioniert alles wieder korrekt.
Mea Culpa für den Aufwand.
Was mir zudem auch aufgefallen ist, das sich das PlugIn in einigen Foren zwar "Aktivieren & Installieren" lies? Danach unter "Aktive PlugIns" immer noch "Aktivieren & Installieren" angezeigt wurde. Ein Refresh der Seite zeigte dann korrekt "Deaktivieren" und "Deinstallieren" an. Danach funktionierte "Deaktivieren/Aktivieren" und "Deinstallieren/Installieren" so wie es sein sollte Die Ursache dieses Anfangsverhaltens habe ich noch nicht ergründen können. Vllt. hat da jemand einen Tipp dazu.
Bin aktuell dabei, soweit meine SQL-Fragen abgeklärt sind um solche Gegebenheiten zu vermeiden bzw. abzufangen, das PlugIn zu modifizieren.
Ich will ja mal endlich das Projekt beenden ...obwohl, es sind bereits anfragen da es auch auf Uhrzeiten und zugleich mit ergänzenden Definitionen für User/Gäste zu erweitern. Zumindest kann ich aktuell beruhigt sagen "So ein umfangreiches PlugIn für einen einfachen Schneefall (in der Realität zu selten) findet sich nirgndwo anders.
13.12.2023, 12:26
(13.12.2023, 09:24)Gerti schrieb: [ -> ]Solche pauschalen Aussagen (Master-Slave Setups?) für junge PlugIn-Entwickler verwirren mehr als das sie Transparenz einbringen.Deswegen habe ich es auf das Wesentliche runtergebrochen: Man verwendet $db->query nicht für Schreibzugriffe, sondern update_query, insert_query, add_column usw.
Wenn es dich interessiert, kannst du dich gerne einmal in MySQL Replication einlesen, aber die Details interessieren dich wahrscheinlich nicht. Der entscheidende Unterschied zu gewöhnlichen Setups ist, dass Lese- und Schreibzugriffe an verschiedene Server gesendet werden.
13.12.2023, 12:39
(13.12.2023, 12:10)Gerti schrieb: [ -> ]Dich bzgl. PHP zu irritieren ist selten und daher irgendwie erfreulicher wenn es mal gelingt.Witzbold
Mein Problem hat mit den Querys erstmal nichts zu tun.
Es werden keine Settings angelegt und auch keine Templates geändert/hinzugefügt.
Das Plugin lässt sich auch nicht Installieren & Aktivieren, sondern nur Aktivieren.
Wie gesagt, habe ich mir deine Install und Aktivierungsroutinen in dieser Pluginversion noch nicht angesehen,
aber ich werde das Problem schon finden, sobald ich Zeit habe.
13.12.2023, 12:44
(13.12.2023, 12:39)Schnapsnase schrieb: [ -> ](13.12.2023, 12:10)Gerti schrieb: [ -> ]Dich bzgl. PHP zu irritieren ist selten und daher irgendwie erfreulicher wenn es mal gelingt.Witzbold
Mein Problem hat mit den Querys erstmal nichts zu tun.
Es werden keine Settings angelegt und auch keine Templates geändert/hinzugefügt.
Das Plugin lässt sich auch nicht Installieren & Aktivieren, sondern nur Aktivieren.
Wie gesagt, habe ich mir deine Install und Aktivierungsroutinen in dieser Pluginversion noch nicht angesehen,
aber ich werde das Problem schon finden, sobald ich Zeit habe.
Das Problem hatte ich auch, habe dann so versucht, Db einträge in phpMayadmin ausgeführt, Pldug in dann deinstalliert , und danach konnte ich es ohne Probleme installieren , warum auch immer
13.12.2023, 13:27
Das Problem entsteht tatsächlich durch diesen Query:
Sobald er auf den Hammer läuft und das tut er in meiner SQL-Version, dann wird das Plugin als installiert aufgeführt, obwohl die Install-Routine gar nicht durchgelaufen ist.
Somit gibt es dann auch einen SQL-Error beim Deinstallationsversuch.
@Gerti
Wenn du das Generieren der Checkbox im UCP im Code weiter oben innerhalb der if-Anweisung unterbringst, dann würde die Checkbox im UCP gar nicht erst angezeigt, falls der Admin im ACP das Deaktivieren für die User verboten hat.
Das wäre m.M. nach schöner, da es dann bei den Usern nicht zu Verwirrung führt.
Dein Code müsste dann in etwa so aussehen:
PHP-Code:
$db->query("ALTER TABLE " . TABLE_PREFIX . "users DROP COLUMN IF EXISTS showsnowfall");
Sobald er auf den Hammer läuft und das tut er in meiner SQL-Version, dann wird das Plugin als installiert aufgeführt, obwohl die Install-Routine gar nicht durchgelaufen ist.
Somit gibt es dann auch einen SQL-Error beim Deinstallationsversuch.
@Gerti
Wenn du das Generieren der Checkbox im UCP im Code weiter oben innerhalb der if-Anweisung unterbringst, dann würde die Checkbox im UCP gar nicht erst angezeigt, falls der Admin im ACP das Deaktivieren für die User verboten hat.
Das wäre m.M. nach schöner, da es dann bei den Usern nicht zu Verwirrung führt.
Dein Code müsste dann in etwa so aussehen:
PHP-Code:
function snowfall_usercp() {
global $db, $mybb, $templates, $user, $lang;
$lang->load('snowfall');
if ($mybb->settings['snow_check_users'] == 1) {
if ($mybb->request_method == "post") {
$update_array = array(
"showsnowfall_stop" => intval($mybb->input['showsnowfall_stop'])
);
$db->update_query("users", $update_array, "uid = '".$user['uid']."'");
}
$snowfallChecked = $mybb->user['showsnowfall_stop'] ? "checked=\"checked\"" : "";
$add_option = '</tr><tr>
<td valign="top" width="1"><input type="checkbox" class="checkbox" name="showsnowfall_stop" id="showsnowfall_stop" value="1" ' . $snowfallChecked . ' /></td>
<td><span class="smalltext"><label for="showsnowfall_stop">' . $lang->show_snowfall_question . '</label></span></td>';
$find = '{$lang->show_codebuttons}</label></span></td>';
$templates->cache['usercp_options'] = str_replace($find, $find . $add_option, $templates->cache['usercp_options']);
} else {
$snowfallChecked = "";
if ($mybb->user['showsnowfall_stop'] != 0) {
$db->update_query("users", array("showsnowfall_stop" => 0), "uid = '".$user['uid']."'");
}
}
}
13.12.2023, 14:03
Zusätzlich Spalte innerhalb bestehender Tabelle anlegen:
Angelegte zusätzlich Spalte innerhalb Tabelle löschen:
PHP-Code:
if (!$db->field_exists("Spaltenname", "Tabelle"))
{
$db->add_column("Tabelle", "Spaltenname", "Spaltendefinitionen");
}
Angelegte zusätzlich Spalte innerhalb Tabelle löschen:
PHP-Code:
if ($db->field_exists('Spaltenname', 'Tabelle'))
{
$db->drop_column('Tabelle', 'Spaltenname');
}
13.12.2023, 15:23
@Schnapsnase
1. showsnowfall > da habe ich soeben eien Lösung, um die Probleme bei alten Versionen abzufangen, umgesetzt.
2. Deine Intension mit der Checkbox ist absolut logisch und hatte ich bereits auch schon im Kopf aber mich noch nicht mit der Umsetzung, dachte nicht so weit wie Du , beschäftigt. *mirandiestirnklatschwieeinfachesdochumsetzbarist
Vielen Dank für den Codeabschnitt welchen ich selbstverständlich sofort mit eingepflegt habe. Funktioniert perfekt. *logischistjaauchvonschnapsnase
@SvePU
Danke für den passenden SQL-Code
Arbeite und teste aktuell zusätzlich an einem neuen Javscript genannt snowfall.js Die bisherige wird bei Aktivierung automatisch gelöscht, damit diesbezüglich keine Altklasten im Forum gegeben sind.
1. showsnowfall > da habe ich soeben eien Lösung, um die Probleme bei alten Versionen abzufangen, umgesetzt.
2. Deine Intension mit der Checkbox ist absolut logisch und hatte ich bereits auch schon im Kopf aber mich noch nicht mit der Umsetzung, dachte nicht so weit wie Du , beschäftigt. *mirandiestirnklatschwieeinfachesdochumsetzbarist
Vielen Dank für den Codeabschnitt welchen ich selbstverständlich sofort mit eingepflegt habe. Funktioniert perfekt. *logischistjaauchvonschnapsnase
@SvePU
Danke für den passenden SQL-Code
Arbeite und teste aktuell zusätzlich an einem neuen Javscript genannt snowfall.js Die bisherige wird bei Aktivierung automatisch gelöscht, damit diesbezüglich keine Altklasten im Forum gegeben sind.