This commit is contained in:
2026-05-20 13:30:10 +02:00
parent bc5cae7e82
commit 22c886b8f4
20 changed files with 1154 additions and 7 deletions

View File

@@ -0,0 +1,90 @@
# Architecture
**Wygenerowano:** 2026-05-20 (`$paul-map-codebase`)
## Wzorzec
Klasyczne MVC bez frameworka. Wlasne jadro `Core` + `FrontController` + `Router` + `Controller` + warstwa `*DAL` (Data Access Layer) + szablony Smarty.
## Wejscia (entry points)
- `index.php` — strona publiczna. Sekwencja:
1. `include('./core/core.php')`
2. `Core::Init(PageType::STRONA)`
3. `Core::LoadSmarty()`
4. `include('routes.php')` — definicje tras publicznych.
5. `new FrontController() -> Dispatch()`.
- `Admin/index.php` — panel `PageType::ADMIN`, definiuje wlasne `Router::AddRoute(...)` inline (m.in. `Structure/Add`, `Structure/Edit/id/:id`, `customer/gallery/{lang}`).
- Pomocnicze skrypty stand-alone w roocie: `pack.php`, `tar.php`, `zip.php`, `_unpack.php`, `makl.php`, `info.php` — operacje archiwizacji/diagnostyki, nie korzystaja z FrontController.
## Warstwy
### 1. Core (`core/`)
- `core/core.php` — klasa `Core` (init, ladowanie configa, autoloader klas, Smarty boot, garbage) + enum `PageType` (`STRONA`, `Package`, `ADMIN`, `SERVER`).
- `core/ErrorHandler.php` — globalna obsluga bledow.
- `core/class/` — infrastrukturalne klasy: `Config`, `Registry`, `DB`, `SQL`, `DbCache`, `QueryCache`, `Router`, `FrontController`, `Controller`, `MainController`, `ModuleController`, `Request`, `RestRequest`, `Mailer`, `Profiler`, `UserValidator`, `Validator`, `Daemon`, `SessionProxy`, `TemplateMaster`, `Utils`, `UtilsUtf`, `MfCurl`, `MFLog`, `MfMemcache`, `MfXmlParser`, `Xml2Array`, `Enviroment`, `Exception`, `FileGenerator`, `HtmlButton`, `HtmlElement`, `DalData`, `DataObject`, `IDefaultDAL`, `Dictionary`, `DbSqlLite`.
- `core/model/` — entity + DAL pary (np. `MfProduct.class.php` + `MfProductDAL.class.php`). Podkatalog `core/model/SimpleArticle/` na artykuly.
- `core/config/{Strona,Admin,Server,Package}/` — pliki `path.config.php`, `param.config.php`, `db.config.php`, `db.config.ini`; `Admin/` zawiera dodatkowo `panel.config.php`.
- `core/lib/` — wendorowane biblioteki (Smarty, log4php, PHPMailer, WideImage, Zend Search Lucene, SmartyValidate, mImage, MimeType).
- `core/temp/{Strona,Package}/Router.cache` — cache routera.
### 2. Kontrolery publiczne (`controller/`)
- `IndexController`, `SearchController`, `MapsController`, `ProductController`, `ImageController`, `FileController`, `ModuleController`, `SharedController`, `SoapController`, `TranslateController`, `SimpleArticle/IndexController.php`.
### 3. Kontrolery panelu (`Admin/controller/`)
- Pelny CRUD admin: `BoxController`, `CalcController`, `ConfigController`, `DemoController`, `DictionaryController`, `FileController`, `HomeController`, `HomeSiteController`, `ImageController`, `IndexController`, `LoginController`, `MailingController`, `MainSiteController`, `MapsController`, `ProductAttributeController`, `ProductCategoryController`, `ProductController`, `ProductSeriesController`, `ProductSpecController`, `SetupController`, `SharedController`, `SimpleArticle/IndexController.php`, `StructureController`, `UploaderController`, `UserController`, `UtilsController`.
### 4. Moduly (`module/`, `Admin/module/`)
- Publiczne: `module/AuthDAL.mod.php`, `module/CacheParam.mod.php`.
- Admin: `Admin/module/Admin.mod.php`, `Admin/module/AdminDAL.mod.php`, `Admin/module/AuthDAL.mod.php`, `Admin/module/CacheParam.mod.php`, `Admin/module/LightBBCodeParser.mod.php`.
### 5. Szablony (`template/`, `Admin/template/`)
- `template/index.tpl` — szablon glowny strony publicznej.
- `template/partial/` — podzielony na sekcje domeny: `File/`, `Image/`, `Index/`, `Module/`, `Product/`, `Search/`, `Shared/`, `SimpleArticle/Index/`, `Translate/`.
- `template/index.tpl.bak`, `template/index_good.tpl`, `template/clean.tpl`, `template/szablon.html` — dodatkowe pliki (kandydat do uporzadkowania).
- Admin: `Admin/template/partial/` z folderami `Structure/`, `Product/`, `SimpleArticle/Index/` itd. (do potwierdzenia po `$paul-map-codebase` z agentami).
## Routing
- Statyczna rejestracja w `routes.php` (publiczne) oraz inline w `Admin/index.php` (admin).
- `Router::$parseLang = true` na stronie publicznej — obsluga sufiksu jezykowego.
- `Router::$reverseRoute = true` w obu trybach.
- Dispatching: `FrontController::Dispatch()` -> kontroler -> metoda -> Smarty render.
## Rejestr i konfiguracja
- `Registry::Set/Get` (`core/class/Registry.class.php`) — globalny kontener stanu (db, smarty, javascript, title).
- `Config::Get/Set` (`core/class/Config.class.php`) — wartosci z plikow PHP/INI.
- `SetupDAL::GetAllVariables()` — dynamiczna konfiguracja z bazy, wczytywana w `Core::PageConfig()` (`core/core.php:73`).
## Sesja / lokalizacja
- `SessionProxy` (`core/class/SessionProxy.class.php`) — abstrakcja sesji PHP.
- `setlocale(LC_TIME, 'pl_PL', ...)` ustawiana w `Core::PageConfig()` (`core/core.php:97`).
## Bezpieczny tryb aplikacji
- Flaga `Core::$appSafeMode` (`core/core.php:21`, `Core::SetAppSafeMode()`) — aktywowana, gdy `SetupDAL::GetAllVariables()` rzuca `MysqlException`.
## Statyczne zasoby
- `Static/` — uploady (`Static/upload/Article/...`), miniatury (`Static/thumbs/`).
- `Server/` — zasoby serwerowe (do zweryfikowania).
## Diagram glownych zaleznosci (uproszczony)
```
HTTP request
-> index.php / Admin/index.php
-> Core::Init() + LoadSmarty()
-> Router (routes.php / inline)
-> FrontController::Dispatch()
-> *Controller (controller/ lub Admin/controller/)
-> Model entity + *DAL (core/model/)
-> Smarty render (template/*.tpl)
```