From d60e335ca64b17839d0caeacf57cd29d6935fda3 Mon Sep 17 00:00:00 2001 From: Jacek Pyziak Date: Fri, 27 Feb 2026 23:05:24 +0100 Subject: [PATCH] =?UTF-8?q?build:=20update=20package=20v0.329=20=E2=80=94?= =?UTF-8?q?=20routing=20przez=20pp=5Froutes=20+=20eliminacja=20htaccess.co?= =?UTF-8?q?nf?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 4.6 --- updates/0.30/ver_0.329.zip | Bin 0 -> 29694 bytes updates/0.30/ver_0.329_files.txt | 1 + updates/0.30/ver_0.329_manifest.json | 27 ++++ updates/0.30/ver_0.329_sql.txt | 5 + updates/changelog-data.html | 229 ++++++++++++++------------- updates/versions.php | 2 +- 6 files changed, 150 insertions(+), 114 deletions(-) create mode 100644 updates/0.30/ver_0.329.zip create mode 100644 updates/0.30/ver_0.329_files.txt create mode 100644 updates/0.30/ver_0.329_manifest.json create mode 100644 updates/0.30/ver_0.329_sql.txt diff --git a/updates/0.30/ver_0.329.zip b/updates/0.30/ver_0.329.zip new file mode 100644 index 0000000000000000000000000000000000000000..47e2632163cee8428039def270350af1a678a9dd GIT binary patch literal 29694 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 DfB)qf literal 0 HcmV?d00001 diff --git a/updates/0.30/ver_0.329_files.txt b/updates/0.30/ver_0.329_files.txt new file mode 100644 index 0000000..f01e4b2 --- /dev/null +++ b/updates/0.30/ver_0.329_files.txt @@ -0,0 +1 @@ +F: ../libraries/htaccess.conf \ No newline at end of file diff --git a/updates/0.30/ver_0.329_manifest.json b/updates/0.30/ver_0.329_manifest.json new file mode 100644 index 0000000..79d2f5c --- /dev/null +++ b/updates/0.30/ver_0.329_manifest.json @@ -0,0 +1,27 @@ +{ + "changelog": "REFACT - routing kategorii, stron i artykulow przez pp_routes; blok routingu w index.php przed checkUrlParams(); Redis cache tras; nowe kolumny category_id/page_id/article_id/type w pp_routes", + "version": "0.329", + "files": { + "added": [ + + ], + "deleted": [ + "libraries/htaccess.conf" + ], + "modified": [ + "autoload/Domain/Article/ArticleRepository.php", + "autoload/Domain/Category/CategoryRepository.php", + "autoload/Domain/Pages/PagesRepository.php", + "autoload/Shared/Helpers/Helpers.php", + "index.php" + ] + }, + "checksum_zip": "sha256:73b225b9d68d985ce44d79320350b6ef6fe602c30126a6bf322b8ab44eaab230", + "sql": [ + "ALTER TABLE pp_routes\n ADD COLUMN category_id INT NULL AFTER product_id,\n ADD COLUMN page_id INT NULL AFTER category_id,\n ADD COLUMN article_id INT NULL AFTER page_id,\n ADD COLUMN type VARCHAR(20) NULL AFTER article_id" + ], + "date": "2026-02-27", + "directories_deleted": [ + + ] +} \ No newline at end of file diff --git a/updates/0.30/ver_0.329_sql.txt b/updates/0.30/ver_0.329_sql.txt new file mode 100644 index 0000000..9f18a2f --- /dev/null +++ b/updates/0.30/ver_0.329_sql.txt @@ -0,0 +1,5 @@ +ALTER TABLE pp_routes + ADD COLUMN category_id INT NULL AFTER product_id, + ADD COLUMN page_id INT NULL AFTER category_id, + ADD COLUMN article_id INT NULL AFTER page_id, + ADD COLUMN type VARCHAR(20) NULL AFTER article_id \ No newline at end of file diff --git a/updates/changelog-data.html b/updates/changelog-data.html index ccdc908..7bd9fb4 100644 --- a/updates/changelog-data.html +++ b/updates/changelog-data.html @@ -1,3 +1,6 @@ +ver. 0.329 - 27.02.2026
+REFACT - routing kategorii, stron i artykulow przez pp_routes; blok routingu w index.php przed checkUrlParams(); Redis cache tras; nowe kolumny category_id/page_id/article_id/type w pp_routes +
ver. 0.328 - 27.02.2026
NEW - ikona kopiowania wartosci atrybutow w szczegolach zamowienia
@@ -17,28 +20,28 @@ NEW - Endpoint API categories/list: plaska lista aktywnych kategorii (id, parent FIX - naprawione krzaczki (mojibake) w changelog, limit wyswietlania do 5 wersji wstecz od wersji instancji
ver. 0.324 - 27.02.2026
-NEW - system kolejki zadań cron (DB), priorytetowe przetwarzanie, retry/backoff, ochrona endpointu cron +NEW - system kolejki zadaĹ„ cron (DB), priorytetowe przetwarzanie, retry/backoff, ochrona endpointu cron
ver. 0.323 - 24.02.2026
FIX - refactor importu zdjec w shopPRO import (walidacja HTTP, curl timeouty, logi), FIX - saveCustomFields tylko przy jawnym podaniu, FIX - delete() czysci custom_fields, FIX - sciezka upload w API, NEW - trwale usuwanie produktow z archiwum
ver. 0.322 - 24.02.2026
-FIX - custom_fields: jawne mapowanie kluczy w ProductRepository, spójne !empty w ProductsApiController +FIX - custom_fields: jawne mapowanie kluczy w ProductRepository, spĂłjne !empty w ProductsApiController
ver. 0.321 - 24.02.2026
-NEW - API: obsługa custom_fields w create/update produktu +NEW - API: obsĹ‚uga custom_fields w create/update produktu
ver. 0.320 - 24.02.2026
-NEW - API: endpoint ensure_producer (znajdź lub utwórz producenta); GET product zwraca producer_name +NEW - API: endpoint ensure_producer (znajdĹş lub utwĂłrz producenta); GET product zwraca producer_name
ver. 0.319 - 24.02.2026
-FIX - usunięcie shopPRO eksportu produktów; API produktu: dodano custom_fields i security_information +FIX - usuniÄ™cie shopPRO eksportu produktĂłw; API produktu: dodano custom_fields i security_information
ver. 0.318 - 24.02.2026
-NEW - shopPRO export produktów + API endpoints (ensure_attribute, ensure_attribute_value, upload_image) +NEW - shopPRO export produktĂłw + API endpoints (ensure_attribute, ensure_attribute_value, upload_image)
ver. 0.317 - 23.02.2026
-FIX - klucz API: fix zapisu (brakowalo w whiteliście), przycisk Generuj losowy klucz, ulepszony routing API +FIX - klucz API: fix zapisu (brakowalo w whiteliĹ›cie), przycisk Generuj losowy klucz, ulepszony routing API
ver. 0.316 - 23.02.2026
FIX - migracja brakujacej kolumny type w pp_shop_products_custom_fields @@ -47,16 +50,16 @@ FIX - migracja brakujacej kolumny type w pp_shop_products_custom_fields FIX - PDOException w listowaniu atrybutow admin (SQLSTATE HY093)
ver. 0.314 - 23.02.2026
-FIX - naprawa globalnej wyszukiwarki admin (Content-Type, Cache-Control, POST, try/catch), NEW - title strony z numerem zamówienia +FIX - naprawa globalnej wyszukiwarki admin (Content-Type, Cache-Control, POST, try/catch), NEW - title strony z numerem zamĂłwienia
ver. 0.313 - 23.02.2026
-FIX - sync płatności Apilo (int cast na apilo_order_id PPxxxxxx dawał 0) + logowanie decyzji sync do pp_log +FIX - sync pĹ‚atnoĹ›ci Apilo (int cast na apilo_order_id PPxxxxxx dawaĹ‚ 0) + logowanie decyzji sync do pp_log
ver. 0.312 - 23.02.2026
-FIX - krytyczne bugi integracji Apilo: curl_getinfo po curl_close, nieskończona pętla wysyłki, ceny 0.00 PLN, walidacja cen +FIX - krytyczne bugi integracji Apilo: curl_getinfo po curl_close, nieskoĹ„czona pÄ™tla wysyĹ‚ki, ceny 0.00 PLN, walidacja cen
ver. 0.311 - 23.02.2026
-FIX - race condition callback płatności Apilo, persistence filtrów tabel admin, poprawki cen zamówień +FIX - race condition callback pĹ‚atnoĹ›ci Apilo, persistence filtrĂłw tabel admin, poprawki cen zamĂłwieĹ„
ver. 0.310 - 23.02.2026
NEW - Zakladka Logi w sekcji Integracje (podglad pp_log z paginacja, sortowaniem, filtrami) @@ -86,10 +89,10 @@ FIX - naprawiono wyswietlanie atrybutow produktu na froncie (kolizja kolejnosci) NEW - REST API wariantow produktow (CRUD), slownik atrybutow, filtrowanie po atrybutach, wzbogacone atrybuty z tlumaczeniami
ver. 0.301 - 22.02.2026
-NEW - Ukrywalne filtry tabel, mobilna wersja szczegółów zamówienia +NEW - Ukrywalne filtry tabel, mobilna wersja szczegółów zamĂłwienia
ver. 0.300 - 21.02.2026
-- NEW - System aktualizacji oparty na manifestach JSON (checksum SHA256, backup plików, automatyczny build) +- NEW - System aktualizacji oparty na manifestach JSON (checksum SHA256, backup plikĂłw, automatyczny build) - NEW - Panel logu aktualizacji w panelu admina
ver. 0.299 - 21.02.2026
@@ -99,31 +102,31 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegÄ‚â€žĂ˘â‚¬ĹˇÄ - FIX - kilka poprawek po aktualizacji
ver. 0.297 - 19.02.2026
-- NEW - REST API produktów (lista, szczegóły, tworzenie, aktualizacja) -- NEW - Endpoint products z filtrowaniem, sortowaniem i paginacją -- NEW - Partial update produktów (tylko zmienione pola) +- NEW - REST API produktĂłw (lista, szczegóły, tworzenie, aktualizacja) +- NEW - Endpoint products z filtrowaniem, sortowaniem i paginacjÄ… +- NEW - Partial update produktĂłw (tylko zmienione pola)
ver. 0.296 - 19.02.2026
-- NEW - REST API zamówień dla ordersPRO (lista, szczegóły, zmiana statusu, płatności) -- NEW - Endpointy słownikowe (statusy, transporty, metody płatności) +- NEW - REST API zamĂłwieĹ„ dla ordersPRO (lista, szczegóły, zmiana statusu, pĹ‚atnoĹ›ci) +- NEW - Endpointy sĹ‚ownikowe (statusy, transporty, metody pĹ‚atnoĹ›ci) - NEW - Autentykacja API przez X-Api-Key header - NEW - Kolumna updated_at w pp_shop_orders (polling zmian)
ver. 0.295 - 19.02.2026
-- NEW - Edycja produktów w zamówieniu z panelu admina (dodawanie, usuwanie, zmiana ilości/cen) -- NEW - Wyszukiwarka produktów AJAX w formularzu edycji zamówienia -- NEW - Automatyczna korekta stanów magazynowych i przeliczanie kosztu dostawy -- FIX - Cena promo w zamówieniu = 0 gdy identyczna z ceną bazową +- NEW - Edycja produktĂłw w zamĂłwieniu z panelu admina (dodawanie, usuwanie, zmiana iloĹ›ci/cen) +- NEW - Wyszukiwarka produktĂłw AJAX w formularzu edycji zamĂłwienia +- NEW - Automatyczna korekta stanĂłw magazynowych i przeliczanie kosztu dostawy +- FIX - Cena promo w zamĂłwieniu = 0 gdy identyczna z cenÄ… bazowÄ…
ver. 0.294 - 19.02.2026
-- FIX - Code review zakończony (96/96 klas, ~1144 metod): 27 fixów across all layers +- FIX - Code review zakoĹ„czony (96/96 klas, ~1144 metod): 27 fixĂłw across all layers - FIX - Domain: null guard na query()->fetchAll() w 8 repozytoriach, redundancja DI w PromotionRepository - FIX - Admin: null safety find() ?: [] w 10 kontrolerach, null guard w App logowaniu/2FA - FIX - Front: LayoutEngine undefined $level + $_GET null check, ShopBasketController missing global $lang_id -- FIX - Shared: Helpers $_GET null check + bug 'png' → 'image/png' (Imagick lossless WebP nigdy nie działał) +- FIX - Shared: Helpers $_GET null check + bug 'png' → 'image/png' (Imagick lossless WebP nigdy nie dziaĹ‚aĹ‚)
ver. 0.293 - 19.02.2026
-- FIX - ArticleRepository: SQL injection fix (addslashes→parameterized), uproszczenie articleDetailsFrontend +- FIX - ArticleRepository: SQL injection fix (addslashes→parameterized), uproszczenie articleDetailsFrontend - FIX - AttributeRepository: martwy class_exists('\S') blokowal czyszczenie cache/temp - FIX - CategoryRepository: martwy class_exists('\S') blokowal generowanie linkow SEO kategorii - FIX - BannerRepository: parametryzacja dat w SQL + null guard na query() @@ -142,12 +145,12 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegÄ‚â€žĂ˘â‚¬ĹˇÄ - UPDATE - front\controls\Site przemianowany na front\App (router, camelCase: checkUrlParams, pageTitle) - UPDATE - front\view\Site przemianowany na front\LayoutEngine (layout engine, camelCase: cookieInformation) - CLEANUP - usuniete autoload/front/controls/ i autoload/front/view/ (puste foldery + pliki legacy) -- UPDATE - usuniecie 12 legacy klas z autoload/shop/ (~2363 linii) — pelna migracja na Domain-Driven Architecture +- UPDATE - usuniecie 12 legacy klas z autoload/shop/ (~2363 linii) — pelna migracja na Domain-Driven Architecture - UPDATE - class.Order.php: logika Apilo sync i email statusu przeniesiona do OrderAdminService - UPDATE - class.Product.php: ~20 metod przeniesionych do ProductRepository, calculate_basket_product_price do BasketCalculator - FIX - findCached(): stale Redis cache z obiektami \shop\Product powodowal ceny 0,00 zl - FIX - szablony: konwersja object access na array access po migracji Product -- UPDATE - AttributeRepository::getAttributeValueById() — dodano Redis cache +- UPDATE - AttributeRepository::getAttributeValueById() — dodano Redis cache - CLEANUP - katalog autoload/shop/ pusty, zero referencji \shop\ w aktywnym kodzie
ver. 0.291 - 17.02.2026
@@ -191,17 +194,17 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegÄ‚â€žĂ˘â‚¬ĹˇÄ - FIX - Tpl::render() branch 3: sprawdzal templates_user ale ladowal templates
ver. 0.284 - 16.02.2026
-- CLEANUP - usunieta klasa DbModel (base ORM) — logika wbudowana bezposrednio w shop\Promotion +- CLEANUP - usunieta klasa DbModel (base ORM) — logika wbudowana bezposrednio w shop\Promotion
ver. 0.283 - 16.02.2026
- UPDATE - migracja class.S.php do Shared\Helpers\Helpers (~140 plikow przepietych) - UPDATE - migracja class.Html.php do Shared\Html\Html - UPDATE - migracja class.Email.php do Shared\Email\Email - UPDATE - migracja class.Image.php do Shared\Image\ImageManipulator -- UPDATE - migracja class.Log.php do Shared\Log\Log (usunieta — logika przeniesiona) +- UPDATE - migracja class.Log.php do Shared\Log\Log (usunieta — logika przeniesiona) - CLEANUP - usunieta class.Mobile_Detect.php (przestarzala detekcja UA) - CLEANUP - usunieto 12 nieuzywanych metod z klasy S -- FIX - array_cartesian_product() — blad iteracji po niezdefiniowanej zmiennej +- FIX - array_cartesian_product() — blad iteracji po niezdefiniowanej zmiennej
ver. 0.282 - 16.02.2026
- UPDATE - Cache cleanup: eliminacja legacy class.Cache.php, migracja CacheHandler i RedisConnection do Shared\Cache namespace @@ -213,7 +216,7 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegÄ‚Ä
ver. 0.281 - 16.02.2026
- UPDATE - migracja Banners frontend: factory + view do Domain/Views (DI) -- NEW - `front\Views\Banners` — czysty VIEW (banners, mainBanner) +- NEW - `front\Views\Banners` — czysty VIEW (banners, mainBanner) - UPDATE - `BannerRepository` rozszerzony o 2 metody frontendowe (banners, mainBanner) z Redis cache - UPDATE - `front\view\Site::show()` przepiety na repo + Views - CLEANUP - usuniete: front\factory\Banners, front\view\Banners @@ -221,10 +224,10 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegÄ‚Ä
ver. 0.280 - 16.02.2026
- UPDATE - migracja Articles frontend: factory + view + encja do Domain/Views (DI) -- NEW - `front\Views\Articles` — czysty VIEW + utility (renderowanie, generateTableOfContents, generateHeadersIds, getImage) +- NEW - `front\Views\Articles` — czysty VIEW + utility (renderowanie, generateTableOfContents, generateHeadersIds, getImage) - UPDATE - `ArticleRepository` rozszerzony o 8 metod frontendowych (z Redis cache) -- UPDATE - `front\view\Site::show()` — 5 sekcji przepietych na repo + Views -- UPDATE - `front\controls\Site::route()` — single article + page_type switch przepiete na repo + Views +- UPDATE - `front\view\Site::show()` — 5 sekcji przepietych na repo + Views +- UPDATE - `front\controls\Site::route()` — single article + page_type switch przepiete na repo + Views - UPDATE - 5 szablonow `templates/articles/*` przepietych na `\front\Views\Articles::` - CLEANUP - usuniete: `class.Article` (encja + metody statyczne), `front\factory\Settings` (fasada) - FIX - eliminacja `global $lang` z `articleNoindex()`, eliminacja zaleznosci od `front\factory\Pages::page_sort()` @@ -235,22 +238,22 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegÄ‚â€žĂ˘â‚¬ĹˇÄ - UPDATE - nowy namespace `front\Controllers` z `NewsletterController` (DI via factory closures) - UPDATE - nowy namespace `front\Views` z `Languages` i `Newsletter` (czyste VIEW, statyczne metody) - UPDATE - routing frontend: `Site::getControllerFactories()` z fallback na stare kontrolery -- FIX - `newsletter_unsubscribe()` — poprawiona skladnia medoo `delete()` (2 argumenty zamiast 3) -- UPDATE - eliminacja fasady `front\factory\Languages` — 26 zaleznosci przepietych na `LanguagesRepository` +- FIX - `newsletter_unsubscribe()` — poprawiona skladnia medoo `delete()` (2 argumenty zamiast 3) +- UPDATE - eliminacja fasady `front\factory\Languages` — 26 zaleznosci przepietych na `LanguagesRepository` - CLEANUP - usuniete: `front\factory\Languages`, `front\factory\Newsletter`, `front\view\Languages`, `front\view\Newsletter`, `front\controls\Newsletter` - UPDATE - testy: `OK (437 tests, 1398 assertions)`
ver. 0.278 - 16.02.2026
- UPDATE - migracja Settings + Languages do wspolnych klas Domain (z cache Redis) -- FIX - `get_single_settings_value()` — parametr `$param` poprawnie uzywany (wczesniej hardcoded `firm_name`) +- FIX - `get_single_settings_value()` — parametr `$param` poprawnie uzywany (wczesniej hardcoded `firm_name`)
ver. 0.277 - 16.02.2026
-- NEW - migracja modulu `ShopProduct` (factory) — pelna migracja ~40 metod do `ProductRepository` + ~30 akcji w `ShopProductController` +- NEW - migracja modulu `ShopProduct` (factory) — pelna migracja ~40 metod do `ProductRepository` + ~30 akcji w `ShopProductController` - NEW - migracja modulu `Dashboard` do Domain + DI (`DashboardRepository`, `DashboardController`) - NEW - migracja modulu `Update` do Domain + DI (`UpdateRepository`, `UpdateController`) - UPDATE - klasa `admin\Site` przemianowana na `admin\App` (plik `App.php`) -- UPDATE - refaktoring routingu — usunieto fallback na stare kontrolery, uproszczony routing -- UPDATE - template `update/main-view.php` — panele zamiast `gridEdit`, `$.confirm()` zamiast `$.prompt()` +- UPDATE - refaktoring routingu — usunieto fallback na stare kontrolery, uproszczony routing +- UPDATE - template `update/main-view.php` — panele zamiast `gridEdit`, `$.confirm()` zamiast `$.prompt()` - CLEANUP - usuniete stare foldery: `autoload/admin/controls/`, `autoload/admin/factory/`, `autoload/admin/view/` - CLEANUP - usuniete legacy: `class.Dashboard.php` (controls/shop), `class.Update.php` (controls/factory/view), `class.Articles.php` (factory), `class.Page.php` (view), `class.ShopProduct.php` (controls/factory/view) - UPDATE - `front\factory\Newsletter` przepieta na `ArticleRepository::articlesByDateAdd()` @@ -339,12 +342,12 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegÄ‚â€žĂ˘â‚¬ĹˇÄ - UPDATE - pliki aktualizacji: `updates/0.20/ver_0.268.zip`, `ver_0.268_files.txt`
ver. 0.267 - 13.02.2026
-- FIX - front: poprawione dobieranie layoutu dla kategorii/produktu/koszyka i innych stron modułowych (fallback do layoutu domyślnego) -- FIX - produkt/koszyk: poprawiona obsługa ilości dla kombinacji (stan 0 po dodaniu do koszyka, limit max, odczyt `stock_0_buy`) -- FIX - produkt: usunięty błąd JS `TypeError: $(...).visible is not a function` (zamiana na `:visible`) -- FIX - SEO redirecty produktów: blokada konfliktów po kopiowaniu URL oraz utwardzone wykrywanie pętli redirectów (`lang_id` + graf przejść) -- UPDATE - admin: `input-switch` zapisuje wartość `on` (spójnie z obsługą pól checkbox w formularzach) -- CLEANUP - usunięte pliki: `apilo-bck`, `geocode-cache.php` +- FIX - front: poprawione dobieranie layoutu dla kategorii/produktu/koszyka i innych stron moduĹ‚owych (fallback do layoutu domyĹ›lnego) +- FIX - produkt/koszyk: poprawiona obsĹ‚uga iloĹ›ci dla kombinacji (stan 0 po dodaniu do koszyka, limit max, odczyt `stock_0_buy`) +- FIX - produkt: usuniÄ™ty błąd JS `TypeError: $(...).visible is not a function` (zamiana na `:visible`) +- FIX - SEO redirecty produktĂłw: blokada konfliktĂłw po kopiowaniu URL oraz utwardzone wykrywanie pÄ™tli redirectĂłw (`lang_id` + graf przejść) +- UPDATE - admin: `input-switch` zapisuje wartość `on` (spĂłjnie z obsĹ‚ugÄ… pĂłl checkbox w formularzach) +- CLEANUP - usuniÄ™te pliki: `apilo-bck`, `geocode-cache.php` - UPDATE - testy: `OK (235 tests, 682 assertions)` - UPDATE - pliki aktualizacji: `updates/0.20/ver_0.267.zip`, `ver_0.267_files.txt`, `ver_0.267_sql.txt`
@@ -426,7 +429,7 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegÄ‚â€žĂ˘â‚¬ĹˇÄ ver. 0.257 - 12.02.2026
- NEW - migracja modulu `Newsletter` do architektury Domain + DI (`Domain\Newsletter\NewsletterRepository`, `Domain\Newsletter\NewsletterPreviewRenderer`, `admin\Controllers\NewsletterController`) - UPDATE - widoki `/admin/newsletter/*` przepiete z legacy `grid/gridEdit` na nowe komponenty (`components/table-list`, `components/form-edit`) + nowy endpoint `/admin/newsletter/preview/` -- UPDATE - routing DI (`admin\Site`) rozszerzony o moduĹ‚ `Newsletter` +- UPDATE - routing DI (`admin\Site`) rozszerzony o moduĹ‚ `Newsletter` - UPDATE - `admin\factory\Newsletter` dziala jako fasada do nowego repozytorium (backward compatibility) - UPDATE - `front\factory\Newsletter` nie korzysta juz z `admin\view\Newsletter` - CLEANUP - usuniete legacy klasy `autoload/admin/controls/class.Newsletter.php`, `autoload/admin/view/class.Newsletter.php` @@ -450,7 +453,7 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegÄ‚â€žĂ˘â‚¬ĹˇÄ - UPDATE - migracja widokow languages (`languages-list`, `language-edit`, `translations-list`, `translation-edit`) na `components/table-list` i `components/form-edit` - UPDATE - routing DI dla `Languages` w `admin\Site` oraz kompatybilna fasada `admin\factory\Languages` delegujaca do repozytorium - UPDATE - naprawiono zapis edycji jezyka (ID jezyka pobierane z URL przy edycji) -- UPDATE - globalne poprawki UX filtrĂłw w `components/table-list` (kompaktowe kolumny `Aktywny`/`Domyslny`, spacing i pelna szerokosc selecta) +- UPDATE - globalne poprawki UX filtrĂłw w `components/table-list` (kompaktowe kolumny `Aktywny`/`Domyslny`, spacing i pelna szerokosc selecta) - CLEANUP - usuniete legacy klasy: `autoload/admin/controls/class.Languages.php`, `autoload/admin/view/class.Languages.php`
ver. 0.253 - 12.02.2026
@@ -519,78 +522,78 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegÄ‚â€žĂ˘â‚¬ĹˇÄ - UPDATE - refaktoryzacja: article_save przeniesiony do Domain\Article\ArticleRepository::save() z prywatnymi helperami - UPDATE - refaktoryzacja: article_delete przeniesiony do Domain\Article\ArticleRepository::archive() - UPDATE - ArticlesController: nowe akcje save() i delete() z DI -- UPDATE - admin\factory\Articles::article_save() i articles_set_archive() delegujÄ… do repozytorium (kompatybilność) +- UPDATE - admin\factory\Articles::article_save() i articles_set_archive() delegujÄ… do repozytorium (kompatybilność)
ver. 0.243
-- UPDATE - refaktoryzacja: cleanup nieprzypisanych plików/zdjęć artykułów przeniesiony do Domain\Article\ArticleRepository -- UPDATE - ArticlesController::edit() używa repozytorium do cleanupu, a admin\factory\Articles zachowuje delegowanie (kompatybilność) +- UPDATE - refaktoryzacja: cleanup nieprzypisanych plikĂłw/zdjęć artykułów przeniesiony do Domain\Article\ArticleRepository +- UPDATE - ArticlesController::edit() uĹĽywa repozytorium do cleanupu, a admin\factory\Articles zachowuje delegowanie (kompatybilność)
ver. 0.242
- NEW - refaktoryzacja: Domain\Article\ArticleRepository + migracja article_edit do admin\Controllers\ArticlesController (DI) -- UPDATE - admin\factory\Articles::article_details() deleguje do nowego repozytorium (kompatybilność zachowana) -- UPDATE - metody przejęte przez nowe kontrolery oznaczone jako @deprecated w legacy kontrolerach admin\controls +- UPDATE - admin\factory\Articles::article_details() deleguje do nowego repozytorium (kompatybilność zachowana) +- UPDATE - metody przejÄ™te przez nowe kontrolery oznaczone jako @deprecated w legacy kontrolerach admin\controls
ver. 0.241
-- NEW - refaktoryzacja: admin\Controllers\ProductArchiveController - archiwum produktów z DI +- NEW - refaktoryzacja: admin\Controllers\ProductArchiveController - archiwum produktĂłw z DI - NEW - ProductRepository::archive(), unarchive() - operacje archiwizacji w repozytorium -- FIX - naprawiono SQL w liście archiwum (puste wyszukiwanie filtrowało wszystkie wyniki) -- FIX - naprawiono brakujący filtr archive = 1 w zapytaniu bez wyszukiwania -- UPDATE - wyczyszczono szablony archiwum (usunięto zbędne funkcje: apilo, baselinker, duplikowanie) +- FIX - naprawiono SQL w liĹ›cie archiwum (puste wyszukiwanie filtrowaĹ‚o wszystkie wyniki) +- FIX - naprawiono brakujÄ…cy filtr archive = 1 w zapytaniu bez wyszukiwania +- UPDATE - wyczyszczono szablony archiwum (usuniÄ™to zbÄ™dne funkcje: apilo, baselinker, duplikowanie)
ver. 0.240
- NEW - refaktoryzacja: Domain\Settings\SettingsRepository + admin\Controllers\SettingsController (architektura Domain-Driven) -- NEW - refaktoryzacja: Domain\Cache\CacheRepository - czyszczenie cache z obsługą Redis -- FIX - komunikat potwierdzenia zapisu ustawień w panelu administratora +- NEW - refaktoryzacja: Domain\Cache\CacheRepository - czyszczenie cache z obsĹ‚ugÄ… Redis +- FIX - komunikat potwierdzenia zapisu ustawieĹ„ w panelu administratora - FIX - naprawiono element #content w layoucie admina (powiadomienia grid.js)
ver. 0.239
-- NEW - refaktoryzacja: Domain\Banner\BannerRepository + admin\Controllers\BannerController (pełna migracja kontrolera) +- NEW - refaktoryzacja: Domain\Banner\BannerRepository + admin\Controllers\BannerController (peĹ‚na migracja kontrolera) - NEW - refaktoryzacja: Domain\Product\ProductRepository::getPrice(), getName() - migracja kolejnych metod -- NEW - router admin z obsługą nowych kontrolerów (fallback na stare) -- UPDATE - shop\Product::get_product_price(), get_product_name() używają nowego repozytorium (kompatybilność zachowana) +- NEW - router admin z obsĹ‚ugÄ… nowych kontrolerĂłw (fallback na stare) +- UPDATE - shop\Product::get_product_price(), get_product_name() uĹĽywajÄ… nowego repozytorium (kompatybilność zachowana)
ver. 0.238
- NEW - refaktoryzacja: Domain\Product\ProductRepository - pierwsza klasa w nowej architekturze Domain-Driven - NEW - Dependency Injection zamiast global variables -- UPDATE - shop\Product::get_product_quantity() używa teraz nowego repozytorium (kompatybilność zachowana) +- UPDATE - shop\Product::get_product_quantity() uĹĽywa teraz nowego repozytorium (kompatybilność zachowana)
ver. 0.237
- NEW - automatyczne czyszczenie cache produktu po aktualizacji przez CRON (Sellasist, Apilo, Baselinker) -- UPDATE - przycisk "Wyczyść cache" w panelu administratora z obsługą AJAX i komunikatami o postępie +- UPDATE - przycisk "Wyczyść cache" w panelu administratora z obsĹ‚ugÄ… AJAX i komunikatami o postÄ™pie
ver. 0.236
-- FIX - zabezpieczenie przed duplikatami zamówień w Apilo - automatyczne pobieranie ID zamówienia przy błędzie "idExternal już wykorzystywany" +- FIX - zabezpieczenie przed duplikatami zamĂłwieĹ„ w Apilo - automatyczne pobieranie ID zamĂłwienia przy błędzie "idExternal juĹĽ wykorzystywany"
ver. 0.235
- FIX - poprawka funkcji aktualizacji
ver. 0.234
-- NEW - przycisk zaznaczania zamówienia jako wysłane do trustmate.io +- NEW - przycisk zaznaczania zamĂłwienia jako wysĹ‚ane do trustmate.io
ver. 0.232
- NEW - opcje GPSR
ver. 0.231
-- FIX - poprawki bezpieczeństwa + dwuetapowa weryfikacja logowania +- FIX - poprawki bezpieczeĹ„stwa + dwuetapowa weryfikacja logowania
ver. 0.230
-- FIX - poprawki bezpieczeństwa +- FIX - poprawki bezpieczeĹ„stwa
ver. 0.229
-- NEW - pola dodatkowe z opcją wymagane/niewymagane +- NEW - pola dodatkowe z opcjÄ… wymagane/niewymagane
ver. 0.228
-- NEW - cron do wysyłania zamówień do trustmate.io +- NEW - cron do wysyĹ‚ania zamĂłwieĹ„ do trustmate.io
ver. 0.227
-- NEW - historia kodów rabatowych +- NEW - historia kodĂłw rabatowych
ver. 0.226
-- NEW - dodanie opcji faktury do zamówienia +- NEW - dodanie opcji faktury do zamĂłwienia
ver. 0.225
- NEW - przycisk czyszczenia cache -- NEW - ponowne wysyłanie zamówienia do apilo +- NEW - ponowne wysyĹ‚anie zamĂłwienia do apilo
ver. 0.224
- NEW - sortowanie form dostawy @@ -602,20 +605,20 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegÄ‚â€žĂ˘â‚¬ĹˇÄ - NEW - integracja z Orlen Paczka
ver. 0.221
-- NEW - Automatyczne przekierowania adresów URL produktów, zmiany w pliku htaccess +- NEW - Automatyczne przekierowania adresĂłw URL produktĂłw, zmiany w pliku htaccess
ver. 0.220
-- NEW - Dodanie możliwości wyświetlenia na strone ostatnio dodane produkty [PRODUKTY_NEW] lub [PRODUKTY_NEW:10]. -- NEW - Dodanie możliwości wyświetlenia na strone popularnych produktów [PRODUKTY_TOP] lub [PRODUKTY_TOP:10]. +- NEW - Dodanie moĹĽliwoĹ›ci wyĹ›wietlenia na strone ostatnio dodane produkty [PRODUKTY_NEW] lub [PRODUKTY_NEW:10]. +- NEW - Dodanie moĹĽliwoĹ›ci wyĹ›wietlenia na strone popularnych produktĂłw [PRODUKTY_TOP] lub [PRODUKTY_TOP:10].
ver. 0.219
-- NEW - Dodanie możliwości zmiany daty w artykułach +- NEW - Dodanie moĹĽliwoĹ›ci zmiany daty w artykuĹ‚ach
ver. 0.218
- NEW - indywidualny kod GTM
ver. 0.217
-- NEW - zwiększenie obsługi REDIS +- NEW - zwiÄ™kszenie obsĹ‚ugi REDIS
ver. 0.216
- NEW - aktualizacja api i cron (apilo) @@ -630,43 +633,43 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegÄ‚â€žĂ˘â‚¬ĹˇÄ - FIX - wyliczenie darmowej dostawy
ver. 0.212
-- NEW - zmiany w zapisywaniu zamówienia do apilo +- NEW - zmiany w zapisywaniu zamĂłwienia do apilo
ver. 0.211
-- NEW - Debugowanie apilo + wyświetlanie podkategorii +- NEW - Debugowanie apilo + wyĹ›wietlanie podkategorii
ver. 0.210
-- NEW - dodatkowe pola w widoku produktów +- NEW - dodatkowe pola w widoku produktĂłw
ver. 0.209
-- NEW - zmiany w widoku produktów (panel administratora) +- NEW - zmiany w widoku produktĂłw (panel administratora)
ver. 0.208
-- NEW - zmiany w wyszukiwarce produktów +- NEW - zmiany w wyszukiwarce produktĂłw
ver. 0.204-0.207
- NEW - htaccess update
ver. 0.204-0.206
-- NEW - wysyłanie produktów do apilo +- NEW - wysyĹ‚anie produktĂłw do apilo
ver. 0.203
- NEW - zmiana sposobu wyliczania cen produkty z dodatkami
ver. 0.202
-- NEW - dodano "główne zdjęcie" w edycji artykułu +- NEW - dodano "główne zdjÄ™cie" w edycji artykuĹ‚u
ver. 0.201
-- FIX - aktualizacja statusów na podstawie baselinkera +- FIX - aktualizacja statusĂłw na podstawie baselinkera
ver. 0.200
-- NEW - wysyłanie produktów do baselinker +- NEW - wysyĹ‚anie produktĂłw do baselinker
ver. 0.199
- NEW - usprawnienie edycji danych do XML
ver. 0.198
-- NEW - automatyczne generowanie kodów SKU +- NEW - automatyczne generowanie kodĂłw SKU
ver. 0.197
- FIX - poprawki w Dashboard @@ -675,7 +678,7 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegÄ‚â€žĂ˘â‚¬ĹˇÄ - FIX - integracja z apilo.com
ver. 0.195
-- FIX - aktualizacja statusów +- FIX - aktualizacja statusĂłw
ver. 0.194
- UPDATE - integracja apilo @@ -684,46 +687,46 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegÄ‚â€žĂ˘â‚¬ĹˇÄ - UPDATE - aktualizacja synchronizacji z baselinker
ver. 0.192
-- NEW - pobieranie statusów z sellasist +- NEW - pobieranie statusĂłw z sellasist
ver. 0.191
- NEW - integracja z selasist
ver. 0.190
-- FIX - produkty powiązane +- FIX - produkty powiÄ…zane
ver. 0.189
-- FIX - ceny promocyjne produktów z dodatkiem +- FIX - ceny promocyjne produktĂłw z dodatkiem
ver. 0.188
-- NEW - widok listy produktów +- NEW - widok listy produktĂłw
ver. 0.187
- FIX - pobieranie cen z APILO
ver. 0.186
-- FIX - dodawanie do koszyka tych samych produktów ale z różną personalizacją +- FIX - dodawanie do koszyka tych samych produktĂłw ale z różnÄ… personalizacjÄ…
ver. 0.185
-- FIX - masowa edycja produktów +- FIX - masowa edycja produktĂłw
ver. 0.184
-- NEW - druga część integracji z apilo, masowa edycja produktów +- NEW - druga część integracji z apilo, masowa edycja produktĂłw
ver. 0.183
-- NEW - pierwsza część integracji z apilo +- NEW - pierwsza część integracji z apilo
ver. 0.182
- FIX - layout
ver. 0.181
-- NEW - infinitescroll - opcja włączy/wyłącz +- NEW - infinitescroll - opcja włączy/wyłącz
ver. 0.180
- NEW - aktualizacja dashboard
ver. 0.179
-- NEW - obsługa EAN +- NEW - obsĹ‚uga EAN
ver. 0.177, 0.178
- FIX - custom_label @@ -739,7 +742,7 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegÄ‚Ä
ver. 0.173
- NEW - duplikowanie produktu wraz z kombinacjami -- NEW - dodanie przechodzenia pomiędzy zamówienia (poprzednie/następne zamówienie) +- NEW - dodanie przechodzenia pomiÄ™dzy zamĂłwienia (poprzednie/nastÄ™pne zamĂłwienie)
ver. 0.172
- FIX - poprawki w Cache @@ -751,22 +754,22 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegÄ‚â€žĂ˘â‚¬ĹˇÄ - NEW - usuwanie cache produktu przy zapisie
ver. 0.169
-- FIX - poprawki w liście produktów +- FIX - poprawki w liĹ›cie produktĂłw
ver. 0.168
-- NEW - archiwum produktów +- NEW - archiwum produktĂłw
ver. 0.167
-- NEW - dodanie obsługi cen i stanów magazynowych kombinacji produktów +- NEW - dodanie obsĹ‚ugi cen i stanĂłw magazynowych kombinacji produktĂłw
ver. 0.166
-- NEW - współpraca z GTM +- NEW - współpraca z GTM
ver. 0.164/5
-- FIX - ukrywanie produktów nieaktywnych +- FIX - ukrywanie produktĂłw nieaktywnych
ver. 0.163
-- NEW - automatyczne podpowiadanie produktów do zestawu na podstawie wcześniejszych zakupów klientów +- NEW - automatyczne podpowiadanie produktĂłw do zestawu na podstawie wczeĹ›niejszych zakupĂłw klientĂłw
ver. 0.162
- NEW - GA4 @@ -782,7 +785,7 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegÄ‚â€žĂ˘â‚¬ĹˇÄ - FIX - cron Baselinker
ver. 0.158
-- UPDATE - poprawa kolorystyki przycisków +- UPDATE - poprawa kolorystyki przyciskĂłw
ver. 0.157
- NEW - szybka zmiana statusu produktu @@ -794,10 +797,10 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegÄ‚â€žĂ˘â‚¬ĹˇÄ - NEW - infinite scroll w widoku kategorii
ver. 0.154
-- FIX - atrybuty produktów +- FIX - atrybuty produktĂłw
ver. 0.153
-- FIX - atrybuty produktów +- FIX - atrybuty produktĂłw
ver. 0.152
- FIX - tematy maili @@ -806,7 +809,7 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegÄ‚â€žĂ˘â‚¬ĹˇÄ - FIX - tematy maili
ver. 0.150
-- NEW - domyślna forma transportu +- NEW - domyĹ›lna forma transportu
ver. 0.149
- NEW - tematy maili @@ -824,11 +827,11 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegÄ‚â€žĂ˘â‚¬ĹˇÄ - NEW - omnibus ready
ver. 0.144
-- FIX - usunięcie adresu marianek.pl z kodu +- FIX - usuniÄ™cie adresu marianek.pl z kodu
ver. 0.143
-- FIX - poprawa generowania plików WEBP +- FIX - poprawa generowania plikĂłw WEBP
ver. 0.142
-- FIX - poprawa adresu strony głównej +- FIX - poprawa adresu strony głównej
diff --git a/updates/versions.php b/updates/versions.php index b08c86c..b14d3b9 100644 --- a/updates/versions.php +++ b/updates/versions.php @@ -1,5 +1,5 @@