--- a/shopmagic-for-woocommerce/lang/shopmagic-for-woocommerce-pl_PL.l10n.php
+++ b/shopmagic-for-woocommerce/lang/shopmagic-for-woocommerce-pl_PL.l10n.php
@@ -1,2 +1,2 @@
<?php
-return ['domain'=>'shopmagic-for-woocommerce','plural-forms'=>'nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);','language'=>'pl_PL','project-id-version'=>'ShopMagic for WooCommerce 4.7.2','pot-creation-date'=>'2025-12-09T14:12:55+00:00','po-revision-date'=>'YEAR-MO-DA HO:MI+ZONE','x-generator'=>'WP-CLI 2.12.0','messages'=>['ShopMagic for WooCommerce'=>'ShopMagic dla WooCommerce','Marketing Automation and Custom Email Designer for WooCommerce'=>'Automatyzacja marketingu i własne szablony maili dla WooCommerce','WP Desk'=>'WP Desk','Learn more'=>'Odwiedź','ShopMagic'=>'ShopMagic','Settings'=>'Ustawienia','Start Here'=>'Zacznij tutaj','General'=>'Ogólne','Do you want to do more to increase your sales? Learn about ShopMagic PRO'=>'Chcesz zrobić więcej, aby zwiększyć sprzedaż? Dowiedz się więcej o ShopMagic PRO','ShopMagic Pro lets you boost your superpowers as an ecommerce seller by encouraging more sales from your best customers.'=>'ShopMagic Pro pozwala zwiększyć swoje supermoce sprzedażowe dzięki zwiększeniu sprzedaży od najlepszych klientów.','Delayed Actions'=>'Opóźnione akcje','Review Requests'=>'Prośby o opinie','Customer Coupons'=>'Kupony dla klientów','and more...'=>'i więcej...','You Got It!'=>'Masz to!','Adds ability to create personalized coupon codes for customers and send them automatically.'=>'Dodaje możliwość tworzenia spersonalizowanych kuponów rabatowych i ich automatyczną wysyłkę.','Abandoned Carts'=>'Porzucone koszyki','Get ShopMagic PRO'=>'Kup ShopMagic PRO','API Key'=>'Klucz API','Add Customer to Mailchimp List'=>'Dodaj klienta do listy Mailchimp','The default list ID is'=>'Domyślny ID listy to','Double opt-in'=>'Double opt-in','Send customers an opt-in confirmation email when they subscribe. (Unchecking may be against Mailchimp policy.)'=>'Wyślij klientom wiadomość e-mail z potwierdzeniem wyrażenia zgody na subskrypcję. (Odznaczenie tej opcji może być sprzeczne z polityką Mailchimp.)','Select...'=>'Wybierz...','No lists are set yet!'=>'Żadne listy nie zostały jeszcze ustawione!','Please make sure to provide Mailchimp API key!'=>'Upewnij się, że został wpisany klucz API Mailchimp!','Mailchimp'=>'Mailchimp','Insert your API key here which you can create and get from your Mailchimp settings.'=>'Wpisz swój klucz API, który możesz utworzyć i pobrać z ustawień Mailchimp.','List'=>'Lista','The DEFAULT MailChimp List names to which you want to add clients.'=>'Domyślna lista do zapisu klientów podczas składania zamówienia.','Tags'=>'Tagi','A single text field for seller to include tags (comma separated) to be added to mailchimp upon checkout.'=>'Wpisz tagi, które mają być przypisane do kontaktów dodanych do Mailchimpa podczas zamówienia.','Send additional information to Mailchimp list'=>'Wyślij dodatkowe informacje do Mailchimp','Last name'=>'Nazwisko','Address'=>'Adres','City'=>'Miasto','State'=>'Województwo','Country'=>'Kraj','Docs'=>'Docs','Support'=>'Pomoc','Hey %s,'=>'Hej %s,','Find out more »'=>'Dowiedz się więcej »','Description'=>'Opis','To'=>'Do','Subject'=>'Tytuł','Send Email'=>'Wyslij e-mail','Template'=>'Szablon','Message'=>'Wiadomość','WooCommerce Template'=>'Szablon WooCommerce','None'=>'Brak','post type general nameShopMagic Automations'=>'Automatyzacje ShopMagic','post type singular nameAutomation'=>'Automatyzacja','admin menuShopMagic'=>'ShopMagic','automationAdd New'=>'Dodaj nową','Add New Automation'=>'Dodaj nową automatyzację','New Automation'=>'Dodaj automatyzację','Edit Automation'=>'Edytuj automatyzację','View Automation'=>'Zobacz automatyzację','Search Automations'=>'Wyszukiwanie automatyzacji','Parent Automations:'=>'Nadrzędna automatyzacja:','No Automations found.'=>'Nie znaleziono automatyzacji.','No Automations found in Trash.'=>'Nie znaleziono automatyzacji w koszu.','ShopMagic automation rules.'=>'Automatyzacje ShopMagic.','Orders'=>'Zamówienia','Order Cancelled'=>'Zamówienie anulowane','Order Completed'=>'Zamówienie zrealizowane','Order Failed'=>'Zamówienie nieudane','New Order'=>'Nowe zamówienie','Order On-Hold'=>'Zamówienie wstrzymane','Order Pending'=>'Zamówienie oczekujące na płatność','Order Processing'=>'Zamówienie w trakcie realizacji','Order Refunded'=>'Zamówienie zwrócone','No description provided for this event.'=>'Brak opisu tego zdarzenia.','Download'=>'Pobierz','Grow your business with WP Desk'=>'Rozwijaj swój biznes razem z WP Desk','Buy now'=>'Kup teraz','More info'=>'Więcej','The “%s” plugin cannot run on PHP versions older than %s. Please contact your host and ask them to upgrade.'=>'Wtyczka “%s” nie może działać na wersjach PHP starszych niż %s. Skontaktuj się z administratorem hostingu i poproś o aktualizację wersji PHP.','The “%s” plugin cannot run on WordPress versions older than %s. Please update WordPress.'=>'Wtyczka “%s” nie może działać na wersjach WordPressa starszych niż %s. Wykonaj aktualizację WordPressa.','The “%s” plugin cannot run on WooCommerce versions older than %s. Please update WooCommerce.'=>'Wtyczka “%s” nie może działać na wersjach WooCommerce starszych niż %s. Wykonaj aktualizację WooCommerce.','The “%s” plugin cannot run without OpenSSL module version at least %s. Please update OpenSSL module.'=>'Wtyczka “%s” nie może działać bez aktywacji OpenSSL co najmniej w wersji %s. Wykonaj aktualizację OpenSSL.','The “%1$s” plugin requires at least %2$s version of %3$s to work correctly. Please update it to its latest release.'=>'Do poprawnego działania wtyczki “%1$s” wymagana jest wtyczka %3$s co najmniej w wersji %2$s. Wykonaj jej aktualizację.','The “%s” plugin cannot run without %s active. Please install and activate %s plugin.'=>'Wtyczka “%s” nie może działać bez aktywacji %s. Zainstaluj i aktywuj wtyczkę %s.','The “%s” plugin requires activating %s plugin. <a href="%s">Activate %s</a>'=>'Wtyczka “%s” wymaga aktywnej wtyczki %s. <a href="%s">Włącz %s</a>','The “%s” plugin cannot run without %s PHP module installed. Please contact your host and ask them to install %s.'=>'Wtyczka “%s” nie może działać bez modułu PHP: %s. Skontaktuj się z administratorem hostingu i poproś o instalację %s.','The “%s” plugin cannot run without %s PHP setting set to %s. Please contact your host and ask them to set %s.'=>'Wtyczka “%s” nie może działać bez ustawienia PHP %s ustawionego na %s. Skontaktuj się z administratorem hostingu i poproś o ustawienie %s.','The “%s” plugin is temporarily disabled since the required %s plugin is being upgraded.'=>'Wtyczka “%s” została chwilowo wyłączona, ponieważ wymagana wtyczka %s jest właśnie aktualizowana.','Set image'=>'Wstaw obraz','Remove image'=>'Usuń obraz','Select or Upload Media'=>'Wybierz lub prześlij media','Use this media'=>'Wybierz','Search for a product…'=>'Szukaj produktu…','Disabled'=>'Wyłączono','Emergency'=>'Wypadek','Alert'=>'Ostrzeżenie','Critical'=>'Błąd krytyczny','Error'=>'Błąd','Warning'=>'Ostrzeżenie','Notice'=>'Powiadomienie','Info'=>'Informacja','Debug'=>'Debug','Can not enable WP Desk Debug log! Cannot create directory %s or this directory is not writeable!'=>'Nie można włączyć WP Desk Debug log! Nie można utworzyć katalogu %s lub brak uprawnień do zapisu w tym katalogu!','Can not enable WP Desk Debug log! Cannot create file %s!'=>'Nie można włączyć logowania błędów za pomocą WP Desk Debug! Nie można utworzyć pliku %s!','Submit & Deactivate'=>'Wyślij i dezaktywuj','You successfully opted out of collecting usage data by %1$s. If you change your mind, you can always opt in later in the plugin's quick links.'=>'Twoja rezygnacja ze zbierania danych użytkowania wtyczek przez %1$s została przyjęta. Jeśli zmienisz zdanie, zawsze możesz włączyć zgodę ponownie za pomocą szybkich linków na liście wtyczek.','Enable usage tracking'=>'Włącz śledzenie użycia','Disable usage tracking'=>'Wyłącz śledzenie użycia','Please help us improve our plugins! If you opt-in, we will collect some non-sensitive data and usage information anonymously. If you skip this, that's okay! All plugins will work just fine.'=>'Proszę pomóż nam udoskonalić nasze wtyczki! Jeśli się zgodzisz, będziemy zbierać niewrażliwe dane użytkowania anonimowo. Jeśli pominiesz ten krok, w porządku! Wszystkie wtyczki będą działać niezależnie od Twojej decyzji.','Allow & Continue →'=>'Pozwól i kontynuuj →','Skip'=>'Pomiń','What permissions are being granted?'=>'Jakie uprawnienia są przyznawane?','Your Site Overview'=>'Dane witryny','WP version, PHP info'=>'Wersja WP, wersja PHP','Plugin Usage'=>'Dane użytkowania wtyczek','Current settings and usage information of %1$s plugins'=>'Ustawienia i informacje o użytkowaniu wtyczek %1$s','Your Store Overview'=>'Dane sklepu','Anonymized and non-sensitive store usage information'=>'Tylko niewrażliwe i anonimowe dane o użytkowaniu sklepu','Current settings and usage information of WP Desk plugins'=>'Ustawienia i informacje o użytkowaniu wtyczek WP Desk','You are deactivating %s plugin.'=>'Dezaktywujesz wtyczkę %s.',' If you have a moment, please let us know why you are deactivating plugin (anonymous feedback):'=>' Jeśli masz chwilę, prosimy daj nam znać dlaczego dezaktywujesz wtyczkę (anonimowa opinia):','The plugin suddenly stopped working'=>'Wtyczka nagle przestała działać','The plugin broke my site'=>'Wtyczka zepsuła moją stronę','I found a better plugin'=>'Znalazłem lepszą wtyczkę','What's the plugin's name?'=>'Jaka to wtyczka?','I only needed the plugin for a short period'=>'Potrzebowałem wtyczki tylko przez krótki okres','I no longer need the plugin'=>'Nie potrzebuję już wtyczki','It's a temporary deactivation. I'm just debugging an issue.'=>'Jest to tymczasowa dezaktywacja, debuguję problem.','Other'=>'Inny','Kindly tell us the reason so we can improve'=>'Napisz nam powód abyśmy mogli go poprawić','Cancel'=>'Anuluj','Skip & Deactivate'=>'Pomiń i dezaktywuj','We need your help to improve <strong>WP Desk plugins</strong>, so they are more useful for you and the rest of <strong>30,000+ users</strong>. By collecting data on how you use our plugins, you will help us a lot. We will not collect any sensitive data, so you can feel safe.'=>'Potrzebujemy Twojej pomocy, aby dalej rozwijać <strong>wtyczki WP Desk</strong> i były one jeszcze bardziej pomocne dla Ciebie i pozostałych ponad <strong>30 000 użytkowników</strong>. Zbierając dane na temat tego jak korzystasz z naszych wtyczek bardzo nam w tym pomożesz. Nie będziemy zbierać żadnych danych wrażliwych, więc możesz czuć się bezpiecznie.','You successfully opted out of collecting usage data by WP Desk. If you change your mind, you can always opt in later in the plugin's quick links.'=>'Twoja rezygnacja ze zbierania danych użytkowania wtyczek przez WP Desk została przyjęta. Jeśli zmienisz zdanie, zawsze możesz włączyć zgodę ponownie za pomocą szybkich linków na liście wtyczek.','Copy and paste placeholders (including double brackets) from the metabox on the right to personalize.'=>'Kopiuj i wklej placeholdery (w tym podwójne nawiasy klamrowe) z metaboksu po prawej stronie w celu personalizacji.','+ Insert block'=>'+ Wstaw blok','Please use visual editor to insert blocks.'=>'Używaj wizualnego edytora, aby wstawiać bloki.','Add a predefined content to speed up your automation creation.'=>'Dodaj gotową zawartość, aby przyspieszyć tworzenie automatyzacji.','Content blocks'=>'Bloki treści','Triggered when a customer resets their password'=>'Uruchamiane, gdy klient zresetuje swoje hasło','Password Reset Event'=>'Reset hasła','Triggered when new customer account gets created via WooCommerce'=>'Uruchamiane, gdy klient tworzy konto przez WooCommerce','New Account Event'=>'Nowe konto','Triggered when an order fails'=>'Uruchamiane, gdy status zamówienia zmieni się na nieudane','Triggered when order status is set to cancelled'=>'Uruchamiane, gdy status zamówienia zmieni się na anulowane','Triggered when order is pending'=>'Uruchamiane, gdy status zamówienia zmieni się na oczekujące na płatność','Triggered when order status is set to completed'=>'Uruchamiane, gdy status zamówienia zmieni się na zrealizowane','Triggered when the order has been refunded'=>'Uruchamiane, gdy status zamówienia zmieni się na zwrócone','Triggered when order status is set to On-Hold'=>'Uruchamiane, gdy status zamówienia zmieni się na wstrzymane','Triggered when a new order is created'=>'Uruchamiane, gdy zamówienie zostanie utworzone przez formularz zamówienia','Triggered when order status is processing'=>'Uruchamiane, gdy status zamówienia zmieni się na w trakcie realizacji','Filter for specified product.'=>'Filtr dla wybranego produktu.','Product'=>'Produkt','Upgrade'=>'Kup PRO','User Management'=>'Użytkownicy','ShopMagic required WooCommerce to be installed and activated.'=>'ShopMagic wymaga zainstalowania i aktywowania WooCommerce.','Filter'=>'Filtr','Setup Mailchimp or other email service add-on first.'=>'Skonfiguruj Mailchimp lub inny dodatek do usługi poczty elektronicznej.','Ask customers to subscribe to your mailing list on checkout.'=>'Poproś klientów o zapisanie się na listę mailingową podczas składania zamówienia.','Subscribe on checkout'=>'Zapisuj podczas składania zamówienia','Click on the appropriate ShopMagic add-on settings tab above.'=>'Wybierz odpowiednią zakładkę z menu powyżej.','General Settings'=>'Ustawienia główne','Event Log'=>'Dziennik zdarzeń','Log activity to wp_log file'=>'Zapisuj aktywności do pliku wp_log','Warning: May lead to inflated database if enabled permanently - use for temporary testing only.'=>'Ostrzeżenie: Może to prowadzić do zwiększenia objętości bazy danych, jeśli jest włączona na stałe - używaj tylko do testów.','Store messages (generated by events and actions) in the event log. Useful for debugging and monitoring.'=>'Przechowuj wiadomości (generowane przez zdarzenia i akcje) w dzienniku zdarzeń. Przydatne do usuwania błędów i monitorowania.','Log all activity'=>'Zapisuj wszystkie aktywności','Tools to help you see what's going on under the hood.'=>'Narzędzia, które pomogą ci zobaczyć, co się dzieje pod maską.','Debug Settings'=>'Ustawienia debugowania','Mailchimp Settings'=>'Ustawienia Mailchimp','Please make sure about the MailChimp API key provided !'=>'Upewnij się, że klucz API MailChimp jest uzupełniony!','Thank you for installing ShopMagic for WooCommerce! %1$sLearn how to get started%3$s or %2$screate your first automation →%3$s'=>'Dziękujemy za zainstalowanie ShopMagic dla WooCommerce! %1$sDowiedz się jak zacząć%3$s lub %2$sutwórz pierwszą automatyzację →%3$s','ID'=>'ID','Source'=>'Źródło','Severity'=>'Istotność','Time'=>'Czas','#'=>'#','No events avaliable.'=>'Brak dostępnych zdarzeń.','Events'=>'Zdarzenia','+ New Action'=>'+ Nowa akcja','In order to change action, remove the old one and a new one.'=>'Aby zmienić typ akcji, należy usunąć starą i dodać nową.','Remove Action'=>'Usuń akcję','Description for your reference'=>'Opis widoczny w panelu','Action #'=>'Akcja #','Network connection error'=>'Błąd połączenia sieciowego','Toggle panel: Action'=>'Pokaż/ukryj: Akcje',' Automations not working?'=>' Automatyzacje nie działają?','Make sure that you are placing an order using the front-end of your store when testing automations, not by clicking the Add Order button in WooCommerce → Orders. If you're still not receiving emails, click to read our guide.'=>'Upewnij się, że składasz zamówienie korzystając ze swojego sklepu, a nie w panelu admina klikając przycisk Dodaj zamówienie w WooCommerce → Zamówienia. Jeśli nadal nie otrzymujesz wiadomości e-mail, kliknij, aby przeczytać nasz przewodnik.','Sign me up!'=>'Zapisz mnie!','You will be asked to confirm your email in the next step.'=>'W następnym kroku jest wymagane potwierdzenie swojego e-maila .','Enter your e-mail...'=>'Podaj swój e-mail...','Your e-mail'=>'Twój e-mail','We'll email you periodically when we release new addons and add new features!'=>'Co jakiś czas będziemy wysyłać do ciebie e-maile, gdy będziemy publikować nowe dodatki i dodawać nowe funkcje!','Sign up to get ShopMagic updates!'=>'Zarejestruj się, aby otrzymywać nowości o ShopMagic!','Display popups on the frontend of your store each time a sale is made to encourage trust.'=>'Wyświetlaj wyskakujące okienka w sklepie, gdy składane jest zamówienia, aby budować zaufanie.','Recent Order Popups'=>'Popupy','In development'=>'W trakcie tworzenia','Allows to save customer details on a partial WooCommerce purchase and send abandoned cart emails.'=>'Umożliwia zapisywanie danych o porzuconych koszykach i automatyczną wysyłkę e-maili.','Allows to redirect customers after purchase to a custom thank you page and show an upsell.'=>'Pozwala na przekierowanie klientów po zakupie na stronę z podziękowaniami i pokazanie upsella.','After Purchase Upsells'=>'Upselle','Adds ability to subscribe customers to mailing lists in ActiveCampaign and AWeber upon checkout.'=>'Dodaje możliwość zapisu klientów na listy mailingowe w ActiveCampaign i AWeber przy zamówieniu.','Add to Mailing List'=>'Listy mailingowe','Adds review requests with direct links to products purchased in order for customers to review.'=>'Dodaje prośby o opinie z bezpośrednimi linkami do zakupionych produktów, aby klienci mogli je ocenić.','Allows automations delay by minutes, hours, days or weeks after the original event or last action.'=>'Umożliwia wykonanie akcji o minuty, godziny, dni lub tygodnie po pierwotnym zdarzeniu lub ostatniej akcji.','We've built a powerful platform that works to accomplish automation for your store in order to help you make more money and scale your business.'=>'Stworzyliśmy potężną platformę, która działa na rzecz automatyzacji twojego sklepu, aby pomóc ci zarobić więcej pieniędzy i zwiększyć skalę działalności.','Do more with ShopMagic PRO'=>'Zrób więcej z ShopMagic PRO','How to design customized order confirmation emails'=>'Jak zaprojektować e-maile z potwierdzeniem zamówienia','How to send automated thank you emails'=>'Jak wysyłać automatyczne e-maile z podziękowaniem','How to set up your first automation'=>'Jak skonfigurować swoją pierwszą automatyzację','So now when a customer makes a purchase, ShopMagic will send them an automatic email congratulating them and thanking them for their purchase.'=>'Teraz, gdy klient dokona zakupu, ShopMagic wyśle mu automatyczną wiadomość e-mail z podziękowaniem za zakup.','Choose an Action you'd like to happen. Example: Send Email. Now write a follow-up email to their order.'=>'Wybierz akcję do uruchomienia. Przykład: Wyślij e-mail. Teraz wpisz treść maila do zamówienia klienta.','Step #3:'=>'Krok 3:','Choose an Event to trigger your automation. Example: Order Completed.'=>'Wybierz zdarzenie, aby uruchomić automatyzację. Przykład: Zamówienie zrealizowane.','Step #2:'=>'Krok 2:','Start by creating a %snew Automation →%s'=>'Zacznij od utworzenia %snowej automatyzacji→%s','Step #1:'=>'Krok 1:','Getting Started'=>'Pierwsze kroki','WooCommerce marketing automation to make you more money'=>'Automatyzacja marketingu dla WooCommerce stworzona, aby zarabiać więcej pieniędzy','ShopMagic %s'=>'ShopMagic %s','All Automations'=>'Wszystkie automatyzacje','add new on admin barAutomation'=>'Automatyzacja','This Filter is not available for the above event'=>'Ten filtr nie jest dostępny dla powyższego zdarzenia','Subscribe to our newsletter '=>'Zapisz się do newslettera ','Please, visit settings page →'=>'Przejdź do ustawień →','Not assigned yet!'=>'Jeszcze nie przydzielone!','This Filter is not available for the above filter'=>'Ten filtr nie jest dostępny dla powyższego filtra','No description provided for this filter.'=>'Brak opisu tego filtra.','Shopmagic Debug'=>'Debug ShopMagic','Add'=>'Dodaj','Add products'=>'Dodaj produkty','Add product'=>'Dodaj produkt','Product for watching'=>'Produkt','Welcome to the world of awesomeness automations! Let the magic begin!'=>'Witamy w świecie niesamowitych automatyzacji! Niech rozpocznie się magia!','ShopMagic has been successfully activated'=>'ShopMagic został włączony','https://shopmagic.app/'=>'https://shopmagic.app/','The “%s” plugin requires free %s plugin. <a href="%s">Install%s</a>'=>'Wtyczka “%s” wymaga bezpłatnej wtyczki %s. <a href="%s">Zainstaluj %s</a>','Allow'=>'Pozwól']];
No newline at end of file
+return ['domain'=>'shopmagic-for-woocommerce','plural-forms'=>'nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);','language'=>'pl_PL','project-id-version'=>'ShopMagic for WooCommerce 4.7.3','pot-creation-date'=>'2025-12-15T12:59:26+00:00','po-revision-date'=>'YEAR-MO-DA HO:MI+ZONE','x-generator'=>'WP-CLI 2.12.0','messages'=>['ShopMagic for WooCommerce'=>'ShopMagic dla WooCommerce','Marketing Automation and Custom Email Designer for WooCommerce'=>'Automatyzacja marketingu i własne szablony maili dla WooCommerce','WP Desk'=>'WP Desk','Learn more'=>'Odwiedź','ShopMagic'=>'ShopMagic','Settings'=>'Ustawienia','Start Here'=>'Zacznij tutaj','General'=>'Ogólne','Do you want to do more to increase your sales? Learn about ShopMagic PRO'=>'Chcesz zrobić więcej, aby zwiększyć sprzedaż? Dowiedz się więcej o ShopMagic PRO','ShopMagic Pro lets you boost your superpowers as an ecommerce seller by encouraging more sales from your best customers.'=>'ShopMagic Pro pozwala zwiększyć swoje supermoce sprzedażowe dzięki zwiększeniu sprzedaży od najlepszych klientów.','Delayed Actions'=>'Opóźnione akcje','Review Requests'=>'Prośby o opinie','Customer Coupons'=>'Kupony dla klientów','and more...'=>'i więcej...','You Got It!'=>'Masz to!','Adds ability to create personalized coupon codes for customers and send them automatically.'=>'Dodaje możliwość tworzenia spersonalizowanych kuponów rabatowych i ich automatyczną wysyłkę.','Abandoned Carts'=>'Porzucone koszyki','Get ShopMagic PRO'=>'Kup ShopMagic PRO','API Key'=>'Klucz API','Add Customer to Mailchimp List'=>'Dodaj klienta do listy Mailchimp','The default list ID is'=>'Domyślny ID listy to','Double opt-in'=>'Double opt-in','Send customers an opt-in confirmation email when they subscribe. (Unchecking may be against Mailchimp policy.)'=>'Wyślij klientom wiadomość e-mail z potwierdzeniem wyrażenia zgody na subskrypcję. (Odznaczenie tej opcji może być sprzeczne z polityką Mailchimp.)','Select...'=>'Wybierz...','No lists are set yet!'=>'Żadne listy nie zostały jeszcze ustawione!','Please make sure to provide Mailchimp API key!'=>'Upewnij się, że został wpisany klucz API Mailchimp!','Mailchimp'=>'Mailchimp','Insert your API key here which you can create and get from your Mailchimp settings.'=>'Wpisz swój klucz API, który możesz utworzyć i pobrać z ustawień Mailchimp.','List'=>'Lista','The DEFAULT MailChimp List names to which you want to add clients.'=>'Domyślna lista do zapisu klientów podczas składania zamówienia.','Tags'=>'Tagi','A single text field for seller to include tags (comma separated) to be added to mailchimp upon checkout.'=>'Wpisz tagi, które mają być przypisane do kontaktów dodanych do Mailchimpa podczas zamówienia.','Send additional information to Mailchimp list'=>'Wyślij dodatkowe informacje do Mailchimp','Last name'=>'Nazwisko','Address'=>'Adres','City'=>'Miasto','State'=>'Województwo','Country'=>'Kraj','Docs'=>'Docs','Support'=>'Pomoc','Hey %s,'=>'Hej %s,','Find out more »'=>'Dowiedz się więcej »','Description'=>'Opis','To'=>'Do','Subject'=>'Tytuł','Send Email'=>'Wyslij e-mail','Template'=>'Szablon','Message'=>'Wiadomość','WooCommerce Template'=>'Szablon WooCommerce','None'=>'Brak','post type general nameShopMagic Automations'=>'Automatyzacje ShopMagic','post type singular nameAutomation'=>'Automatyzacja','admin menuShopMagic'=>'ShopMagic','automationAdd New'=>'Dodaj nową','Add New Automation'=>'Dodaj nową automatyzację','New Automation'=>'Dodaj automatyzację','Edit Automation'=>'Edytuj automatyzację','View Automation'=>'Zobacz automatyzację','Search Automations'=>'Wyszukiwanie automatyzacji','Parent Automations:'=>'Nadrzędna automatyzacja:','No Automations found.'=>'Nie znaleziono automatyzacji.','No Automations found in Trash.'=>'Nie znaleziono automatyzacji w koszu.','ShopMagic automation rules.'=>'Automatyzacje ShopMagic.','Orders'=>'Zamówienia','Order Cancelled'=>'Zamówienie anulowane','Order Completed'=>'Zamówienie zrealizowane','Order Failed'=>'Zamówienie nieudane','New Order'=>'Nowe zamówienie','Order On-Hold'=>'Zamówienie wstrzymane','Order Pending'=>'Zamówienie oczekujące na płatność','Order Processing'=>'Zamówienie w trakcie realizacji','Order Refunded'=>'Zamówienie zwrócone','No description provided for this event.'=>'Brak opisu tego zdarzenia.','Download'=>'Pobierz','Grow your business with WP Desk'=>'Rozwijaj swój biznes razem z WP Desk','Buy now'=>'Kup teraz','More info'=>'Więcej','The “%s” plugin cannot run on PHP versions older than %s. Please contact your host and ask them to upgrade.'=>'Wtyczka “%s” nie może działać na wersjach PHP starszych niż %s. Skontaktuj się z administratorem hostingu i poproś o aktualizację wersji PHP.','The “%s” plugin cannot run on WordPress versions older than %s. Please update WordPress.'=>'Wtyczka “%s” nie może działać na wersjach WordPressa starszych niż %s. Wykonaj aktualizację WordPressa.','The “%s” plugin cannot run on WooCommerce versions older than %s. Please update WooCommerce.'=>'Wtyczka “%s” nie może działać na wersjach WooCommerce starszych niż %s. Wykonaj aktualizację WooCommerce.','The “%s” plugin cannot run without OpenSSL module version at least %s. Please update OpenSSL module.'=>'Wtyczka “%s” nie może działać bez aktywacji OpenSSL co najmniej w wersji %s. Wykonaj aktualizację OpenSSL.','The “%1$s” plugin requires at least %2$s version of %3$s to work correctly. Please update it to its latest release.'=>'Do poprawnego działania wtyczki “%1$s” wymagana jest wtyczka %3$s co najmniej w wersji %2$s. Wykonaj jej aktualizację.','The “%s” plugin cannot run without %s active. Please install and activate %s plugin.'=>'Wtyczka “%s” nie może działać bez aktywacji %s. Zainstaluj i aktywuj wtyczkę %s.','The “%s” plugin requires activating %s plugin. <a href="%s">Activate %s</a>'=>'Wtyczka “%s” wymaga aktywnej wtyczki %s. <a href="%s">Włącz %s</a>','The “%s” plugin cannot run without %s PHP module installed. Please contact your host and ask them to install %s.'=>'Wtyczka “%s” nie może działać bez modułu PHP: %s. Skontaktuj się z administratorem hostingu i poproś o instalację %s.','The “%s” plugin cannot run without %s PHP setting set to %s. Please contact your host and ask them to set %s.'=>'Wtyczka “%s” nie może działać bez ustawienia PHP %s ustawionego na %s. Skontaktuj się z administratorem hostingu i poproś o ustawienie %s.','The “%s” plugin is temporarily disabled since the required %s plugin is being upgraded.'=>'Wtyczka “%s” została chwilowo wyłączona, ponieważ wymagana wtyczka %s jest właśnie aktualizowana.','Set image'=>'Wstaw obraz','Remove image'=>'Usuń obraz','Select or Upload Media'=>'Wybierz lub prześlij media','Use this media'=>'Wybierz','Search for a product…'=>'Szukaj produktu…','Disabled'=>'Wyłączono','Emergency'=>'Wypadek','Alert'=>'Ostrzeżenie','Critical'=>'Błąd krytyczny','Error'=>'Błąd','Warning'=>'Ostrzeżenie','Notice'=>'Powiadomienie','Info'=>'Informacja','Debug'=>'Debug','Can not enable WP Desk Debug log! Cannot create directory %s or this directory is not writeable!'=>'Nie można włączyć WP Desk Debug log! Nie można utworzyć katalogu %s lub brak uprawnień do zapisu w tym katalogu!','Can not enable WP Desk Debug log! Cannot create file %s!'=>'Nie można włączyć logowania błędów za pomocą WP Desk Debug! Nie można utworzyć pliku %s!','Submit & Deactivate'=>'Wyślij i dezaktywuj','You successfully opted out of collecting usage data by %1$s. If you change your mind, you can always opt in later in the plugin's quick links.'=>'Twoja rezygnacja ze zbierania danych użytkowania wtyczek przez %1$s została przyjęta. Jeśli zmienisz zdanie, zawsze możesz włączyć zgodę ponownie za pomocą szybkich linków na liście wtyczek.','Enable usage tracking'=>'Włącz śledzenie użycia','Disable usage tracking'=>'Wyłącz śledzenie użycia','Please help us improve our plugins! If you opt-in, we will collect some non-sensitive data and usage information anonymously. If you skip this, that's okay! All plugins will work just fine.'=>'Proszę pomóż nam udoskonalić nasze wtyczki! Jeśli się zgodzisz, będziemy zbierać niewrażliwe dane użytkowania anonimowo. Jeśli pominiesz ten krok, w porządku! Wszystkie wtyczki będą działać niezależnie od Twojej decyzji.','Allow & Continue →'=>'Pozwól i kontynuuj →','Skip'=>'Pomiń','What permissions are being granted?'=>'Jakie uprawnienia są przyznawane?','Your Site Overview'=>'Dane witryny','WP version, PHP info'=>'Wersja WP, wersja PHP','Plugin Usage'=>'Dane użytkowania wtyczek','Current settings and usage information of %1$s plugins'=>'Ustawienia i informacje o użytkowaniu wtyczek %1$s','Your Store Overview'=>'Dane sklepu','Anonymized and non-sensitive store usage information'=>'Tylko niewrażliwe i anonimowe dane o użytkowaniu sklepu','Current settings and usage information of WP Desk plugins'=>'Ustawienia i informacje o użytkowaniu wtyczek WP Desk','You are deactivating %s plugin.'=>'Dezaktywujesz wtyczkę %s.',' If you have a moment, please let us know why you are deactivating plugin (anonymous feedback):'=>' Jeśli masz chwilę, prosimy daj nam znać dlaczego dezaktywujesz wtyczkę (anonimowa opinia):','The plugin suddenly stopped working'=>'Wtyczka nagle przestała działać','The plugin broke my site'=>'Wtyczka zepsuła moją stronę','I found a better plugin'=>'Znalazłem lepszą wtyczkę','What's the plugin's name?'=>'Jaka to wtyczka?','I only needed the plugin for a short period'=>'Potrzebowałem wtyczki tylko przez krótki okres','I no longer need the plugin'=>'Nie potrzebuję już wtyczki','It's a temporary deactivation. I'm just debugging an issue.'=>'Jest to tymczasowa dezaktywacja, debuguję problem.','Other'=>'Inny','Kindly tell us the reason so we can improve'=>'Napisz nam powód abyśmy mogli go poprawić','Cancel'=>'Anuluj','Skip & Deactivate'=>'Pomiń i dezaktywuj','We need your help to improve <strong>WP Desk plugins</strong>, so they are more useful for you and the rest of <strong>30,000+ users</strong>. By collecting data on how you use our plugins, you will help us a lot. We will not collect any sensitive data, so you can feel safe.'=>'Potrzebujemy Twojej pomocy, aby dalej rozwijać <strong>wtyczki WP Desk</strong> i były one jeszcze bardziej pomocne dla Ciebie i pozostałych ponad <strong>30 000 użytkowników</strong>. Zbierając dane na temat tego jak korzystasz z naszych wtyczek bardzo nam w tym pomożesz. Nie będziemy zbierać żadnych danych wrażliwych, więc możesz czuć się bezpiecznie.','You successfully opted out of collecting usage data by WP Desk. If you change your mind, you can always opt in later in the plugin's quick links.'=>'Twoja rezygnacja ze zbierania danych użytkowania wtyczek przez WP Desk została przyjęta. Jeśli zmienisz zdanie, zawsze możesz włączyć zgodę ponownie za pomocą szybkich linków na liście wtyczek.','Copy and paste placeholders (including double brackets) from the metabox on the right to personalize.'=>'Kopiuj i wklej placeholdery (w tym podwójne nawiasy klamrowe) z metaboksu po prawej stronie w celu personalizacji.','+ Insert block'=>'+ Wstaw blok','Please use visual editor to insert blocks.'=>'Używaj wizualnego edytora, aby wstawiać bloki.','Add a predefined content to speed up your automation creation.'=>'Dodaj gotową zawartość, aby przyspieszyć tworzenie automatyzacji.','Content blocks'=>'Bloki treści','Triggered when a customer resets their password'=>'Uruchamiane, gdy klient zresetuje swoje hasło','Password Reset Event'=>'Reset hasła','Triggered when new customer account gets created via WooCommerce'=>'Uruchamiane, gdy klient tworzy konto przez WooCommerce','New Account Event'=>'Nowe konto','Triggered when an order fails'=>'Uruchamiane, gdy status zamówienia zmieni się na nieudane','Triggered when order status is set to cancelled'=>'Uruchamiane, gdy status zamówienia zmieni się na anulowane','Triggered when order is pending'=>'Uruchamiane, gdy status zamówienia zmieni się na oczekujące na płatność','Triggered when order status is set to completed'=>'Uruchamiane, gdy status zamówienia zmieni się na zrealizowane','Triggered when the order has been refunded'=>'Uruchamiane, gdy status zamówienia zmieni się na zwrócone','Triggered when order status is set to On-Hold'=>'Uruchamiane, gdy status zamówienia zmieni się na wstrzymane','Triggered when a new order is created'=>'Uruchamiane, gdy zamówienie zostanie utworzone przez formularz zamówienia','Triggered when order status is processing'=>'Uruchamiane, gdy status zamówienia zmieni się na w trakcie realizacji','Filter for specified product.'=>'Filtr dla wybranego produktu.','Product'=>'Produkt','Upgrade'=>'Kup PRO','User Management'=>'Użytkownicy','ShopMagic required WooCommerce to be installed and activated.'=>'ShopMagic wymaga zainstalowania i aktywowania WooCommerce.','Filter'=>'Filtr','Setup Mailchimp or other email service add-on first.'=>'Skonfiguruj Mailchimp lub inny dodatek do usługi poczty elektronicznej.','Ask customers to subscribe to your mailing list on checkout.'=>'Poproś klientów o zapisanie się na listę mailingową podczas składania zamówienia.','Subscribe on checkout'=>'Zapisuj podczas składania zamówienia','Click on the appropriate ShopMagic add-on settings tab above.'=>'Wybierz odpowiednią zakładkę z menu powyżej.','General Settings'=>'Ustawienia główne','Event Log'=>'Dziennik zdarzeń','Log activity to wp_log file'=>'Zapisuj aktywności do pliku wp_log','Warning: May lead to inflated database if enabled permanently - use for temporary testing only.'=>'Ostrzeżenie: Może to prowadzić do zwiększenia objętości bazy danych, jeśli jest włączona na stałe - używaj tylko do testów.','Store messages (generated by events and actions) in the event log. Useful for debugging and monitoring.'=>'Przechowuj wiadomości (generowane przez zdarzenia i akcje) w dzienniku zdarzeń. Przydatne do usuwania błędów i monitorowania.','Log all activity'=>'Zapisuj wszystkie aktywności','Tools to help you see what's going on under the hood.'=>'Narzędzia, które pomogą ci zobaczyć, co się dzieje pod maską.','Debug Settings'=>'Ustawienia debugowania','Mailchimp Settings'=>'Ustawienia Mailchimp','Please make sure about the MailChimp API key provided !'=>'Upewnij się, że klucz API MailChimp jest uzupełniony!','Thank you for installing ShopMagic for WooCommerce! %1$sLearn how to get started%3$s or %2$screate your first automation →%3$s'=>'Dziękujemy za zainstalowanie ShopMagic dla WooCommerce! %1$sDowiedz się jak zacząć%3$s lub %2$sutwórz pierwszą automatyzację →%3$s','ID'=>'ID','Source'=>'Źródło','Severity'=>'Istotność','Time'=>'Czas','#'=>'#','No events avaliable.'=>'Brak dostępnych zdarzeń.','Events'=>'Zdarzenia','+ New Action'=>'+ Nowa akcja','In order to change action, remove the old one and a new one.'=>'Aby zmienić typ akcji, należy usunąć starą i dodać nową.','Remove Action'=>'Usuń akcję','Description for your reference'=>'Opis widoczny w panelu','Action #'=>'Akcja #','Network connection error'=>'Błąd połączenia sieciowego','Toggle panel: Action'=>'Pokaż/ukryj: Akcje',' Automations not working?'=>' Automatyzacje nie działają?','Make sure that you are placing an order using the front-end of your store when testing automations, not by clicking the Add Order button in WooCommerce → Orders. If you're still not receiving emails, click to read our guide.'=>'Upewnij się, że składasz zamówienie korzystając ze swojego sklepu, a nie w panelu admina klikając przycisk Dodaj zamówienie w WooCommerce → Zamówienia. Jeśli nadal nie otrzymujesz wiadomości e-mail, kliknij, aby przeczytać nasz przewodnik.','Sign me up!'=>'Zapisz mnie!','You will be asked to confirm your email in the next step.'=>'W następnym kroku jest wymagane potwierdzenie swojego e-maila .','Enter your e-mail...'=>'Podaj swój e-mail...','Your e-mail'=>'Twój e-mail','We'll email you periodically when we release new addons and add new features!'=>'Co jakiś czas będziemy wysyłać do ciebie e-maile, gdy będziemy publikować nowe dodatki i dodawać nowe funkcje!','Sign up to get ShopMagic updates!'=>'Zarejestruj się, aby otrzymywać nowości o ShopMagic!','Display popups on the frontend of your store each time a sale is made to encourage trust.'=>'Wyświetlaj wyskakujące okienka w sklepie, gdy składane jest zamówienia, aby budować zaufanie.','Recent Order Popups'=>'Popupy','In development'=>'W trakcie tworzenia','Allows to save customer details on a partial WooCommerce purchase and send abandoned cart emails.'=>'Umożliwia zapisywanie danych o porzuconych koszykach i automatyczną wysyłkę e-maili.','Allows to redirect customers after purchase to a custom thank you page and show an upsell.'=>'Pozwala na przekierowanie klientów po zakupie na stronę z podziękowaniami i pokazanie upsella.','After Purchase Upsells'=>'Upselle','Adds ability to subscribe customers to mailing lists in ActiveCampaign and AWeber upon checkout.'=>'Dodaje możliwość zapisu klientów na listy mailingowe w ActiveCampaign i AWeber przy zamówieniu.','Add to Mailing List'=>'Listy mailingowe','Adds review requests with direct links to products purchased in order for customers to review.'=>'Dodaje prośby o opinie z bezpośrednimi linkami do zakupionych produktów, aby klienci mogli je ocenić.','Allows automations delay by minutes, hours, days or weeks after the original event or last action.'=>'Umożliwia wykonanie akcji o minuty, godziny, dni lub tygodnie po pierwotnym zdarzeniu lub ostatniej akcji.','We've built a powerful platform that works to accomplish automation for your store in order to help you make more money and scale your business.'=>'Stworzyliśmy potężną platformę, która działa na rzecz automatyzacji twojego sklepu, aby pomóc ci zarobić więcej pieniędzy i zwiększyć skalę działalności.','Do more with ShopMagic PRO'=>'Zrób więcej z ShopMagic PRO','How to design customized order confirmation emails'=>'Jak zaprojektować e-maile z potwierdzeniem zamówienia','How to send automated thank you emails'=>'Jak wysyłać automatyczne e-maile z podziękowaniem','How to set up your first automation'=>'Jak skonfigurować swoją pierwszą automatyzację','So now when a customer makes a purchase, ShopMagic will send them an automatic email congratulating them and thanking them for their purchase.'=>'Teraz, gdy klient dokona zakupu, ShopMagic wyśle mu automatyczną wiadomość e-mail z podziękowaniem za zakup.','Choose an Action you'd like to happen. Example: Send Email. Now write a follow-up email to their order.'=>'Wybierz akcję do uruchomienia. Przykład: Wyślij e-mail. Teraz wpisz treść maila do zamówienia klienta.','Step #3:'=>'Krok 3:','Choose an Event to trigger your automation. Example: Order Completed.'=>'Wybierz zdarzenie, aby uruchomić automatyzację. Przykład: Zamówienie zrealizowane.','Step #2:'=>'Krok 2:','Start by creating a %snew Automation →%s'=>'Zacznij od utworzenia %snowej automatyzacji→%s','Step #1:'=>'Krok 1:','Getting Started'=>'Pierwsze kroki','WooCommerce marketing automation to make you more money'=>'Automatyzacja marketingu dla WooCommerce stworzona, aby zarabiać więcej pieniędzy','ShopMagic %s'=>'ShopMagic %s','All Automations'=>'Wszystkie automatyzacje','add new on admin barAutomation'=>'Automatyzacja','This Filter is not available for the above event'=>'Ten filtr nie jest dostępny dla powyższego zdarzenia','Subscribe to our newsletter '=>'Zapisz się do newslettera ','Please, visit settings page →'=>'Przejdź do ustawień →','Not assigned yet!'=>'Jeszcze nie przydzielone!','This Filter is not available for the above filter'=>'Ten filtr nie jest dostępny dla powyższego filtra','No description provided for this filter.'=>'Brak opisu tego filtra.','Shopmagic Debug'=>'Debug ShopMagic','Add'=>'Dodaj','Add products'=>'Dodaj produkty','Add product'=>'Dodaj produkt','Product for watching'=>'Produkt','Welcome to the world of awesomeness automations! Let the magic begin!'=>'Witamy w świecie niesamowitych automatyzacji! Niech rozpocznie się magia!','ShopMagic has been successfully activated'=>'ShopMagic został włączony','https://shopmagic.app/'=>'https://shopmagic.app/','The “%s” plugin requires free %s plugin. <a href="%s">Install%s</a>'=>'Wtyczka “%s” wymaga bezpłatnej wtyczki %s. <a href="%s">Zainstaluj %s</a>','Allow'=>'Pozwól']];
No newline at end of file
--- a/shopmagic-for-woocommerce/shopMagic.php
+++ b/shopmagic-for-woocommerce/shopMagic.php
@@ -4,7 +4,7 @@
Plugin URI: https://shopmagic.app/sk/shopmagic-for-woocommerce-plugin/
Description: Marketing Automation and Custom Email Designer for WooCommerce
Author: WP Desk
-Version: 4.7.2
+Version: 4.7.3
Author URI: https://shopmagic.app/sk/shopmagic-for-woocommerce-author/
Text Domain: shopmagic-for-woocommerce
Domain Path: /lang/
@@ -36,7 +36,7 @@
} // Exit if accessed directly
/* THESE VARIABLES CAN BE CHANGED AUTOMATICALLY */
-$plugin_version = '4.7.2';
+$plugin_version = '4.7.3';
if ( ! defined( 'SHOPMAGIC_VERSION' ) ) {
define( 'SHOPMAGIC_VERSION', $plugin_version );
--- a/shopmagic-for-woocommerce/src/Marketing/HookProviders/PreferencesUpdate.php
+++ b/shopmagic-for-woocommerce/src/Marketing/HookProviders/PreferencesUpdate.php
@@ -8,6 +8,7 @@
use WPDeskShopMagicComponentsHookProviderHookProvider;
use WPDeskShopMagicMarketingSubscribersListSubscriberSubscriptionManager;
use WPDeskShopMagicMarketingSubscribersPreferencesRoute;
+use WPDeskShopMagicMarketingUtilEmailHasher;
/**
* Handle updating customer marketing (communication) preferences. At the moment it works only
@@ -16,16 +17,22 @@
*/
final class PreferencesUpdate implements HookProvider {
+ public const NONCE_ACTION = 'shopmagic_communication_preferences';
+
+ public const NONCE_NAME = 'shopmagic_preferences_nonce';
+
/**
* @var string
*/
private const EMAIL = 'email';
- /** @var SubscriptionManager */
- private $subscription_manager;
+ private SubscriptionManager $subscription_manager;
- public function __construct( SubscriptionManager $manager ) {
+ private EmailHasher $email_hasher;
+
+ public function __construct( SubscriptionManager $manager, EmailHasher $email_hasher ) {
$this->subscription_manager = $manager;
+ $this->email_hasher = $email_hasher;
}
public function hooks(): void {
@@ -36,6 +43,13 @@
}
public function process_account_preferences(): void {
+ $nonce = isset( $_POST[ self::NONCE_NAME ] ) ? sanitize_text_field( wp_unslash( $_POST[ self::NONCE_NAME ] ) ) : '';
+
+ if ( wp_verify_nonce( $nonce, self::NONCE_ACTION ) !== 1 ) {
+ // Explicitly check for 0-12h validity.
+ $this->handle_failure();
+ }
+
$sanitized_post = array_map(
static function ( $field ) {
if ( is_array( $field ) ) {
@@ -46,11 +60,36 @@
},
isset( $_POST['shopmagic_optin'] ) ? wp_unslash( $_POST['shopmagic_optin'] ) : []
);
- $email = isset( $_POST[ self::EMAIL ] ) ? sanitize_email( wp_unslash( $_POST[ self::EMAIL ] ) ) : '';
+
+ $email = isset( $_POST[ self::EMAIL ] ) ? sanitize_email( wp_unslash( $_POST[ self::EMAIL ] ) ) : '';
+
+ $hash = isset( $_POST['hash'] ) ? sanitize_text_field( wp_unslash( $_POST['hash'] ) ) : '';
+
+ if ( empty( $email ) || ! $this->email_hasher->valid( $email, $hash ) ) {
+ $this->handle_failure();
+ }
+
$this->save_opt_changes( $email, $sanitized_post );
+ $this->handle_success();
+ }
+
+ private function handle_failure(): void {
+ if ( wp_doing_ajax() ) {
+ wp_send_json_error( [ 'message' => __( 'Invalid request.', 'shopmagic-for-woocommerce' ) ], 403 );
+ }
+
+ $referer = wp_get_referer();
+ wp_safe_redirect( add_query_arg( [ 'success' => 0 ], $referer ? $referer : home_url() ) );
+ exit;
+ }
+
+ private function handle_success(): void {
+ if ( wp_doing_ajax() ) {
+ wp_send_json_success();
+ }
- $back_url = add_query_arg( [ 'success' => 1 ], wp_get_referer() );
- wp_safe_redirect( $back_url );
+ $referer = wp_get_referer();
+ wp_safe_redirect( add_query_arg( [ 'success' => 1 ], $referer ? $referer : home_url() ) );
exit;
}
--- a/shopmagic-for-woocommerce/src/Marketing/Subscribers/CommunicationPreferencesRenderer.php
+++ b/shopmagic-for-woocommerce/src/Marketing/Subscribers/CommunicationPreferencesRenderer.php
@@ -8,29 +8,31 @@
use WPDeskShopMagicMarketingSubscribersListSubscriberSubscriberObjectRepository;
use WPDeskShopMagicMarketingSubscribersListSubscriberSingleListSubscriber;
use WPDeskShopMagicMarketingUtilEmailObsufcator;
+use WPDeskShopMagicMarketingUtilEmailHasher;
/**
* Helper class responsible for rendering communication preferences page.
*/
class CommunicationPreferencesRenderer {
- /** @var Renderer */
- private $renderer;
+ private Renderer $renderer;
- /** @var EmailObsufcator */
- private $obfuscator;
+ private EmailObsufcator $obfuscator;
- /** @var SubscriberObjectRepository */
- private $subscribers_repository;
+ private SubscriberObjectRepository $subscribers_repository;
+
+ private EmailHasher $email_hasher;
public function __construct(
Renderer $renderer,
EmailObsufcator $obfuscator,
- SubscriberObjectRepository $subscribers_repository
+ SubscriberObjectRepository $subscribers_repository,
+ EmailHasher $email_hasher
) {
$this->renderer = $renderer;
$this->obfuscator = $obfuscator;
$this->subscribers_repository = $subscribers_repository;
+ $this->email_hasher = $email_hasher;
}
public function render_wrap_start(): string {
@@ -70,6 +72,7 @@
'email' => $customer->get_email(),
'email_display' => $email,
'action' => PreferencesRoute::get_slug(),
+ 'hash' => $this->email_hasher->hash( $customer->get_email() ),
'signed_ups' => array_filter(
iterator_to_array(
$this->subscribers_repository->find_by(
--- a/shopmagic-for-woocommerce/src/Marketing/Util/EmailHasher.php
+++ b/shopmagic-for-woocommerce/src/Marketing/Util/EmailHasher.php
@@ -13,6 +13,6 @@
}
public function valid( string $email, string $hash ): bool {
- return $this->hash( $email ) === $hash;
+ return hash_equals( $this->hash( $email ), $hash );
}
}
--- a/shopmagic-for-woocommerce/templates/marketing-lists/communication_preferences.php
+++ b/shopmagic-for-woocommerce/templates/marketing-lists/communication_preferences.php
@@ -7,6 +7,7 @@
* @var string $email
* @var string $email_display
* @var ?bool $success
+ * @var string $hash
*/
use WPDeskShopMagicMarketingSubscribersAudienceListCommunicationListPersistence;
@@ -55,6 +56,8 @@
action="<?php echo esc_url( admin_url( 'admin-post.php' ) ); ?>">
<input type="hidden" name="action" value="<?php echo esc_attr( $action ); ?>"/>
<input type="hidden" name="email" value="<?php echo esc_attr( $email ); ?>"/>
+ <input type="hidden" name="hash" value="<?php echo esc_attr( $hash ); ?>"/>
+ <?php wp_nonce_field( WPDeskShopMagicMarketingHookProvidersPreferencesUpdate::NONCE_ACTION, WPDeskShopMagicMarketingHookProvidersPreferencesUpdate::NONCE_NAME ); ?>
<p class="shopmagic-optin form-row">
<label class="woocommerce-form__label woocommerce-form__label-for-checkbox checkbox">
--- a/shopmagic-for-woocommerce/vendor/composer/installed.php
+++ b/shopmagic-for-woocommerce/vendor/composer/installed.php
@@ -1,9 +1,9 @@
<?php return array(
'root' => array(
'name' => 'wpdesk/shopmagic-for-woocommerce',
- 'pretty_version' => '4.7.2',
- 'version' => '4.7.2.0',
- 'reference' => '3e9973c13c56821fb395abb019485a20f187175c',
+ 'pretty_version' => '4.7.3',
+ 'version' => '4.7.3.0',
+ 'reference' => '61f715b3528c8cf839d71b7b9d7bca8a4b6fee99',
'type' => 'library',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
@@ -95,9 +95,9 @@
'dev_requirement' => false,
),
'wpdesk/shopmagic-for-woocommerce' => array(
- 'pretty_version' => '4.7.2',
- 'version' => '4.7.2.0',
- 'reference' => '3e9973c13c56821fb395abb019485a20f187175c',
+ 'pretty_version' => '4.7.3',
+ 'version' => '4.7.3.0',
+ 'reference' => '61f715b3528c8cf839d71b7b9d7bca8a4b6fee99',
'type' => 'library',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),