ver. 0.288: BasketCalculator + ShopBasketController migration, cms\Layout removal
- Migrate front\factory\ShopBasket → Domain\Basket\BasketCalculator (4 static methods, 18 callers updated) - Migrate front\controls\ShopBasket → front\Controllers\ShopBasketController (camelCase, instance methods) - Add snake_case→camelCase action dispatch for new controllers in Site::route() - Update title()/page_title() to check front\Controllers\ before fallback - Remove cms\Layout class (replaced by $layoutsRepo->find()) - Add 8 tests for BasketCalculator (484 tests, 1528 assertions) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -4,6 +4,27 @@ Logi zmian z migracji na Domain-Driven Architecture. Najnowsze na gorze.
|
||||
|
||||
---
|
||||
|
||||
## ver. 0.288 (2026-02-17) - BasketCalculator + ShopBasketController + cms\Layout removal
|
||||
|
||||
- **ShopBasket (factory → Domain)** — migracja na Domain
|
||||
- NOWY: `Domain\Basket\BasketCalculator` — 4 statyczne metody (`summaryWp`, `countProductsText`, `summaryPrice`, `countProducts`)
|
||||
- USUNIETA: `front\factory\class.ShopBasket.php` — logika przeniesiona do `BasketCalculator`
|
||||
- UPDATE: 18 callerow w 7 plikach przepietych na `\Domain\Basket\BasketCalculator::`
|
||||
- **ShopBasket (controls → Controllers)** — migracja kontrolera
|
||||
- NOWY: `front\Controllers\ShopBasketController` — instancyjny kontroler z camelCase metodami
|
||||
- Wyekstrahowano `jsonBasketResponse()` — wspolna odpowiedz JSON dla 4 metod koszyka
|
||||
- Zainicjalizowano zmienne `$values`, `$attributes`, `$custom_fields` w `basketAddProduct()`
|
||||
- USUNIETA: `front\controls\class.ShopBasket.php` — zastapiona przez `ShopBasketController`
|
||||
- UPDATE: `front\controls\Site::route()` — konwersja `snake_case → camelCase` w dispatch dla nowych kontrolerow
|
||||
- UPDATE: `front\controls\Site::title()` / `page_title()` — sprawdzanie `front\Controllers\*Controller` przed fallback
|
||||
- Zarejestrowany `'ShopBasket'` w `getControllerFactories()`
|
||||
- **cms\Layout removal**
|
||||
- USUNIETA: `autoload/cms/class.Layout.php` — caly folder `autoload/cms/` (1 klasa, bug w `__get()`)
|
||||
- UPDATE: `front\view\Site::show()` — `new \cms\Layout(...)` → `$layoutsRepo->find(...)`
|
||||
- Testy: 484 OK, 1528 asercji (+8 testow: BasketCalculatorTest)
|
||||
|
||||
---
|
||||
|
||||
## ver. 0.287 (2026-02-17) - Scontainers + ShopAttribute frontend migration
|
||||
|
||||
- **Scontainers (frontend)** — migracja na Domain
|
||||
@@ -697,4 +718,4 @@ Logi zmian z migracji na Domain-Driven Architecture. Najnowsze na gorze.
|
||||
- Metoda `clear_product_cache()` w klasie S
|
||||
|
||||
---
|
||||
*Dokument aktualizowany: 2026-02-17*
|
||||
*Dokument aktualizowany: 2026-02-17 (ver. 0.288)*
|
||||
|
||||
@@ -14,7 +14,7 @@ Panel administratora (33 moduły) został w pełni zmigrowany na architekturę D
|
||||
| Klasa | Status | Logika biznesowa |
|
||||
|-------|--------|-----------------|
|
||||
| Site | Router główny | route(), check_url_params(), title() |
|
||||
| ShopBasket | MIXED | Operacje koszyka, add/remove/quantity, checkout |
|
||||
| ShopBasket | ZMIGROWANY do `front\Controllers\ShopBasketController` | Operacje koszyka, add/remove/quantity, checkout |
|
||||
| ShopClient | Fasada | Deleguje do factory |
|
||||
| ShopOrder | KRYTYCZNY | Webhooki płatności (tPay, Przelewy24, Hotpay) — bezpośrednie operacje DB |
|
||||
| ShopProduct | Fasada | lazy_loading, warehouse_message, draw_product_attributes |
|
||||
@@ -31,7 +31,7 @@ Panel administratora (33 moduły) został w pełni zmigrowany na architekturę D
|
||||
| ShopCategory | ORYGINALNA LOGIKA | WYSOKI — złożone SQL z language fallback |
|
||||
| Articles | ORYGINALNA LOGIKA | WYSOKI — złożone SQL z language fallback |
|
||||
| ShopPromotion | ORYGINALNA LOGIKA | WYSOKI — silnik promocji (5 typów) |
|
||||
| ShopBasket | Fasada | ŚREDNI — summary_price, count |
|
||||
| ShopBasket | ZMIGROWANA do `Domain\Basket\BasketCalculator` — usunięta | — |
|
||||
| ShopTransport | CZĘŚCIOWO zmigrowana | ŚREDNI — transport_methods z filtrowaniem |
|
||||
| ShopPaymentMethod | ZMIGROWANA (Domain) | — |
|
||||
| ShopStatuses | ZMIGROWANA (Domain) | — |
|
||||
@@ -95,7 +95,7 @@ Panel administratora (33 moduły) został w pełni zmigrowany na architekturę D
|
||||
### cms/ (1 klasa)
|
||||
| Klasa | Status |
|
||||
|-------|--------|
|
||||
| Layout | BUG w __get() — referuje $this->data które nie istnieje |
|
||||
| Layout | USUNIETA — zastapiona przez `$layoutsRepo->find()` |
|
||||
|
||||
### templates/ (75 plików w 15 modułach)
|
||||
articles(8), banner(2), controls(1), menu(4), newsletter(2), scontainers(1), shop-basket(9), shop-category(6), shop-client(8), shop-coupon(1), shop-order(3), shop-producer(3), shop-product(12), shop-search(3), site(11)
|
||||
@@ -114,7 +114,7 @@ articles(8), banner(2), controls(1), menu(4), newsletter(2), scontainers(1), sho
|
||||
1. **KRYTYCZNY** `front\factory\ShopClient::login()` — hardcoded password bypass `'Legia1916'`
|
||||
2. `front\factory\Settings::get_single_settings_value()` — ignoruje `$param`, zawsze zwraca `firm_name`
|
||||
3. ~~`front\factory\Newsletter::newsletter_unsubscribe()` — błędna składnia SQL w delete~~ **NAPRAWIONE** — `NewsletterRepository::unsubscribe()` z poprawną składnią medoo `delete()`
|
||||
4. `cms\Layout::__get()` — referuje nieistniejące `$this->data`
|
||||
4. ~~`cms\Layout::__get()` — referuje nieistniejące `$this->data`~~ **NAPRAWIONE** — klasa usunięta, zastąpiona przez `$layoutsRepo->find()`
|
||||
5. `shop\Search` — typo w use: `shop\Produt` (brak 'c')
|
||||
|
||||
---
|
||||
|
||||
@@ -108,9 +108,9 @@ shopPRO/
|
||||
│ │ ├── Helpers/ # Helpers (ex class.S.php)
|
||||
│ │ └── Tpl/ # Tpl (silnik szablonow)
|
||||
│ ├── front/ # Klasy frontendu
|
||||
│ │ ├── Controllers/ # Nowe kontrolery DI (Newsletter)
|
||||
│ │ ├── Controllers/ # Nowe kontrolery DI (Newsletter, ShopBasket)
|
||||
│ │ ├── Views/ # Nowe widoki (Newsletter, Articles, Languages, Banners, Menu, Scontainers)
|
||||
│ │ ├── controls/ # Kontrolery legacy (Site, ShopBasket, ...)
|
||||
│ │ ├── controls/ # Kontrolery legacy (Site, ...)
|
||||
│ │ ├── view/ # Widoki legacy (Site, ...)
|
||||
│ │ └── factory/ # Fabryki/helpery (fasady)
|
||||
│ └── shop/ # Klasy sklepu
|
||||
|
||||
@@ -36,7 +36,13 @@ Alternatywnie (Git Bash):
|
||||
Ostatnio zweryfikowano: 2026-02-17
|
||||
|
||||
```text
|
||||
OK (476 tests, 1512 assertions)
|
||||
OK (484 tests, 1528 assertions)
|
||||
```
|
||||
|
||||
Aktualizacja po migracji BasketCalculator + ShopBasketController + cms\Layout removal (2026-02-17, ver. 0.288):
|
||||
```text
|
||||
Pelny suite: OK (484 tests, 1528 assertions)
|
||||
Nowe testy: BasketCalculatorTest (+8: summaryWp, countProducts, countProductsText — singular/plural/cast)
|
||||
```
|
||||
|
||||
Aktualizacja po migracji Scontainers + ShopAttribute frontend (2026-02-17, ver. 0.287):
|
||||
@@ -130,6 +136,7 @@ tests/
|
||||
| | |-- Article/ArticleRepositoryTest.php
|
||||
| | |-- Attribute/AttributeRepositoryTest.php
|
||||
| | |-- Banner/BannerRepositoryTest.php
|
||||
| | |-- Basket/BasketCalculatorTest.php
|
||||
| | |-- Cache/CacheRepositoryTest.php
|
||||
| | |-- Coupon/CouponRepositoryTest.php
|
||||
| | |-- Category/CategoryRepositoryTest.php
|
||||
@@ -531,6 +538,16 @@ Nowe testy dodane 2026-02-17:
|
||||
- `tests/Unit/Domain/Layouts/LayoutsRepositoryTest.php` (rozszerzenie: +8 testow frontend: categoryDefaultLayoutId, getDefaultLayout, getProductLayout, getArticleLayout, getCategoryLayout, getActiveLayout)
|
||||
- `tests/Unit/Domain/Pages/PagesRepositoryTest.php` (rozszerzenie: +8 testow frontend: frontPageDetails, frontMainPageId, frontPageSort, frontLangUrl, frontMenuDetails, frontMenuPages)
|
||||
|
||||
## Aktualizacja suite (BasketCalculator + ShopBasketController, ver. 0.288)
|
||||
Ostatnio zweryfikowano: 2026-02-17
|
||||
|
||||
```text
|
||||
OK (484 tests, 1528 assertions)
|
||||
```
|
||||
|
||||
Nowe testy dodane 2026-02-17:
|
||||
- `tests/Unit/Domain/Basket/BasketCalculatorTest.php` (8 testow: summaryWp, summaryWpEmpty, countProducts, countProductsEmpty, countProductsTextSingular, countProductsTextPlural2to4, countProductsTextPlural5Plus, countProductsTextCastsToInt)
|
||||
|
||||
## Aktualizacja suite (Scontainers + ShopAttribute frontend, ver. 0.287)
|
||||
Ostatnio zweryfikowano: 2026-02-17
|
||||
|
||||
|
||||
@@ -18,16 +18,16 @@ Aktualizacje znajdują się w folderze `updates/0.XX/` gdzie XX oznacza dziesią
|
||||
|
||||
## Procedura tworzenia nowej aktualizacji
|
||||
|
||||
## Status biezacej aktualizacji (ver. 0.287)
|
||||
## Status biezacej aktualizacji (ver. 0.288)
|
||||
|
||||
- Wersja udostepniona: `0.287` (data: 2026-02-17).
|
||||
- Wersja udostepniona: `0.288` (data: 2026-02-17).
|
||||
- Pliki publikacyjne:
|
||||
- `updates/0.20/ver_0.287.zip`, `ver_0.287_files.txt`
|
||||
- `updates/0.20/ver_0.288.zip`, `ver_0.288_files.txt`
|
||||
- Pliki metadanych aktualizacji:
|
||||
- `updates/changelog.php` (dodany wpis `ver. 0.287`)
|
||||
- `updates/versions.php` (`$current_ver = 287`)
|
||||
- `updates/changelog.php` (dodany wpis `ver. 0.288`)
|
||||
- `updates/versions.php` (`$current_ver = 288`)
|
||||
- Weryfikacja testow przed publikacja:
|
||||
- `OK (476 tests, 1512 assertions)`
|
||||
- `OK (484 tests, 1528 assertions)`
|
||||
|
||||
### 1. Określ numer wersji
|
||||
Sprawdź ostatnią wersję w `updates/` i zwiększ o 1.
|
||||
|
||||
Reference in New Issue
Block a user