- 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>
25 KiB
25 KiB
Struktura Projektu shopPRO
Dokumentacja struktury projektu shopPRO do szybkiego odniesienia.
System Cache (Redis)
Klasy odpowiedzialne za cache
RedisConnection (Shared\Cache\RedisConnection)
- Plik:
autoload/Shared/Cache/RedisConnection.php - Opis: Singleton zarządzający połączeniem z Redis
- Metody:
getInstance()- pobiera instancję połączeniagetConnection()- zwraca obiekt Redis
CacheHandler (Shared\Cache\CacheHandler)
- Plik:
autoload/Shared/Cache/CacheHandler.php - Opis: Handler do obsługi cache Redis
- Metody:
get($key)- pobiera wartość z cache (zwraca zserializowany string, wymagaunserialize())set($key, $value, $ttl = 86400)- zapisuje wartość do cache (serializuje wewnętrznie)exists($key)- sprawdza czy klucz istniejedelete($key)- usuwa pojedynczy kluczdeletePattern($pattern)- usuwa klucze według wzorca
USUNIĘTA: Cache (legacy file-based)
— usunięta w ver. 0.282autoload/class.Cache.php- Zastąpiona przez
CacheHandler(Redis) we wszystkich wywołaniach
Helpers (Shared\Helpers\Helpers)
- Plik:
autoload/Shared/Helpers/Helpers.php - Metody cache:
clear_product_cache(int $product_id)- czyści cache konkretnego produktu
Wzorce kluczy Redis
Produkty
shop\product:{product_id}:{lang_id}:{permutation_hash}
- Przechowuje zserializowany obiekt produktu
- TTL: 24 godziny (86400 sekund)
- Klasa:
shop\Product::getFromCache()-autoload/shop/class.Product.php:121
Opcje ilościowe produktu
\shop\Product::get_product_permutation_quantity_options:{product_id}:{permutation}
- Przechowuje informacje o ilości i komunikatach magazynowych
- Klasa:
shop\Product::get_product_permutation_quantity_options()-autoload/shop/class.Product.php:549
Zestawy produktów
\shop\Product::product_sets_when_add_to_basket:{product_id}
- Przechowuje produkty często kupowane razem
- Klasa:
shop\Product::product_sets_when_add_to_basket()-autoload/shop/class.Product.php:316
Integracje z systemami zewnętrznymi (CRON)
Plik: cron.php
Apilo
- Aktualizacja pojedynczego produktu: synchronizacja cen i stanow
- Czestotliwosc: Co 10 minut
- Synchronizacja cennika: masowa aktualizacja cen z Apilo
- Czestotliwosc: Co 1 godzine
- Synchronizacja zaleglych syncow platnosci/statusow: kolejka retry dla chwilowej niedostepnosci Apilo (
temp/apilo-sync-queue.json)- Przetwarzanie: przy kazdym uruchomieniu
cron.php(limit wsadowy)
- Przetwarzanie: przy kazdym uruchomieniu
Uwaga: Integracje Sellasist i Baselinker zostaly usuniete w ver. 0.263.
Panel Administratora
Routing
- Główny katalog:
admin/ - Template główny:
admin/templates/site/main-layout.php - Kontrolery (nowe):
autoload/admin/Controllers/ - Kontrolery legacy (fallback):
autoload/admin/controls/
Przycisk "Wyczyść cache"
- Lokalizacja UI:
admin/templates/site/main-layout.php:172 - JavaScript:
admin/templates/site/main-layout.php:235-274 - Endpoint AJAX:
/admin/settings/clear_cache_ajax/ - Kontroler:
autoload/admin/Controllers/SettingsController.php:43-60 - Działanie:
- Pokazuje spinner "Czyszczę cache..."
- Czyści katalogi:
temp/,thumbs/ - Wykonuje
flushAll()na Redis - Pokazuje "Cache wyczyszczony!" przez 2 sekundy
- Przywraca stan początkowy
Struktura katalogów
shopPRO/
├── admin/ # Panel administratora
│ ├── templates/ # Szablony widoków
│ └── layout/ # Zasoby CSS/JS/ikony
├── autoload/ # Klasy autoloadowane
│ ├── admin/ # Klasy panelu admin
│ │ ├── Controllers/ # Nowe kontrolery DI
│ │ ├── controls/ # Kontrolery legacy (fallback)
│ │ └── factory/ # Fabryki/helpery
│ ├── Domain/ # Repozytoria/logika domenowa
│ ├── Shared/ # Wspoldzielone narzedzia
│ │ ├── Cache/ # CacheHandler, RedisConnection
│ │ ├── Helpers/ # Helpers (ex class.S.php)
│ │ └── Tpl/ # Tpl (silnik szablonow)
│ ├── front/ # Klasy frontendu
│ │ ├── Controllers/ # Nowe kontrolery DI (Newsletter, ShopBasket)
│ │ ├── Views/ # Nowe widoki (Newsletter, Articles, Languages, Banners, Menu, Scontainers)
│ │ ├── controls/ # Kontrolery legacy (Site, ...)
│ │ ├── view/ # Widoki legacy (Site, ...)
│ │ └── factory/ # Fabryki/helpery (fasady)
│ └── shop/ # Klasy sklepu
├── docs/ # Dokumentacja techniczna
├── libraries/ # Biblioteki zewnętrzne
├── temp/ # Cache tymczasowy
├── thumbs/ # Miniatury zdjęć
└── cron.php # Zadania CRON
Baza danych
Główne tabele produktów
pp_shop_products- produkty głównepp_shop_products_langs- tłumaczenia produktówpp_shop_products_images- zdjęcia produktówpp_shop_products_categories- kategorie produktówpp_shop_products_custom_fields- pola własne produktów
Tabele integracji
- Kolumny w
pp_shop_products:apilo_product_id,apilo_product_name,apilo_get_data_date
- Tabele ustawien:
pp_shop_apilo_settings(key-value)pp_shop_shoppro_settings(key-value)
Tabele checkout
pp_shop_payment_methods- metody platnosci sklepu (mapowanieapilo_payment_type_id)pp_shop_transports- rodzaje transportu sklepu (mapowanieapilo_carrier_account_id)pp_shop_transport_payment_methods- powiazanie metod transportu i platnosci
Pelna dokumentacja tabel: DATABASE_STRUCTURE.md
Konfiguracja
Redis
- Konfiguracja:
config.php(zmienna$config['redis']) - Parametry: host, port, password
Autoload
- Funkcja:
__autoload_my_classes()wcron.php:6 - Wzorzec:
autoload/{namespace}/class.{ClassName}.php
Klasy pomocnicze
\Shared\Helpers\Helpers (autoload/Shared/Helpers/Helpers.php)
Główna klasa helper (przeniesiona z class.S.php) z metodami:
seo($val)- generowanie URL SEOnormalize_decimal($val, $precision)- normalizacja liczbsend_email()- wysyłanie emailidelete_dir($dir)- usuwanie katalogówhtacces()- generowanie .htaccess i sitemap.xmlclear_product_cache($id)- czyszczenie cache produktu
Medoo
- Plik:
libraries/medoo/medoo.php - Zmienna:
$mdb - ORM do operacji na bazie danych
Najważniejsze wzorce
Namespace'y
\admin\Controllers\- nowe kontrolery panelu admin (DI)\admin\controls\- kontrolery legacy (fallback)\Domain\- repozytoria/logika domenowa\admin\factory\- helpery/fabryki admin\front\factory\- helpery/fabryki frontend\shop\- klasy sklepu (Product, Order, itp.)
Cachowanie produktów
// Pobranie produktu z cache
$product = \shop\Product::getFromCache($product_id, $lang_id, $permutation_hash);
// Czyszczenie cache produktu
\Shared\Helpers\Helpers::clear_product_cache($product_id);
Refaktoryzacja do Domain-Driven Architecture
Nowa struktura (w trakcie migracji)
autoload/
├── Domain/ # Nowa warstwa biznesowa (namespace \Domain\)
│ ├── Product/
│ │ └── ProductRepository.php
│ ├── Banner/
│ │ └── BannerRepository.php
│ ├── Settings/
│ │ └── SettingsRepository.php
│ ├── Cache/
│ │ └── CacheRepository.php
│ ├── Article/
│ │ └── ArticleRepository.php
│ ├── User/
│ │ └── UserRepository.php
│ ├── Languages/
│ │ └── LanguagesRepository.php
│ ├── Layouts/
│ │ └── LayoutsRepository.php
│ ├── Newsletter/
│ │ ├── NewsletterRepository.php
│ │ └── NewsletterPreviewRenderer.php
│ ├── Scontainers/
│ │ └── ScontainersRepository.php
│ ├── Dictionaries/
│ │ └── DictionariesRepository.php
│ ├── Pages/
│ │ └── PagesRepository.php
│ ├── Integrations/
│ │ └── IntegrationsRepository.php
│ ├── Promotion/
│ │ └── PromotionRepository.php
│ ├── Coupon/
│ │ └── CouponRepository.php
│ ├── ShopStatus/
│ │ └── ShopStatusRepository.php
│ ├── Transport/
│ │ └── TransportRepository.php
│ ├── ProductSet/
│ │ └── ProductSetRepository.php
│ ├── Producer/
│ │ └── ProducerRepository.php
│ └── ...
├── admin/
│ ├── Controllers/ # Nowe kontrolery (namespace \admin\Controllers\)
│ ├── class.Site.php # Router: nowy kontroler → fallback stary
│ ├── controls/ # Stare kontrolery (niezależny fallback)
│ ├── factory/ # Stare helpery (niezależny fallback)
│ └── view/ # Widoki (statyczne - bez zmian)
├── front/
│ ├── Controllers/ # Nowe kontrolery frontendowe (namespace \front\Controllers\) z DI
│ ├── Views/ # Nowe widoki (namespace \front\Views\) — czyste VIEW, statyczne (Menu, Newsletter, Articles, Languages, Banners, Scontainers)
│ ├── controls/ # Legacy kontrolery (fallback)
│ ├── factory/ # Legacy helpery (stopniowo migrowane)
│ └── view/ # Legacy widoki
├── shop/ # Legacy - fasady do Domain
Aktualizacja 2026-02-14 (ver. 0.268):
- Dodano modul domenowy
Domain/PaymentMethod/PaymentMethodRepository.php. - Dodano kontroler DI
admin/Controllers/ShopPaymentMethodController.php. - Modul
/admin/shop_payment_method/*dziala na nowych widokach (payment-methods-list,payment-method-edit). - Usunieto legacy:
autoload/admin/controls/class.ShopPaymentMethod.php,autoload/admin/factory/class.ShopPaymentMethod.php,autoload/admin/view/class.ShopPaymentMethod.php,admin/templates/shop-payment-method/view-list.php.
Aktualizacja 2026-02-14 (ver. 0.269):
- Dodano modul domenowy
Domain/Transport/TransportRepository.php. - Dodano kontroler DI
admin/Controllers/ShopTransportController.php. - Modul
/admin/shop_transport/*dziala na nowych widokach (transports-list,transport-edit). - Usunieto legacy:
autoload/admin/controls/class.ShopTransport.php,autoload/admin/view/class.ShopTransport.php,admin/templates/shop-transport/view-list.php. admin\factory\ShopTransportifront\factory\ShopTransportprzepiete na repozytorium.
Aktualizacja 2026-02-14 (ver. 0.270):
shop\Orderzapisuje nieudane syncy Apilo (status/platnosc) do kolejkitemp/apilo-sync-queue.json.cron.phpautomatycznie ponawia zalegle syncy (Order::process_apilo_sync_queue()).shop\Order::set_as_paid()wysyla mapowany typ platnosci Apilo (z mapowania metody platnosci), bez stalej wartoscitype.
Aktualizacja 2026-02-15 (ver. 0.276):
- Dodano modul domenowy
Domain/Order/OrderRepository.php. - Dodano serwis aplikacyjny
Domain/Order/OrderAdminService.php. - Dodano kontroler DI
admin/Controllers/ShopOrderController.php. - Modul
/admin/shop_order/*dziala na nowych widokach (orders-list,order-details,order-edit). - Usunieto legacy:
autoload/admin/controls/class.ShopOrder.php,autoload/admin/factory/class.ShopOrder.php,admin/templates/shop-order/view-list.php.
Aktualizacja 2026-02-15 (ver. 0.277):
- Dodano globalna wyszukiwarke admin w
admin/templates/site/main-layout.php(produkty + zamowienia). - Dodano endpoint AJAX
SettingsController::globalSearchAjax()wautoload/admin/Controllers/SettingsController.php. - Usunieto fasade
autoload/admin/factory/class.Integrations.php. - Wywołania integracji przepiete bezposrednio na
Domain/Integrations/IntegrationsRepository.php.
Routing admin (admin\Site::route())
- Sprawdź mapę
$newControllers→ utwórz instancję z DI → wywołaj - Jeśli nowy kontroler nie istnieje (
class_exists()= false) → fallback naadmin\controls\ - Stary kontroler jest NIEZALEŻNY od nowych klas (bezpieczny fallback)
Dependency Injection
Nowe klasy używają Dependency Injection zamiast global variables:
// STARE
global $mdb;
$quantity = $mdb->get('pp_shop_products', 'quantity', ['id' => $id]);
// NOWE
$repository = new \Domain\Product\ProductRepository($mdb);
$quantity = $repository->getQuantity($id);
Testowanie (tylko dla deweloperów)
UWAGA: Pliki testów NIE są częścią aktualizacji dla klientów!
Narzędzia
- PHPUnit 9.6.34 - framework testowy
- test.bat - uruchamianie testów
- composer.json - autoloading PSR-4
Pelna dokumentacja testow: TESTING.md
Dodatkowa aktualizacja 2026-02-14 (ver. 0.271)
- Dodano modul domenowy
Domain/Attribute/AttributeRepository.php. - Dodano kontroler DI
admin/Controllers/ShopAttributeController.php. - Modul
/admin/shop_attribute/*zostal przepiety na nowe widoki (attributes-list,attribute-edit,values-edit). - Usunieto legacy:
autoload/admin/controls/class.ShopAttribute.php,autoload/admin/factory/class.ShopAttribute.php,autoload/admin/view/class.ShopAttribute.php,admin/templates/shop-attribute/_partials/value.php. - Przepieto zaleznosci kombinacji produktu na
Domain\Attribute\AttributeRepositoryishop\ProductAttribute. - Dla
ShopAttributerouting celowo nie wykonuje fallbacku akcji do legacy kontrolera.
Dodatkowa aktualizacja 2026-02-15 (ver. 0.272)
- Dodano modul domenowy
Domain/ProductSet/ProductSetRepository.php. - Dodano kontroler DI
admin/Controllers/ShopProductSetsController.php. - Modul
/admin/shop_product_sets/*dziala na nowych widokach (product-sets-list,product-set-edit). - Usunieto legacy:
autoload/admin/controls/class.ShopProductSets.php,autoload/admin/factory/class.ShopProductSet.php,admin/templates/shop-product-sets/view-list.php,admin/templates/shop-product-sets/set-edit.php. shop\ProductSetprzepiety na fasade doDomain\ProductSet\ProductSetRepository.
Dodatkowa aktualizacja 2026-02-15 (ver. 0.273)
- Dodano modul domenowy
Domain/Producer/ProducerRepository.php.
Dodatkowa aktualizacja 2026-02-15 (ver. 0.274)
- Dodano modul domenowy
Domain/Client/ClientRepository.php. - Dodano kontroler DI
admin/Controllers/ShopClientsController.php. - Modul
/admin/shop_clients/*dziala na nowych widokach opartych ocomponents/table-list. - Usunieto legacy:
autoload/admin/controls/class.ShopClients.php,autoload/admin/factory/class.ShopClients.php. - Routing i menu admin przepiete na kanoniczny URL
/admin/shop_clients/list/. - Dodano kontroler DI
admin/Controllers/ShopProducerController.php. - Modul
/admin/shop_producer/*dziala na nowych widokach (producers-list,producer-edit). - Usunieto legacy:
autoload/admin/controls/class.ShopProducer.php,admin/templates/shop-producer/list.php,admin/templates/shop-producer/edit.php. shop\Producerprzepiety na fasade doDomain\Producer\ProducerRepository.admin\controls\ShopProductuzywaProducerRepository::allProducers().- Usunieto 6 pustych factory facades:
admin\factory\Languages,admin\factory\Newsletter,admin\factory\Scontainers,admin\factory\ShopProducer,admin\factory\ShopTransport,admin\factory\Layouts. - Przepieto 2 wywolania
admin\factory\ShopTransportwadmin\factory\ShopProductnaDomain\Transport\TransportRepository. - Usuniety fallback do
admin\factory\Layoutswadmin\controls\ShopProduct.
Dodatkowa aktualizacja 2026-02-15 (ver. 0.274)
- Dodano kontroler DI
admin/Controllers/ShopProductController.php(akcjemass_edit,mass_edit_save,get_products_by_category). - Routing
admin\Siterozszerzono o mapowanieShopProductdo nowego kontrolera. Domain/Product/ProductRepository.phprozszerzono o metody dla mass-edit:allProductsForMassEdit,getProductsByCategory,applyDiscountPercent.- Usunieto legacy akcje mass-edit z
autoload/admin/controls/class.ShopProduct.php. - Widok
/admin/shop_product/mass_edit/przepiety na nowy partialadmin/templates/shop-product/mass-edit-custom-script.php. - Ujednolicono UI drzewek (strzalki/expand) w:
admin/templates/pages/pages-list.php+admin/templates/pages/subpages-list.phpadmin/templates/articles/subpages-list.php+admin/templates/articles/article-edit-custom-script.php
Dodatkowa aktualizacja 2026-02-15 (ver. 0.275)
- Dodano modul domenowy
Domain/Category/CategoryRepository.php. - Dodano kontroler DI
admin/Controllers/ShopCategoryController.php. - Modul
/admin/shop_category/*dziala przez DI i kanoniczny URL/admin/shop_category/list/(z zachowaniem aliasuview_list). - Widoki
shop-category/*maja wydzielone skrypty*-custom-script.phpi ujednolicone strzalki drzewa (button + caret + aria-expanded). - Endpointy AJAX dla drzewka kategorii i kolejnosci produktow przepiete na
/admin/shop_category/save_categories_order/,/admin/shop_category/save_products_order/,/admin/shop_category/cookie_categories/. - Usunieto legacy:
autoload/admin/controls/class.ShopCategory.php,autoload/admin/factory/class.ShopCategory.php,autoload/admin/view/class.ShopCategory.php. - Przepieto zaleznosci
ShopProductzadmin\factory\ShopCategorynaDomain\Category\CategoryRepository. - Usunieto preload
autoload/admin/factory/class.ShopCategory.phpzlibraries/grid/config.php.
Dodatkowa aktualizacja 2026-02-15 (ver. 0.277) - ShopProduct (factory)
Domain/Product/ProductRepository.phprozszerzono o ~40 metod: CRUD, save, delete, duplicate, toggleStatus, updatePrice, kombinacje, zdjecia/pliki, Google Feed XML, custom labels.admin/Controllers/ShopProductController.phprozszerzono o ~30 akcji obslugujacych caly modul produktow.- Konstruktor kontrolera teraz przyjmuje
ProductRepository+IntegrationsRepository. - Routing w
admin\Sitezaktualizowany (dodanoIntegrationsRepository, blokada fallbacku na legacy). - Przepieto zaleznosci zewnetrzne:
ProductArchiveController,order-details.php,cron.php,cron-xml.php,products-list-table.php,stock.php. - Przepieto endpointy AJAX z
admin/ajax.phpna kontroler:product_file_delete,product_file_name_change. - Przepieto
cookie_categoriesw widokach product-edit i mass-edit na/admin/shop_category/cookie_categories/. - Usunieto legacy:
autoload/admin/controls/class.ShopProduct.php,autoload/admin/factory/class.ShopProduct.php,admin/ajax/shop.php. - Usunieto
require_once 'ajax/shop.php'zadmin/ajax.php.
Dodatkowa aktualizacja 2026-02-16 (ver. 0.277) - Dashboard, Update, legacy cleanup, admin\App
- Dodano
Domain/Dashboard/DashboardRepository.php(7 metod, Redis caching). - Dodano
admin/Controllers/DashboardController.php(DI z DashboardRepository + ShopStatusRepository). - Dodano
Domain/Update/UpdateRepository.php(update, runPendingMigrations, helper methods). - Dodano
admin/Controllers/UpdateController.php(DI z UpdateRepository). - Przepisano
admin/templates/update/main-view.php— usunietogridEdit,$.prompt(), zastapiono panelami +$.confirm(). - Usunieto
autoload/admin/factory/class.Articles.php(martwy kod), przeniesionoarticles_by_date_adddoArticleRepository. - Przepieto
front\factory\NewsletternaArticleRepository::articlesByDateAdd(). - Przeniesiono logike z
admin\view\Page::show()doadmin\App::render(). - Przemianowano
admin\Sitenaadmin\App(plikApp.php). - Usunieto fallback na
\admin\controls\w routing (martwy kod). - Usunieto puste foldery:
autoload/admin/controls/,autoload/admin/factory/,autoload/admin/view/. - Usunieto stary plik
autoload/admin/class.Site.php. - Pelna migracja admin zakonczona — wszystkie moduly na Domain + DI + Controllers.
Aktualizacja 2026-02-16 (ver. 0.279) - Newsletter + Languages frontend migration
- Usunięta fasada
front\factory\Languages— wszystkie 26 zależności przepięte bezpośrednio naDomain\Languages\LanguagesRepository. - Usunięta fasada
front\factory\Newsletter— logika przeniesiona doDomain\Newsletter\NewsletterRepository(6 nowych metod frontendowych). - Usunięty stary kontroler
front\controls\Newsletteri widokfront\view\Newsletter. - Utworzony nowy namespace
front\Controllers\— pierwszy frontowy kontroler z DI:NewsletterController. - Utworzony nowy namespace
front\Views\— czyste widoki statyczne:Languages,Newsletter,Banners. - Zaktualizowany routing w
front\controls\Site::route()—getControllerFactories()(DI) z fallbackiem na starefront\controls\. - Przepięte 4 wywołania
Newsletter::get_template()wfront\factory\ShopClientnaNewsletterRepository::templateByName(). - FIX:
newsletter_unsubscribe()— błędna składnia medoodelete().
Aktualizacja 2026-02-16 (ver. 0.281) - Banners frontend migration
- NOWE METODY w
Domain/Banner/BannerRepository.php:banners(),mainBanner()(Redis cache, filtrowanie dat). - NOWY:
front\Views\Banners— czysty VIEW (renderowanie szablonow banner/). - USUNIETA:
front\factory\Banners— logika przeniesiona doBannerRepository. - USUNIETA:
front\view\Banners— zastapiona przezfront\Views\Banners. - UPDATE:
front\view\Site::show()— przepiecie na repo + Views.
Aktualizacja 2026-02-16 (ver. 0.282) - Cache cleanup, Shared namespace
- NOWY:
Shared\Cache\CacheHandler+Shared\Cache\RedisConnection— namespace Shared. - USUNIETA:
class.CacheHandler.php— wrapper, 60 odwolan przepietych na\Shared\Cache\CacheHandler. - USUNIETA:
class.RedisConnection.php— wrapper, 12 odwolan przepietych na\Shared\Cache\RedisConnection. - USUNIETA:
class.Cache.php— legacy file-based cache. - UPDATE: 6 plikow przepietych z
\Cache::fetch/storenaCacheHandler(ShopProduct, ShopPaymentMethod, ShopCategory, ShopTransport, ShopAttribute, DictionariesRepository).
Aktualizacja 2026-02-16 - class.S.php migration, Mobile_Detect removal, S cleanup
- USUNIETA:
class.Mobile_Detect.php— przestarzala detekcja mobilna (UA v2.8.16), zastapiona responsive design. - USUNIETA: metoda
S::is_mobile()i 3 warunki mobilne wfront\view\Site(m_html/m_css/m_js zawsze puste). - USUNIETE z
LayoutsRepository: polam_html,m_css,m_js(save + defaultLayout). - CLEANUP
class.S.php: usunieto 12 nieuzywanych metod (set_array_value, parse_name, clear_redis_cache, get_domain, pre_dump, escape, chmod_r, rrmdir, rcopy, pre, json_to_array, is_empty_dir). - FIX:
array_cartesian_product()— iteracja po niezdefiniowanej zmiennej$arrayzamiast parametru$input. - PRZENIESIONA:
class.S.php→Shared\Helpers\Helpers(namespaceShared\Helpers, klasaHelpers). - ZAMIENIONE: ~140 plikow —
\S::→\Shared\Helpers\Helpers::. - NOWY:
tests/stubs/Helpers.php— stub klasy Helpers dla testow. - USUNIETA:
autoload/class.S.php— zastapiona przezShared\Helpers\Helpers.
Aktualizacja 2026-02-17 (ver. 0.286) - Layouts, Menu, Pages frontend migration
- NOWE METODY w
Domain/Layouts/LayoutsRepository.php:categoryDefaultLayoutId(),getDefaultLayout(),getProductLayout(),getArticleLayout(),getCategoryLayout(),getActiveLayout(). - NOWE METODY w
Domain/Pages/PagesRepository.php:frontPageDetails(),frontPageSort(),frontMainPageId(),frontLangUrl(),frontMenuDetails(),frontMenuPages(). - NOWY:
front\Views\Menu— czysty VIEW (pages(),menu()). - USUNIETA:
front\factory\class.Layouts.php— logika przeniesiona doLayoutsRepository. - USUNIETA:
front\factory\class.Menu.php— logika przeniesiona doPagesRepository. - USUNIETA:
front\factory\class.Pages.php— logika przeniesiona doPagesRepository. - USUNIETA:
front\view\class.Menu.php— zastapiona przezfront\Views\Menu. - USUNIETA:
templates\menu\submenu.php— martwy kod.
Aktualizacja 2026-02-17 - Tpl namespace, CurlServer removal, thumb.php fix
- NOWY:
autoload/Shared/Tpl/Tpl.php— silnik szablonow w namespaceShared\Tpl. - USUNIETA:
autoload/class.Tpl.php— zastapiona przezShared\Tpl\Tpl. - USUNIETA:
autoload/curl.class.php— klasaCurlServerbez referencji w projekcie. - ZAMIENIONE: ~135 plikow —
\Tpl::/new \Tpl→\Shared\Tpl\Tpl::/new \Shared\Tpl\Tpl. - FIX:
libraries/thumb.php— require przepiety naShared/Image/ImageManipulator.php, poprawiony short open tag. - FIX:
Tpl::render()branch 3 — sprawdzal../templates_user/ale ladowal../templates/.
Dokument aktualizowany: 2026-02-17 (ver. 0.286)