From c4ce330d018879d11d9fe0dd18a9c7942afdcedd Mon Sep 17 00:00:00 2001 From: Jacek Date: Thu, 12 Mar 2026 09:23:29 +0100 Subject: [PATCH] build: ver_0.335 - safeUnlink path traversal, XSS escaping szablony artykulow --- updates/0.30/ver_0.335.zip | Bin 0 -> 33423 bytes updates/0.30/ver_0.335_manifest.json | 26 +++ updates/changelog-data.html | 231 ++++++++++++++------------- updates/versions.php | 2 +- 4 files changed, 144 insertions(+), 115 deletions(-) create mode 100644 updates/0.30/ver_0.335.zip create mode 100644 updates/0.30/ver_0.335_manifest.json diff --git a/updates/0.30/ver_0.335.zip b/updates/0.30/ver_0.335.zip new file mode 100644 index 0000000000000000000000000000000000000000..64b9f9525059ea4051327bc7c518f090e6d499e8 GIT binary patch literal 33423 zcmZs?W2`Vdw5_{r+qTzwmu=g&ZQHhO+qP}nwt2pNvXh(KoY}OqX~yq%w$G@%6fg)1 z!2iU#q_y_{o&4{B@Lx7?akjIzGceW`wzDy?u+^6TUo`|k!+&Zh6rjd_EC2w!JOBXN z|A$(@(b>Yt+C=+*v!aQ;os)&Loudbxy}A7j&z9rXxZ_>zBVV-6WMZ?0&MOW%>SiOc z)MG=Vu7rt26Ni|pI&Iq}>>L;cu~YzCz4MU9Ukxd6xDpW z%#b_>fq9CEC!nA9m%O2&9r&T4n!f8ondXMxS^fp;S`f3#oo5;-F>~%1F_H9Pb9Un$ z<0XZKk{8eJR1C=6ltZHFydJ1o^RsSZcQ4YfBc;$YNKWZl!9)WN!elaYJMbB%ZhmNG z;U!2sT5+61iFL6FOrIIv5(Re&zI+70((@^I**=AMq{u6I*WObwKb%nkwrJ?)K#tzm zz+HfzQH{{Em5Ojq24s#Zv$|P{g`46Fd6d%}-b?O+zZ~bm{2*363!S`IN$x@9ScSI) znwtyafusb(%n^!Q(FJG~#}c>t!~}0F)DB2_St2GT11wQ?-ZcW`yD(b_m-j*M@%V)l zqZcaw*raHE$uJYtU?(U|rmE%T1ouV2^wRfi!|P{|$|p8}r3=dG@Lo@Y*1pGsg6n_T z_i$N^M3$1t>A)X|%WYJ6-s>Ab{g>I!NUv>8F3qqzk)=5~I-ftvEdS)S<Mby<4w6RCd-k&3tLxd~My1kl}^1>%v%Rge@766*GtaJL>OQlsOR+DtH{C_~`u7oP^K zxC;u8KXPt-vSo*UJR?(vShb~-ZWziYaAXykdxqYdFpem+`%4<=4ikO^i#_dDUIt1Y zB7!B*e5Tj3imzqU#gpoMg-0NFqV5B|AyQ|bk{CIr`Bp*b2#GIh;xSUra~Bqt6ByoI zMG71P@G@GuGRgq=K*Kt^xv9OnYRK+^m`-?DISXwB8mGvJDzj&WDiE-J8Jo^@$dOJb zKT9`iKmsQ*4CP;KW(d-^uJv#s-JziUvJW}n8T1S9miVN+8zJ=Aw{n2k&Qno~dj4eI z1n;gYpFqwX88J!h0U-~&IoCBGWyuZf^Q%*R3xG}U-+=ojJ*78QSIr5WA34{uyyKq%iS%K#4YmQM;`{R0{ zq>CQ1Z0v_hS1(}Qy=4w_k1EJ|uH1AIQPkYDf(EF5WW%dUmAevy_k4O*AXFnc*qpbv zy5fFp63~l{&}uqqej}Qtk(dM5=cu*c|h?$YwS=IE*ln(i0KDHU)shhgaz{GGHo^?Dfyg= zA6^!}pkef1s0Ae?DMAn%LimQ5f-!2glCT3+CmJ$_k&OxjN_W#_k}J`<@h?L)k!0{5 zSv4}P8)eC&i?m+UN-5YT$lq1^%CxD{H`m%~SHp-L^aSR<+8(m!5L=qU26s_=h1WJnz1ki~o*7!L>=dUOPcIVk z=aMbx@lUcwGq<5K+bCA$Bz`pDD${*61*N?a`0}c9GHY!`qs?^N|G0=oIv|I$*5T#R zwa80zx!+#mblDpIG1lzX#Dfb!dxfV9Rw7gZLvItiTy3ThRuYkF>ocI!l#K_z*#T)3 z@S`z1lLR|Me$|$$h$IJoOoOR`m2RVi%1#^JOy%u*w$Rua5{d>BRjBl%b$v`bW^?Ab z*}|lQ7FWEf!4s;YvwsRN94|3kyvGD8%yO3%H@q)!yjR}5M7R-h$ znHL1-?3Iy++v zql+ftX1@XG8PKRuo`bT=5>YKXWnG3=j^n$VyJfq ztc8qT4V{}@2YiIKnAeTFR5o1>H|L274F4KrE-3m3(kbYU@%rK3g9RFQw5VoHi@KpC zkEDNuR)huajDnvmtYFLeI6Ftvx}KcrYI!bDv3DE z;-eOLO(s{46s;8$kw(M>%zS4YIYNX`%D#cwBkAzWw_6Q!&H;P7_m?O zMErv{+!-*8aZOB;28riM29T9--}AiN9%VJp=Js(}TJH`-XNLA>&hx@&AGaSJyrYjz z%}c-}p3Gt8=jHgHsul1_oq zlOdv5YM9GDux6e3dLEm#~|Z1rq;9Gwib8YVaKP5df8%ISD)sCfZ?rDRASde6e&h zIT)?5haqdmGlf~CJ?Pl(4d=j4(#bV!M%geb3cnr3(KRgsZw(Y2vwzYqLl(R_lr-Tu z+0pW--$~-Fh!$+nDAP|`C%kk`{~0X%yvB+-<>3lGrai4j6f7e(9?P!FK%FnM8&3_26~CVziq`}){FYxM+4+Qare#oeTE z3VM%1hrF4=dgAw&s4RSmKw{QmU6%VA{@*rX;D!8P6F8wC`evr)$HnS@+0{OcJVuao)qpb(%n;-!?h z1y!2!L|kD&V$O^b_R6nmTtu!SfXub9 z4wvRM`GpV!s+ECp;J`dBEp?fXnWE;yl1zAKAgubn?18xjF?c478XLo)a@c1L-0I9di{R43nU{Li`T+^%x1~T zZ&y>_F*&W?$8iY;%VyzN@!e*K++$t$?riaiS4CQ$Z^DA`6-?Shw8WIhMSLg}=nE~M z^7d|g*F}iL{ej{|tDfmwVB ze13-LuYE^44t!2{l6Mc*m&sb%_Ca#IwMo8q6E+dWC8wqeE7? z&hPxhdKY74SAdpPm5PpKm=R=pkd<|yjY^ry*ZQtw(sR)w82bR)+ zUuYG|jtSzDmh?~{+5JEz>*IatU
}#wZmIE&!{& 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 BE|vfQ literal 0 HcmV?d00001 diff --git a/updates/0.30/ver_0.335_manifest.json b/updates/0.30/ver_0.335_manifest.json new file mode 100644 index 0000000..1520066 --- /dev/null +++ b/updates/0.30/ver_0.335_manifest.json @@ -0,0 +1,26 @@ +{ + "changelog": "Poprawki bezpieczenstwa: safeUnlink() z walidacja realpath(), escaping XSS w szablonach artykulow", + "version": "0.335", + "files": { + "added": [ + + ], + "deleted": [ + + ], + "modified": [ + "autoload/Domain/Article/ArticleRepository.php", + "autoload/Domain/Product/ProductRepository.php", + "templates/articles/article-entry.php", + "templates/articles/article-full.php" + ] + }, + "checksum_zip": "sha256:2347ff654312f34e22b19cd89b229beabb039a3c253b047df07362d5c8393527", + "sql": [ + + ], + "date": "2026-03-12", + "directories_deleted": [ + + ] +} \ No newline at end of file diff --git a/updates/changelog-data.html b/updates/changelog-data.html index 4e2416f..699c47b 100644 --- a/updates/changelog-data.html +++ b/updates/changelog-data.html @@ -1,8 +1,11 @@ +ver. 0.335 - 12.03.2026
+Poprawki bezpieczenstwa: safeUnlink() z walidacja realpath(), escaping XSS w szablonach artykulow +
ver. 0.334 - 12.03.2026
Poprawki bezpieczenstwa: usunieto debug log tpay, naprawa SQL w IntegrationsRepository, usunieto RedBeanPHP
ver. 0.333 - 10.03.2026
-Ochrona przed podwójnym składaniem zamówienia (order submit token) +Ochrona przed podwĂłjnym skĹ‚adaniem zamĂłwienia (order submit token)
ver. 0.332 - 01.03.2026
API produktow: nowe pola new_to_date i additional_message @@ -32,28 +35,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 @@ -62,16 +65,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) @@ -101,10 +104,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
@@ -114,31 +117,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() @@ -157,12 +160,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
@@ -206,17 +209,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 @@ -228,7 +231,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 @@ -236,10 +239,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()` @@ -250,22 +253,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()` @@ -354,12 +357,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`
@@ -441,7 +444,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` @@ -465,7 +468,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
@@ -534,78 +537,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 @@ -617,20 +620,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) @@ -645,43 +648,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 @@ -690,7 +693,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 @@ -699,46 +702,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 @@ -754,7 +757,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 @@ -766,22 +769,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 @@ -797,7 +800,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 @@ -809,10 +812,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 @@ -821,7 +824,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 @@ -839,11 +842,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 18845ce..7abe525 100644 --- a/updates/versions.php +++ b/updates/versions.php @@ -1,5 +1,5 @@