update
This commit is contained in:
90
.paul/codebase/architecture.md
Normal file
90
.paul/codebase/architecture.md
Normal 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)
|
||||
```
|
||||
63
.paul/codebase/conventions.md
Normal file
63
.paul/codebase/conventions.md
Normal file
@@ -0,0 +1,63 @@
|
||||
# Conventions
|
||||
|
||||
**Wygenerowano:** 2026-05-20 (`$paul-map-codebase`)
|
||||
|
||||
## Nazewnictwo plikow
|
||||
|
||||
- Klasy infrastrukturalne: `core/class/<Nazwa>.class.php` (PascalCase + sufiks `.class.php`).
|
||||
- Modele: `core/model/<Nazwa>.class.php` (encja) + `core/model/<Nazwa>DAL.class.php` (DAL).
|
||||
- Modele domenowe oznaczane prefiksem `Mf` (np. `MfProduct`, `MfHomeSite`, `MfArticle`) lub `Fk` (np. `FkMaps`, `FkCurrency`, `FkGlossary`) — historyczne konwencje dwoch obszarow.
|
||||
- Moduly: `<Nazwa>.mod.php` w `module/` lub `Admin/module/`.
|
||||
- Kontrolery: `<Domena>Controller.php` w `controller/` lub `Admin/controller/`.
|
||||
- Szablony Smarty: `template/partial/<Domena>/<Akcja>.tpl`.
|
||||
|
||||
## Konwencje PHP
|
||||
|
||||
- `<?php` na poczatku, czesto `?>` na koncu (styl starszego PHP).
|
||||
- `setlocale` i `ini_set('default_charset', ...)` w `index.php` / `Admin/index.php`.
|
||||
- Statyczne klasy infrastruktury: `Core::Init`, `Config::Get`, `Registry::Set`, `Router::AddRoute`, `MFLog::Warn`, `SessionProxy::GetValue`.
|
||||
- Autoloader oparty o `Core::LoadClass` (`core/core.php:173`) — przeszukuje katalogi `class/`, `module/`, `model/`, `lib/` oraz dekomponuje `_` -> `/`.
|
||||
|
||||
## Komentarze
|
||||
|
||||
- Komentarze i docblocki sa po polsku (np. `/** Klasa jadra aplikacji */` w `core/core.php`).
|
||||
- Czesto wystepuja zakomentowane bloki kodu i pseudo-TODO bez tagu.
|
||||
|
||||
## Routing
|
||||
|
||||
- Trasy rejestrowane statycznie: `Router::AddRoute(<nazwa>, <wzorzec>, <opcje>)`.
|
||||
- Trasy publiczne w `routes.php`.
|
||||
- Trasy admina inline w `Admin/index.php` (mieszane z bootstrappem).
|
||||
|
||||
## Warstwa danych
|
||||
|
||||
- Encja + DAL: encja przechowuje pola, DAL realizuje zapytania.
|
||||
- Dostep do bazy przez `Registry::Get('db')` (`DBProd`) lub `Registry::Get('dbTemp')` (`DBTemp`).
|
||||
- Cache zapytan w `QueryCache` / `DbCache`; kopia tabel cache w `QueryCacheTemp`.
|
||||
|
||||
## Smarty
|
||||
|
||||
- Glowny szablon: `template/index.tpl` (przypisywany w `Core::$template`).
|
||||
- Partial templates w `template/partial/<Domena>/`.
|
||||
- Skompilowane wersje w `core/temp/` i `Admin/temp/compile/` (cache w `Admin/temp/cache/`).
|
||||
|
||||
## Konfiguracja
|
||||
|
||||
- Pliki `path.config.php`, `param.config.php`, `db.config.php`, opcjonalnie `panel.config.php` (Admin) w `core/config/<Site>/`.
|
||||
- Wartosci runtime nadpisywane przez `SetupDAL::GetAllVariables()` (tabela `setup`).
|
||||
|
||||
## Kontrola wersji / artefakty
|
||||
|
||||
- Pliki backupowe (`.bak`, `.php_`, `.php.bak`) zostawiane w repo:
|
||||
- `core/class/MainController.class.php.bak`
|
||||
- `core/class/Router.class.php.bak`
|
||||
- `Admin/controller/StructureController.php_`
|
||||
- `template/index.tpl.bak`
|
||||
- `template/index_good.tpl`
|
||||
- `core/config/Log4PHPConfig*.delete`, `core/config/Log4PHPConfig.xml.test`
|
||||
- Rownolegle warianty katalogow: `Admin/plugins/ckeditor/` i `Admin/plugins/ckeditor_/`, `Admin/controller/SimpleArticle/` i `Admin/controller/SimpleArticle_/`.
|
||||
|
||||
## Jezyk dokumentow PAUL
|
||||
|
||||
- Markdown w `.paul/` pisany po polsku (zgodnie z `<language_policy>`).
|
||||
- Identyfikatory kodu, sciezki, klucze konfiguracji i komendy pozostaja bez tlumaczenia.
|
||||
93
.paul/codebase/db_schema.md
Normal file
93
.paul/codebase/db_schema.md
Normal file
@@ -0,0 +1,93 @@
|
||||
# DB Schema
|
||||
|
||||
**Wygenerowano:** 2026-05-20 (`$paul-map-codebase`)
|
||||
**Status:** schemat wnioskowany z plikow `core/model/*` — brak migracji / DDL w repo. Tabele faktyczne wymagaja weryfikacji w bazie MySQL `01244953_zurawik`.
|
||||
|
||||
## Charakter
|
||||
|
||||
- Brak katalogu migracji ani plikow SQL/DDL w repozytorium.
|
||||
- Encje + DAL w `core/model/` odwzorowuja struktury tabel 1:1 (DAL operuje na `DBProd`/`DBTemp` przez `core/class/DB.class.php`).
|
||||
|
||||
## Domeny i kandydaci tabel
|
||||
|
||||
### Administracja i autoryzacja
|
||||
|
||||
- `MfAdmin` / `MfAdminDAL`
|
||||
- `MfAdminAccess` / `MfAdminAccessDAL`
|
||||
- `MfAdminGroup` / `MfAdminGroupDAL`
|
||||
- `MfAdminToGroup` / `MfAdminToGroupDAL`
|
||||
- `MfAdminGroupToAccess` / `MfAdminGroupToAccessDAL`
|
||||
- Modul: `Admin/module/AuthDAL.mod.php`, `module/AuthDAL.mod.php`.
|
||||
|
||||
### Struktura strony / menu
|
||||
|
||||
- `Structure` / `StructureDAL`
|
||||
- `MfLink` / `MfLinkDAL` + `MfLinkDescription` / `MfLinkDescriptionDAL`
|
||||
- `MfRouter` / `MfRouterDAL`
|
||||
- `LinkLangDAL` (lokalizacja linkow).
|
||||
|
||||
### Tresci
|
||||
|
||||
- `SimpleArticle/MfArticle` + `MfArticleDescription` + `MfArticleCategory` + `MfArticleCategoryDescription` (komplet DAL).
|
||||
- `MfArticleBox` / `MfArticleBoxDAL`.
|
||||
- `News` / `NewsDAL`.
|
||||
|
||||
### Produkty
|
||||
|
||||
- `MfProduct`, `MfProductDescription`, `MfProductMain`, `MfProductLink`.
|
||||
- Kategorie: `MfProductCategory` + `MfProductCategoryDescription`.
|
||||
- Atrybuty: `MfProductAttribute` + `MfProductAttributeDescription` + `MfProductAttributeValue` + `MfProductAttributeCategory` + `MfProductAttributeCategoryDescription`.
|
||||
- Specyfikacja: `MfProductSpecification` / `MfProductSpecificationDAL`.
|
||||
- Serie: `ShopSeries` / `ShopSeriesDAL`.
|
||||
- Powiazane: `Products` (kolekcja) / `ProductsDAL`.
|
||||
|
||||
### Strona glowna / banery
|
||||
|
||||
- `MfHomeSite` + `MfHomeSiteBaner` + `MfHomeSiteProduct` (komplet DAL).
|
||||
|
||||
### Pliki i obrazy
|
||||
|
||||
- `MfFile` + `MfFileDescription`.
|
||||
- `Image` / `ImageDAL`, `ImageGroup` / `ImageGroupDAL`, `Picture` / `PictureDAL`, `PhotoDAL`.
|
||||
|
||||
### Konfiguracja
|
||||
|
||||
- `MfParameters` / `MfParametersDAL`.
|
||||
- `MfDictionary` / `MfDictionaryDAL`.
|
||||
- `SetupDAL` — tabela `setup` (`SetupDAL::GetAllVariables()` w `core/core.php:77`).
|
||||
- `MfMetaTag` + `MfMetaTagDescription` (meta tagi SEO).
|
||||
- `MfModule` / `MfModuleDAL`.
|
||||
|
||||
### Mapy / waluty / slownik
|
||||
|
||||
- `FkMaps` / `FkMapsDAL`, `FkMapsCategory` / `FkMapsCategoryDAL`.
|
||||
- `FkCurrency` / `FkCurrencyDAL`.
|
||||
- `FkGlossary` / `FkGlossaryDAL`.
|
||||
|
||||
### Mailing / uczestnicy
|
||||
|
||||
- `Mailing` / `MailingDAL`.
|
||||
- `MfParticipant` / `MfParticipantDAL`.
|
||||
|
||||
### Cache
|
||||
|
||||
- `QueryCacheTemp` / brak DAL (tabela techniczna).
|
||||
|
||||
### Pozostale
|
||||
|
||||
- `Site` / `SiteDAL` — definicje stron/instancji.
|
||||
|
||||
## Polaczenia bazodanowe
|
||||
|
||||
Konfiguracja (uwaga: zawiera dane wrazliwe — patrz `quality_risks.md`):
|
||||
- `core/config/Strona/db.config.php`
|
||||
- `core/config/Admin/db.config.php`
|
||||
- `core/config/Server/` (ini), `core/config/Package/` (ini).
|
||||
|
||||
## Brakuje w repo
|
||||
|
||||
- Plikow `.sql` z DDL/migracjami.
|
||||
- Schematu indeksow i kluczy obcych — nieudokumentowane.
|
||||
- Zrzutu (`dump.sql`).
|
||||
|
||||
Rekomendacja przed wieksza zmiana modelu: wykonac `mysqldump` ze srodowiska produkcyjnego i utworzyc `.paul/codebase/db_schema_actual.sql` (manualnie) jako referencje.
|
||||
115
.paul/codebase/impact_map.md
Normal file
115
.paul/codebase/impact_map.md
Normal file
@@ -0,0 +1,115 @@
|
||||
# Impact Map
|
||||
|
||||
**Wygenerowano:** 2026-05-20 (`$paul-map-codebase`, mode: full)
|
||||
**Quality Radar status:** codebase-memory-mcp ok (indeks: 21402 wezlow, 52193 krawedzi).
|
||||
|
||||
## Glowne domeny i strefy zmian
|
||||
|
||||
### Bootstrap / jadro
|
||||
|
||||
- `index.php`, `Admin/index.php`
|
||||
- `core/core.php` (`Core::Init`, `Core::LoadConfig`, `Core::LoadSmarty`, `Core::LoadClass`)
|
||||
- `core/ErrorHandler.php`
|
||||
- `core/class/Config.class.php`, `core/class/Registry.class.php`, `core/class/Router.class.php`, `core/class/FrontController.class.php`, `core/class/Controller.class.php`, `core/class/MainController.class.php`, `core/class/Request.class.php`
|
||||
|
||||
### Routing
|
||||
|
||||
- `routes.php` (strona publiczna)
|
||||
- `Admin/index.php` (trasy admina inline — kandydat do wyciagniecia do `Admin/routes.php`)
|
||||
- `core/temp/Strona/Router.cache`, `core/temp/Package/Router.cache`
|
||||
|
||||
### Tresci (SimpleArticle / News / Boxy)
|
||||
|
||||
- Kontrolery: `controller/SimpleArticle/IndexController.php`, `Admin/controller/SimpleArticle/IndexController.php`, `Admin/controller/SimpleArticle_/IndexController.php`.
|
||||
- Modele: `core/model/SimpleArticle/MfArticle*`, `core/model/News*`, `core/model/MfArticleBox*`.
|
||||
- Szablony: `template/partial/SimpleArticle/Index/*`, `template/partial/Shared/News.tpl`.
|
||||
|
||||
### Produkty / katalog
|
||||
|
||||
- Kontrolery: `controller/ProductController.php`, `Admin/controller/Product*Controller.php` (Product, ProductCategory, ProductAttribute, ProductSeries, ProductSpec).
|
||||
- Modele: `core/model/MfProduct*`, `core/model/ShopSeries*`, `core/model/Products*`.
|
||||
- Szablony: `template/partial/Product/*`.
|
||||
|
||||
### Struktura / menu
|
||||
|
||||
- Kontrolery: `Admin/controller/StructureController.php` (+ wariant `.php_`).
|
||||
- Modele: `core/model/Structure*`, `core/model/MfLink*`, `core/model/MfRouter*`, `core/model/LinkLangDAL.class.php`.
|
||||
- Szablony: `Admin/template/partial/Structure/*` (do potwierdzenia).
|
||||
- Routy admina: `addStructure`, `editStructure`, `copyStructure`, `customerEdit{pl,en,ru,de}` w `Admin/index.php:30-36`.
|
||||
|
||||
### Strona glowna
|
||||
|
||||
- `Admin/controller/HomeController.php`, `Admin/controller/HomeSiteController.php`, `Admin/controller/MainSiteController.php`.
|
||||
- Modele: `core/model/MfHomeSite*`.
|
||||
|
||||
### Wyszukiwarka
|
||||
|
||||
- `controller/SearchController.php`
|
||||
- Biblioteka: `core/lib/Zend/Search/Lucene.php`.
|
||||
- Routy: `searchpl`, `searchen`, `searchde` w `routes.php:13-15`.
|
||||
- Szablon: `template/partial/Search/Index.tpl`.
|
||||
|
||||
### Pliki / obrazy / uploady
|
||||
|
||||
- Kontrolery: `controller/FileController.php`, `controller/ImageController.php`, `Admin/controller/FileController.php`, `Admin/controller/ImageController.php`, `Admin/controller/UploaderController.php`.
|
||||
- Modele: `core/model/MfFile*`, `core/model/Image*`, `core/model/Picture*`, `core/model/Photo*`.
|
||||
- Storage: `Static/upload/Article/*`, `Static/thumbs/*`.
|
||||
- Lib: `core/lib/WideImage/`, `core/lib/mImage.class.php`.
|
||||
|
||||
### Mapy / strona mapy serwisu
|
||||
|
||||
- `controller/MapsController.php`, `controller/IndexController::Maps` (`routes.php:11-12`).
|
||||
- Modele: `core/model/FkMaps*`.
|
||||
- Szablony: `template/partial/Index/Maps.tpl`, `template/partial/Module/Maps.tpl`, `template/partial/Module/AjaxMapsList.tpl`.
|
||||
|
||||
### Formularz kontaktowy / newsletter / captcha
|
||||
|
||||
- `controller/IndexController.php` (`Newsletter`, `Forum`, `Captcha`, `AjaxRegisterCaptchaCheck`, `AjaxForm`).
|
||||
- `controller/SimpleArticle/IndexController.php::FormSent` (`routes.php:3`).
|
||||
- Szablony: `template/partial/Index/AjaxForm.tpl`, `template/partial/Index/Captcha.tpl`, `template/partial/Index/IndexSent.tpl`.
|
||||
|
||||
### Tlumaczenia JS
|
||||
|
||||
- `controller/TranslateController.php` -> `template/partial/Translate/Js.tpl`.
|
||||
|
||||
### Autoryzacja / uzytkownicy
|
||||
|
||||
- `Admin/controller/LoginController.php`, `Admin/controller/UserController.php`.
|
||||
- Moduly: `module/AuthDAL.mod.php`, `Admin/module/AuthDAL.mod.php`, `Admin/module/Admin.mod.php`, `Admin/module/AdminDAL.mod.php`.
|
||||
- Sesja: `core/class/SessionProxy.class.php`, `session_start()` w `Admin/index.php:24`.
|
||||
|
||||
### Konfiguracja runtime
|
||||
|
||||
- `core/config/{Strona,Admin,Server,Package}/*.config.php`.
|
||||
- Konfiguracja w bazie: `SetupDAL::GetAllVariables()` (`core/core.php:77`) -> tabela `setup`.
|
||||
- Kontroler admin: `Admin/controller/SetupController.php`, `Admin/controller/ConfigController.php`.
|
||||
|
||||
### Logowanie / monitoring
|
||||
|
||||
- `core/class/MFLog.class.php`, `core/lib/log4php/`.
|
||||
- Konfiguracja: `core/config/Log4PHPConfig*.xml`.
|
||||
- Plik `error_log` w roocie.
|
||||
|
||||
### Skrypty pomocnicze / archiwizacja
|
||||
|
||||
- `pack.php`, `pack/`, `tar.php`, `zip.php`, `_unpack.php`, `makl.php`, `info.php` — standalone, omijaja FrontController.
|
||||
|
||||
## Ukryte sprzezenia (hidden coupling)
|
||||
|
||||
- `Core::LoadClass()` (`core/core.php:173`) inteligentnie zgaduje sciezki na podstawie wielkich liter i `_` — przemianowanie klasy moze rozsynchronizowac autoloader, zwlaszcza dla modeli w `core/model/<domena>/` (np. `SimpleArticle`).
|
||||
- `Registry::Set('db' | 'dbTemp' | 'smarty' | 'javascript' | 'title')` — globalny stan, kontrolery zalozono ze odczyta je z rejestru.
|
||||
- `Router::$parseLang` ustawiana w `index.php:35` (true) vs `Admin/index.php:46` (false) — bledne zalozenie moze rozbic linki jezykowe.
|
||||
- Tabela `setup` (przez `SetupDAL`) modyfikuje zachowanie w runtime; awaria bazy -> `Core::SetAppSafeMode()` cicho zmienia tryb.
|
||||
- `Admin/index.php` rejestruje tasy `customerEdit{pl,en,ru,de}` z twardo zakodowanymi `id` (18/52/30/40) — zmiana strukturow w bazie wymaga aktualizacji kodu.
|
||||
|
||||
## Obszary do reczne weryfikacji (UAT)
|
||||
|
||||
- Glowne wejscia: `/`, `/index`, `/mapa_serwisu`, `/site_map`, `/wyszukaj`, `/search`, `/newsletter`, `/forum`, `/captcha`, `/translate/js`, `/ajaxForm`, `/formContactSent`.
|
||||
- Admin: `/Admin/`, `/Admin/Structure/Add`, `/Admin/Structure/Edit/id/<id>`, `/Admin/Structure/Copy/id/<id>`, `/Admin/customer/gallery/{pl,en,ru,de}`.
|
||||
- Logowanie admin (LoginController) i sesja po `session_start`.
|
||||
|
||||
## Konfiguracja, ktora niesie ryzyko zmian
|
||||
|
||||
- `core/config/Strona/db.config.php`, `core/config/Admin/db.config.php` (poswiadczenia DB).
|
||||
- `core/config/<Site>/path.config.php` — zmiana sciezek lamie autoloader.
|
||||
- `.htaccess` (root, `Admin/`, `core/`, `template/`).
|
||||
69
.paul/codebase/integrations.md
Normal file
69
.paul/codebase/integrations.md
Normal file
@@ -0,0 +1,69 @@
|
||||
# Integrations
|
||||
|
||||
**Wygenerowano:** 2026-05-20 (`$paul-map-codebase`)
|
||||
|
||||
## Baza danych
|
||||
|
||||
- MySQL (host `mysql8` zgodnie z `core/config/Strona/db.config.php`).
|
||||
- Sterownik wlasny: `core/class/DB.class.php` + `core/class/SQL.class.php`.
|
||||
- Dwa polaczenia per request: `DBProd` (glowne) i `DBTemp` (cache/utility) tworzone w `Core::Init()` (`core/core.php:43`).
|
||||
- Konfiguracja per srodowisko w `core/config/{Strona,Admin,Server,Package}/db.config.{php,ini}`.
|
||||
|
||||
## Email
|
||||
|
||||
- PHPMailer (`core/lib/phpmailer/`).
|
||||
- Wlasny `Mailer` (`core/class/Mailer.class.php`).
|
||||
- Mailing aplikacyjny: encje `Mailing`, `MailingDAL` (`core/model/`), kontroler `Admin/controller/MailingController.php`.
|
||||
|
||||
## Wyszukiwanie
|
||||
|
||||
- Zend Search Lucene (`core/lib/Zend/Search/Lucene.php`).
|
||||
- Kontroler `controller/SearchController.php` + szablon `template/partial/Search/Index.tpl`.
|
||||
|
||||
## Captcha
|
||||
|
||||
- Plik `captcha.png` w roocie, kontroler `IndexController::Captcha` (`routes.php:6`).
|
||||
|
||||
## SOAP
|
||||
|
||||
- `controller/SoapController.php` — endpoint SOAP (do potwierdzenia w skryptach).
|
||||
|
||||
## Translacje JS
|
||||
|
||||
- `controller/TranslateController.php` z routem `translate/js` (`routes.php:10`) + szablon `template/partial/Translate/Js.tpl`.
|
||||
|
||||
## Edytor WYSIWYG
|
||||
|
||||
- CKEditor — `Admin/plugins/ckeditor/` (aktywny) i historyczny `Admin/plugins/ckeditor_/`.
|
||||
- Pluginy fileman z PHP backendem: `Admin/plugins/ckeditor/plugins/fileman/php/*.php`.
|
||||
|
||||
## Obrazy
|
||||
|
||||
- WideImage (`core/lib/WideImage/`) — transformacje, miniatury (`Static/thumbs/`).
|
||||
- `core/lib/mImage.class.php` + `core/lib/MimeType.class.php`.
|
||||
- Kontrolery: `controller/ImageController.php`, `Admin/controller/ImageController.php`.
|
||||
|
||||
## Cache
|
||||
|
||||
- Memcache (`core/class/MfMemcache.class.php`) — opcjonalny.
|
||||
- QueryCache w pamieci + tabela `QueryCacheTemp` (`core/model/QueryCacheTemp.class.php`).
|
||||
- DbCache (`core/class/DbCache.class.php`).
|
||||
- Smarty cache: `core/temp/<Site>/`, `Admin/temp/cache/`.
|
||||
|
||||
## Logowanie
|
||||
|
||||
- log4php (`core/lib/log4php/src/`) z konfiguracja XML w `core/config/`.
|
||||
- Pliki konfiguracyjne: `Log4PHPConfig.xml`, `Log4PHPConfig-admin.xml`, `Log4PHPConfig-strona.xml` (oraz warianty `.delete`/`.test`).
|
||||
|
||||
## Captcha/sessions
|
||||
|
||||
- `SessionProxy` (`core/class/SessionProxy.class.php`).
|
||||
- `session_start()` w `Admin/index.php:24`.
|
||||
|
||||
## SFTP/FTP deploy
|
||||
|
||||
- `.vscode/ftp-kr.json`, `.vscode/sftp.json` — konfiguracja narzedzi VS Code do wgrywania na hosting.
|
||||
|
||||
## Zewnetrzne API
|
||||
|
||||
- `core/class/MfCurl.class.php`, `core/class/RestRequest.class.php` — klient HTTP. Konkretne integracje wymagaja recznej weryfikacji w `controller/` i `Admin/controller/`.
|
||||
59
.paul/codebase/quality_risks.md
Normal file
59
.paul/codebase/quality_risks.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# Quality Risks
|
||||
|
||||
**Wygenerowano:** 2026-05-20 (`$paul-map-codebase`, mode: full)
|
||||
**Quality Radar tools:** codebase-memory-mcp ok; `jscpd` i `ast-grep` disabled by policy (`.paul/config.md`) — bez skanu duplikatow ani skanu strukturalnego.
|
||||
|
||||
## Krytyczne ryzyka bezpieczenstwa
|
||||
|
||||
- **Poswiadczenia bazy danych w repo (PLAINTEXT):** `core/config/Strona/db.config.php` zawiera `prodPass` jako stala PHP (`define('prodPass', 'Df61Xz21')`). Analogicznie inne pliki `core/config/<Site>/db.config.php`. Po naprawie 2026-05-20 `core/config/Admin/db.config.php` zawiera te same poswiadczenia co `Strona`. Rekomendacja: przeniesc do zmiennych srodowiskowych / pliku poza repo i zrotowac haslo, bo jest publicznie widoczne w historii git.
|
||||
- **Plik `info.php` w roocie aplikacji:** typowo zawiera `phpinfo()` — ujawnia konfiguracje srodowiska. Rekomendacja: usunac lub ograniczyc dostepem (`.htaccess`/`.htpasswd`).
|
||||
- **`.htpasswd` w katalogu glownym aplikacji:** powinien byc poza document root lub przynajmniej chroniony przez `.htaccess` (sprawdzic, ze nie jest serwowany).
|
||||
- **Standalone skrypty archiwizacyjne (`pack.php`, `tar.php`, `zip.php`, `_unpack.php`, `makl.php`):** dostepne przez HTTP, omijaja FrontController. Wymagaja audytu autoryzacji i sciezek (path traversal).
|
||||
- **CKEditor fileman PHP backend:** `Admin/plugins/ckeditor/plugins/fileman/php/*.php` — wewnetrzny upload/move/delete dirs. Sprawdzic, ze jest chroniony przez sesje admina.
|
||||
|
||||
## Duplikaty i rownolegle warianty (kandydaci na konsolidacje)
|
||||
|
||||
Wykryto bez `jscpd`, na podstawie nazw / struktury:
|
||||
|
||||
- `core/lib/Smarty/` vs `core/lib/_Smarty/` vs `core/lib/Smarty3/` — trzy rownolegle kopie Smarty. Aktywnie ladowany Smarty3 (`core/core.php:121`); pozostale to dead code.
|
||||
- W obrebie kazdej kopii rownolegla wersja plikow z sufiksem `_1` (np. `core/lib/Smarty/Smarty.class.php` i `core/lib/Smarty/Smarty.class_1.php`, plus identycznie w `core/lib/Smarty/internals/`).
|
||||
- `Admin/plugins/ckeditor/` vs `Admin/plugins/ckeditor_/` — dwie pelne instalacje CKEditor.
|
||||
- `Admin/controller/SimpleArticle/IndexController.php` vs `Admin/controller/SimpleArticle_/IndexController.php` — duplikat kontrolera.
|
||||
- `Admin/controller/StructureController.php` vs `Admin/controller/StructureController.php_` — backup w repo.
|
||||
- `core/class/MainController.class.php.bak`, `core/class/Router.class.php.bak` — backupy klas core.
|
||||
- `template/index.tpl` vs `template/index.tpl.bak` vs `template/index_good.tpl` — trzy warianty glownego szablonu; trudno powiedziec, ktory jest kanoniczny.
|
||||
- `core/config/Log4PHPConfig.xml`, `Log4PHPConfig.xml.test`, `Log4PHPConfig-admin.xml`, `Log4PHPConfig-admin.xml.delete`, `Log4PHPConfig-strona.xml`, `Log4PHPConfig-strona.xml.delete` — chaos plikow konfiguracji loggera.
|
||||
|
||||
## Hardkodowane wartosci
|
||||
|
||||
- `Admin/index.php:33-36` — twardo zakodowane `id` struktur galerii klienta dla jezykow (18/52/30/40). Zmiana w bazie wymaga edycji kodu.
|
||||
- `core/core.php:97` — `setlocale(LC_TIME, 'pl_PL', 'pl', 'Polish_Poland.28592')` zakodowane na sztywno.
|
||||
- `core/core.php:133` — `cache_lifetime = 60` na sztywno.
|
||||
- `routes.php` — adresy URL w wielu wariantach jezykowych zakodowane statycznie (np. `mapa_serwisu`, `site_map`, `wyszukaj`, `search`).
|
||||
- `core/config/Strona/db.config.php:13` — host bazy `mysql8` zakodowany.
|
||||
|
||||
## Spojnosc i konwencje
|
||||
|
||||
- Mieszanie prefiksow modeli `Mf*` i `Fk*` bez jednoznacznej polityki domenowej.
|
||||
- Routes admin sa wewnatrz `Admin/index.php` (mieszane z bootstrap), public sa w `routes.php` — niespojnosc.
|
||||
- W kodzie wystepuja zakomentowane sekcje (`//$logger = LoggerManager::...`, `//$captchaStatus = true;`) — pozostalosci po starszych iteracjach.
|
||||
|
||||
## Mozliwe podejrzane konstrukcje
|
||||
|
||||
- `Core::LoadClass()` (`core/core.php:173`) uzywa `preg_match_all` na nazwie klasy i konstruuje sciezki z `_` -> `/`. Wyjatki w nazewnictwie moga prowadzic do nieskonczonych falli-przez (`include` nie istniejacych plikow w try/else).
|
||||
- `SelfUrl()` (`core/core.php:305-310`) zawiera nietrywialne warunki dotyczace HTTPS i portu — pasie na refactor / wykorzystanie wbudowanej funkcji.
|
||||
|
||||
## Spojnosc backend/frontend
|
||||
|
||||
- Brak jednoznacznego API contract — kontrolery zwracaja HTML przez Smarty + `AjaxForm`/`AjaxMapsList`/`AjaxRegisterCaptchaCheck` zwracaja prawdopodobnie JSON/HTML czesciowy. Wymaga inwentaryzacji przy zmianach formularzy.
|
||||
|
||||
## Akceptowane / odlozone
|
||||
|
||||
- Brak menedzera zaleznosci (`composer`) — projekt historyczny, modernizacja poza zakresem zwyklych zadan.
|
||||
- Brak testow automatycznych — patrz `testing.md`.
|
||||
|
||||
## Co odblokuje glebsza analiza
|
||||
|
||||
- Wlaczenie `jscpd` w `.paul/config.md` (`quality_radar.tools.jscpd: true`) dla potwierdzenia duplikatow kodu po liniach.
|
||||
- Wlaczenie `ast-grep` dla wykrycia podejrzanych konstrukcji (np. SQL inline, `eval`, `extract`, `mysql_*` legacy).
|
||||
- Zrzut DDL bazy (`mysqldump --no-data`) jako referencja schematu.
|
||||
52
.paul/codebase/stack.md
Normal file
52
.paul/codebase/stack.md
Normal file
@@ -0,0 +1,52 @@
|
||||
# Stack
|
||||
|
||||
**Wygenerowano:** 2026-05-20 (`$paul-map-codebase`)
|
||||
|
||||
## Jezyk i runtime
|
||||
|
||||
- PHP (klasyczny, bez frameworka MVC z zewnatrz; brak `composer.json`).
|
||||
- HTML/Smarty3 jako warstwa szablonow (`.tpl`).
|
||||
- Brak `package.json`, brak narzedzi build/node po stronie aplikacji (frontend dostarczany jako statyczne pliki i pluginy).
|
||||
|
||||
## Frameworki / biblioteki wbudowane
|
||||
|
||||
- Smarty (`core/lib/Smarty/`, `core/lib/Smarty3/`, `core/lib/_Smarty/`) — szablonyowanie. Aktualnie ladowany Smarty3 (`core/lib/Smarty3/Smarty.class.php`) w `core/core.php:121`.
|
||||
- SmartyValidate (`core/lib/SmartyValidate/libs/SmartyValidate.class.php`).
|
||||
- log4php (`core/lib/log4php/src/`) — logowanie, konfigurowane przez `core/config/Log4PHPConfig*.xml`.
|
||||
- PHPMailer (`core/lib/phpmailer/`).
|
||||
- WideImage (`core/lib/WideImage/`) — przetwarzanie grafiki.
|
||||
- Zend Search Lucene (`core/lib/Zend/Search/Lucene.php`) — wyszukiwanie.
|
||||
- CKEditor (`Admin/plugins/ckeditor/`, dawna kopia `Admin/plugins/ckeditor_/`).
|
||||
|
||||
## Brak menedzera zaleznosci
|
||||
|
||||
- Wszystkie biblioteki sa wendorowane bezposrednio w `core/lib/` i `Admin/plugins/`.
|
||||
- Aktualizacja wymaga recznego nadpisania katalogow.
|
||||
|
||||
## Autoloader
|
||||
|
||||
- `spl_autoload_register` w `index.php:16` i `Admin/index.php:16` przekierowuje na `Core::LoadClass()` w `core/core.php:173`.
|
||||
- Konwencja nazw: klasy w `core/class/`, modele w `core/model/`, modul `*.mod.php` w `module/` lub `Admin/module/`.
|
||||
|
||||
## Wejscia HTTP
|
||||
|
||||
- `index.php` — strona publiczna (`PageType::STRONA`).
|
||||
- `Admin/index.php` — panel administracyjny (`PageType::ADMIN`).
|
||||
- Pomocnicze skrypty CLI/archiwizacji w katalogu glownym: `pack.php`, `tar.php`, `zip.php`, `_unpack.php`, `makl.php`, `info.php`.
|
||||
|
||||
## Baza danych
|
||||
|
||||
- MySQL (8) — sterownik wlasny `core/class/DB.class.php` + `core/class/SQL.class.php`.
|
||||
- Polaczenia `DBProd` i `DBTemp` tworzone w `Core::Init()` (`core/core.php:43`).
|
||||
- Konfiguracja per srodowisko: `core/config/Strona/`, `core/config/Admin/`, `core/config/Server/`, `core/config/Package/`.
|
||||
|
||||
## Cache
|
||||
|
||||
- `QueryCache` (`core/class/QueryCache.class.php`), `DbCache` (`core/class/DbCache.class.php`), `MfMemcache` (`core/class/MfMemcache.class.php`).
|
||||
- Cache Smarty: `core/temp/`, `Admin/temp/compile/`, `Admin/temp/cache/`.
|
||||
|
||||
## Hosting / konfiguracja serwera
|
||||
|
||||
- `.htaccess` w katalogu glownym, `Admin/`, `core/`, `template/`, pluginach (Apache + mod_rewrite).
|
||||
- `.htpasswd` w katalogu glownym (kontrola dostepu na poziomie serwera).
|
||||
- `.vscode/ftp-kr.json`, `.vscode/sftp.json` — deployment przez SFTP/FTP z poziomu VS Code.
|
||||
35
.paul/codebase/testing.md
Normal file
35
.paul/codebase/testing.md
Normal file
@@ -0,0 +1,35 @@
|
||||
# Testing
|
||||
|
||||
**Wygenerowano:** 2026-05-20 (`$paul-map-codebase`)
|
||||
|
||||
## Status
|
||||
|
||||
**Brak wlasnych testow aplikacyjnych.**
|
||||
|
||||
- Brak frameworka testowego (`phpunit`, `pest`, `codeception`).
|
||||
- Brak `composer.json`, brak skryptu testowego.
|
||||
- Brak katalogu `tests/` na poziomie aplikacji.
|
||||
- Jedyne pliki testowe nalezace do wendorowanych bibliotek (poza zakresem aplikacji): `core/lib/log4php/src/tests/*` (testy biblioteki log4php).
|
||||
|
||||
## Implikacje dla planowania
|
||||
|
||||
- Kazda zmiana powinna byc planowana z naciskiem na rownolegle UAT/manual (zob. `$paul-verify`).
|
||||
- Brak siatki bezpieczenstwa = wysoka odpowiedzialnosc audytu (`$paul-audit`) i precyzyjnego planu (`$paul-plan`).
|
||||
- Przy nowych funkcjach rozwaz dodanie minimalnego harness'a (smoke test PHP/CURL) zanim wprowadzisz zmiany w `core/`, `module/`, lub `controller/`.
|
||||
|
||||
## Komendy build/lint/test
|
||||
|
||||
- Brak — projekt nie ma `package.json` ani `composer.json`.
|
||||
- Deploy: konfiguracja FTP/SFTP w `.vscode/ftp-kr.json`, `.vscode/sftp.json`.
|
||||
|
||||
## Logowanie jako substytut
|
||||
|
||||
- log4php (`core/lib/log4php/`), konfiguracja: `core/config/Log4PHPConfig*.xml`.
|
||||
- `MFLog::Warn/Error/Fatal` w `core/class/MFLog.class.php`.
|
||||
- Pliki `error_log` w roocie — surowy log PHP.
|
||||
|
||||
## Reczna weryfikacja
|
||||
|
||||
- Tryb publiczny: `index.php` -> `$_SERVER['REQUEST_URI']` + routes.
|
||||
- Tryb admin: `Admin/index.php` z autoryzacja `Admin/module/AuthDAL.mod.php`.
|
||||
- Captcha: `IndexController::Captcha` (`routes.php:6`), kontrola: `IndexController::AjaxRegisterCaptchaCheck` (`routes.php:7`).
|
||||
50
.paul/codebase/tooling_status.md
Normal file
50
.paul/codebase/tooling_status.md
Normal file
@@ -0,0 +1,50 @@
|
||||
# Tooling Status
|
||||
|
||||
**Timestamp:** 2026-05-20
|
||||
**Mode:** full (`$paul-map-codebase`)
|
||||
|
||||
## Narzedzia
|
||||
|
||||
| Narzedzie | Stan | Komentarz |
|
||||
|-----------|------|-----------|
|
||||
| codebase-memory-mcp | ok | Index: project `C-visual-studio-code-projekty-zurawik.pl`, 21402 nodes, 52193 edges, tryb `moderate`. |
|
||||
| jscpd | disabled by policy | `.paul/config.md` -> `quality_radar.tools.jscpd: false`. Brak skanu duplikatow. |
|
||||
| ast-grep | disabled by policy | `.paul/config.md` -> `quality_radar.tools.ast_grep: false`. Brak skanu strukturalnego. |
|
||||
|
||||
## Komendy wykonane
|
||||
|
||||
- `mcp__codebase-memory-mcp__index_repository(repo_path=C:\visual-studio-code\projekty\zurawik.pl, mode=moderate)` -> sukces (status `indexed`).
|
||||
- `mcp__codebase-memory-mcp__get_architecture(project=C-visual-studio-code-projekty-zurawik.pl, aspects=[all])` -> sukces.
|
||||
- `git ls-files` -> listing 8449 plikow (znaczna czesc to skompilowane szablony Smarty w `Admin/temp/compile/`, pluginy CKEditor, biblioteki w `core/lib/`).
|
||||
|
||||
## Surowe wyniki
|
||||
|
||||
- Brak zapisanego pliku `.paul/codebase/radar/codebase-memory-full.txt` (dane zostaly skonsumowane bezposrednio w `impact_map.md` / `quality_risks.md`).
|
||||
|
||||
## Project graph summary
|
||||
|
||||
- Method: 5860
|
||||
- Module: 5748
|
||||
- File: 5747
|
||||
- Variable: 1627
|
||||
- Class: 892
|
||||
- Function: 876
|
||||
- Folder: 523
|
||||
- Section: 81
|
||||
- Route: 40
|
||||
- Interface: 7
|
||||
- Project: 1
|
||||
|
||||
Top edges: CALLS (20217), DEFINES (15092), DEFINES_METHOD (5860), CONTAINS_FILE (5748), SIMILAR_TO (3386).
|
||||
|
||||
## Post-apply scan (2026-05-20)
|
||||
|
||||
- Plan: `.paul/plans/20260520-1213-admin-too-many-redirects/PLAN.md`.
|
||||
- Zmieniony plik: `.htaccess` (root) — dodano `RewriteRule ^Admin/?$ Admin/index.php [L]`.
|
||||
- Quality Radar tools: codebase-memory-mcp ok, jscpd/ast-grep disabled by policy. Skan ograniczony do zmienionego pliku — bez wplywu na graf kodu PHP (zmiana w warstwie serwera HTTP).
|
||||
|
||||
## Nastepne akcje
|
||||
|
||||
- `$paul-plan [praca]` — uruchomienie planowania konkretnej zmiany; Quality Radar automatycznie przeskanuje impact.
|
||||
- Reczne wlaczenie `jscpd` / `ast-grep` w `.paul/config.md`, jezeli chcesz wykryc duplikaty kodu lub strukturalne anty-wzorce.
|
||||
- Rozwazyc utworzenie ADR (`manage_adr` w codebase-memory-mcp) dla zapisania kluczowych decyzji architektonicznych przed wieksza zmiana.
|
||||
Reference in New Issue
Block a user