Seite 2 von 12

Re: [3.3] [3.2] Extension Manager Plus

Verfasst: 13.06.2022 18:19
von Mike-on-Tour
Version 1.0.1 ausprobiert, läuft :thumbsup:
Danke für die tolle Ext, spart jede Menge Zeit.

Re: [3.3] [3.2] Extension Manager Plus

Verfasst: 13.06.2022 19:55
von BNa
LukeWCS hat geschrieben: 12.06.2022 20:56Schnitzeljagd
...war erfolgreich. Vielen Dank fürs Update :geek: :D

Re: [3.3] [3.2] Extension Manager Plus

Verfasst: 13.06.2022 21:11
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().

Re: [3.3] [3.2] Extension Manager Plus

Verfasst: 13.06.2022 22:37
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.

Re: [3.3] [3.2] Extension Manager Plus

Verfasst: 14.06.2022 00:38
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;
}

Re: [3.3] [3.2] Extension Manager Plus

Verfasst: 14.06.2022 10:08
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.

Re: [3.3] [3.2] Extension Manager Plus

Verfasst: 14.06.2022 10:50
von chris1278
Die version ähnelt der welche auch vom php skeleton fürs acp controller verwendet wird.

Re: [3.3] [3.2] Extension Manager Plus

Verfasst: 14.06.2022 11:57
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.

Re: [3.3] [3.2] Extension Manager Plus

Verfasst: 14.06.2022 18:02
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.

Re: [3.3] [3.2] Extension Manager Plus

Verfasst: 14.06.2022 18:46
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();