- 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>
48 KiB
48 KiB
Changelog shopPRO
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 doBasketCalculator - UPDATE: 18 callerow w 7 plikach przepietych na
\Domain\Basket\BasketCalculator::
- NOWY:
- 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_fieldswbasketAddProduct() - USUNIETA:
front\controls\class.ShopBasket.php— zastapiona przezShopBasketController - UPDATE:
front\controls\Site::route()— konwersjasnake_case → camelCasew dispatch dla nowych kontrolerow - UPDATE:
front\controls\Site::title()/page_title()— sprawdzaniefront\Controllers\*Controllerprzed fallback - Zarejestrowany
'ShopBasket'wgetControllerFactories()
- NOWY:
- cms\Layout removal
- USUNIETA:
autoload/cms/class.Layout.php— caly folderautoload/cms/(1 klasa, bug w__get()) - UPDATE:
front\view\Site::show()—new \cms\Layout(...)→$layoutsRepo->find(...)
- USUNIETA:
- Testy: 484 OK, 1528 asercji (+8 testow: BasketCalculatorTest)
ver. 0.287 (2026-02-17) - Scontainers + ShopAttribute frontend migration
- Scontainers (frontend) — migracja na Domain
- NOWA METODA w
ScontainersRepository:frontScontainerDetails()— z Redis cache + fallback - UPDATE:
clearFrontCache()— klucz cache dopasowany do nowego wzorca - NOWY:
front\Views\Scontainers— czysty VIEW (scontainer()) - USUNIETA:
front\factory\class.Scontainers.php— logika przeniesiona doScontainersRepository - USUNIETA:
front\view\class.Scontainers.php— zastapiona przezfront\Views\Scontainers - UPDATE:
front\view\Site::show()— przepiecie na$scontainersRepo->frontScontainerDetails()+\front\Views\Scontainers::
- NOWA METODA w
- ShopAttribute (frontend) — migracja na Domain
- NOWE METODY w
AttributeRepository:frontAttributeDetails(),frontValueDetails()— z Redis cache + fallback - NOWA:
clearFrontCache()— czyszczenie cache frontowego per atrybut/wartość i język - UPDATE:
saveAttribute(),deleteAttribute(),saveValues()— wpiete czyszczenie cache frontowego - USUNIETA:
front\factory\class.ShopAttribute.php— logika przeniesiona doAttributeRepository - UPDATE:
front\factory\ShopOrder— przepiecie na$attributeRepo->frontAttributeDetails()/frontValueDetails() - UPDATE: 3 szablony (
product-attribute.php,summary-view.php,basket-details.php) — przepiecie naAttributeRepository
- NOWE METODY w
- Testy: 476 OK, 1512 asercji (+6 testow: 2 ScontainersRepository frontend, 4 AttributeRepository frontend)
ver. 0.286 (2026-02-17) - Layouts, Menu, Pages frontend migration
- Layouts (frontend) — migracja na Domain
- NOWE METODY w
LayoutsRepository:categoryDefaultLayoutId(),getDefaultLayout(),getProductLayout(),getArticleLayout(),getCategoryLayout(),getActiveLayout()— z Redis cache, 3-level fallback (product→category→default) - USUNIETA:
front\factory\class.Layouts.php— logika przeniesiona doLayoutsRepository - UPDATE:
front\view\Site::show()— przepiecie na$layoutsRepo - UPDATE:
Shared\Helpers\Helpers::htacces()— optymalizacja z 3 wywolancategory_default_layout()do jednej zmiennej
- NOWE METODY w
- Menu + Pages (frontend) — migracja na Domain + Views
- NOWE METODY w
PagesRepository:frontPageDetails(),frontPageSort(),frontMainPageId(),frontLangUrl(),frontMenuDetails(),frontMenuPages()— z Redis cache, rekurencja stron - NOWY:
front\Views\Menu— czysty VIEW (pages(),menu()) - 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 (wola nieistniejaca metodeMenu::submenu()) - UPDATE:
front\controls\Site::check_url_params()— przepiecie na$pagesRepo->frontPageDetails() - UPDATE:
index.php— przepiecie na$pagesRepo->frontPageDetails() - UPDATE:
templates/site/languages.php— przepiecie na$pagesRepo->frontLangUrl() - UPDATE:
templates/menu/menu.php,pages.php,main-menu.php— przepiecie na\front\Views\Menu:: - FIX:
frontPageDetails()— usuniety type hintstringz$langId+ cast(string)(null $lang_id przy wczesnym wywolaniucheck_url_params()) - FIX:
front\controls\class.Site.php— dodano$lang_id ?? ''przy przekazywaniu dofrontPageDetails()
- NOWE METODY w
- Testy: 470 OK, 1484 asercji (+16 testow: 8 LayoutsRepository frontend, 8 PagesRepository frontend)
ver. 0.285 (2026-02-17) - Tpl namespace, CurlServer removal, thumb.php fix
- Shared\Tpl\Tpl — migracja silnika szablonow do namespace Shared
- NOWY:
autoload/Shared/Tpl/Tpl.php(namespaceShared\Tpl) - USUNIETA:
autoload/class.Tpl.php— zastapiona przezShared\Tpl\Tpl - ZAMIENIONE: ~135 plikow —
\Tpl::/new \Tpl→\Shared\Tpl\Tpl::/new \Shared\Tpl\Tpl - DRY: wyciagnieto powtorzony
ob_start/include/ob_get_contents/ob_end_cleando prywatnej metodyrenderFile() - FIX: bug w
render()branch 3 — sprawdzal../templates_user/ale ladowal../templates/ - CLEANUP: usunieta nieuzywana property
$diri konstruktor__construct($dir)
- NOWY:
- CurlServer — usuniecie nieuzywanej klasy
- USUNIETA:
autoload/curl.class.php— klasaCurlServerbez referencji w projekcie (0 uzyc)
- USUNIETA:
- thumb.php — naprawa require po migracji Image
- FIX:
libraries/thumb.php— zmianarequire_once '../autoload/class.Image.php'na../autoload/Shared/Image/ImageManipulator.php+use - FIX: poprawiony short open tag
<?na<?php
- FIX:
- Testy: 454 OK, 1449 asercji
ver. 0.284 (2026-02-16) - DbModel elimination
- DbModel — usunięcie klasy base ORM
- USUNIETA:
autoload/class.DbModel.php— jedyny konsument (shop\Promotion) ma teraz wbudowany konstruktor +__get() - UPDATE:
autoload/shop/class.Promotion.php— usuniętoextends DbModel+use DbModel, wbudowano minimalny konstruktor z$mdb->get()i__get() - Testy: 454 OK, 1449 asercji
- USUNIETA:
ver. 0.283 (2026-02-16) - Legacy class cleanup — S, Html, Email, Image, Log, Mobile_Detect → Shared namespace
- class.S.php → Shared\Helpers\Helpers
- PRZENIESIONA:
class.S.php→autoload/Shared/Helpers/Helpers.php(namespaceShared\Helpers, klasaHelpers) - ZAMIENIONE: ~140 plików —
\S::→\Shared\Helpers\Helpers:: - CLEANUP: usunięto 12 nieużywanych 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 - NOWY:
tests/stubs/Helpers.php— stub klasy Helpers dla testów - USUNIETA:
autoload/class.S.php
- PRZENIESIONA:
- Shared\Html\Html —
autoload/class.Html.php→autoload/Shared/Html/Html.php - Shared\Email\Email —
autoload/class.Email.php→autoload/Shared/Email/Email.php - Shared\Image\Image —
autoload/class.Image.php→autoload/Shared/Image/Image.php - Shared\Log\Log —
autoload/class.Log.php→autoload/Shared/Log/Log.php - Mobile_Detect — USUNIETA: przestarzała detekcja UA (v2.8.16), zastąpiona responsive design
- USUNIETA: metoda
S::is_mobile()i 3 warunki mobilne wfront\view\Site - USUNIETE z
LayoutsRepository: polam_html,m_css,m_js
- USUNIETA: metoda
- Testy: 454 OK, 1449 asercji
ver. 0.282 (2026-02-16) - Cache cleanup, Shared namespace
- Shared\Cache namespace — przeniesienie CacheHandler i RedisConnection do
Shared\Cache\- NOWY:
autoload/Shared/Cache/CacheHandler.php— glowna implementacja - NOWY:
autoload/Shared/Cache/RedisConnection.php— glowna implementacja singleton - USUNIETA:
autoload/class.CacheHandler.php— wrapper usuniety, 60 odwolan przepietych na\Shared\Cache\CacheHandler - USUNIETA:
autoload/class.RedisConnection.php— wrapper usuniety, 12 odwolan przepietych na\Shared\Cache\RedisConnection
- NOWY:
- Eliminacja legacy Cache — usuniecie plikowego cache
class.Cache.php- USUNIETA:
autoload/class.Cache.php— legacy file-based cache (store/fetch z base64+serialize) - UPDATE:
front\factory\ShopProduct— 5 metod przepietych z\Cache::naCacheHandler(get_minimal_price, product_name, product_image, random_products, promoted_products) - UPDATE:
front\factory\ShopPaymentMethod— 3 metody przepiete (payment_methods_by_transport, payment_method, payment_methods) - UPDATE:
front\factory\ShopCategory— 2 metody przepiete (get_category_sort, category_name) - UPDATE:
front\factory\ShopTransport— 2 metody przepiete (transport_cost, transport) - UPDATE:
front\factory\ShopAttribute— 1 metoda przepieta (attribute_details) - UPDATE:
Domain\Dictionaries\DictionariesRepository— prywatne wrappery cacheFetch/cacheStore przepiete na CacheHandler - FIX: naprawione rozbieznosci kluczy cache (random_products, category_name) — fetch i store uzywaly roznych kluczy
- Testy: 454 OK, 1449 asercji
- USUNIETA:
ver. 0.281 (2026-02-16) - Banners frontend migration
- Banners (frontend) — migracja na Domain + Views
- NOWE METODY w
BannerRepository:banners(string $langId),mainBanner(string $langId)— z Redis cache, filtrowanie dat, plaski format$banner['languages'](zgodny z szablonami) - NOWY:
front\Views\Banners— czysty VIEW (banners(),mainBanner()) - USUNIETA:
front\factory\Banners— logika przeniesiona doBannerRepository - USUNIETA:
front\view\Banners— zastapiona przezfront\Views\Banners - UPDATE:
front\view\Site::show()— przepiecie linii 62-63 na repo + Views (bezposrednio$bannerRepo->banners()/$bannerRepo->mainBanner()) - Testy: 454 OK, 1449 asercji (+4 nowe testy w BannerRepositoryTest)
- NOWE METODY w
ver. 0.280 (2026-02-16) - Articles frontend migration
- Articles (frontend) — pelna migracja na Domain + Views
- NOWE METODY w
ArticleRepository:articleDetailsFrontend(),articlesIds(),pageArticlesCount(),pageArticles(),news(),articleNoindex(),topArticles(),newsListArticles() - NOWY:
front\Views\Articles— czysty VIEW + utility (renderowanie, generateTableOfContents, generateHeadersIds, getImage) - UPDATE:
front\view\Site::show()— przepiecie 5 sekcji na repo + Views (BOX aktualnosci, article meta, noindex, news list, top articles) - UPDATE:
front\controls\Site::route()— przepiecie single article + page_type switch (4 typy) na repo + Views - UPDATE: 5 szablonow
templates/articles/*— przepiecie na\front\Views\Articles:: - FASADA:
front\factory\Articles— 10 metod delegujacych do repo + Views - FASADA:
front\view\Articles— 5 metod delegujacych do repo + Views - USUNIETA:
class.Article— encja + metody statyczne; logika przeniesiona doArticleRepository+front\Views\Articles - FIX: eliminacja
global $langzarticleNoindex()— zamiana na jawny parametr$langId - FIX: eliminacja zaleznosci od
\front\factory\Pages::page_sort()wnews()— inline query - FIX: naprawione kolizje nazw zmiennych w
front\view\Site::show()($news_list → $news_list_matches, $top_news_matches) - Testy: 450 OK, 1431 asercji (+13 nowych testow w ArticleRepositoryTest)
- UPDATE:
tests/bootstrap.php— dodany stubS::is_array_fix()
- NOWE METODY w
ver. 0.279 (2026-02-16) - Newsletter + Languages frontend migration, front\Controllers, front\Views
-
Languages (view) — migracja do nowego namespace
- USUNIĘTA:
front\factory\Languages— fasada niepotrzebna, wszystkie zależności przepięte naDomain\Languages\LanguagesRepository - USUNIĘTA:
front\view\Languages→ przeniesiona dofront\Views\Languages(nowy namespace, bezclass.prefix) - UPDATE: 26 plików przepiętych z fasady na repozytorium (kontrolery DI, entry points, szablony, shop classes)
- UPDATE:
admin\App— DI factory dlaShopProductControllerrozszerzona oLanguagesRepository
- USUNIĘTA:
-
Newsletter (frontend) — pełna migracja na Domain
- NOWE METODY w
NewsletterRepository:unsubscribe(),confirmSubscription(),getHashByEmail(),removeByEmail(),signup(),sendQueued() - NOWY:
front\Controllers\NewsletterController— pierwszy frontowy kontroler z DI (nowy namespacefront\Controllers\) - NOWY:
front\Views\Newsletter— czysty VIEW (nowy namespacefront\Views\) - USUNIĘTA:
front\factory\Newsletter— logika przeniesiona doNewsletterRepository - USUNIĘTA:
front\view\Newsletter→ zastąpiona przezfront\Views\Newsletter - USUNIĘTA:
front\controls\Newsletter→ zastąpiona przezfront\Controllers\NewsletterController - UPDATE:
front\controls\Site::route()— nowy routing:getControllerFactories()(DI) → fallback starefront\controls\ - UPDATE:
front\factory\ShopClient— 4xget_template()przepięte naNewsletterRepository::templateByName() - UPDATE:
index.php—newsletter_send()przepięte na$repo->sendQueued() - FIX:
newsletter_unsubscribe()— błędna składnia medoodelete()(3 argumenty zamiast 2) - UPDATE:
tests/bootstrap.php— dodane stuby:S::email_check(),S::get_session(),S::set_session() - Testy: 437 OK, 1398 asercji (+10 nowych testów w NewsletterRepositoryTest)
- NOWE METODY w
ver. 0.278 (2026-02-16) - Settings + Languages frontend migration
- Settings + Languages (frontend) — pierwszy etap refaktoringu frontendu
- NOWE METODY:
SettingsRepository::allSettings($skipCache)— pobranie ustawien z cache Redis - NOWE METODY:
SettingsRepository::getSingleValue($param)— pobranie pojedynczej wartosci ustawienia - NOWE METODY:
LanguagesRepository::defaultLanguage()— domyslny jezyk z cache Redis - NOWE METODY:
LanguagesRepository::activeLanguages()— lista aktywnych jezykow z cache Redis - NOWE METODY:
LanguagesRepository::translations($lang)— tlumaczenia z cache Redis - UPDATE:
front\factory\Settings→ fasada delegujaca doSettingsRepository - UPDATE:
front\factory\Languages→ fasada delegujaca doLanguagesRepository - FIX:
get_single_settings_value()— parametr$parampoprawnie uzywany (wczesniej hardcoded'firm_name') - Testy: 427 OK, 1378 asercji (+13 nowych)
- NOWE METODY:
ver. 0.277 (2026-02-16) - ShopProduct factory, Dashboard, Update, legacy cleanup, admin\App
- ShopProduct (factory) - pelna migracja modulu #29 na Domain + DI
- NOWE:
ProductRepositoryrozszerzony o ~40 metod: CRUD (countProducts, listForAdmin, findForAdmin, allProductsList, productCategoriesText, getParentId, productDefaultName), zapis (saveProduct + 9 prywatnych helperow), operacje (delete, duplicate, toggleStatus, updatePriceBrutto/Promo, updateCustomLabel), kombinacje (getPermutations, generateCombinations, deleteCombination, countCombinations, saveCombination*), zdjecia/pliki (deleteImage, updateImageAlt, saveImagesOrder, deleteFile, updateFileName, deleteNonassigned*), Google Feed XML (generateGoogleFeedXml, generateEAN), custom labels (customLabelSuggestions, saveCustomLabel, saveXmlName), updateCombinationPricesFromBase - NOWE:
ShopProductControllerrozszerzony o ~30 akcji: view_list, product_edit, save, duplicate_product, product_archive/unarchive, product_delete, change_product_status, product_change_price_brutto/promo, product_change_custom_label, product_custom_label_suggestions/save, ajax_product_url, generate_sku_code, product_combination, generate_combination, delete_combination, product_combination_*_save, image_delete, images_order_save, image_alt_change, product_file_delete, product_file_name_change, product_image_delete - UPDATE: przepiecie zaleznosci zewnetrznych:
ProductArchiveController,order-details.php,cron.php,cron-xml.php,product-edit.php,mass-edit-custom-script.php - CLEANUP: usuniete
autoload/admin/controls/class.ShopProduct.php,autoload/admin/factory/class.ShopProduct.php,admin/ajax/shop.php+ require zadmin/ajax.php
- NOWE:
- ShopOrder (stabilizacja po migracji)
- FIX:
Domain\Order\OrderRepository::listForAdmin()- poprawa zapytan SQL (count/list), bezpieczne fallbacki i poprawne zwracanie listy zamowien w/admin/shop_order/list/ - FIX: wyrównanie wysokości komórek w
components/table-list(vertical-align+ lokalny override dla.text-rightw tabeli)
- FIX:
- Integrations (cleanup)
- CLEANUP: usunieta fasada
autoload/admin/factory/class.Integrations.php - UPDATE: przepięcie wywołań na
Domain\Integrations\IntegrationsRepositoryw:cron.php,shop\Order,admin\Controllers\ShopPaymentMethodController,admin\Controllers\ShopStatusesController,admin\Controllers\ShopTransportController
- CLEANUP: usunieta fasada
- Admin UX
- NOWE: globalna wyszukiwarka w top-barze (obok "Wyczysc cache") dla produktow i zamowien
- NOWE: endpoint
/admin/settings/globalSearchAjax/(SettingsController::globalSearchAjax) - FIX: wsparcie wyszukiwania po pełnym imieniu i nazwisku (np. "Jan Kowalski") + poprawka escapingu SQL w
CONCAT_WS
- Dashboard - migracja modulu #30 na Domain + DI
- NOWE:
Domain\Dashboard\DashboardRepository(summaryOrders, summarySales, salesGrid, mostViewedProducts, bestSalesProducts, last24MonthsSales, lastOrders, Redis caching) - NOWE:
admin\Controllers\DashboardController(DI z DashboardRepository + ShopStatusRepository) - CLEANUP: usuniete
autoload/admin/controls/class.Dashboard.php,autoload/shop/class.Dashboard.php
- NOWE:
- Update - migracja modulu #31 na Domain + DI
- NOWE:
Domain\Update\UpdateRepository(update, runPendingMigrations, downloadAndApply, executeSql, deleteFiles, extractZip, saveLog) - NOWE:
admin\Controllers\UpdateController(DI z UpdateRepository) - UPDATE: template
update/main-view.php- usunietogridEditi$.prompt(), zastapiono panelami +$.confirm()/$.alert() - CLEANUP: usuniete
autoload/admin/controls/class.Update.php,autoload/admin/factory/class.Update.php,autoload/admin/view/class.Update.php
- NOWE:
- Legacy cleanup
- CLEANUP: usunieto
autoload/admin/factory/class.Articles.php(martwy kod,articles_by_date_addprzeniesione doArticleRepository) - UPDATE:
front\factory\Newsletterprzepieta naDomain\Article\ArticleRepository::articlesByDateAdd() - CLEANUP: usunieto
autoload/admin/view/class.Page.php, logika przeniesiona doadmin\App::render() - CLEANUP: usuniete puste foldery
autoload/admin/controls/,autoload/admin/factory/,autoload/admin/view/
- CLEANUP: usunieto
- admin\Site -> admin\App
- UPDATE: klasa
admin\Siteprzemianowana naadmin\App(plikApp.phpbez przedrostkaclass.) - UPDATE: refaktoring
App— usunieto martwy fallback na\admin\controls\, uproszczono routing, ujednolicony code style
- UPDATE: klasa
- TEST:
- NOWE:
DashboardControllerTest(4),DashboardRepositoryTest(6),UpdateControllerTest(6),UpdateRepositoryTest(6) - Pelny suite: OK (414 tests, 1335 assertions)
- NOWE:
ver. 0.276 (2026-02-15) - ShopOrder
- ShopOrder - migracja
/admin/shop_order/*na Domain + DI + nowe widoki- NOWE:
Domain\Order\OrderRepository(lista admin z filtrowaniem/sortowaniem, szczegóły, historia statusów, notes, save admin, summary, trustmate, delete) - NOWE:
Domain\Order\OrderAdminService(operacje aplikacyjne admin: status/paid/unpaid/resend email/send to apilo/delete) - NOWE:
admin\Controllers\ShopOrderController(DI) z akcjamilist/view_list,details/order_details,edit/order_edit,save/order_save,notes_save,order_status_change,order_resend_confirmation_email,set_order_as_paid,set_order_as_unpaid,send_order_to_apilo,toggle_trustmate_send,delete/order_delete - UPDATE: routing DI (
admin\Site) rozszerzony o modulShopOrder - UPDATE: menu admin przepiete na kanoniczny URL
/admin/shop_order/list/ - UPDATE: lista zamówień przepięta z legacy grid na
components/table-list(shop-order/orders-list) - UPDATE:
shop-order/order-detailsishop-order/order-editprzebudowane bezgridEdit+ wydzielenie JS do*-custom-script.php - UPDATE:
shop\Order::order_statuses()przepiete naDomain\ShopStatus\ShopStatusRepository - UPDATE:
admin\controls\Dashboardpobiera statusy przezDomain\ShopStatus\ShopStatusRepository - CLEANUP: usuniete legacy
autoload/admin/controls/class.ShopOrder.php,autoload/admin/factory/class.ShopOrder.php,admin/templates/shop-order/view-list.php
- NOWE:
- TEST:
- NOWE:
tests/Unit/Domain/Order/OrderRepositoryTest.php - NOWE:
tests/Unit/admin/Controllers/ShopOrderControllerTest.php - Testy punktowe: OK (8 tests, 49 assertions)
- NOWE:
ver. 0.275 (2026-02-15) - ShopCategory
- ShopCategory - migracja
/admin/shop_category/*na Domain + DI + nowe endpointy AJAX- NOWE:
Domain\Category\CategoryRepository(sortTypes,subcategories,categoryDetails,categoryProducts,save,categoryDelete,saveCategoriesOrder,saveProductOrder,categoryTitle) - NOWE:
admin\Controllers\ShopCategoryController(DI) z akcjamilist/view_list,edit/category_edit,save,delete/category_delete,products/category_products,category_url_browser,save_categories_order,save_products_order,cookie_categories - UPDATE: routing DI (
admin\Site) rozszerzony o modulShopCategory - UPDATE: menu admin przepiete na kanoniczny URL
/admin/shop_category/list/ - UPDATE: widoki
shop-category/*- wydzielenie skryptow do*-custom-script.php, ujednolicone strzalki drzewa (button + caret + aria-expanded) - UPDATE: AJAX drzewek przepiety z
/admin/ajax.php?a=*na/admin/shop_category/* - UPDATE: zaleznosci
ShopProductprzepiete zadmin\factory\ShopCategorynaDomain\Category\CategoryRepository - CLEANUP: usuniete legacy
autoload/admin/controls/class.ShopCategory.php,autoload/admin/factory/class.ShopCategory.php,autoload/admin/view/class.ShopCategory.php - CLEANUP: usuniety preload
class.ShopCategory.phpzlibraries/grid/config.php
- NOWE:
- TEST:
- NOWE:
tests/Unit/Domain/Category/CategoryRepositoryTest.php - NOWE:
tests/Unit/admin/Controllers/ShopCategoryControllerTest.php - Testy punktowe: OK (16 tests, 72 assertions)
- Pelny suite: OK (377 tests, 1197 assertions)
- NOWE:
ver. 0.274 (2026-02-15) - ShopProduct mass_edit + UI trees
- ShopProduct (mass_edit) - migracja akcji masowej edycji na Domain + DI
- NOWE:
admin\Controllers\ShopProductController(DI) z akcjamimass_edit,mass_edit_save,get_products_by_category - UPDATE: routing DI (
admin\Site) rozszerzony o modulShopProduct - UPDATE:
Domain\Product\ProductRepositoryrozszerzone o metodyallProductsForMassEdit,getProductsByCategory,applyDiscountPercent(+ aktualizacja cen kombinacji) - CLEANUP: usuniete legacy akcje
mass_edit,mass_edit_save,get_products_by_categoryzadmin\controls\ShopProduct
- NOWE:
- ShopProduct mass_edit UI - przebudowa widoku i skryptu
- UPDATE:
admin/templates/shop-product/mass-edit.phpprzepiety na nowy partial JSmass-edit-custom-script - NOWE:
admin/templates/shop-product/mass-edit-custom-script.php(nestedSortable + iCheck + stabilizacja drzewka) - UPDATE:
admin/templates/shop-product/subcategories-list.phpujednolicone strzalki (button + caret) - FIX: zaznaczenie kategorii w drzewku nie zaznacza automatycznie produktow na liscie
- UPDATE:
- Pages / Articles UI - ujednolicenie drzewek
- UPDATE:
/admin/pages/list/- nowe strzalki drzewa +aria-expanded+ odswiezanie stanu branch/leaf - UPDATE:
/admin/articles/edit/*(zakladka wyswietlania) - nowe strzalki i checkboxy (iCheck) dla drzewka stron
- UPDATE:
- ShopClients - migracja
/admin/shop_clientsna Domain + DI + nowe widoki- NOWE:
Domain\Client\ClientRepository(listForAdmin,ordersForClient,totalsForClient) - NOWE:
admin\Controllers\ShopClientsController(DI) z akcjamilist,details+ aliasy legacyview_list,clients_details - UPDATE: routing DI (
admin\Site) rozszerzony o modulShopClients - UPDATE: menu admin przepiete na kanoniczny URL
/admin/shop_clients/list/ - UPDATE: widoki
shop-clients/view-listishop-clients/clients-detailsprzepiete nacomponents/table-list - CLEANUP: usuniete legacy
autoload/admin/controls/class.ShopClients.php,autoload/admin/factory/class.ShopClients.php
- NOWE:
- TEST:
- NOWE:
tests/Unit/admin/Controllers/ShopProductControllerTest.php - NOWE:
tests/Unit/Domain/Client/ClientRepositoryTest.php,tests/Unit/admin/Controllers/ShopClientsControllerTest.php - UPDATE:
tests/Unit/Domain/Product/ProductRepositoryTest.php(nowe przypadki dla mass_edit) - UPDATE:
tests/bootstrap.php(stubS::normalize_decimal())
- NOWE:
- Testy: OK (361 tests, 1125 assertions)
ver. 0.273 (2026-02-15) - ShopProducer
- ShopProducer - migracja
/admin/shop_producerna Domain + DI + nowe widoki- NOWE:
Domain\Producer\ProducerRepository(listForAdmin,find,save,delete,allProducers,findForFrontend,producerProducts,allActiveIds) - NOWE:
admin\Controllers\ShopProducerController(DI) z akcjamilist,edit,save,delete - UPDATE: modul
/admin/shop_producer/*dziala nacomponents/table-listicomponents/form-editz zakladkami jezykowymi (Opis + SEO) - UPDATE: routing i menu admin na kanoniczny URL
/admin/shop_producer/list/ - UPDATE:
shop\Producerprzepiety na fasade doDomain\Producer\ProducerRepository - UPDATE:
admin\factory\ShopProduct- 2 wywolaniaadmin\factory\ShopTransportprzepiete naDomain\Transport\TransportRepository - UPDATE:
admin\controls\ShopProduct- usuniety fallback doadmin\factory\Layouts - CLEANUP: usuniete legacy
autoload/admin/controls/class.ShopProducer.php,admin/templates/shop-producer/list.php,admin/templates/shop-producer/edit.php - CLEANUP: usuniete 6 pustych factory facades:
admin\factory\Languages,admin\factory\Newsletter,admin\factory\Scontainers,admin\factory\ShopProducer,admin\factory\ShopTransport,admin\factory\Layouts - TEST: dodane
tests/Unit/Domain/Producer/ProducerRepositoryTest.phpitests/Unit/admin/Controllers/ShopProducerControllerTest.php
- NOWE:
- Testy: OK (338 tests, 1063 assertions)
ver. 0.272 (2026-02-15) - ShopProductSets
- ShopProductSets - migracja
/admin/shop_product_setsna Domain + DI + nowe widoki- NOWE:
Domain\ProductSet\ProductSetRepository(listForAdmin,find,save,delete,allSets,allProductsMap) - NOWE:
admin\Controllers\ShopProductSetsController(DI) z akcjamilist,edit,save,delete - UPDATE: modul
/admin/shop_product_sets/*dziala nacomponents/table-listicomponents/form-edit+ Selectize multi-select produktow - UPDATE: routing i menu admin na kanoniczny URL
/admin/shop_product_sets/list/ - UPDATE:
shop\ProductSetprzepiety na fasade doDomain\ProductSet\ProductSetRepository - CLEANUP: usuniete 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 - TEST: dodane
tests/Unit/Domain/ProductSet/ProductSetRepositoryTest.phpitests/Unit/admin/Controllers/ShopProductSetsControllerTest.php
- NOWE:
- Testy: OK (324 tests, 1000 assertions)
ver. 0.271 (2026-02-14) - ShopAttribute
- ShopAttribute - migracja
/admin/shop_attributena Domain + DI + nowe widoki- NOWE:
Domain\Attribute\AttributeRepository(listForAdmin,findAttribute,saveAttribute,deleteAttribute,findValues,saveValues,saveLegacyValues,valueDetails) - NOWE:
admin\Controllers\ShopAttributeController(DI) z akcjamilist,edit,save,delete,values,values_save,value_row_tpl - UPDATE: modul
/admin/shop_attribute/*dziala nacomponents/table-listicomponents/form-edit - UPDATE: nowy edytor wartosci cechy (
values-edit) z walidacja serwerowa i stabilnymrow_key(bez indeksow do wyboru domyslnej wartosci) - UPDATE: routing i menu admin na kanoniczny URL
/admin/shop_attribute/list/(bez aliasow legacy) - UPDATE: przepiecie zaleznosci kombinacji produktu (
admin\controls\ShopProduct,admin\factory\ShopProduct,admin/templates/shop-product/product-combination.php) naDomain\Attribute\AttributeRepositoryishop\ProductAttribute - CLEANUP: usuniete 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 - TEST: dodane
tests/Unit/Domain/Attribute/AttributeRepositoryTest.phpitests/Unit/admin/Controllers/ShopAttributeControllerTest.php
- NOWE:
- Testy: OK (312 tests, 948 assertions)
ver. 0.270 (2026-02-14) - Apilo payment/status sync hardening
- Shop/Order + Apilo - utwardzenie synchronizacji platnosci i statusow zamowien
- FIX:
shop\Order::set_as_paid()wysyla do Apilo mapowany typ platnosci (payment_method_id->apilo_payment_type_id) zamiast stalegotype = 1 - NOWE: retry queue dla chwilowej niedostepnosci Apilo (
temp/apilo-sync-queue.json) dla sync platnosci i statusu - NOWE:
shop\Order::process_apilo_sync_queue()przetwarza zalegle syncy - UPDATE:
cron.phpuruchamia przetwarzanie kolejki sync Apilo przy aktywnej integracji - UPDATE: rozszerzone logowanie debug (
logs/apilo.txt) o HTTP code i bledy cURL dla sync platnosci/statusu
- FIX:
- Testy: OK (300 tests, 895 assertions)
ver. 0.269 (2026-02-14) - ShopTransport
- ShopTransport - migracja
/admin/shop_transportna Domain + DI + nowe widoki- NOWE:
Domain\Transport\TransportRepository(listForAdmin,find,save,allActive,allForAdmin,findActiveById,getTransportCost,lowestTransportPrice,getApiloCarrierAccountId) - NOWE:
admin\Controllers\ShopTransportController(DI) z akcjamilist,edit,save - NOWE: widoki
shop-transport/transports-list.phpishop-transport/transport-edit.php+transport-edit-custom-script.php - UPDATE: routing i menu admin na kanoniczny URL
/admin/shop_transport/list/ - UPDATE:
admin\factory\ShopTransport,front\factory\ShopTransportprzepiete na nowe repozytorium - FIX:
save()return type?intzamiastint|bool(spojnosc z PaymentMethod) - FIX:
toSwitchValue()helper zamiast=== 'on'(obsluga '1', 'on', 'true', 'yes') - FIX:
\S::delete_dir()przeniesione z repozytorium do kontrolera (DDD) - FIX: Medoo
select()syntax - ORDER w WHERE zamiast 4-arg form - CLEANUP: usuniete legacy
autoload/admin/controls/class.ShopTransport.php,autoload/admin/view/class.ShopTransport.php,admin/templates/shop-transport/view-list.php - FIX:
transports-list.php- zmienna'viewModel'zmieniona na'list'(zgodnie ztable-list.phpkomponentem)
- NOWE:
- Testy: OK (300 tests, 895 assertions)
ver. 0.268 (2026-02-14) - ShopPaymentMethod + Apilo token keepalive
- ShopPaymentMethod - migracja
/admin/shop_payment_methodna Domain + DI + nowe widoki- NOWE:
Domain\PaymentMethod\PaymentMethodRepository(listForAdmin,find,save,allActive,allForAdmin,findActiveById,isActive,getApiloPaymentTypeId,forTransport) - NOWE:
admin\Controllers\ShopPaymentMethodController(DI) z akcjamilist,edit,save - NOWE: widoki
shop-payment-method/payment-methods-list.phpishop-payment-method/payment-method-edit.php - UPDATE: routing i menu admin na kanoniczny URL
/admin/shop_payment_method/list/ - UPDATE:
admin\controls\ShopTransport,front\factory\ShopPaymentMethod,shop\PaymentMethodprzepiete na nowe repozytorium - CLEANUP: usuniete 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
- NOWE:
- Integrations/Apilo - stabilizacja tokenu i lepszy feedback
- NOWE: automatyczne odswiezanie tokenu Apilo przed wygasnieciem (
apiloKeepalive, refresh lead time) - UPDATE: cron uruchamia keepalive i odswieza konfiguracje Apilo
- UPDATE: bardziej szczegolowe komunikaty bledow dla przyciskow integracji Apilo (co zrobic dalej)
- NOWE: automatyczne odswiezanie tokenu Apilo przed wygasnieciem (
- Testy: OK (280 tests, 828 assertions)
ver. 0.267 (2026-02-14) - ShopStatuses
- ShopStatuses - migracja
/admin/shop_statusesna Domain + DI + nowe widoki- NOWE:
Domain\ShopStatus\ShopStatusRepository(listForAdmin,find,save,getApiloStatusId,getByIntegrationStatusId,allStatuses) - NOWE:
admin\Controllers\ShopStatusesController(DI) z akcjamilist,edit,save(bez aliasow legacy) - NOWE: typ pola
FormFieldType::COLOR+FormField::color()+FormFieldRenderer::renderColor()(color picker HTML5 zsynchronizowany z polem tekstowym) - UPDATE: modul
/admin/shop_statuses/*dziala nacomponents/table-listicomponents/form-edit - UPDATE:
front\factory\ShopStatusesjako fasada delegujaca doDomain\ShopStatus\ShopStatusRepository - UPDATE: menu admin przepiete na kanoniczny URL
/admin/shop_statuses/list/ - CLEANUP: usuniete legacy
autoload/admin/controls/class.ShopStatuses.php,autoload/admin/factory/class.ShopStatuses.php - UWAGA: statusy maja ID od 0 - kluczowe dla walidacji (find/save uzywaja
$id < 0)
- NOWE:
- Testy: OK (254 tests, 736 assertions)
ver. 0.266 (2026-02-13) - ShopCoupon
- ShopCoupon - migracja
/admin/shop_couponna Domain + DI + nowe widoki- NOWE:
Domain\Coupon\CouponRepository(listForAdmin,find,save,delete,categoriesTree) - NOWE:
admin\Controllers\ShopCouponController(DI) z akcjamilist,edit,save,delete - UPDATE: kompatybilnosc aliasow legacy (
view_list,coupon_edit,coupon_save,coupon_delete) obslugiwana przez nowy kontroler - UPDATE: modul
/admin/shop_coupon/*dziala nacomponents/table-listicomponents/form-edit - NOWE: widoki/partiale
shop-coupon/coupons-list,shop-coupon/coupon-edit-new,shop-coupon/coupon-categories-selector,shop-coupon/coupon-categories-tree,shop-coupon/coupon-edit-custom-script - CLEANUP: usuniete legacy
autoload/admin/controls/class.ShopCoupon.php,autoload/admin/factory/class.ShopCoupon.php,admin/templates/shop-coupon/view-list.php,admin/templates/shop-coupon/coupon-edit.php - UPDATE: menu admin przepiete na kanoniczny URL
/admin/shop_coupon/list/ - FIX: ujednolicone UI drzewek i checkboxow miedzy kuponami i layoutami
- NOWE:
- Testy: OK (235 tests, 682 assertions)
ver. 0.265 (2026-02-13) - ShopPromotion poprawki
- ShopPromotion - stabilizacja po migracji
- UPDATE: dodane
date_fromwDomain\Promotion\PromotionRepository(save/find/list/sort) - UPDATE:
admin\Controllers\ShopPromotionControllerrozszerzony o poleData odna formularzu i kolumneData odna liscie - UPDATE:
shop\Promotion::get_active_promotions()filtruje aktywnosc podate_fromidate_to - FIX: zapis edycji promocji nie tworzy nowego rekordu (hidden
id+ fallbackidz URL) - TEST: rozszerzono
PromotionRepositoryTesto asercjedate_from
- UPDATE: dodane
- Testy: OK (222 tests, 614 assertions)
ver. 0.264 (2026-02-13) - ShopPromotion
- ShopPromotion - migracja
/admin/shop_promotionna Domain + DI + nowe widoki- NOWE:
Domain\Promotion\PromotionRepository(listForAdmin,find,save,delete,categoriesTree, invalidacja cache aktywnych promocji) - NOWE:
admin\Controllers\ShopPromotionController(DI) z akcjamilist,edit,save,delete - UPDATE: routing DI (
admin\Site) rozszerzony o modulShopPromotion - UPDATE: modul
/admin/shop_promotion/*dziala nacomponents/table-listicomponents/form-edit - NOWE: widoki/partiale
shop-promotion/promotions-list,shop-promotion/promotion-edit,shop-promotion/promotion-categories-selector,shop-promotion/promotion-categories-tree,shop-promotion/promotion-edit-custom-script - CLEANUP: usuniete legacy
autoload/admin/controls/class.ShopPromotion.php,autoload/admin/factory/class.ShopPromotion.php,admin/templates/shop-promotion/view-list.php - UPDATE: menu admin przepiete na kanoniczny URL
/admin/shop_promotion/list/
- NOWE:
- Testy: OK (222 tests, 609 assertions)
ver. 0.263 (2026-02-13) - Integrations + cleanup Sellasist/Baselinker
- NOWE:
Domain\Integrations\IntegrationsRepository(settings Apilo/ShopPRO, OAuth, product linking, API fetch) - NOWE:
admin\Controllers\IntegrationsController(DI) dla akcji Apilo i ShopPRO - UPDATE:
admin\factory\Integrationsjako fasada delegujaca do repozytorium - CLEANUP: usunieto integracje Sellasist i Baselinker z calego projektu:
- Usuniete klasy:
admin\controls\Integrations,admin\controls\Baselinker,admin\factory\Baselinker,front\factory\Shop,shop\ShopStatus - Usuniete szablony:
integrations/sellasist-settings.php,integrations/baselinker-settings.php,admin/templates/baselinker/ - Wyczyszczone referencje w:
cron.php,cron/cron-xml.php,shop\Order, kontrolery/factory/front Shop*
- Usuniete klasy:
- Testy: OK (212 tests, 577 assertions)
ver. 0.262 (2026-02-13) - Pages
- NOWE:
Domain\Pages\PagesRepository(CRUD menu/stron, drzewo stron, sortowanie, SEO) - NOWE:
admin\Controllers\PagesController(DI) dla akcji menu/page/AJAX - UPDATE: widoki
admin/templates/pages/*przepiete na dane z kontrolera/repozytorium - UPDATE: endpointy AJAX przepiete z
admin/ajax.php?a=*na/admin/pages/* - CLEANUP: usuniete legacy
controls/Pages,view/Pages,factory/Pages,ajax/pages.php - Testy: OK (186 tests, 478 assertions)
ver. 0.261 (2026-02-13) - Articles (dalsza refaktoryzacja)
- UPDATE:
Domain\Article\ArticleRepositoryrozszerzone o metody UI/admin isaveFilesOrder() - UPDATE:
admin\Controllers\ArticlesControllerobsluguje AJAX:article_image_alt_change,article_file_name_change,article_image_delete,article_file_delete,filesOrderSave - UPDATE: lista artykulow nie korzysta juz z
admin\factory\Articles::article_pages() - UPDATE: widok edycji przepiety z
/admin/ajax.phpna/admin/articles/* - UPDATE: drag&drop sortowania listy zalacznikow
- CLEANUP: usuniete
autoload/admin/view/class.Articles.phpiadmin/ajax/articles.php - Testy: OK (178 tests, 443 assertions)
ver. 0.260 (2026-02-12) - ArticlesArchive
- NOWE:
admin\Controllers\ArticlesArchiveController(DI) - UPDATE:
Domain\Article\ArticleRepositoryrozszerzone olistArchivedForAdmin(),restore(),deletePermanently() - UPDATE:
/admin/articles_archive/view_list/migrowane nacomponents/table-list - CLEANUP: usuniete legacy
controls/ArticlesArchive,factory/ArticlesArchive,view/ArticlesArchive - Testy: OK (165 tests, 424 assertions)
ver. 0.259 (2026-02-12) - Scontainers
- NOWE:
Domain\Scontainers\ScontainersRepository(listForAdmin, find, save, delete, detailsForLanguage) - NOWE:
admin\Controllers\ScontainersController(DI) - UPDATE:
/admin/scontainers/*migrowane nacomponents/table-listicomponents/form-edit - UPDATE:
admin\factory\Scontainersifront\factory\Scontainersjako fasady - CLEANUP: usuniete
controls/Scontainers,view/Scontainers - Testy: OK (158 tests, 397 assertions)
ver. 0.258 (2026-02-12) - Newsletter (stabilizacja)
- UPDATE: tymczasowo wylaczono flow
prepare/send/preview(wymaga przebudowy) - UPDATE: tymczasowo wylaczono modul
Szablony uzytkownika - UPDATE: aktywna obsluga tylko szablonow administracyjnych (
is_admin = 1) - CLEANUP: usuniete nieuzywane widoki
prepare.php,preview.php,email-templates-user.php
ver. 0.257 (2026-02-12) - Newsletter
- NOWE:
Domain\Newsletter\NewsletterRepository(subskrybenci, szablony, ustawienia, kolejka wysylki) - NOWE:
Domain\Newsletter\NewsletterPreviewRenderer(render podgladu) - NOWE:
admin\Controllers\NewsletterController(DI) - UPDATE:
/admin/newsletter/*migrowane nacomponents/table-listicomponents/form-edit - UPDATE:
admin\factory\Newsletterjako fasada;front\factory\Newsletterbezadmin\view\Newsletter - CLEANUP: usuniete
controls/Newsletter,view/Newsletter - Testy: OK (150 tests, 372 assertions)
ver. 0.256 (2026-02-12) - Layouts
- NOWE:
Domain\Layouts\LayoutsRepository(find, save, delete, listForAdmin, menusWithPages, categoriesTree) - NOWE:
admin\Controllers\LayoutsController(DI) - UPDATE: lista
/admin/layouts/view_list/migrowana nacomponents/table-list - UPDATE: widok
layouts/layout-editkorzysta z danych z repozytorium - NOWE: partial
admin/templates/layouts/subcategories-list.php - UPDATE:
Domain\Languages\LanguagesRepository::defaultLanguageId()jako wspolna metoda - UPDATE:
ArticlesControllerkorzysta zLayoutsRepository(DI) - CLEANUP: usuniete
controls/Layouts,view/Layouts;factory/Layoutsjako fasada - Testy: OK (141 tests, 336 assertions)
ver. 0.255 (2026-02-12) - Languages DI cleanup
- UPDATE: SettingsController, BannerController, DictionariesController, ArticlesController pobieraja liste jezykow przez
Domain/Languages/LanguagesRepository(DI) - UPDATE: router DI przekazuje
LanguagesRepositorydo kontrolerow - UPDATE: legacy
admin/controls,admin/factory/Shop*przepiete naLanguagesRepository - FIX:
admin/factory/class.Languages.phppoprawione na<?php(short_open_tag=Off) - Testy: OK (130 tests, 303 assertions)
ver. 0.254 (2026-02-12) - Languages
- NOWE:
Domain\Languages\LanguagesRepository(languages + translations CRUD/list) - NOWE:
admin\Controllers\LanguagesController(DI) - UPDATE: widoki
languages/*migrowane nacomponents/table-listicomponents/form-edit - CLEANUP: usuniete
controls/Languages,view/Languages;factory/Languagesjako fasada - Testy: OK (130 tests, 301 assertions)
ver. 0.253 (2026-02-12) - Users
- NOWE:
Domain\User\UserRepository(CRUD, logon, 2FA, checkLogin) - NOWE:
admin\Controllers\UsersController(DI: view_list, user_edit, user_save, user_delete, login_form, twofa) - UPDATE:
admin\factory\Usersjako fasada;admin/ajax/users.phpoparty oUserRepository - UPDATE: widoki users migrowane na
components/table-listicomponents/form-edit - UPDATE: walidacja warunkowa:
twofa_emailwymagany gdytwofa_enabled = 1 - CLEANUP: usuniete
controls/Users,factory/Users,view/Users - Testy: OK (119 tests, 256 assertions)
ver. 0.252 (2026-02-10) - ProductArchive + Filemanager
- UPDATE:
ProductArchiveControlleri szablony przepiete nacomponents/table-list - UPDATE: CSS/JS dla list wydzielone do osobnych widoków
*-custom-script.php - NOWE:
admin\Controllers\FilemanagerController- przepieto filemanager na nowy routing - FIX: naprawiono błąd
Invalid Keyw filemanagerze - CLEANUP: usunieto legacy
controls/Archive,controls/Filemanager,view/FileManager, stare szablony - RENAME:
admin/templates/product_archive/→admin/templates/product-archive/ - Testy: OK (82 tests, 181 assertions)
ver. 0.251 (2026-02-09) - Dictionaries
- NOWE:
Domain\Dictionaries\DictionariesRepository(listForAdmin, find, save, delete, allUnits) - NOWE:
admin\Controllers\DictionariesController(lista + formularz na nowych komponentach) - UPDATE: migracja słowników na
components/table-listicomponents/form-edit - FIX: obsługa
lang_idjako string (pl,en) w zapisie tłumaczeń - CLEANUP: usunięto legacy klasy Dictionaries (
admin\controls,admin\factory,front\factory) - Testy: OK (82 tests, 181 assertions)
ver. 0.250 (2026-02-09) - Settings (refaktoryzacja)
- UPDATE:
Domain\Settings\SettingsRepositoryma bezpośredni dostęp do DB (bez delegacji doadmin\factory\Settings) - UPDATE: przepięto użycia
admin\factory\SettingsnaDomain\Settings\SettingsRepository - CLEANUP: usunięto legacy klasy Settings (
factory,controls,view) - Testy: OK (82 tests, 181 assertions)
ver. 0.246 (2026-02-07) - Articles legacy cleanup
- CLEANUP: usunięto
autoload/admin/controls/class.Articles.php - UPDATE:
admin\Controllers\ArticlesController::galleryOrderSave()uzywaArticleRepository::saveGalleryOrder() - FIX: sortowanie list admin po reloadzie -
RewriteRuledla/admin/...maQSA - FIX: generator
\S::htacces()komentuje dyrektywyAddHandler|SetHandler|ForceType - Testy: OK (65 tests, 131 assertions)
ver. 0.245 (2026-02-06) - Articles::archive
- UPDATE:
Domain\Article\ArticleRepository- dodanoarchive()(status = -1) - UPDATE:
admin\Controllers\ArticlesController- nowa akcjadelete()z DI - UPDATE:
admin\factory\Articles::articles_set_archive()deleguje do repozytorium - Testy: OK (59 tests, 123 assertions)
ver. 0.244 (2026-02-06) - Articles::save
- UPDATE:
Domain\Article\ArticleRepository- dodanosave()z prywatnych helperow - UPDATE:
admin\Controllers\ArticlesController- nowa akcjasave()z DI - UPDATE:
tests/bootstrap.php- dodano stubS::seo() - Testy: OK (57 tests, 119 assertions)
ver. 0.243 (2026-02-06) - Articles cleanup
- UPDATE:
Domain\Article\ArticleRepository- dodanodeleteNonassignedImages()ideleteNonassignedFiles() - UPDATE:
admin\Controllers\ArticlesController::edit()uses repository cleanup methods - Testy: OK (50 tests, 95 assertions)
ver. 0.242 (2026-02-06) - Articles::edit
- NOWE:
Domain\Article\ArticleRepository(find: artykuł + relacje) - UPDATE:
admin\Controllers\ArticlesController- konstruktor DI +edit()używa repozytorium - UPDATE:
admin\factory\Articles::article_details()deleguje do repozytorium - Testy: OK (48 tests, 91 assertions)
ver. 0.241 (2026-02-06) - ProductArchive
- NOWE:
admin\Controllers\ProductArchiveController(DI) - NOWE:
ProductRepository::archive(),unarchive() - RENAME:
admin/templates/archive/→admin/templates/product_archive/ - FIX: SQL w
ajax_products_list_archive()(puste wyszukiwanie + brakarchive = 1) - Testy: OK (50 tests, 95 assertions)
ver. 0.240 (2026-02-05) - Settings + Cache
- NOWE:
Domain\Settings\SettingsRepository(fasada → factory) - NOWE:
Domain\Cache\CacheRepository(dirs + Redis) - NOWE:
admin\Controllers\SettingsController(DI: clearCache, save, view) - FIX: Brakujący
id="content"w main-layout.php - FIX:
persist_edit = truew settings.php - Testy: OK (29 tests, 60 assertions)
ver. 0.239 (2026-02-05) - Banner + Product
- NOWE:
Domain\Banner\BannerRepository(find, delete, save) - NOWE:
admin\Controllers\BannerController- pierwszy kontroler z DI - NOWE: Router z mapą
$newControllers+ fallback na stare kontrolery - NOWE: Autoloader PSR-4 fallback w 9 entry pointach
- Zmigrowano:
get_product_price()→ProductRepository::getPrice() - Zmigrowano:
get_product_name()→ProductRepository::getName() - Testy: OK (15 tests, 31 assertions)
ver. 0.238 (2025-02-05) - Product Repository
- NOWE:
Domain\Product\ProductRepository- pierwsza klasa w nowej architekturze - NOWE: Dependency Injection zamiast
global $mdb - NOWE: Testy jednostkowe (5 testów, 100% pokrycie)
- Zmigrowano:
get_product_quantity()→ProductRepository::getQuantity() - Kompatybilność: Stara klasa
shop\Productdziała jako fasada
ver. 0.237 (2025-02-05) - System cache produktów
- Automatyczne czyszczenie cache produktu po aktualizacji przez CRON
- AJAX dla przycisku "Wyczyść cache" w panelu admin
- Metody
delete()ideletePattern()w CacheHandler - Metoda
clear_product_cache()w klasie S
Dokument aktualizowany: 2026-02-17 (ver. 0.288)