|
|
|
phpBB2 by Przemo
Support forów phpBB2 modified by Przemo
|
|
|
|
[propozycja] phpBB by Przemo - next gen |
| Autor |
Wiadomość |
irekk

Pomógł: 283 razy Posty: 2934
|
Wysłany: 09-04-2026, 10:13 [propozycja] phpBB by Przemo - next gen
|
|
|
Hello,
Projekt już dawno kaput, ale z nudów udało mi się opracować kompletny projekt techniczny wysokiego poziomu. Wrzucam tutaj jego skrót jako materiał poglądowy — może komuś się przyda jako punkt wyjścia lub inspiracja.
Założenie: Strangler Fig — stary system działa, nowy wyrasta obok
Obydwa systemy współdzielą tę samą bazę MySQL przez cały okres koegzystencji. Nginx rozdziela ruch:
/api/* → nowy silnik PHP 8
/* → stare phpBB2 (bez zmian)
/app/* → React SPA (nowy frontend)
Żadnego „przepisywania od zera" — migracja jest inkrementalna, stare forum działa przez cały czas.
Serce projektu: ForumKernel (makrokernel + architektura pluginowa)
Nowy silnik zbudowany na Slim 4 + PHP-DI 7 + Doctrine ORM 3. Architektura heksagonalna — logika domeny oddzielona od HTTP i bazy przez porty (interfejsy):
PSR-14 EventBus do komunikacji z pluginami — BBCode i inne dekoratory, Shoutboxy, Searche itp jako osobne pluginy rejestrujące się w systemie eventów.
Autoryzacja: JWT z celowym ogarnieciem tego na koniec
Access token (15 min) wyłącznie w React state (nigdy localStorage). Refresh token w HttpOnly cookie + tabela forum_refresh_tokens w MySQL z rotacją przy każdym odświeżeniu.
Ciekawa decyzja projektowa: Auth wchodzi jako ostatni sprint — przez cały czas migracji działa tymczasowy LegacySessionBridgeMiddleware czytający sesje z phpbb_sessions. Minimalizuje to ryzyko: JWT wchodzi dopiero gdy reszta systemu jest stabilna.
Najtrudniejszy technicznie element: mapowanie phpBB2 → Doctrine
Kilka nieoczywistych problemów:
| Kod: |
Problem phpBB2 Rozwiązanie
phpbb_posts + phpbb_posts_text (split-table) Post encja z #[Embedded(PostBody)]
post_time INT (UNIX timestamp) Custom Doctrine Type UnixTimestampType
ENUM('Y','N') zamiast boolean Custom Doctrine Type YesNoType
Brak kluczy obcych w całej bazie FK tylko w nowych tabelach, nie w legacy
Encoding latin2 / ISO-8859-2 One-shot mysqldump + iconv + sed script
|
Panel administracyjny
Legacy admin to 77 plików PHP z systemem szablonów XS Styles opartym na iframe. W nowej architekturze: React SPA pod /admin/* + endpointy /api/v1/admin/* chronione przez AdminAuthMiddleware z weryfikacją roli ROLE_ADMIN.
Część modułów przewidziana do trwałego usunięcia ze względów bezpieczeństwa — w szczególności admin_sql.php (formularz do wykonywania dowolnego SQL), admin_phpinfo.php, admin_mysql.php.
Stack technologiczny
PHP 8.2 / Slim 4 / Doctrine ORM 3 / PHP-DI 7 / lcobucci/jwt 4 / React 18 + TypeScript + Vite / MySQL 8 (UTF-8mb4) / Nginx / Redis (opcjonalnie)
Pełny dokument (~30 stron) zawiera diagramy C4 (Level 1–3), model domeny, kontrakt OpenAPI, plan migracji charset, tabele ryzyk i projekt panelu admin. Mogę udostępnić jeśli ktoś jest zainteresowany. |
_________________ Cygantura |
|
|
|
 |
Gadatliwa Kasia
|
|
|
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
Kopiowanie wszelkich treści zawartych na forum, modyfikacji oraz instrukcji bez zgody administracji i autorów tematów/postów zabronione!
Powered by phpBB modified by Przemo © 2003 phpBB
|