# 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) ```