php befehle ausführen beimarbeitsdaten löschen einer extension

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
Antworten
Benutzeravatar
chris1278
Mitglied
Beiträge: 3532
Registriert: 12.11.2007 06:20
Wohnort: Euskirchen
Kontaktdaten:

php befehle ausführen beimarbeitsdaten löschen einer extension

Beitrag 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.
Benutzeravatar
LukeWCS
Supporter
Supporter
Beiträge: 2109
Registriert: 15.12.2014 10:19
Kontaktdaten:

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

Beitrag 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
Möge das Backup mit dir sein. Immer.

Erweiterungen - Infos zur artgerechten Haltung
phpBB Ext Check - Analysesystem für phpBB Erweiterungen (Entwickler Werkzeug)
Benutzeravatar
Dr.Death
Moderator
Moderator
Beiträge: 17399
Registriert: 23.04.2003 08:22
Wohnort: Xanten
Kontaktdaten:

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

Beitrag 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
Benutzeravatar
3Di
Mitglied
Beiträge: 106
Registriert: 12.03.2010 14:33
Wohnort: Milano 🇮🇹 Frankfurt 🇩🇪
Kontaktdaten:

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

Beitrag 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. :)
:ugeek: phpBB Studio 🎁 Spende - Ich bin für die Ukraine! 🇺🇦

Private Nachricht nur für bezahlte Arbeiten.
Antworten

Zurück zu „Extension Bastelstube“