Seite 1 von 12

[3.3][CDB] Extension Manager Plus (verbesserte Erweiterungsverwaltung)

Verfasst: 08.06.2022 21:32
von LukeWCS
Name der Erweiterung:

Extension Manager Plus (EMP)

Autor:

LukeWCS (EMP)
chris1278 (ExtOnOff)

Aktuelle Version der Erweiterung:

3.0.0

Voraussetzungen:
  • phpBB 3.3.8 - 3.3.x
  • PHP 7.4.0 - 8.4.x
Beschreibung der Erweiterung:

Ergänzt die Erweiterungs-Verwaltung um die Möglichkeit, alle installierten Erweiterungen auf einmal deaktivieren und reaktivieren zu können. Eine individuelle Auswahl kann über Checkboxen erfolgen. Außerdem können Reihenfolge-Gruppen und Abhängigkeiten definiert oder Erweiterungen ignoriert werden. Die Versionsprüfung wird blockweise ausgeführt und bietet detaillierte Informationen. In der Erweiterungs-Verwaltung werden zusätzliche Informationen angezeigt.

Vorgeschichte
Das theoretische Konzept für EMP entstand zu phpBB 3.1 Zeiten. Es war angedacht eine Erweiterung zu entwickeln, mit der man mittels Kontrollkästchen gleich mehrere Erweiterungen deaktivieren und aktivieren kann. Bis zum Zeitpunkt meiner Mitarbeit an ExtOnOff (von chris1278) fehlte mir jedoch das nötige Wissen. Durch die Entwicklung von ExtOnOff 2 konnte ich mir einen Teil der fehlenden Kenntnisse aneignen und mein Vorhaben umsetzen. Bedingt durch die Erfahrung mit ExtOnOff habe ich dabei mein ursprüngliches Konzept noch um die Möglichkeit erweitert, dass man bei Erweiterungen auch eine Reihenfolge für die Aktivierung definieren kann um Abhängigkeits-Probleme vermeiden zu können. Und das man umgekehrt Erweiterungen auch ignorieren kann.
Funktionen und Eigenschaften
Die neuen Funktionen und Eigenschaften von EMP wurden so implementiert, dass das sichtbare original Layout des Extension Managers erhalten blieb. Somit ist keine Umgewöhnung notwendig, da die bisherigen Funktionen wie gewohnt zur Verfügung stehen.
  • Erweiterungen auswählen und schalten:
    • Alle installierten Erweiterungen können auf einmal deaktiviert/reaktiviert werden.
    • Eine individuelle Auswahl mittels Kontrollkästchen ist möglich. Per Option kann festgelegt werden, ob standardmässig alle Kontrollkästchen gesetzt oder nicht gesetzt sein sollen.
    • Optional kann der Zustand aller Kontrollkästchen auch gespeichert werden. Das ist insbesondere dann hilfreich, wenn man im Normalbetrieb einige deaktivierte Erweiterungen hat, die man nur gelegentlich aktiviert, denn in diesem Fall kann man sehr einfach alle Erweiterungen deaktivieren und dann exakt nur diese wieder reaktivieren, die auch vorher aktiviert waren.
    • Für die Aktivierung und Deaktivierung der Erweiterungen können Reihenfolge-Gruppen definiert werden. Das ist relevant bei Erweiterungen, von denen andere Erweiterungen abhängig sind um ggf. Fehlermeldungen zu vermeiden.
    • Für die Selektion von Erweiterungen, also Auswählen oder Abwählen, können Abhängigkeiten definiert werden. So werden dann z.B. bei der Auswahl einer aktivierten Erweiterung, von der andere Erweiterungen abhängig sind, auch automatisch alle abhängigen Erweiterungen für die Deaktivierung ausgewählt.
    • Erweiterungen können auch ignoriert werden. Solche Erweiterungen können dann nicht mehr ausgewählt werden und es werden dafür auch keine neuen Migrationen ermittelt und angezeigt. Hilfreich bei Erweiterungen die nicht nach den Richtlinien gestaltet wurden und Probleme mit EMP verursachen.
  • Verbesserungen bei der Versionsprüfung:
    • :new: 3.0.0: Die Versionsprüfung wird blockweise ausgeführt und bietet eine Fortschrittsanzeige die sowohl die ungefähre Position im aktuellen Block anzeigt, als auch die Anzahl der Erweiterungen die bereits geprüft wurden. Durch die blockweise Verarbeitung kann bei sehr vielen Erweiterungen effektiv verhindert werden, dass die Versionsprüfung wegen Zeit-Überschreitung bei PHP oder Datenbank unvollständig ausgeführt wird. In den Einstellungen kann bei Bedarf die maximale Dauer eines einzelnen Blocks angepasst werden.
    • Bei den Funktionen "Alle Versionen erneut prüfen" und "Details" werden die Informationen von ermittelten Updates in der Datenbank gespeichert und die neuen Versionen dauerhaft bei den betreffenden Erweiterungen angezeigt. Wird eine Erweiterung aktualisiert, wird der zugehörige Update-Indikator in der Liste automatisch entfernt. Mit dieser Funktionalität wird das Manko von phpBB behoben, dass Informationen über Updates verloren gehen, sobald der Cache gelöscht wird. Diese Funktionalität ist vor allem dann hilfreich, wenn es mehrere Erweiterungen mit Updates gibt.
    • Konnte die Versionsprüfung einer Ext nicht erfolgreich ausgeführt werden, wird diese Information ebenfalls dauerhaft gespeichert und entsprechend pro Erweiterung signalisiert. Das funktioniert sowohl bei "Alle Versionen erneut prüfen", als auch bei "Details".
    • :new: 3.0.0: Bei Erweiterungen die während einer Versionsprüfung als aktuell erkannt wurden, wird die Version dauerhaft grün dargestellt.
  • Zusätzliche Informationen und Eigenschaften:
    • Oberhalb der Erweiterungen-Liste wird eine kleine Tabelle mit folgenden Informationen angezeigt:
      • Anzahl der verfügbaren Erweiterungen. Dahinter in Klammern die Anzahl ungültiger Erweiterungen, sofern zutreffend.
      • Anzahl der Erweiterungen, die eine Versionsprüfung bieten.
      • Datum der letzten Versionsprüfung. Dahinter in Klammern die Anzahl Fehler, sofern zutreffend. :new: 3.0.0: Ausserdem die Netto-Dauer der letzten Versionsprüfung.
      • Anzahl der verfügbaren Updates.
    • Anzahl der Erweiterungen bei den jeweilgen Bereichen:
      • Anzahl der aktivierten Erweiterungen.
      • Anzahl der deaktivierten Erweiterungen.
      • Anzahl der nicht installierten Erweiterungen.
    • Spalte "Aktuelle Version":
      • In Klammern die verfügbare neue Version.
      • :new: 3.0.0: Icon (oranges Fragezeichen) mit Tooltip bei noch nicht ausgeführter Versionsprüfung.
      • Icon (oranges Warndreieck) mit Tooltip für Fehler bei der Versionsprüfung.
      • Icon (gebrochene Kette) mit Tooltip für Erweiterungen die keine Versionsprüfung bieten.
    • Spalte "Vorgänge":
      • :new: 3.1.0: Ein Link zum primären Einstellungsmodul (sofern vorhanden) der Erweiterung. Kann optional deaktiviert werden.
    • Neue Spalten:
      • :new: 3.0.0: Information: In einer neuen Spalte wird pro Erweiterung signalisiert, ob es sich um eine offiziell validierte Erweiterung handelt.
      • Information: Anzahl der neuen Migrationsdateien pro Erweiterung in einer eigenen Spalte bei deaktivierten und bei nicht installierten Erweiterungen, sofern der entsprechende Experten-Schalter aktiviert ist. Relevant für Erweiterungen Entwickler.
      • Eigenschaft: Neue Spalte zum Auswählen der Erweiterungen.
      • Eigenschaft: Neue Spalte für Reihenfolge und Abhängigkeit.
      • Eigenschaft: Neue Spalte für Ignorieren.
    • Zusätzliche Informationen auf der Details-Seite einer Erweiterung:
      • :new: 3.0.0: Zugehörige Seite der phpBB-Erweiterungsdatenbank, sofern eine Erweiterung aus der CDB stammt.
      • :new: 3.0.0: Link zur Versionsdatei, sofern der entsprechende Experten-Schalter aktiviert ist. Relevant für Erweiterungen Entwickler.
  • Weitere Verbesserungen:
    • Unterteilt die deaktivierten Erweiterungen in deaktivierte und nicht-installierte Erweiterungen. (bietet phpBB ab 3.3.14 nativ)
    • Beim mehrfachen Schalten kann man in den Einstellungen selbst entscheiden, ob ein Log Eintrag erzeugt werden soll.
    • Rückfragen vor dem mehrfachen Schalten von Erweiterungen können optional deaktiviert werden.
    • Positive Meldungen können optional automatisch bestätigt werden.
    • Die Anzeige der Anleitungen am Ende der Erweiterungen-Liste kann deaktiviert werden.
  • Sonstiges:
    • Für die Einstellungen von EMP wird ein separates ACP Modul verwendet, welches sowohl die Einstellung "Immer auf instabile Entwicklungs-Versionen prüfen:" des Standard Extension Managers enthält, als auch alle zusätzlichen Einstelllungen von EMP. Einstellungen von EMP sind mit dem Zusatz "(Plus)" gekennzeichnet. Das Einstellungs-Modul ist in der linken Navigationsleiste unter "Erweiterungen verwalten - Einstellungen" zu finden.
    • Die Responsive Ansicht wird von EMP ebenso unterstützt wie beim originalen Extension Manager.
    • Da die Erweiterungen mit den ExtMgr Funktionen von phpBB geschaltet werden, wird auch eine vorhandene ext.php ausgeführt, in der Erweiterungs-Autoren eventuell zusätzliche Aktionen bei den Funktionen "Aktivieren" und "Deaktivieren" definiert haben. Bei Tools die Erweiterungen lediglich per MySQL Code schalten, wie z.B. beim STK, ist dies nicht der Fall.
    • Unterstützt ab phpBB 3.3.0 die erweiterte Fehlermeldung-Rückgabefunktion von is_enableable() in ext.php. Dadurch wird es möglich, dass EMP alle Fehlermeldungen die während der Aktivierung seitens ext.php erzeugt werden, entgegennehmen kann und in der Bestätigungsmeldung dann gesammelt alle Fehlermeldungen der einzelnen Erweiterungen anzeigen kann.
    • :new: 3.0.0: Wenn eine Erweiterung noch die veraltete trigger_error() Methode in ext.php verwendet um eine Fehlermeldung anzuzeigen, dann unterdrückt EMP diese Methode und sammelt ebenfalls deren erzeugte Fehlermeldung, um diese dann in der Bestätigungsmeldung anzeigen zu können. Somit kann eine EMP Aktion nicht mehr durch trigger_error() unterbrochen werden.
    • Kompatibel mit Toggle Control (Schalter-Stil zentral festlegen)
Beschränkungen und Grenzen
  1. Erweiterungen mit Migration: Erweiterungen bei denen im Zuge von Updates neue Migrationsdateien vorliegen, dürfen mit EMP per Standard nicht aktiviert werden, dieser Vorgang wird gesperrt. Der Grund dafür ist, dass bereits während der Entwicklung von ExtOnOff 2.0 Probleme in diesem Bereich festgestellt wurden: Bei einem von uns konnte eine Erweiterung mit neuen Migrationsdateien nicht beim ersten Durchlauf aktiviert werden, dies gelang erst beim zweiten Durchlauf. Grundsätzlich ist zu sagen, dass die Ausführung neuer Migrationen bei einer Erweiterung immer ein heikler Prozess ist, bei dem auch mal was nicht klappen kann. Wer Erweiterungen mit neuen Migrationsdateien mittels EMP aktivieren will, muss also die entsprechende Option explizit einschalten und sich der potentiellen Problematik bewusst sein. Diese Option sollten nur Entwickler nutzen.
  2. Problematische Erweiterungen: Manche Erweiterungen können unter Umständen Probleme verursachen, wenn sie mittels EMP aktiviert werden. Nach meiner Beobachtung kann das primär bei Erweiterungen vorkommen, die nicht in der CDB angeboten werden und somit den Autoren die Erfahrung mit Validierungen fehlt. Solche Erweiterungen sind meistens nicht nach den Richtlinien gestaltet worden und/oder es wurden Techniken verwendet, die nicht mehr zeitgemäß sind, zum Beispiel Techniken aus der Mod-Ära. Sollten Probleme bei der Aktivierung festgestellt werden die über ein simples Reihenfolge-Problem hinausgehen, können solche Erweiterungen mittels Ignorieren-Funktion ausgeschlossen werden.
  3. Maximale Ausführungszeit: EMP ist an die maximale Ausführungszeit von PHP gebunden, die bei jedem Hoster individuell festgelegt wird. Diese beträgt normalerweise 30 Sekunden. Es gibt jedoch Ausnahmen, sowohl nach unten als auch nach oben. Wenn extrem viele Erweiterungen geschaltet werden müssen und dabei durch die Ausführung von zusätzlichen Aktionen mittels ext.php die maximale Ausführungszeit überschritten werden sollte, dann kann EMP seine Arbeit nicht vollständig beenden. Dabei könnte dann ein Teil der Erweiterungen nicht geschaltet werden. Das ist allerdings ein Extremfall der bisher noch nicht aufgetreten ist.
Bilder:

Screenshot von 3.0.0: [ externes Bild ]

Enthaltene Sprachen:
  • de
  • de_x_sie
  • en
Download der Erweiterung:

Customisation Database
GitHub Releases (mit Changelog)
Versionen aus dem genannten GitHub Release-Bereich sind für das Live-Forum gedacht. Dagegen dürfen Versionen aus dem Entwickler-Bereich nicht in einem Live-Forum installiert werden! Im Entwickler-Bereich können sich laufend Dateien und Strukturen ändern, das liegt in der Natur der Sache. Wer Versionen aus dem Entwickler-Bereich vorab testen will, kann (und sollte) diese in einem Test-Forum installieren.
Danke:

Ich bedanke mich für die Beteiligung am geschlossenen Betatest 1.0.0 für Rückmeldungen, konstruktive Kritik und Verbesserungsvorschläge:

Kirk
Scanialady
Mike-on-Tour
chris1278

Re: [3.3] [3.2] Extension Manager Plus

Verfasst: 09.06.2022 15:12
von BNa
Danke an euch Beide. Absolut der Hammer. Tolle Arbeit :grin:

Re: [3.3] [3.2] Extension Manager Plus

Verfasst: 09.06.2022 16:34
von chris1278
Wobei von mir nur die Basis Funktion kam. Den Rest hat Luke geschrieben.

Re: [3.3] [3.2] Extension Manager Plus

Verfasst: 09.06.2022 18:45
von LukeWCS
@BNa

Merci! :)

Schon bei ExtOnOff 2.0.0 habe ich gemerkt, warum die Ext Coder bisher die Finger davon gelassen haben, Exts per ExtMgr Funktionen auch wieder zu aktivieren. Das ist alles andere als trivial. Deaktivieren ist kein Problem, dass konnten vor EMP und ExtOnOff schon 2 andere Exts, von denen ich weiss. Aber "spassig" wird das Ganze erst, wenn man auch wieder einschalten will. :wink:

Primäre Spassbremsen:
  1. Exts mit Abhängigkeiten zu anderen Exts.
  2. Exts mit eigener Fehlerbehandlung beim Aktivieren.
  3. Exts mit defekter Migration.
Mit 1 und 2 kann EMP bereits umgehen. Die Lösung für 3 ist in Arbeit.

Re: [3.3] [3.2] Extension Manager Plus

Verfasst: 09.06.2022 20:55
von oxpus
LukeWCS hat geschrieben: 09.06.2022 18:45
  1. ...
  2. ...
  3. Exts mit defekter Migration.
Mit 1 und 2 kann EMP bereits umgehen. Die Lösung für 3 ist in Arbeit.
Bei Punkt 3 bin ich schon sehr gespannt.
Ist aber jedenfalls jetzt schon ein echtes Highlight am Extension-Himmel.

Re: [3.3] [3.2] Extension Manager Plus

Verfasst: 10.06.2022 18:04
von LukeWCS
@oxpus
Punkt 3 ist in trockenen Tüchern. Damit kann eine Ext mit defekter Migration EMP nicht mehr aus dem Konzept bringen. Sollte bei einer Ext eine defekte Migration festgestellt werden, dann macht EMP brav mit den anderen Exts weiter und gibt zum Schluss eine Meldung aus, in der gesammelt alle Exts aufgeführt werden die nicht geschaltet werden konnten mit Angabe der jeweiligen original phpBB Fehlermeldung dazu.

Re: [3.3] [3.2] Extension Manager Plus

Verfasst: 12.06.2022 13:50
von LukeWCS
EMP 1.0.1 veröffentlicht.

Re: [3.3] [3.2] Extension Manager Plus

Verfasst: 12.06.2022 15:13
von oxpus
Getestet und keine Fehler gefunden.

Die Extension ist clever aufgebaut und integriert sich nahtlos ins ACP.
Kompliment.

Auch die Methode, fehlerhafte Migrationen abzufangen, hätte ich auf diese Weise nicht wirklich gefunden.
Ich muss echt weiter ins phpBB eintauchen.
Da warten wohl noch viele "Schätze" auf mich. :o

Re: [3.3] [3.2] Extension Manager Plus

Verfasst: 12.06.2022 20:56
von LukeWCS
@oxpus

Danke für die Rückmeldung.

Diese Form der Integration schwebte mir auch von Anfang an vor. Wobei das unter der Haube tatsächlich ein kompletter Ersatz der Seite ist. phpBB liefert quasi nur noch die Ext Arrays, den Rest macht EMP. Ich hätte die Seite also auch radikal umbauen können, ich wollte jedoch das grundsätzliche Layout beibehalten. An diese Oberfläche ist man immerhin seit rund 8 Jahren gewöhnt.

Wegen Migration, das hat mich allerdings Kopfschmerzen gekostet, weil ich zuvor mit viel Ausdauer immer an den falschen Stellen im phpBB Source nach einer Lösung gesucht hatte. :lol: Das ist wie vieles bei EMP alleine mit der API Doku nicht lösbar gewesen. Wenn es ans Eingemachte geht, ist eine Schnitzeljagd im phpBB Source zwingend erforderlich.

Re: [3.3] [3.2] Extension Manager Plus

Verfasst: 12.06.2022 21:34
von oxpus
LukeWCS hat geschrieben: 12.06.2022 20:56[...]Wenn es ans Eingemachte geht, ist eine Schnitzeljagd im phpBB Source zwingend erforderlich.
Oh ja, das kenne ich nur zu gut. :roll: