Seite 1 von 1

php befehle ausführen beimarbeitsdaten löschen einer extension

Verfasst: 09.01.2022 15:22
von chris1278
Hallo ich hätte da mal eine kleine Frage.

Wie kann ich beim deaktivieren und löschen der Arbeitsdaten eine php datei bzw. php befehl ausführen lassen.

Es geht sich um Folgendes:

Ich bin bei einer meiner Extension dabei ein verzeichnis anlegen zu lassen im ordner /images.

Das geht einfach über die listner.php

Dort hab ich das hier eingebunden:

Code: Alles auswählen

		if (!$this->filesystem->exists($this->root_path . 'images/meinverzeichnis'))
		{
			$this->filesystem->mkdir($this->root_path . 'images/meinverzeichnis');
		}
Das funktioniert in sofern auch gut. ich denke das könnte man wahrscheinlich auch über die ext.php realisieren aber da das ganze ja mit einer if prüfung versehen ist die den erstellenden befehl ja nur ausführt wenn das verzeichnis nicht vorhanden ist kann man das so machen.

Das problem ist wenn ich die ext deaktiviere und die arbeiztsdaten lösche bleibt eben dieses verzeichnis leer.

Und zwar würde ich ganz gerne das so einrichten das eben bei deinstallation das hier ausgeführt wird:

Code: Alles auswählen

		if ($this->filesystem->exists($this->root_path . 'images/meinverzeichnis'))
		{
			$this->filesystem->rmdir($this->root_path . 'images/meinverzeichnis');
		}
Damit soll beim arbeitsdaten löschen geprüft werden ob das verzeichnis noch vorhanden ist und gegebenfalls löschen.

Re: php befehle ausführen beimarbeitsdaten löschen einer extension

Verfasst: 09.01.2022 17:38
von LukeWCS
Hi

Für Aktionen die beim Aktivieren/Deaktivieren/Deinstallieren ausgeführt werden sollen, eignet sich ext.php perfekt. Definiere in der ext Klasse die öffentliche Funktion purge_step(), da kannst du dann eigene Aktionen definieren die beim Deinstallieren ausgeführt werden sollen.

Schau dir das Beispiel enable_step an und ersetze das einfach durch purge_step, kommt zweimal vor:

https://area51.phpbb.com/docs/dev/3.3.x ... in-ext-php

Re: php befehle ausführen beimarbeitsdaten löschen einer extension

Verfasst: 09.01.2022 20:30
von Dr.Death
Und noch ein Hinweis:

Ein Ordner lässt sich meisten nur dann löschen (unlink), wenn der Ordner leer ist.
Wenn Dateien drin sind wird es nicht funktionieren.

Also erst prüfen ob Dateien und ggf. noch andere Unterordner existieren, dann die verschachtelten Dateien zuerst löschen usw....

Beispiele lieferte Google und Co. :
https://www.kodingmadesimple.com/2017/0 ... r-php.html

Re: php befehle ausführen beimarbeitsdaten löschen einer extension

Verfasst: 12.01.2022 02:55
von 3Di
chris1278 hat geschrieben: 09.01.2022 15:22 $this->filesystem->rmdir(...
Diese Funktion existiert nicht im Filesystem von phpBB.
LukeWCS hat geschrieben: 09.01.2022 17:38 Für Aktionen die beim Aktivieren/Deaktivieren/Deinstallieren ausgeführt werden sollen, eignet sich ext.php perfekt.
Obwohl Sie ext.php verwenden können ist es auch möglich, das Verzeichnis mit Migrationen zu erstellen und zu löschen, indem Sie benutzerdefinierte Funktionen verwenden. In manchen Fällen, wie in diesem Fall, ist dies vorzuziehen. Siehe Handbuch, wenn das Konzept nicht klar ist.
Dr.Death hat geschrieben: 09.01.2022 20:30 Also erst prüfen ob Dateien und ggf. noch andere Unterordner existieren, dann die verschachtelten Dateien zuerst löschen usw....

Beispiele lieferte Google und Co. : ...
Das ist nicht nötig, das phpBB Filesystem (Symfony) löscht alles automatisch mit der remove() Funktion.
Was wäre sonst der Sinn der Einführung? Wir hätten schlicht und einfach PHP verwendet. :)