Beiträge: 1.709
Themen: 177
Registriert seit: 08.02.2018
MyBB-Version: 1.8.37
18.12.2023, 11:48
(Dieser Beitrag wurde zuletzt bearbeitet: 18.12.2023, 11:52 von Gerti.)
Hallo,
bin gerade am Testen eines PlugIns
Bei einem installierten und aktiviertem PlugIn wird unter aktive PlugIns Deaktivieren | Deinstalieren korrekt angezeigt.
PlugIn-Einstellungen:
wenn das PlugIn :
a) deaktiv geschaltet wird, wird unter aktive PlugIns inkorrekterweise Installieren & Aktivieren ausgegeben. wenn das PlugIn wieder:
b) aktiv geschaltet wird, wird unter aktive PlugIns wieder korrekt Deaktivieren | Deinstallieren angezeigt.
Auswirkung:
Klicke ich beim Zustand "a" auf Installieren & Aktivieren (weil man denkt es sei ein Fehler und nicht mehr an die ACP-Einstellungen denkt und somit anstelle es in den Einstellungen zu aktivieren), werden die Einstellungen, da ohne vorherige Deinstallation, wieder installiert wird sind dann doppelt gegeben.
Wenn in den Einstellungen das PlugIn deaktiviert wurde, sollte doch "b" in den aktiven PlugIns mit Deaktivieren | Deinstallieren weiterhin gegeben sein. So zumindest bei anderen PlugIns welche in den Einstallungen de-/aktiviert werden können.
Was muss beim PlugIn beachtet werden damit beim aktivieren bzw. deaktivieren in den PlugIn-Einstellungen die korrekte Anzeige Deaktivieren | Deinstallieren im Abschnitt aktive PlugIns weiterhin ausgegeben wird?
Wovon (bzw. von welcher function?) ist die Ausgabe abhängig für die Anzeige welche unter aktive PlugIns ausgegeben wird?
Danke für Tipps und Hinweise.
Sollte ich der Ansicht sein helfen zu können biete ich Hilfe(n) an! ...ich bitte jedoch nicht darum helfen zu dürfen!
Tools ◀ [ Unixzeit ⇔ Realzeit] ♦ [ BOM-Finder] ♦ [ SQL-Prefix-Changer] ♦ [ USV-Rechner] ♦ [ PlugIns]
Beiträge: 2.041
Themen: 10
Registriert seit: 28.06.2007
MyBB-Version: 1.8.x
Da würde ich nochmal überprüfen, welche Bedingung du in der Funktion "pluginname_is_installed()" gesetzt hast. Diese muss ja noch erfüllt sein, wenn du nur deaktivierst und nicht deinstalliert hast.
Beiträge: 2.234
Themen: 33
Registriert seit: 25.05.2018
MyBB-Version: 1.8.38
18.12.2023, 13:17
(Dieser Beitrag wurde zuletzt bearbeitet: 18.12.2023, 13:20 von Schnapsnase.)
@Gerti
Ich denke mal, es handelt sich wieder um das Plugin Snowfall?!
Da in deiner letzten Plugin-Version in den Funktionen "_activate()", "_deaktivate()" nichts sinnvolles getan wird und in der Funktion "_is_installed()"
die if-Anweisung falsch definiert ist, kannst du diese drei Funktionen in deinem Plugin auch ruhigen Gewissens weg lassen.
Beiträge: 1.709
Themen: 177
Registriert seit: 08.02.2018
MyBB-Version: 1.8.37
Danke für die Hilfestellung.
Der Abschnitt function snow_is_installed() lautet:
PHP-Code: function pluginname _is_installed() { global $db, $mybb, $templates, $user, $lang; $lang->load('config_ snowfall');
if(empty($mybb->settings['snow_enable'])) { return false; } return true; }
Wie in anderen PlugIns auch. Noch einen Tipp?
Sollte ich der Ansicht sein helfen zu können biete ich Hilfe(n) an! ...ich bitte jedoch nicht darum helfen zu dürfen!
Tools ◀ [ Unixzeit ⇔ Realzeit] ♦ [ BOM-Finder] ♦ [ SQL-Prefix-Changer] ♦ [ USV-Rechner] ♦ [ PlugIns]
Beiträge: 2.234
Themen: 33
Registriert seit: 25.05.2018
MyBB-Version: 1.8.38
18.12.2023, 13:28
(Dieser Beitrag wurde zuletzt bearbeitet: 18.12.2023, 13:38 von Schnapsnase.)
(18.12.2023, 13:19)Gerti schrieb: Der Abschnitt function snow_is_installed() lautet:
Da liegt auch das Problem.
Jedesmal wenn du in den Plugin-Einstellungen das Plugin abschaltest, wird es als nicht mehr installiert betrachtet.
Das besagt zumindest deine if-Anweisung.
Dieses Setting eignet sich nicht für die Funktion "_is_installed()".
Beiträge: 1.709
Themen: 177
Registriert seit: 08.02.2018
MyBB-Version: 1.8.37
18.12.2023, 14:20
(Dieser Beitrag wurde zuletzt bearbeitet: 18.12.2023, 14:43 von Gerti.)
(18.12.2023, 13:28)Schnapsnase schrieb: Dieses Setting eignet sich nicht für die Funktion "_is_installed()". Ohne Lösungsweg bringt mich diese Aussage nicht weiter.
In den PlugIns z.B.: - export_user von Mr. Brechreiz
> da lautet es gleichfalls: if(empty($mybb->settings['export_user_status']))
- proportal_update von Mr. Brechreiz
> da lautet es gleichfalls: if(empty($mybb->settings['proportalupdate_status']))
- pdfthreads_forums
> da lautet es: if(isset($mybb->settings['pdfthreads_forums']))
ist z.B . 2 x mal der Inhalt identisch (nur PlugIn-Name ändert sich) und somit gleichfalls so gegeben. Da tritt das meinerseits angesprochene Thema nicht auf.
Habe es auch mal komplett 1:1 (mit angepasstem PlugIn-Namen) angepasst
PHP-Code: function snowfall_is_installed() {
global $mybb;
if(empty($mybb->settings['snow_enable'])) { return false; } return true; }
Wie muss function pluginname_is_installed() korrekt definiert werden?
Sollte ich der Ansicht sein helfen zu können biete ich Hilfe(n) an! ...ich bitte jedoch nicht darum helfen zu dürfen!
Tools ◀ [ Unixzeit ⇔ Realzeit] ♦ [ BOM-Finder] ♦ [ SQL-Prefix-Changer] ♦ [ USV-Rechner] ♦ [ PlugIns]
Beiträge: 1.401
Themen: 25
Registriert seit: 11.10.2013
MyBB-Version: 1.8.*
Probiere mal bitte:
PHP-Code: function snow_is_installed() { global $mybb; if (isset($mybb->settings['snow_enable'])) { return true; } return false; }
Wichtig dabei ist, dass du die Settings erst bei _uninstall() entfernst und nicht bei _deactivate()
Beiträge: 2.234
Themen: 33
Registriert seit: 25.05.2018
MyBB-Version: 1.8.38
18.12.2023, 14:31
(Dieser Beitrag wurde zuletzt bearbeitet: 18.12.2023, 14:48 von Schnapsnase.)
@Gerti
Ich gehe davon aus, dass du deine if-Anweisung verstehst und auch weißt, was dieses Setting tut.
Daher hatte ich dir gesagt, dass es für diese Funktion ungeeignet ist.
Warum sollte das "Abschalten" des Schneesturms entscheidend dafür sein, dass das Plugin als installiert/deinstalliert geführt wird?? Die Probleme merkst du ja nun selbst.
Benutze für diese Funktion die Existenz eines DB-Feldes bzw. überprüfe auf dieses. Das macht mehr Sinn.
Gleichwohl hatte ich dir bereits angedeutet, dass auch die anderen Funktionen activate/deaktivate in diesem Plugin keinen Sinn ergeben, da sie nichts "Wertvolles" tun und durchaus im Code weggelassen werden können.
Beiträge: 1.709
Themen: 177
Registriert seit: 08.02.2018
MyBB-Version: 1.8.37
18.12.2023, 15:57
(Dieser Beitrag wurde zuletzt bearbeitet: 18.12.2023, 16:14 von Gerti.)
@SvePu
mit
PHP-Code: if(empty($mybb->settings['snow_enable']))
bleibt der unerwünschte Status anhalten bestehen. Mit
PHP-Code: if(empty($mybb->settings['snow_enable']))
habe ich zumindest den Eingangs geschilderte Sachstand
.
(18.12.2023, 14:31)Schnapsnase schrieb: @Gerti
Ich gehe davon aus, dass du deine if-Anweisung verstehst und auch weißt, was dieses Setting tut. Bin leider noch nicht allwissend. Mea Culpa dafür.
(18.12.2023, 14:31)Schnapsnase schrieb: Benutze für diese Funktion die Existenz eines DB-Feldes bzw. überprüfe auf dieses. Das macht mehr Sinn. Danke für den Tipp. Habe es versucht mit
PHP-Code: if($db->field_exists('showsnowfall_stop', "users"))
was jedoch keinen Erfolg erbrachte.
(18.12.2023, 14:31)Schnapsnase schrieb: Gleichwohl hatte ich dir bereits angedeutet, dass auch die anderen Funktionen activate/deaktivate in diesem Plugin keinen Sinn ergeben, da sie nichts "Wertvolles" tun und durchaus im Code weggelassen werden können. Wo steht dieser Hinweis?
Aktuell ist:
PHP-Code: function snowfall_activate() { snowfall_settings(); }
und hat somit mbMn keine funktionsrelevante Auswirkung.
PHP-Code: function snowfall_deactivate() { global $db, $mybb, $lang, $cache; $lang->load("config_snowfall"); if($mybb->settings['snow_enable'] != 0) { $db->update_query('settings', array('value' => '0'), "name='snow_enable'"); } }
gegeben. Dies hat mbMnnichts mit der geposteten Fehlfunktion gemein.
Nach dem näheren Hinsehen auf den Vorschlag von SvePU habe ich die Ursache für die Fehlfunktion gefunden.
Inkorrekt war:
PHP-Code: function snowfall_is_installed() { global $mybb; if(isset($mybb->settings['snow_enable'])) { return false; } return true; }
Korrekt muss es lauten:
PHP-Code: function snowfall_is_installed() { global $mybb; if(isset($mybb->settings['snow_enable'])) { return true; } return false; }
Die Werte true und false waren vertauscht. Nach der Korrektur funktioniert es wie es soll.
Jezt funktioniert es auch mit: PHP-Code: if(isset($mybb->settings['snow_enable']))
Ergo waren alle mit Helfer function snowfall_is_installed() { auf der richtigen Fährte .
Werde jetzt mal ausgiebig austesten und wenn doch noch Probelme bestehen sollten, melde ich mich nochmals.
Zunächst aber Danke an SvePu für den Hinweis sowie an alle weiteren Involvierten für Ihr eingebrachtes Engagement.
Sollte ich der Ansicht sein helfen zu können biete ich Hilfe(n) an! ...ich bitte jedoch nicht darum helfen zu dürfen!
Tools ◀ [ Unixzeit ⇔ Realzeit] ♦ [ BOM-Finder] ♦ [ SQL-Prefix-Changer] ♦ [ USV-Rechner] ♦ [ PlugIns]
Beiträge: 2.234
Themen: 33
Registriert seit: 25.05.2018
MyBB-Version: 1.8.38
18.12.2023, 17:09
(Dieser Beitrag wurde zuletzt bearbeitet: 18.12.2023, 17:58 von Schnapsnase.)
(18.12.2023, 15:57)Gerti schrieb: Wo steht dieser Hinweis?
Aktuell ist:
PHP-Code: function snowfall_activate() { snowfall_settings(); }
und hat somit mbMn keine funktionsrelevante Auswirkung.
PHP-Code: function snowfall_deactivate() { global $db, $mybb, $lang, $cache; $lang->load("config_snowfall"); if($mybb->settings['snow_enable'] != 0) { $db->update_query('settings', array('value' => '0'), "name='snow_enable'"); } }
gegeben. Dies hat mbMnnichts mit der geposteten Fehlfunktion gemein.
Diese, meine Argumente waren auch nicht auf die Fehlfunktion bezogen.
Ich habe lediglich angedeutet, dass der Inhalt der Funktionen keinen Sinn macht.
(18.12.2023, 15:57)Gerti schrieb: Nach dem näheren Hinsehen auf den Vorschlag von SvePU habe ich die Ursache für die Fehlfunktion gefunden....
Die Werte true und false waren vertauscht. Nach der Korrektur funktioniert es wie es soll.
Die Sinnhaftigkeit dieser Prüfung ist für mich trotzdem nicht gegeben.
Da könnte man auch jedes andere Setting auf Vorhandensein oder "0" prüfen und käme zum gleichen Ziel.
Wenn man die Prüfung auf die Datenbank bezieht, würde man im Extremfall wenigstens einem SQL-Error entgehen.
Das wäre für mich logischer.
|