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

In diesem Forum können Extension-Autoren ihre Extensions vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Benutzeravatar
Mike-on-Tour
Supporter
Supporter
Beiträge: 1075
Registriert: 13.01.2020 21:09
Kontaktdaten:

Re: [3.3] [3.2] Extension Manager Plus

Beitrag von Mike-on-Tour »

Version 1.0.1 ausprobiert, läuft :thumbsup:
Danke für die tolle Ext, spart jede Menge Zeit.
Benutzeravatar
BNa
Valued Contributor
Beiträge: 3169
Registriert: 12.04.2010 23:51
Kontaktdaten:

Re: [3.3] [3.2] Extension Manager Plus

Beitrag von BNa »

LukeWCS hat geschrieben: 12.06.2022 20:56Schnitzeljagd
...war erfolgreich. Vielen Dank fürs Update :geek: :D
Benutzeravatar
IMC
Mitglied
Beiträge: 541
Registriert: 25.11.2018 20:32
Wohnort: Lüneburg
Kontaktdaten:

Re: [3.3] [3.2] Extension Manager Plus

Beitrag von IMC »

Mike-on-Tour hat geschrieben: 13.06.2022 18:19 Version 1.0.1 ausprobiert, läuft :thumbsup:
Danke für die tolle Ext, spart jede Menge Zeit.
Dem kann ich mich nur anschließen.

Ich habe die Diskussion auch zu Anlass genommen mich mit der Funktion is_enableable() auseinander zusetzen. Ich werde in Zukunft meine Fehlertexte vom phpBB Kern ausgeben lassen und verabschiede mich von trigger_error().
Gruß, Thorsten
Benutzeravatar
LukeWCS
Supporter
Supporter
Beiträge: 2114
Registriert: 15.12.2014 10:19
Kontaktdaten:

Re: [3.3] [3.2] Extension Manager Plus

Beitrag von LukeWCS »

@Mike
@BNa
@IMC

Danke für eure Rückmeldungen. :)
IMC hat geschrieben: 13.06.2022 21:11 Ich habe die Diskussion auch zu Anlass genommen mich mit der Funktion is_enableable() auseinander zusetzen. Ich werde in Zukunft meine Fehlertexte vom phpBB Kern ausgeben lassen und verabschiede mich von trigger_error().
IMC, eine Sache, nicht das du mich da missverstanden hast. Eigene Fehlerbehandlung in ext.php ist nicht per se schlecht. Bei deinem "Image upload use ImageMagick" ist es ja absolut sinnvoll, den Admin auf ein fehlendes Imagick Modul hinzuweisen. In dem Fall fängt EMP das auch ab und "verpackt" deine Meldung in ein Info-Gerüst bestehend aus den zusätzlichen Anzeigen von Anzeigename und technischer Namen der Ext, damit der Admin präzise erfährt, welche Ext den Vorgang unterbrochen hat und mit welcher Meldung. Was allerdings auch nur zum tragen kommt, wenn die Ext schon installiert ist und beim erneuten Aktivieren eine Voraussetzung nicht mehr passen würde. Von daher ist das Problem eher nicht gegeben.

Davon abgesehen, klingt interessant was du vorhast. Wie genau willst das realisieren? Ich selbst nutze zwar kein trigger_error in ext.php, aber sowas lässt sich ja nicht immer vermeiden.
Möge das Backup mit dir sein. Immer.

Erweiterungen - Infos zur artgerechten Haltung
phpBB Ext Check - Analysesystem für phpBB Erweiterungen (Entwickler Werkzeug)
Benutzeravatar
IMC
Mitglied
Beiträge: 541
Registriert: 25.11.2018 20:32
Wohnort: Lüneburg
Kontaktdaten:

Re: [3.3] [3.2] Extension Manager Plus

Beitrag von IMC »

Die Fehlerbehandlung mache ich natürlich immer noch in der ext.php nur anders.

Ich füge hier mal den Code ein den ich künftig verwende. So war es sicher auch von den Entwicklern von phpBB vorgesehen. Die Fehlerausgabe ist auch Benutzerfreundlicher als trigger_error(). Habe ich allerdings noch nicht mit EMP getestet.

Code: Alles auswählen

public function is_enableable()
{
	$language = $this->container->get('language');
	$language->add_lang('imgupload_acp', 'imcger/imgupload');
	$error_message = [];

	/* Imagick library installed? */
	if (!class_exists('Imagick'))
	{
		$error_message += ['error1' => $language->lang('IMCGER_IM_REQUIRE_IMAGICK'),];
	}

	/* phpBB version greater equal 3.2.4 and less then 4.0 */
	$config = $this->container->get('config');
	if (phpbb_version_compare($config['version'], '3.2.4', '<') || phpbb_version_compare($config['version'], '4.0.0', '>='))
	{
		$error_message += ['error2' => $language->lang('IMCGER_IM_REQUIRE_PHPBB'),];
	}

	/* php version equal or greater 7.0.0 and less 8.2 */
	if (version_compare(PHP_VERSION, '7.0.0', '<') || version_compare(PHP_VERSION, '8.2', '>='))
	{
		$error_message += ['error3' => $language->lang('IMCGER_IM_REQUIRE_PHP'),];
	}

	return empty($error_message) ? true : $error_message;
}
Gruß, Thorsten
Benutzeravatar
LukeWCS
Supporter
Supporter
Beiträge: 2114
Registriert: 15.12.2014 10:19
Kontaktdaten:

Re: [3.3] [3.2] Extension Manager Plus

Beitrag von LukeWCS »

Moin IMC

Das ist sehr interessant! Demnach könnte man nicht nur ein explizites Bool zurückgeben, sondern auch ein assoziatives Array, welches in logischer Konsequenz als explizites false gewertet würde. Okay, also gibt es demnach bereits einen Mechanismus für Fehlermeldungen in ext.php. Davon steht im entsprechenden Abschnitt der Doku jedoch keine Silbe. :-? Dabei wäre gerade das eine sehr wichtige Info für Ext Coder was ext.php betrifft.

Wenn das tatsächlich so funktioniert wie ich denke, werde ich das zügig in EMP nachrüsten.
Möge das Backup mit dir sein. Immer.

Erweiterungen - Infos zur artgerechten Haltung
phpBB Ext Check - Analysesystem für phpBB Erweiterungen (Entwickler Werkzeug)
Benutzeravatar
chris1278
Mitglied
Beiträge: 3532
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

Re: [3.3] [3.2] Extension Manager Plus

Beitrag von chris1278 »

Die version ähnelt der welche auch vom php skeleton fürs acp controller verwendet wird.
Benutzeravatar
LukeWCS
Supporter
Supporter
Beiträge: 2114
Registriert: 15.12.2014 10:19
Kontaktdaten:

Re: [3.3] [3.2] Extension Manager Plus

Beitrag von LukeWCS »

Danke für den Hinweis Chris. Ja, dort werden die Sprachvariablen zwar anders aufbereitet, aber das Prinzip ist das gleiche.

@IMC
Ich habe im Source gestöbert und festgestellt, dass es diese Funktionalität erst ab 3.3 gibt. Das heisst bei 3.2 und 3.1 muss das noch "klassisch" mit trigger_error behandelt werden, sofern die Standard Meldung von phpBB nicht genügt.

Eigentlich wäre die Array Methode vorzuziehen, weil man dann Fehlermeldungen sauber an den übergeordneten Code zurückgeben kann und phpBB nicht "gewaltsam" beenden muss (trigger_error). Auf jeden Fall muss ich diese Methode bei EMP berücksichtigen, dass ist momentan nicht der Fall. Wenn eine Ext auf diese Weise Fehlermeldungen generiert, dann wird die Ext trotzdem von EMP aktiviert, was natürlich nicht im Sinne des Erfinders ist. Es ist absehbar, dass sich diese Methode der Fehlerbehandlung in ext.php durchsetzen wird, weil sie Vorteile hat. Darum muss EMP das natürlich auch unterstützen.
Möge das Backup mit dir sein. Immer.

Erweiterungen - Infos zur artgerechten Haltung
phpBB Ext Check - Analysesystem für phpBB Erweiterungen (Entwickler Werkzeug)
Benutzeravatar
IMC
Mitglied
Beiträge: 541
Registriert: 25.11.2018 20:32
Wohnort: Lüneburg
Kontaktdaten:

Re: [3.3] [3.2] Extension Manager Plus

Beitrag von IMC »

LukeWCS hat geschrieben: 14.06.2022 11:57Auf jeden Fall muss ich diese Methode bei EMP berücksichtigen, dass ist momentan nicht der Fall.
Ich hatte noch keine Zeit das zu testen. Ich vermute aber das dies schon gehen könnte da die Textausgabe die gleiche ist als wenn man ein false zurück gegeben wird. Siehe \phpbb\console\command\extension\enable.php Zeile 49.
Ich habe gesucht und bin drauf gestossen da in der Doko steht das is_enableable() ein Array zurück gibt.
Gruß, Thorsten
Benutzeravatar
LukeWCS
Supporter
Supporter
Beiträge: 2114
Registriert: 15.12.2014 10:19
Kontaktdaten:

Re: [3.3] [3.2] Extension Manager Plus

Beitrag von LukeWCS »

IMC hat geschrieben: 14.06.2022 18:02 Ich hatte noch keine Zeit das zu testen.
Wie geschrieben, EMP unterstützt das noch nicht. Kann es auch gar nicht, bislang war mir als mögliche Rückmeldung ja nur true/false bekannt, darauf ist der Code auch ausgerichtet. Das direkt Fehlermeldungen zurückgegeben werden können, war bislang schlicht nicht vorgesehen. 1.0.2 wird das dann unterstützen. Habe bereits eine funktionierende Beta, ich veröffentliche später den 1.0.2 Branch zum testen.
Ich vermute aber das dies schon gehen könnte da die Textausgabe die gleiche ist als wenn man ein false zurück gegeben wird. Siehe
Das ist mir grad nicht klar was du damit meinst, könntest du das mal umformulieren?
Ich habe gesucht und bin drauf gestossen da in der Doko steht das is_enableable() ein Array zurück gibt.
Ja und nicht nur ein Array, auch ein String ist möglich. Beides ist aber erst ab 3.3.0 möglich. Wobei das auch nur in der API Doku steht mit dem Array wie ich vorhin gesehen habe. In der Ext Doku wird dazu jedoch nichts erwähnt. Und das auch ein String möglich ist, erfährt man erst, wenn man weiter im Source stöbert. Das ist nirgends dokumentiert.

Direkt aus dem Source (extension_interface.php):

3.2

Code: Alles auswählen

	/**
	* Indicate whether or not the extension can be enabled.
	*
	* @return bool
	*/
	public function is_enableable();

3.3

Code: Alles auswählen

	/**
	* Indicate whether or not the extension can be enabled.
	*
	* @return bool|array	True if extension is enableable, array of reasons
	*						if not, false for generic reason.
	*/
	public function is_enableable();
Möge das Backup mit dir sein. Immer.

Erweiterungen - Infos zur artgerechten Haltung
phpBB Ext Check - Analysesystem für phpBB Erweiterungen (Entwickler Werkzeug)
Antworten

Zurück zu „Extensions in Entwicklung“