From 0b1f289478d70163b5bec67964157c870bf04d14 Mon Sep 17 00:00:00 2001 From: Jacek Pyziak Date: Sun, 22 Feb 2026 17:16:26 +0100 Subject: [PATCH] build: rebuild update packages v0.304, v0.305 with fixed .updateignore Co-Authored-By: Claude Opus 4.6 --- updates/0.30/ver_0.304.zip | Bin 42751 -> 6277 bytes updates/0.30/ver_0.304_manifest.json | 45 +++--- updates/0.30/ver_0.305.zip | Bin 33283 -> 33360 bytes updates/0.30/ver_0.305_manifest.json | 54 +++---- updates/changelog.php | 212 +++++++++++++-------------- 5 files changed, 150 insertions(+), 161 deletions(-) diff --git a/updates/0.30/ver_0.304.zip b/updates/0.30/ver_0.304.zip index f9cb6d3b783b89731d60cedca814668f21671a3a..e8084826f359bc149cbd0e00e9990d31b68d32ca 100644 GIT binary patch delta 74 zcmex=mZ{Z{C%~JTMT7wac63hU(PrAwxzVy;jE9j)gaIZzdCL-Op!nvGOA;7GSlK{o PS%GjRBLl-RF%S;`*Jlx1 delta 36835 zcmV(;K-<5CG5^g13{Xo01QY-O0001~gpmv@0;z5F?=ZydW8UO$Qb#P>1bY*i~FfKDNTy|x0Uob8+Ff%TCX>feHV~j39*QVRHyLa0* zc5C<3wr$(CZQHhO+qP}nn)f?1Co{=lCB@uTSwAY3btSi)Bq$gf(0@gdn~E0D{}M?5 zY5GRi<~CY?PR7=DR{BoHj#_g6Lk$Il>Y}1`ns!l~3kwAFMgasw`F~Iw+FIM$+8En7 zIck~MI#|;g8<{)N+nL!lV{bZajy!8Ke}uwUL-(l>7Eh5PCW$palfAICaHTBBcvG1| z(+-o_U(yr8L_8m)`v{iq#<%v6|J3F*VjuzWN7&$hxl09fn$G5YMssmXnx6mY{ASv| zypFLSm8LPI$FW4g65F1WN*Vl>7D@_L+EN$@7|3-5FW338lLmK(`IH68`3`P8jwID1 z;^-rRn%mu-BqL!7bNjj>mR%Gwx<%5dSS`&8?zcpTlw!132&S_iCx0`J{|mIetC$)` z#4%=nqUAyI1$GHJkQbPpMmN5}S_4>Bru^`Jkk~?36;GKRPYR_iVCoKNgjKn^?e0vI z?+jUV^XZ*S8e>)f-9)5gGwZ&tK z9zjFmyzM+1gaotSY#F^GKMoK-<>ufd5!H5okob$w)VjI7dzp}XuSKJ<=Q?m`YkD>E zhXoDyTgP=)(w56&J zH2%{fWA8!zl_LT2%P|PAAIDu-$V+$W%&YHeCAt0#^{ZFT-NxKyEB>DDDqI4O0P~f3 znYaTpTacR=)O)&+5)d1MnV?mC4Uv+6zmvaQ z95QZ&&St2mD^Xz4s3<9XZ0{u!ex4gK`e~jO+It}UJk)gKQ4v2AIZ)Jn)CaQx zRe=x0yfg~+xWCU0!kGGX9(M%rY@b_Unn)B}sNjK^$8=VTV6)-J->3>Llj=SonP^F_ zx~lv}&#>LcL7|42KVzhk&|j~AMnuf$=c8qUEAj)m?T%4xA=!oSa;O&!Bke%3)~dP2 zIQu>*L?TwB{K7VUt)SFE=PObz*G=~!cpEo1qVr2YK&jD-U#K@$RBr})^~}|(Fn?*> zihV!9(`3LqLq6_Y_ch2sCY>SNqx{WdD2SplI_st)B1&2nkrtp8S-fI|dKgDHW%-2f zq4e+5lEpLOdKfdU=S#PL{)Sid>`o|HrX1lqi?f6=-gL2GX|?vRl@6Y^5YVmKVANJH)5VW}2X%JtB(N>%%9h(& zJlL3s-KZ+^mu6FAZi;q}-H)A+1jNr3Hai4xk1B2op}vV?%Y zgrHn))!NCXIyKl(W%749R8XpztOh<Yif4Nywy3^iQc`ojNpWjH!QKuaMNXtyA-pAH?!trwp3mFWue7ex{UXi z43eyH&UngyR8MxJ=N0T(MizvxrqbvOvW>v!U+_O&7z|ybv7DhEu)qxaeLxqka2$-de-1#*JnFjHfQYe@hb_gdkYe6g6*1xRCGm}z z%_{6Mk1&a(IOJkTv>&k;9n0GO^3VY_bWH^mLg;^gXM{(6vN%!Wwxr3^EP6m$t}zt~ z5o$7MDqQ=?Hxt?Ee-6znkeT%*q9}P+3?>^L1hTRcn~tL#_Q8^qbsNzCbrqZAibh5W z&~+387^l{Sy)QU3hQ7+rK%E}IzTW{`PT;RF*GQ+h#f1=(3!}$OTOZk{A%)x7jpPI6 zrN!2NrpX;5bjQKuX`#u0|2cpljSMcA{Vj0PGL~(}VVR7^;0_3#ks*Z9dr48Lkx2$a=ae=Mi5)wH@tP5GwL^tKo_NfFL^@R?ujGP4ob&~(8tkyZf@Ca zgjgIUL1`R<{0uE&f`4=RThY88rbwoAiQCQnx9iJ1*Oodjkb7^s9Yis15R=OLL|aY&=-wf~ zhlfv+dXp=0BrI3#y}l2oTZ zQ~X))m`vbQx}^lMbDr50J3-l8;5N+&WGcl}N=?rFKzhhrD{d3)=;z!pKO2X1)zLy5 zeaD;|=BmmGi>05W)SlDi<)2teH{(6k!~9@9p$|h9(-PxuId)TcUOEikAbe09K=;|? zuEv0f&P|?{dUL$u-_!&alSmDJ1oMLRm8<7tkRT~1X&-&rjchK@&&#YIZNC=CouW?a zD)u*E9DlcE7Y4+?AA!H%I>9hLWApQ4=z8tZ*tLIM9ihNB&L zx-4-{wR_Ot+Yp>Hq%uffK4t_f&kwg@=<3t-sCsG|B4>jSyh99M7@g~X<=$_$MsPxv zUtD7Kg|tQqDL5kZpAX3}-Y37=q_);ckch>BT<6zU7qi~DIBje?JpU#CM$g^`n`<~Z zHvr;UW?Q-EwJosK(pUmm6G(>eytjlbX##J-9Ik@M_{*K0RWSD&!H^_}QyxeqBeNHOiFVccYRP;s8u7A0 zRZ6$ZGrRMyRl>>>We(L~Fw~2~N}U`p8~*60HUz^OqczoP z7`k+;{VRMbo6kV`!Atlm)O5~R*doSs7)JcJe62XLcd4d?Ur8eusTvkl_6m|V*F-`UB3*2-4jNbA2>`~P<_(*G(JvbEO#f2y(n_p4RRja{W}jf}1SSMEUk z4|g2(tB<;n{wJMjARw0i{hXk!jgy0|m6frBqn4tXt(}~Mt&y{#)BoK5F9x~h-gLli zt-q~#;O&cwaXq&amvE6m(I}Ew8Md#2C7H0FXtIFi1f>su<>X{ek5uUluTZFIdjNH} zKW6^&*rEL%drw%5o`hozY`=iEY2yTC!HyOwoZmLv>Os{Ox$VW6qmm@PU=-Lc z$MEuGfLr+Yn2XiE@suk`iV_q^~W?0FxG z|G52PFneCsJ*N%HsiJzL^DjGuPZ#h4l9vuk=xs9kL>pPaDARi^jPDK|HIU1kQiNDe z5`OpN2}$7n^y7I%@=%N^fu0B@YL)QwbQm=yCIotaVhVx}1e6iVw0+8&6O+)oYkYVW zfrm`6)BVn0*&&+7=~}b%RVRwh@{qudB0^g-^JkMJ(GCEz_5KG!zJs5> zK$_M4uA_V^jo0;?bGS%KWSXi^idCW4{kr=Jixwb@=E>ksTr}WtBvKXIrL!_4eiWiQ zs_$Wc3~LyV)04buG;DR`iO@aW?TkILEo8|o=dHA zb9;g+P6*Wi&%X=%ZG}w=bd~kQg|Rsl4D&l6<-BHxW@Z43 z1yP*e7W%oLc&+++CscqTqgkPWIm(!qX-aZxCJp(0yMkakBk9K?`v+z!v z#=c+lam8F3fWd$vk`>jp%BWWG3Mv49ZuYltzKtrU#3`T`VYs#r^zFEYZhP5aZWG`c zL1ya2xgCvm=M2y?Q0`UR@fWvL`6?`gHPhg^%&e=N(y{2`+LfraKlvjop~z|iEp=qj zF}gu3I>mq89!V{NMNzGK%I&YWK%+QJ8>|Kc$BEW;J4{zhjKpOvtmZW#x$Me+n`J+L zFOcfz0~Y(Sax&((McP?sw8SFhBW{CDrxnChI71eITEuhfPL&B#4JADmEp~u%xLv(b|^?INc_JMIK zK-o*^db20B2F~<)^nQn^%kBMtvj?~KQ+bLA*~_#F<-h0Th0Zzm0BMC??AVQLORf12 zY)||O=xY0dv};kVP~#`;38AgSb8pc-tr)UkfgcIst@WD{^OaU@=lE+oo(F<>Nj8-{ zlB7ivU$QD%qa@wxQ%C2XgBIU=23Q+Mnq2*rUSPl2bJ%RI8<=vd7#Nm+;1>bg&&8uv z`<85sdPR}_;RImM;%zBnk{mM99@d0!e_n!YZ*O7-R5T?EjdQ~ z1Pa*{msWBYh6#Uv^vCI5rKiR^h!!-Vnf&rMhL4BO(xOkm2i(LmgKxNDyY2F1JGnuU z>SRDQi)n6-4j^~Ad6+D-{J_CsEmG2CJ`cmoxROXzYp_%gUi00+lV(!$EfAKEO7d|Z zqaeC548De^&tP%EJb0nvcyP?} z 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 CTWa(G delta 9149 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 diff --git a/updates/0.30/ver_0.305_manifest.json b/updates/0.30/ver_0.305_manifest.json index 1e53dab..1f9aae2 100644 --- a/updates/0.30/ver_0.305_manifest.json +++ b/updates/0.30/ver_0.305_manifest.json @@ -1,32 +1,24 @@ -{ - "changelog": "FIX - naprawa kolejnosci atrybutow permutacji, NEW - pasek postepu darmowej dostawy w koszyku", - "version": "0.305", - "files": { - "added": [ - - ], - "deleted": [ - - ], - "modified": [ - "admin/layout/style-css/style.css", - "admin/layout/style-css/style.css.map", - "admin/layout/style-scss/style.scss", - "admin/templates/shop-product/product-combination.php", - "admin/templates/site/main-layout.php", - "autoload/Domain/Basket/BasketCalculator.php", - "autoload/Shared/Tpl/Tpl.php", - "autoload/front/Controllers/ShopBasketController.php", - "autoload/front/Controllers/ShopProductController.php", - "templates/shop-basket/basket-transport-methods.php" - ] - }, - "checksum_zip": "sha256:533907ff12252be3bf32f264f61bfa0baa7aefde38514a9f791166cc776171c9", - "sql": [ - - ], - "date": "2026-02-22", - "directories_deleted": [ - - ] +{ + "version": "0.305", + "date": "2026-02-22", + "checksum_zip": "sha256:05c06817cc7fdbf362e84be5a547010b9cf9eedba423d8d23fc5de2308bec084", + "files": { + "added": [], + "modified": [ + "admin/layout/style-css/style.css", + "admin/layout/style-css/style.css.map", + "admin/layout/style-scss/style.scss", + "admin/templates/shop-product/product-combination.php", + "admin/templates/site/main-layout.php", + "autoload/Domain/Basket/BasketCalculator.php", + "autoload/Shared/Tpl/Tpl.php", + "autoload/front/Controllers/ShopBasketController.php", + "autoload/front/Controllers/ShopProductController.php", + "templates/shop-basket/basket-transport-methods.php" + ], + "deleted": [] + }, + "directories_deleted": [], + "sql": [], + "changelog": "FIX - naprawa kolejnosci atrybutow permutacji, NEW - pasek postepu darmowej dostawy w koszyku" } diff --git a/updates/changelog.php b/updates/changelog.php index e54cad7..72416de 100644 --- a/updates/changelog.php +++ b/updates/changelog.php @@ -2,12 +2,6 @@ FIX - ukrywanie form dostawy gdy nie ma dostepnych form platnosci (filtrowanie po min/max kwoty zamowienia)
ver. 0.305 - 22.02.2026
-FIX - naprawa kolejnosci atrybutow permutacji, NEW - pasek postepu darmowej dostawy w koszyku -
-ver. 0.304 - 22.02.2026
-NEW - konfigurowalne limity kwotowe metod platnosci (min/max kwota zamowienia) -
-ver. 0.305 - 22.02.2026
FIX - naprawa kolejnosci atrybutow permutacji (sortowanie po ID atrybutu), NEW - pasek postepu darmowej dostawy w koszyku, FIX - icheck CSS przeniesiony do globalnego layoutu admina
ver. 0.304 - 22.02.2026
@@ -17,13 +11,13 @@ NEW - konfigurowalne limity kwotowe metod platnosci (min/max kwota zamowienia), FIX - naprawiono wyswietlanie atrybutow produktu na froncie (kolizja kolejnosci), NEW - przycisk Podglad w edycji produktu
ver. 0.302 - 22.02.2026
-NEW - REST API wariantów produktów (CRUD), słownik atrybutów, filtrowanie po atrybutach, wzbogacone atrybuty z tłumaczeniami +NEW - REST API wariantĂłw produktĂłw (CRUD), sĹ‚ownik atrybutĂłw, filtrowanie po atrybutach, wzbogacone atrybuty z tĹ‚umaczeniami
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
@@ -33,31 +27,31 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegółów zamówienia - 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() @@ -76,12 +70,12 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegółów zamówienia - 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
@@ -125,17 +119,17 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegółów zamówienia - 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 @@ -147,7 +141,7 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegółów zamówienia
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 @@ -155,10 +149,10 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegółów zamówienia
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()` @@ -169,22 +163,22 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegółów zamówienia - 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()` @@ -273,12 +267,12 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegółów zamówienia - 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`
@@ -352,7 +346,7 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegółów zamówienia
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` @@ -373,7 +367,7 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegółów zamówienia - 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
@@ -436,74 +430,74 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegółów zamówienia - 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 @@ -515,20 +509,20 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegółów zamówienia - 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) @@ -543,43 +537,43 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegółów zamówienia - 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 @@ -588,7 +582,7 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegółów zamówienia - FIX - integracja z apilo.com
ver. 0.195
-- FIX - aktualizacja statusów +- FIX - aktualizacja statusĂłw
ver. 0.194
- UPDATE - integracja apilo @@ -597,46 +591,46 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegółów zamówienia - 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 @@ -652,7 +646,7 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegółów zamówienia
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 @@ -664,22 +658,22 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegółów zamówienia - 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 @@ -695,7 +689,7 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegółów zamówienia - FIX - cron Baselinker
ver. 0.158
-- UPDATE - poprawa kolorystyki przycisków +- UPDATE - poprawa kolorystyki przyciskĂłw
ver. 0.157
- NEW - szybka zmiana statusu produktu @@ -707,10 +701,10 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegółów zamówienia - 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 @@ -719,7 +713,7 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegółów zamówienia - FIX - tematy maili
ver. 0.150
-- NEW - domyślna forma transportu +- NEW - domyĹ›lna forma transportu
ver. 0.149
- NEW - tematy maili @@ -737,10 +731,10 @@ NEW - Ukrywalne filtry tabel, mobilna wersja szczegółów zamówienia - 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