Plugin verlangt JFactory::getApplication()->isAdmin bei der Ausführung eines CLI-Scripts

  • Hallo zusammen,


    ich habe ein kleines Anliegen.


    Ich habe ein CLI-Script geschrieben, welches Artikel erstellt oder deren Werte ändert. Dies geschieht unter anderem durch JTable::store.


    Nun habe ich ein Plugin, welches im Content-Bereich Thumbnails erstellt. Dieses Plugin fährt mir bei der Ausführung des CLI "dazwischen" und wirft:


    Zitat

    PHP Fatal error: Call to undefined method MyCLIScript::isAdmin() in /var/www/web1/htdocs/plugins/content/mavikthumbnails/mavikthumbnails.php on line 89



    In der betreffenden Zeile steht:


    Code
    if (\JFactory::getApplication()->isAdmin()) {
    
    
                return false;
    
    
            }



    Okay, also kann ich in meinem CLI-Script einfach eine Funktion mit dem Namen "isAdmin" erstellen und die Rückgabe immer auf "true" setzen - das funktioniert auch, der Fehler taucht dann nicht mehr auf.


    Aber "sauber" erscheint mir dies nicht. Gibt es da einen saubereren Weg, dem Plugin mitzuteilen, ob das Script mit Admin-Rechten ausgeführt wird oder nicht?


    LG und ein schönes WE :)

  • Hallo,


    vielen Dank für die Antwort. Mir ist schon klar, was isAdmin macht - allerdings hilft mir das in dem von mir genannten Zusammenhang nicht weiter (oder aber ich habe es übersehen, dann bitte ich um eine kurze Info und streue Asche auf mein Haupt ;) ).


    Ich habe ja eine Anwendung, die MyCLIScript::isAdmin() nicht erbt. Daher wird


    Code
    $app = JFactory::getApplication();
    $app->isAdmin();


    immer einen Fehler auswerfen, wenn ich es von der CLI aus aufrufe.

  • isAdmin ist doch nur eine Prüfung, ob im Moment Backend ausgeführt wird. Dort soll das Plugin nix tun, die Arbeit abbrechen, im Gegensatz zum Prontend (isSite), wo es seine Arbeit fortsetzen soll, weils nur da Sinn macht, Thumbnails zu erstellen oder so.


    Hat mit Rechten gar nix zu tun, außer nerdigem Gedankenumweg, dass natürlich nur jemand ins Backend kommt, der entsprechende Rechte hat. Aber bei dem tut ja das Plugin auch nix. Dafür aber bei Jedwedem im Frontend ;)


    Also seh ich auch kein Problem mit der im ersten Post genannten Lösung

    in meinem CLI-Script einfach eine Funktion mit dem Namen "isAdmin" erstellen und die Rückgabe immer auf "true" setzen


    Kannst die Methode auch leer lassen, denke ich mal(?)


    Die ganze $app auf Site zu setzen birgt u.U., weiß nicht, sitz nicht davor, auch wieder unvorhersehbare Folgen. Grundlegende Frage ist ja, ob Plugins überhaupt ausgeführt werden sollen und welche. Welchen Sinn macht ein 'onContentPrepare' in deinem Kontext überhaupt...? usw.
    Wenn nun eins Wert darauf legt explizit nur im Backend ausgeführt zu werden... Was dann?

  • Ja, ich kann die Methode auch leer lassen.


    Mir geht es nur darum, dass ich natürlich gerne der Community irgendwann meine Komponente auch zur Verfügung stellen möchte. Schließlich habe ich ja nun auch von der Community profitiert. Wenn ich die Komponente aber zur Verfügung stelle, dann wäre es natürlich schön, wenn ich einen "global gültigen" Weg für das CLI-Script nutzen könnte, anstatt auf die Bedürfnisse etwaiger Plugins eingehen zu müssen.


    Daher war meine Idee, ob man die Funktion, dessen Fehlen bemängelt wurde, ggf. erben könnte - vielleicht haben ja ganz andere Plugins, die ich in meiner Umgebung nicht einsetze, auch so ihre Ideen, welche Funktionen sie nun gerne nutzen möchten :-).