Seite 3 von 4
Re: [3.3] Quick Activation in Profile
Verfasst: 19.04.2025 16:05
von Joe Kolade
Re: [3.3] Quick Activation in Profile
Verfasst: 19.04.2025 16:23
von chris1278
Da du die ext.php nicht nutzt kannst du diese auch löschen. Es sei denn ihr habt vor die in zukunft einzubinden.
Re: [3.3] Quick Activation in Profile
Verfasst: 19.04.2025 16:36
von Joe Kolade
Ich war bislang in dem Wissensstand, dass die ext.php quasi ein Muss jeder phpBB-Erweiterung ist und phpBB der Erkennung, Initialisierung und Verwaltung dient.

Re: [3.3] Quick Activation in Profile
Verfasst: 19.04.2025 16:55
von chris1278
Nein kein muss.
Aber ihr könntet z.B. die ext.php damit füllen:
Code: Alles auswählen
class ext extends \phpbb\extension\base
{
public function is_enableable()
{
$valid_phpbb = phpbb_version_compare(PHPBB_VERSION, '3.3.0', '>=') && phpbb_version_compare(PHPBB_VERSION, '4.0-dev', '<');
$valid_php = phpbb_version_compare(PHP_VERSION, '7.2.0', '>=') && phpbb_version_compare(PHP_VERSION, '8.5.0-dev', '<');
return $valid_phpbb && $valid_php;
}
}
Damit kannst du z.B. die Voraussetzungen php und phpbb begrenzen.
Re: [3.3] Quick Activation in Profile
Verfasst: 19.04.2025 17:19
von LukeWCS
Joe Kolade hat geschrieben: 19.04.2025 16:36
Ich war bislang in dem Wissensstand, dass die ext.php quasi ein Muss jeder phpBB-Erweiterung ist
Nein. Mit dieser Datei kann man
optional bis zu 4 besondere Aktionen ausführen:
- Voraussetzungen prüfen und wenn diese nicht erfüllt sind, eine Aktivierung verhindern. Hat chris1278 jetzt gezeigt.
- Zusätzliche Aktionen beim Aktivieren.
- Zusätzliche Aktionen beim Deaktivieren.
- Zusätzliche Aktionen bei Arbeitsdaten löschen.
In der jetzigen Form ist eure
ext.php
schlicht sinnfrei (weil leer) und kann entfernt werden.
Damit phpBB eine Ext als solche erkennen kann, ist primär
composer.json
relevant und deren Struktur. Fehlt diese Datei oder die Struktur ist ungültig, dann ignoriert phpBB die Ext als Ganzes.
Re: [3.3] Quick Activation in Profile
Verfasst: 19.04.2025 20:13
von LukeWCS
Update:
Da ihr nun EC Zugang habt, ein paar Worte zum EC Thema: nicht erschrecken, der Startbeitrag sieht erstmal heftiger aus als er ist.

Da ist auch nicht alles relevant für euch. Was ihr aber auf jeden Fall lesen müsst, sind die Punkte 1 und 5, da hier wichtige Informationen für die Benutzung aufgeführt sind.
Dann, dort könnt ihr auch lesen, das man mit EC eine solide Basis für eine Validierung schaffen kann. Das heisst jedoch nicht, dass eine Validierung sofort positiv verläuft, wenn ihr einen positiven EC Bericht habt. Die ersten beiden Prüfmodule EPV und PPSSE werden auch bei phpBB.com eingesetzt und bei einer Validierung wird euch dann als EC Nutzer einer der Schritte beim Hochladen bekannt vorkommen, denn da bekommt ihr ebenfalls einen Bericht mit EPV. Und wenn da schon der EPV Bericht eine mittlere Katastrophe wäre, kann es passieren, dass die Ext sofort abgelehnt wird. Da ist also EC hilfreich, weil man so im Idealfall gar nicht erst in diese Situation kommt.
Eine Validierung ist aber sehr viel mehr als nur die Einhaltung von Vorgaben und Richtlinien: da sind Profis am Werk, die eure Ext bis ins Detail auseinandernehmen. Als Star Wars Fan würde ich sagen: das sind Jedi Meister.

Re: [3.3] Quick Activation in Profile
Verfasst: 22.04.2025 19:39
von Joe Kolade
IMC hat geschrieben: 14.04.2025 21:17
Ich kann mir sehr gut vorstellen das diese Extension von vielen Admins genutzt werden wird. Mit ein paar kleinen Anpassungen werde ich diese bei mir auch testen.
Hallo,
welche kleinen Anpassungen fehlen Dir denn?
Gruß Joe
Re: [3.3] Quick Activation in Profile
Verfasst: 22.04.2025 20:44
von IMC
Wenn du mich so direkt fragst. Dabei geht es nicht um richtig oder falsch, es sind so, persönliche Vorlieben.
In euren Funktionen habt ihr Codestellen die sich immer wieder wiederholen.
- 4x Admin check
- 4x Ermittlung der User id
- 3x DB Abfragen USERS_TABLE
Die ersten 2 Punkte bräuchte man jeweils nur einmal im Code.
Die drei BD Abfragen kann man zu einer zusammenfassen.
Seit
3.3.15-RC1
wird mit dem Event die
user_id
übermittelt.
Deshalb würde ich die
user_id
aus dem Event übernehmen. Wenn die Variable
$event['user_id']
nicht gesetzt ist, die Id mit dem euren Request ermitteln.
Das könnte so aussehen.
Code: Alles auswählen
$user_id = $event['user_id'] ?? $this->request->variable('u', 0);
if (empty($user_id))
{
return;
}
Ich persönlich würde den Code dann übersichtlicher finden und er wird zügiger ausgeführt. Wenn ihr, zum Beispiel, den Admin check ändern möchtet, braucht ihr dies nur noch einmal im Code tun. Dadurch werden Fehler minimiert.
' WHERE user_id = ' . $this->db->sql_escape($user_id)
ist in dieser Form auch nicht nötig. Da die User Id ein integer ist muss da keine Zeichenfolge escapet werden. Mit
' WHERE user_id = ' . (int) $user_id
kann eine SQL-Injection ebenso verhindert werden. Der phpBB Ext Check wird damit auch keinen Fehler melden.
Zum Schuss noch ein dickes Lob für die Idee zu dieser Extension, die Umsetzung und des Teilens mit uns.
Edit:
{% if USER_REAL_EMAIL %}
dieser Konstrukt funktioniert bei euch tadellos. Eindeutiger wäre aber
{% if USER_REAL_EMAIL is defined %}
.
Re: [3.3] Quick Activation in Profile
Verfasst: 23.04.2025 19:17
von Joe Kolade
Hallo Thorsten,
vorab vielen Dank für deine hilfreichen Anmerkungen!
Die sich wiederholenden Abfragen sind der Historie geschuldet: "Benutzer aktivieren" und der "Infobereich für Administratoren" waren ursprünglich getrennte Bearbeitungen. Dann kam die Idee, das Ganze in einer Erweiterung zusammenzuführen.
Deine Hinweise und Vorschläge schaut sich mein Sohn an und wird den Code wohl überarbeiten bzw. optimieren.
Bezüglich deines Vorschlags zur user_id stellt sich ggf. die Frage der Abwärtskompatibilität.
Wie schon mitgeteilt, hängt die Weiterentwicklung der Ext auch vom Feedback bzw. Interesse der Forenbetreiber ab. Das ist bislang noch relativ mau...
Gruß Joe
Re: [3.3] Quick Activation in Profile
Verfasst: 23.04.2025 19:35
von IMC
Joe Kolade hat geschrieben: 23.04.2025 19:17
Bezüglich deines Vorschlags zur user_id stellt sich ggf. die Frage der Abwärtskompatibilität.
Die ist mit meinem Vorschlag gegeben. Mit
??
wird der erste Vorhandene Wert übergeben. Ist
$event['user_id']
vorhanden, wird dieser übergeben. Wenn die Variable nicht existiert wird die Id mit eurem Request ermittelt und übergeben.
Interesse der Forenbetreiber ab. Das ist bislang noch relativ mau...
Täusche dich da nicht. Die Dunkelziffer wird sehr hoch sein. Feedback gibt es nur von einem Bruchteil der Nutzer.S
Edit:
Schau dir die Zugriffszahlen zu deinem Thema an.