MyBB.de Forum
PlugIn = inaktiv > inkorrekte Anzeige = Installieren & aktivieren - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Anpassungen (https://www.mybb.de/forum/forum-47.html)
+--- Forum: Plugin-Entwicklung (https://www.mybb.de/forum/forum-74.html)
+--- Thema: PlugIn = inaktiv > inkorrekte Anzeige = Installieren & aktivieren (/thread-39014.html)

Seiten: Seiten: 1 2


PlugIn = inaktiv > inkorrekte Anzeige = Installieren & aktivieren - Gerti - 18.12.2023

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.


RE: PlugIn = inaktiv > inkorrekte Anzeige = Installieren & aktivieren - doylecc - 18.12.2023

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.


RE: PlugIn = inaktiv > inkorrekte Anzeige = Installieren & aktivieren - Schnapsnase - 18.12.2023

@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. Wink


RE: PlugIn = inaktiv > inkorrekte Anzeige = Installieren & aktivieren - Gerti - 18.12.2023

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?


RE: PlugIn = inaktiv > inkorrekte Anzeige = Installieren & aktivieren - Schnapsnase - 18.12.2023

(18.12.2023, 14: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. Wink
Dieses Setting eignet sich nicht für die Funktion "_is_installed()".


RE: PlugIn = inaktiv > inkorrekte Anzeige = Installieren & aktivieren - Gerti - 18.12.2023

(18.12.2023, 14: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?


RE: PlugIn = inaktiv > inkorrekte Anzeige = Installieren & aktivieren - SvePu - 18.12.2023

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()


RE: PlugIn = inaktiv > inkorrekte Anzeige = Installieren & aktivieren - Schnapsnase - 18.12.2023

@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.


RE: PlugIn = inaktiv > inkorrekte Anzeige = Installieren & aktivieren - Gerti - 18.12.2023

@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, 15: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, 15: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, 15: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.


RE: PlugIn = inaktiv > inkorrekte Anzeige = Installieren & aktivieren - Schnapsnase - 18.12.2023

(18.12.2023, 16: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, 16: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.