Apply staged updates
This commit is contained in:
8
.claude/settings.local.json
Normal file
8
.claude/settings.local.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"permissions": {
|
||||
"allow": [
|
||||
"mcp__serena__activate_project",
|
||||
"mcp__serena__check_onboarding_performed"
|
||||
]
|
||||
}
|
||||
}
|
||||
398
.htaccess
398
.htaccess
@@ -1,7 +1,3 @@
|
||||
# <FilesMatch "\.(php4|php5|php3|php2|php|phtml)$">
|
||||
# SetHandler application/x-lsphp83 /opt/alt/php83 usr/bin/lsphp
|
||||
# </FilesMatch>
|
||||
|
||||
RewriteEngine On
|
||||
RewriteBase /
|
||||
Options +FollowSymlinks
|
||||
@@ -11,68 +7,25 @@ Options -Indexes
|
||||
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
|
||||
RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]
|
||||
|
||||
# Przekierowanie z http na https, jeśli nie zawiera www
|
||||
# Przekierowanie z http na https, jesli nie zawiera www
|
||||
RewriteCond %{HTTPS} off
|
||||
RewriteCond %{REQUEST_URI} !^/(tpay-status|platnosc-status|przelewy24-status)$ [NC]
|
||||
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
|
||||
|
||||
# Usuwanie końcowego slash'a dla niekatalogów
|
||||
# Usuwanie koncowego slasha dla niekatalogów
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteCond %{REQUEST_URI} !^/admin/.*$ [NC] # Wyklucza ścieżki rozpoczynające się od "admin/"
|
||||
RewriteCond %{REQUEST_URI} !^/admin/.*$ [NC]
|
||||
RewriteCond %{REQUEST_URI} (.+)/$
|
||||
RewriteRule ^ %1 [R=301,L]
|
||||
|
||||
ErrorDocument 404 /index.php
|
||||
|
||||
RewriteCond %{REQUEST_URI} !^(.*)/libraries/(.*) [NC]
|
||||
RewriteCond %{REQUEST_URI} !^(.*)/layout/(.*) [NC]
|
||||
RewriteRule ^admin/([^/]*)/([^/]*)/(.*)$ admin/index.php?module=$1&action=$2&$3 [QSA,L]
|
||||
RewriteRule ^admin/([^/]*)/([^/]*)/(.*)$ admin/index.php?module=$1&action=$2&$3 [L]
|
||||
|
||||
RewriteRule ^admin/$ admin/index.php [L]
|
||||
|
||||
RewriteRule ^wyszukiwarka/(.*)/([0-9]*)$ index.php?module=search&action=search_results&query=$1&bs=$2 [L]
|
||||
RewriteRule ^wyszukiwarka/(.*)$ index.php?module=search&action=search_results&query=$1&bs=1 [L]
|
||||
RewriteRule ^zamowienie/([a-zA-Z0-9-]*)$ index.php?module=shop_order&action=order_details&order_hash=$1 [L]
|
||||
RewriteRule ^potwierdzenie-platnosci/([a-zA-Z0-9-]*)$ index.php?module=shop_order&action=payment_confirmation&order_hash=$1 [L]
|
||||
RewriteRule ^tpay-status$ index.php?module=shop_order&action=payment_status_tpay [QSA,L]
|
||||
RewriteRule ^platnosc-status$ index.php?module=shop_order&action=payment_status_hotpay [QSA,L]
|
||||
RewriteRule ^przelewy24-status$ index.php?module=shop_order&action=payment_status_przelewy24pl [QSA,L]
|
||||
RewriteRule ^koszyk$ index.php?module=shop_basket&action=main_view [L]
|
||||
RewriteRule ^koszyk-podsumowanie$ index.php?module=shop_basket&action=summary_view [L]
|
||||
RewriteRule ^zloz-zamowienie$ index.php?module=shop_basket&action=basket_save [L]
|
||||
RewriteRule ^rejestracja$ index.php?module=shop_client&action=register_form [L]
|
||||
RewriteRule ^logowanie$ index.php?module=shop_client&action=login_form [L]
|
||||
RewriteRule ^wylogowanie$ index.php?module=shop_client&action=logout [L]
|
||||
RewriteRule ^odzyskiwanie-hasla$ index.php?module=shop_client&action=recover_password [L]
|
||||
RewriteRule ^panel-klienta/zamowienia$ index.php?module=shop_client&action=client_orders [L]
|
||||
RewriteRule ^panel-klienta/adresy$ index.php?module=shop_client&action=client_addresses [L]
|
||||
RewriteRule ^panel-klienta/nowy-adres$ index.php?module=shop_client&action=address_edit [L]
|
||||
RewriteRule ^panel-klienta/edytuj-adres/([0-9]*)$ index.php?module=shop_client&action=address_edit&id=$1 [L]
|
||||
RewriteRule ^panel-klienta/usun-adres/([0-9]*)$ index.php?module=shop_client&action=address_delete&id=$1 [L]
|
||||
RewriteRule ^thumb/([0-9]*)/([0-9]*)/(.*)$ /libraries/thumb.php?img=$3&w=$1&h=$2 [L]
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/shopBasket/(.*)/(.*) [NC]
|
||||
RewriteRule ^([^/]*)/([^/]*)/(.*)$ index.php?module=$1&action=$2&$3 [L]
|
||||
RewriteCond %{REQUEST_URI} ^/shopClient/(.*)/(.*) [NC]
|
||||
RewriteRule ^([^/]*)/([^/]*)/(.*)$ index.php?module=$1&action=$2&$3 [L]
|
||||
RewriteCond %{REQUEST_URI} ^/shopProduct/(.*)/(.*) [NC]
|
||||
RewriteRule ^([^/]*)/([^/]*)/(.*)$ index.php?module=$1&action=$2&$3 [L]
|
||||
RewriteCond %{REQUEST_URI} ^/shopCoupon/(.*)/(.*) [NC]
|
||||
RewriteRule ^([^/]*)/([^/]*)/(.*)$ index.php?module=$1&action=$2&$3 [L]
|
||||
RewriteCond %{REQUEST_URI} ^/search/(.*)/(.*) [NC]
|
||||
RewriteRule ^([^/]*)/([^/]*)/(.*)$ index.php?module=$1&action=$2&$3 [L]
|
||||
|
||||
RewriteCond %{REQUEST_URI} ^/shopBasket/(.*) [NC]
|
||||
RewriteRule ^([^/]*)/([^/]*)$ index.php?module=$1&action=$2 [L]
|
||||
RewriteCond %{REQUEST_URI} ^/shopClient/(.*) [NC]
|
||||
RewriteRule ^([^/]*)/([^/]*)$ index.php?module=$1&action=$2 [L]
|
||||
RewriteCond %{REQUEST_URI} ^/shopProduct/(.*) [NC]
|
||||
RewriteRule ^([^/]*)/([^/]*)$ index.php?module=$1&action=$2 [L]
|
||||
RewriteCond %{REQUEST_URI} ^/shopCoupon/(.*) [NC]
|
||||
RewriteRule ^([^/]*)/([^/]*)$ index.php?module=$1&action=$2 [L]
|
||||
RewriteCond %{REQUEST_URI} ^/search/(.*) [NC]
|
||||
RewriteRule ^([^/]*)/([^/]*)$ index.php?module=$1&action=$2 [L]
|
||||
|
||||
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index.php
|
||||
RewriteRule ^ /%1 [R=301,L]
|
||||
<IfModule mod_deflate.c>
|
||||
@@ -122,352 +75,11 @@ ExpiresByType image/svg+xml "access plus 1 month"
|
||||
Deny from all
|
||||
</Files>
|
||||
|
||||
RewriteRule ^pl/$ index.php?a=change_language&id=pl [L]
|
||||
RewriteRule ^newsletter/signin/$ index.php?module=newsletter&action=signin [L]
|
||||
RewriteRule ^newsletter/confirm/hash=(.*)$ index.php?module=newsletter&action=confirm&hash=$1 [L]
|
||||
RewriteRule ^newsletter/unsubscribe/hash=(.*)$ index.php?module=newsletter&action=unsubscribe&hash=$1 [L]
|
||||
RewriteRule ^producenci$ index.php?module=shop_producer&action=list&layout_id=2&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/bibs$ index.php?module=shop_producer&action=products&producer_id=4&layout_id=2&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/bibs/([0-9]+)$ index.php?module=shop_producer&action=products&producer_id=4&layout_id=2&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/twistshake$ index.php?module=shop_producer&action=products&producer_id=8&layout_id=2&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/twistshake/([0-9]+)$ index.php?module=shop_producer&action=products&producer_id=8&layout_id=2&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/ezpz$ index.php?module=shop_producer&action=products&producer_id=9&layout_id=2&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/ezpz/([0-9]+)$ index.php?module=shop_producer&action=products&producer_id=9&layout_id=2&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/mushie$ index.php?module=shop_producer&action=products&producer_id=10&layout_id=2&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/mushie/([0-9]+)$ index.php?module=shop_producer&action=products&producer_id=10&layout_id=2&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/beaba$ index.php?module=shop_producer&action=products&producer_id=11&layout_id=2&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/beaba/([0-9]+)$ index.php?module=shop_producer&action=products&producer_id=11&layout_id=2&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/bbox$ index.php?module=shop_producer&action=products&producer_id=12&layout_id=2&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/bbox/([0-9]+)$ index.php?module=shop_producer&action=products&producer_id=12&layout_id=2&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/matchstick-monkey$ index.php?module=shop_producer&action=products&producer_id=13&layout_id=2&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/matchstick-monkey/([0-9]+)$ index.php?module=shop_producer&action=products&producer_id=13&layout_id=2&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/maud-n-lil$ index.php?module=shop_producer&action=products&producer_id=14&layout_id=2&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/maud-n-lil/([0-9]+)$ index.php?module=shop_producer&action=products&producer_id=14&layout_id=2&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/zebra-me$ index.php?module=shop_producer&action=products&producer_id=15&layout_id=2&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/zebra-me/([0-9]+)$ index.php?module=shop_producer&action=products&producer_id=15&layout_id=2&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/sylveco$ index.php?module=shop_producer&action=products&producer_id=16&layout_id=2&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/sylveco/([0-9]+)$ index.php?module=shop_producer&action=products&producer_id=16&layout_id=2&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/rex-london$ index.php?module=shop_producer&action=products&producer_id=17&layout_id=2&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/rex-london/([0-9]+)$ index.php?module=shop_producer&action=products&producer_id=17&layout_id=2&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/babyono$ index.php?module=shop_producer&action=products&producer_id=18&layout_id=2&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/babyono/([0-9]+)$ index.php?module=shop_producer&action=products&producer_id=18&layout_id=2&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/liliputiens$ index.php?module=shop_producer&action=products&producer_id=19&layout_id=2&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/liliputiens/([0-9]+)$ index.php?module=shop_producer&action=products&producer_id=19&layout_id=2&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/suavinex$ index.php?module=shop_producer&action=products&producer_id=20&layout_id=2&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/suavinex/([0-9]+)$ index.php?module=shop_producer&action=products&producer_id=20&layout_id=2&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/kiokids$ index.php?module=shop_producer&action=products&producer_id=21&layout_id=2&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/kiokids/([0-9]+)$ index.php?module=shop_producer&action=products&producer_id=21&layout_id=2&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/marianekpl$ index.php?module=shop_producer&action=products&producer_id=22&layout_id=2&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/marianekpl/([0-9]+)$ index.php?module=shop_producer&action=products&producer_id=22&layout_id=2&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/project-pro$ index.php?module=shop_producer&action=products&producer_id=23&layout_id=2&%{QUERY_STRING} [L]
|
||||
RewriteRule ^producent/project-pro/([0-9]+)$ index.php?module=shop_producer&action=products&producer_id=23&layout_id=2&bs=$1&%{QUERY_STRING} [L]
|
||||
|
||||
RewriteRule ^okazje$ index.php?category=112&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^okazje/([0-9]+)$ index.php?category=112&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^okazje/1$ okazje [R=301,L]
|
||||
RewriteRule ^prezenty-na-boze-narodzenie$ index.php?category=138&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-na-boze-narodzenie/([0-9]+)$ index.php?category=138&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-na-boze-narodzenie/1$ prezenty-na-boze-narodzenie [R=301,L]
|
||||
RewriteRule ^prezenty-na-wielkanoc$ index.php?category=142&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-na-wielkanoc/([0-9]+)$ index.php?category=142&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-na-wielkanoc/1$ prezenty-na-wielkanoc [R=301,L]
|
||||
RewriteRule ^prezenty-na-chrzest-swiety$ index.php?category=123&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-na-chrzest-swiety/([0-9]+)$ index.php?category=123&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-na-chrzest-swiety/1$ prezenty-na-chrzest-swiety [R=301,L]
|
||||
RewriteRule ^prezenty-na-dzien-dziewczynek$ index.php?category=113&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-na-dzien-dziewczynek/([0-9]+)$ index.php?category=113&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-na-dzien-dziewczynek/1$ prezenty-na-dzien-dziewczynek [R=301,L]
|
||||
RewriteRule ^prezenty-na-dzien-chlopaka$ index.php?category=116&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-na-dzien-chlopaka/([0-9]+)$ index.php?category=116&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-na-dzien-chlopaka/1$ prezenty-na-dzien-chlopaka [R=301,L]
|
||||
RewriteRule ^prezenty-na-dzien-babci$ index.php?category=118&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-na-dzien-babci/([0-9]+)$ index.php?category=118&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-na-dzien-babci/1$ prezenty-na-dzien-babci [R=301,L]
|
||||
RewriteRule ^prezenty-na-dzien-dziadka$ index.php?category=119&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-na-dzien-dziadka/([0-9]+)$ index.php?category=119&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-na-dzien-dziadka/1$ prezenty-na-dzien-dziadka [R=301,L]
|
||||
RewriteRule ^prezenty-na-dzien-dziecka$ index.php?category=144&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-na-dzien-dziecka/([0-9]+)$ index.php?category=144&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-na-dzien-dziecka/1$ prezenty-na-dzien-dziecka [R=301,L]
|
||||
RewriteRule ^prezenty-na-dzien-mamy$ index.php?category=133&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-na-dzien-mamy/([0-9]+)$ index.php?category=133&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-na-dzien-mamy/1$ prezenty-na-dzien-mamy [R=301,L]
|
||||
RewriteRule ^prezenty-na-dzien-ojca$ index.php?category=134&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-na-dzien-ojca/([0-9]+)$ index.php?category=134&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-na-dzien-ojca/1$ prezenty-na-dzien-ojca [R=301,L]
|
||||
RewriteRule ^prezent-na-komunie-swieta$ index.php?category=152&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezent-na-komunie-swieta/([0-9]+)$ index.php?category=152&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezent-na-komunie-swieta/1$ prezent-na-komunie-swieta [R=301,L]
|
||||
RewriteRule ^prezenty-na-koniec-roku-szkolnego$ index.php?category=149&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-na-koniec-roku-szkolnego/([0-9]+)$ index.php?category=149&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-na-koniec-roku-szkolnego/1$ prezenty-na-koniec-roku-szkolnego [R=301,L]
|
||||
RewriteRule ^prezent-na-slub-wesele$ index.php?category=158&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezent-na-slub-wesele/([0-9]+)$ index.php?category=158&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezent-na-slub-wesele/1$ prezent-na-slub-wesele [R=301,L]
|
||||
RewriteRule ^prezenty-na-walentynki$ index.php?category=130&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-na-walentynki/([0-9]+)$ index.php?category=130&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-na-walentynki/1$ prezenty-na-walentynki [R=301,L]
|
||||
RewriteRule ^prezenty-z-okazji-narodzin-dziecka$ index.php?category=122&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-z-okazji-narodzin-dziecka/([0-9]+)$ index.php?category=122&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-z-okazji-narodzin-dziecka/1$ prezenty-z-okazji-narodzin-dziecka [R=301,L]
|
||||
RewriteRule ^prezenty-z-okazji-urodzin$ index.php?category=155&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-z-okazji-urodzin/([0-9]+)$ index.php?category=155&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-z-okazji-urodzin/1$ prezenty-z-okazji-urodzin [R=301,L]
|
||||
RewriteRule ^dla-kogo$ index.php?category=114&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^dla-kogo/([0-9]+)$ index.php?category=114&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^dla-kogo/1$ dla-kogo [R=301,L]
|
||||
RewriteRule ^prezenty-dla-dziewczynek$ index.php?category=115&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-dla-dziewczynek/([0-9]+)$ index.php?category=115&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-dla-dziewczynek/1$ prezenty-dla-dziewczynek [R=301,L]
|
||||
RewriteRule ^prezenty-dla-chlopcow$ index.php?category=117&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-dla-chlopcow/([0-9]+)$ index.php?category=117&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-dla-chlopcow/1$ prezenty-dla-chlopcow [R=301,L]
|
||||
RewriteRule ^prezenty-dla-niej$ index.php?category=131&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-dla-niej/([0-9]+)$ index.php?category=131&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-dla-niej/1$ prezenty-dla-niej [R=301,L]
|
||||
RewriteRule ^prezenty-dla-niego$ index.php?category=132&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-dla-niego/([0-9]+)$ index.php?category=132&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-dla-niego/1$ prezenty-dla-niego [R=301,L]
|
||||
RewriteRule ^prezenty-dla-babci$ index.php?category=120&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-dla-babci/([0-9]+)$ index.php?category=120&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-dla-babci/1$ prezenty-dla-babci [R=301,L]
|
||||
RewriteRule ^prezenty-dla-dziadka$ index.php?category=121&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-dla-dziadka/([0-9]+)$ index.php?category=121&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-dla-dziadka/1$ prezenty-dla-dziadka [R=301,L]
|
||||
RewriteRule ^prezenty-dla-mamy$ index.php?category=135&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-dla-mamy/([0-9]+)$ index.php?category=135&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-dla-mamy/1$ prezenty-dla-mamy [R=301,L]
|
||||
RewriteRule ^prezenty-dla-taty$ index.php?category=136&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-dla-taty/([0-9]+)$ index.php?category=136&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-dla-taty/1$ prezenty-dla-taty [R=301,L]
|
||||
RewriteRule ^prezenty-wg-rodzaju$ index.php?category=124&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-wg-rodzaju/([0-9]+)$ index.php?category=124&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezenty-wg-rodzaju/1$ prezenty-wg-rodzaju [R=301,L]
|
||||
RewriteRule ^breloczki$ index.php?category=127&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^breloczki/([0-9]+)$ index.php?category=127&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^breloczki/1$ breloczki [R=301,L]
|
||||
RewriteRule ^dodatki-do-pokoju-dzieciecego$ index.php?category=154&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^dodatki-do-pokoju-dzieciecego/([0-9]+)$ index.php?category=154&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^dodatki-do-pokoju-dzieciecego/1$ dodatki-do-pokoju-dzieciecego [R=301,L]
|
||||
RewriteRule ^girlandy$ index.php?category=140&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^girlandy/([0-9]+)$ index.php?category=140&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^girlandy/1$ girlandy [R=301,L]
|
||||
RewriteRule ^gry$ index.php?category=145&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^gry/([0-9]+)$ index.php?category=145&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^gry/1$ gry [R=301,L]
|
||||
RewriteRule ^kartki-z-zyczeniami$ index.php?category=139&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^kartki-z-zyczeniami/([0-9]+)$ index.php?category=139&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^kartki-z-zyczeniami/1$ kartki-z-zyczeniami [R=301,L]
|
||||
RewriteRule ^magnesy-na-lodowke$ index.php?category=137&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^magnesy-na-lodowke/([0-9]+)$ index.php?category=137&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^magnesy-na-lodowke/1$ magnesy-na-lodowke [R=301,L]
|
||||
RewriteRule ^medale$ index.php?category=150&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^medale/([0-9]+)$ index.php?category=150&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^medale/1$ medale [R=301,L]
|
||||
RewriteRule ^metryczki$ index.php?category=151&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^metryczki/([0-9]+)$ index.php?category=151&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^metryczki/1$ metryczki [R=301,L]
|
||||
RewriteRule ^obrazy-i-ramki$ index.php?category=129&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^obrazy-i-ramki/([0-9]+)$ index.php?category=129&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^obrazy-i-ramki/1$ obrazy-i-ramki [R=301,L]
|
||||
RewriteRule ^organizery$ index.php?category=157&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^organizery/([0-9]+)$ index.php?category=157&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^organizery/1$ organizery [R=301,L]
|
||||
RewriteRule ^ozdoby-bozonarodzeniowe$ index.php?category=148&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^ozdoby-bozonarodzeniowe/([0-9]+)$ index.php?category=148&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^ozdoby-bozonarodzeniowe/1$ ozdoby-bozonarodzeniowe [R=301,L]
|
||||
RewriteRule ^ozdoby-wielkanocne$ index.php?category=143&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^ozdoby-wielkanocne/([0-9]+)$ index.php?category=143&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^ozdoby-wielkanocne/1$ ozdoby-wielkanocne [R=301,L]
|
||||
RewriteRule ^podkladki$ index.php?category=147&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^podkladki/([0-9]+)$ index.php?category=147&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^podkladki/1$ podkladki [R=301,L]
|
||||
RewriteRule ^pudelka-skrzynki-okolicznosciowe$ index.php?category=156&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^pudelka-skrzynki-okolicznosciowe/([0-9]+)$ index.php?category=156&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^pudelka-skrzynki-okolicznosciowe/1$ pudelka-skrzynki-okolicznosciowe [R=301,L]
|
||||
RewriteRule ^statuetki$ index.php?category=159&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^statuetki/([0-9]+)$ index.php?category=159&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^statuetki/1$ statuetki [R=301,L]
|
||||
RewriteRule ^tabliczki-do-zdjec$ index.php?category=126&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^tabliczki-do-zdjec/([0-9]+)$ index.php?category=126&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^tabliczki-do-zdjec/1$ tabliczki-do-zdjec [R=301,L]
|
||||
RewriteRule ^zakladki-do-ksiazek$ index.php?category=146&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^zakladki-do-ksiazek/([0-9]+)$ index.php?category=146&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^zakladki-do-ksiazek/1$ zakladki-do-ksiazek [R=301,L]
|
||||
RewriteRule ^zaproszenia-prosby$ index.php?category=141&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^zaproszenia-prosby/([0-9]+)$ index.php?category=141&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^zaproszenia-prosby/1$ zaproszenia-prosby [R=301,L]
|
||||
RewriteRule ^zawieszki-z-czerwona-kokardka$ index.php?category=32&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^zawieszki-z-czerwona-kokardka/([0-9]+)$ index.php?category=32&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^zawieszki-z-czerwona-kokardka/1$ zawieszki-z-czerwona-kokardka [R=301,L]
|
||||
RewriteRule ^zawieszki-do-smoczkow-i-gryzakow$ index.php?category=44&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^zawieszki-do-smoczkow-i-gryzakow/([0-9]+)$ index.php?category=44&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^zawieszki-do-smoczkow-i-gryzakow/1$ zawieszki-do-smoczkow-i-gryzakow [R=301,L]
|
||||
RewriteRule ^wieszaki$ index.php?category=128&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^wieszaki/([0-9]+)$ index.php?category=128&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^wieszaki/1$ wieszaki [R=301,L]
|
||||
RewriteRule ^pielegnacja$ index.php?category=46&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^pielegnacja/([0-9]+)$ index.php?category=46&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^pielegnacja/1$ pielegnacja [R=301,L]
|
||||
RewriteRule ^kosmetyki-dla-dzieci$ index.php?category=79&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^kosmetyki-dla-dzieci/([0-9]+)$ index.php?category=79&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^kosmetyki-dla-dzieci/1$ kosmetyki-dla-dzieci [R=301,L]
|
||||
RewriteRule ^kremy-i-oliwki-pielegnacyjne$ index.php?category=81&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^kremy-i-oliwki-pielegnacyjne/([0-9]+)$ index.php?category=81&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^kremy-i-oliwki-pielegnacyjne/1$ kremy-i-oliwki-pielegnacyjne [R=301,L]
|
||||
RewriteRule ^pasty-do-zebow$ index.php?category=80&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^pasty-do-zebow/([0-9]+)$ index.php?category=80&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^pasty-do-zebow/1$ pasty-do-zebow [R=301,L]
|
||||
RewriteRule ^plyny-do-kapieli-mydla-dla-dzieci$ index.php?category=83&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^plyny-do-kapieli-mydla-dla-dzieci/([0-9]+)$ index.php?category=83&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^plyny-do-kapieli-mydla-dla-dzieci/1$ plyny-do-kapieli-mydla-dla-dzieci [R=301,L]
|
||||
RewriteRule ^szampony-i-odzywki-do-wlosow-dla-dzieci$ index.php?category=84&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^szampony-i-odzywki-do-wlosow-dla-dzieci/([0-9]+)$ index.php?category=84&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^szampony-i-odzywki-do-wlosow-dla-dzieci/1$ szampony-i-odzywki-do-wlosow-dla-dzieci [R=301,L]
|
||||
RewriteRule ^akcesoria-do-kapieli-dla-niemowlat-i-dzieci$ index.php?category=86&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^akcesoria-do-kapieli-dla-niemowlat-i-dzieci/([0-9]+)$ index.php?category=86&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^akcesoria-do-kapieli-dla-niemowlat-i-dzieci/1$ akcesoria-do-kapieli-dla-niemowlat-i-dzieci [R=301,L]
|
||||
RewriteRule ^ksiazeczki-i-zabawki-do-kapieli$ index.php?category=90&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^ksiazeczki-i-zabawki-do-kapieli/([0-9]+)$ index.php?category=90&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^ksiazeczki-i-zabawki-do-kapieli/1$ ksiazeczki-i-zabawki-do-kapieli [R=301,L]
|
||||
RewriteRule ^termometry-do-wody$ index.php?category=87&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^termometry-do-wody/([0-9]+)$ index.php?category=87&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^termometry-do-wody/1$ termometry-do-wody [R=301,L]
|
||||
RewriteRule ^myjki-i-gabki-dla-dzieci-i-niemowlat$ index.php?category=96&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^myjki-i-gabki-dla-dzieci-i-niemowlat/([0-9]+)$ index.php?category=96&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^myjki-i-gabki-dla-dzieci-i-niemowlat/1$ myjki-i-gabki-dla-dzieci-i-niemowlat [R=301,L]
|
||||
RewriteRule ^smoczki-uspokajajace$ index.php?category=47&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^smoczki-uspokajajace/([0-9]+)$ index.php?category=47&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^smoczki-uspokajajace/1$ smoczki-uspokajajace [R=301,L]
|
||||
RewriteRule ^smoczki-kauczukowe$ index.php?category=49&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^smoczki-kauczukowe/([0-9]+)$ index.php?category=49&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^smoczki-kauczukowe/1$ smoczki-kauczukowe [R=301,L]
|
||||
RewriteRule ^smoczki-silikonowe$ index.php?category=50&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^smoczki-silikonowe/([0-9]+)$ index.php?category=50&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^smoczki-silikonowe/1$ smoczki-silikonowe [R=301,L]
|
||||
RewriteRule ^pojemniki-na-smoczek$ index.php?category=48&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^pojemniki-na-smoczek/([0-9]+)$ index.php?category=48&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^pojemniki-na-smoczek/1$ pojemniki-na-smoczek [R=301,L]
|
||||
RewriteRule ^gryzaki-dla-niemowlat$ index.php?category=53&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^gryzaki-dla-niemowlat/([0-9]+)$ index.php?category=53&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^gryzaki-dla-niemowlat/1$ gryzaki-dla-niemowlat [R=301,L]
|
||||
RewriteRule ^artykuly-higieniczne-dla-dzieci-i-niemowlat$ index.php?category=88&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^artykuly-higieniczne-dla-dzieci-i-niemowlat/([0-9]+)$ index.php?category=88&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^artykuly-higieniczne-dla-dzieci-i-niemowlat/1$ artykuly-higieniczne-dla-dzieci-i-niemowlat [R=301,L]
|
||||
RewriteRule ^aspiratory-i-gruszki$ index.php?category=89&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^aspiratory-i-gruszki/([0-9]+)$ index.php?category=89&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^aspiratory-i-gruszki/1$ aspiratory-i-gruszki [R=301,L]
|
||||
RewriteRule ^pielegnacja-paznokci$ index.php?category=94&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^pielegnacja-paznokci/([0-9]+)$ index.php?category=94&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^pielegnacja-paznokci/1$ pielegnacja-paznokci [R=301,L]
|
||||
RewriteRule ^szczoteczki-do-zebow-dla-niemowlat-i-dzieci$ index.php?category=54&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^szczoteczki-do-zebow-dla-niemowlat-i-dzieci/([0-9]+)$ index.php?category=54&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^szczoteczki-do-zebow-dla-niemowlat-i-dzieci/1$ szczoteczki-do-zebow-dla-niemowlat-i-dzieci [R=301,L]
|
||||
RewriteRule ^szczotki-i-grzebienie-do-wlosow-dla-dzieci$ index.php?category=95&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^szczotki-i-grzebienie-do-wlosow-dla-dzieci/([0-9]+)$ index.php?category=95&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^szczotki-i-grzebienie-do-wlosow-dla-dzieci/1$ szczotki-i-grzebienie-do-wlosow-dla-dzieci [R=301,L]
|
||||
RewriteRule ^pozostale$ index.php?category=97&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^pozostale/([0-9]+)$ index.php?category=97&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^pozostale/1$ pozostale [R=301,L]
|
||||
RewriteRule ^kocyki-minky$ index.php?category=5&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^kocyki-minky/([0-9]+)$ index.php?category=5&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^kocyki-minky/1$ kocyki-minky [R=301,L]
|
||||
RewriteRule ^karmienie$ index.php?category=61&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^karmienie/([0-9]+)$ index.php?category=61&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^karmienie/1$ karmienie [R=301,L]
|
||||
RewriteRule ^kubki-i-bidony$ index.php?category=64&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^kubki-i-bidony/([0-9]+)$ index.php?category=64&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^kubki-i-bidony/1$ kubki-i-bidony [R=301,L]
|
||||
RewriteRule ^sliniaki$ index.php?category=62&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^sliniaki/([0-9]+)$ index.php?category=62&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^sliniaki/1$ sliniaki [R=301,L]
|
||||
RewriteRule ^sztucce-i-naczynia-dla-dzieci$ index.php?category=67&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^sztucce-i-naczynia-dla-dzieci/([0-9]+)$ index.php?category=67&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^sztucce-i-naczynia-dla-dzieci/1$ sztucce-i-naczynia-dla-dzieci [R=301,L]
|
||||
RewriteRule ^sztucce$ index.php?category=69&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^sztucce/([0-9]+)$ index.php?category=69&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^sztucce/1$ sztucce [R=301,L]
|
||||
RewriteRule ^pojemniki-na-jedzenie$ index.php?category=99&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^pojemniki-na-jedzenie/([0-9]+)$ index.php?category=99&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^pojemniki-na-jedzenie/1$ pojemniki-na-jedzenie [R=301,L]
|
||||
RewriteRule ^talerzyki-i-miseczki$ index.php?category=70&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^talerzyki-i-miseczki/([0-9]+)$ index.php?category=70&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^talerzyki-i-miseczki/1$ talerzyki-i-miseczki [R=301,L]
|
||||
RewriteRule ^akcesoria-do-karmienia$ index.php?category=68&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^akcesoria-do-karmienia/([0-9]+)$ index.php?category=68&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^akcesoria-do-karmienia/1$ akcesoria-do-karmienia [R=301,L]
|
||||
RewriteRule ^gry-dla-dzieci$ index.php?category=107&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^gry-dla-dzieci/([0-9]+)$ index.php?category=107&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^gry-dla-dzieci/1$ gry-dla-dzieci [R=301,L]
|
||||
RewriteRule ^outlet$ index.php?category=27&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^outlet/([0-9]+)$ index.php?category=27&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^outlet/1$ outlet [R=301,L]
|
||||
RewriteCond %{REQUEST_URI} ^/home$
|
||||
RewriteRule ^(.*)$ http://www.marianek.pl/ [R=permanent,L]
|
||||
RewriteCond %{REQUEST_URI} ^/home-1$
|
||||
RewriteRule ^(.*)$ http://www.marianek.pl/ [R=permanent,L]
|
||||
RewriteRule ^$ index.php?a=page&id=6&lang=pl [L]
|
||||
RewriteRule ^home$ index.php?a=page&id=6&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^home/([0-9]+)$ index.php?a=page&id=6&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^home/1$ home [R=301,L]
|
||||
RewriteRule ^o-nas$ index.php?a=page&id=10&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^o-nas/([0-9]+)$ index.php?a=page&id=10&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^o-nas/1$ o-nas [R=301,L]
|
||||
RewriteRule ^formy-platnosci$ index.php?a=page&id=13&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^formy-platnosci/([0-9]+)$ index.php?a=page&id=13&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^formy-platnosci/1$ formy-platnosci [R=301,L]
|
||||
RewriteRule ^koszty-dostawy$ index.php?a=page&id=14&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^koszty-dostawy/([0-9]+)$ index.php?a=page&id=14&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^koszty-dostawy/1$ koszty-dostawy [R=301,L]
|
||||
RewriteRule ^zwroty-i-reklamacje$ index.php?a=page&id=15&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^zwroty-i-reklamacje/([0-9]+)$ index.php?a=page&id=15&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^zwroty-i-reklamacje/1$ zwroty-i-reklamacje [R=301,L]
|
||||
RewriteRule ^regulamin$ index.php?a=page&id=12&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^regulamin/([0-9]+)$ index.php?a=page&id=12&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^regulamin/1$ regulamin [R=301,L]
|
||||
RewriteRule ^polityka-prywatnosci$ index.php?a=page&id=178&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^polityka-prywatnosci/([0-9]+)$ index.php?a=page&id=178&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^polityka-prywatnosci/1$ polityka-prywatnosci [R=301,L]
|
||||
RewriteRule ^akcesoria-do-kapieli-dla-niemowlat-i-dzieci$ index.php?a=page&id=102&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^akcesoria-do-kapieli-dla-niemowlat-i-dzieci/([0-9]+)$ index.php?a=page&id=102&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^akcesoria-do-kapieli-dla-niemowlat-i-dzieci/1$ akcesoria-do-kapieli-dla-niemowlat-i-dzieci [R=301,L]
|
||||
RewriteRule ^myjki-i-gabki-dla-dzieci-i-niemowlat$ index.php?a=page&id=113&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^myjki-i-gabki-dla-dzieci-i-niemowlat/([0-9]+)$ index.php?a=page&id=113&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^myjki-i-gabki-dla-dzieci-i-niemowlat/1$ myjki-i-gabki-dla-dzieci-i-niemowlat [R=301,L]
|
||||
RewriteRule ^termometry-do-wody$ index.php?a=page&id=104&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^termometry-do-wody/([0-9]+)$ index.php?a=page&id=104&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^termometry-do-wody/1$ termometry-do-wody [R=301,L]
|
||||
RewriteRule ^artykuly-higieniczne-dla-dzieci-i-niemowlat$ index.php?a=page&id=103&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^artykuly-higieniczne-dla-dzieci-i-niemowlat/([0-9]+)$ index.php?a=page&id=103&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^artykuly-higieniczne-dla-dzieci-i-niemowlat/1$ artykuly-higieniczne-dla-dzieci-i-niemowlat [R=301,L]
|
||||
RewriteRule ^aspiratory-i-gruszki$ index.php?a=page&id=105&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^aspiratory-i-gruszki/([0-9]+)$ index.php?a=page&id=105&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^aspiratory-i-gruszki/1$ aspiratory-i-gruszki [R=301,L]
|
||||
RewriteRule ^szczotki-i-grzebienie-do-wlosow-dla-dzieci$ index.php?a=page&id=111&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^szczotki-i-grzebienie-do-wlosow-dla-dzieci/([0-9]+)$ index.php?a=page&id=111&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^szczotki-i-grzebienie-do-wlosow-dla-dzieci/1$ szczotki-i-grzebienie-do-wlosow-dla-dzieci [R=301,L]
|
||||
RewriteRule ^kontakt$ index.php?a=page&id=5&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^kontakt/([0-9]+)$ index.php?a=page&id=5&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^kontakt/1$ kontakt [R=301,L]
|
||||
RewriteRule ^sztucce$ index.php?a=page&id=86&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^sztucce/([0-9]+)$ index.php?a=page&id=86&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^sztucce/1$ sztucce [R=301,L]
|
||||
RewriteRule ^blog$ index.php?a=page&id=9&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^blog/([0-9]+)$ index.php?a=page&id=9&lang=pl&bs=$1&%{QUERY_STRING} [L]
|
||||
RewriteRule ^blog/1$ blog [R=301,L]
|
||||
RewriteRule ^wspieranie-odpornosci-zima-u-dzieci$ index.php?article=13&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^kolka-u-niemowlat-przyczyny-objawy-leczenie$ index.php?article=11&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^spacery-z-niemowlakiem-jak-sie-do-nich-przygotowac$ index.php?article=12&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^smoczek-dla-niemowlaka-wrog-czy-przyjaciel$ index.php?article=14&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^czerwona-kokarda-do-wozka-na-szczescie-i-nie-tylko$ index.php?article=15&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^z-czego-powinno-pic-niemowle-bidon-kubek-niekapek-a-moze-jeszcze-cos-innego$ index.php?article=16&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^jak-wybrac-kocyk-i-poduszke-niemowlaka$ index.php?article=10&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^rozszerzanie-diety-niemowlecia-kiedy-i-jak-zaczac$ index.php?article=17&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^co-warto-zabrac-jadac-na-urlop-z-dziecmi$ index.php?article=18&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^jaki-wybrac-gryzak-dla-niemowlaka$ index.php?article=19&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^prezent-dla-noworodka-oryginalne-prezenty-dla-niemowlat$ index.php?article=20&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^pielegnacja-noworodka-jak-prawidlowo-dbac-o-higiene-dziecka$ index.php?article=21&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteRule ^smoczki-bibs-czy-warto-kupowac$ index.php?article=22&lang=pl&%{QUERY_STRING} [L]
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteRule ^ index.php [L]
|
||||
RewriteRule ^ index.php [L]
|
||||
1
.serena/.gitignore
vendored
Normal file
1
.serena/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
/cache
|
||||
126
.serena/project.yml
Normal file
126
.serena/project.yml
Normal file
@@ -0,0 +1,126 @@
|
||||
# the name by which the project can be referenced within Serena
|
||||
project_name: "marianek.pl"
|
||||
|
||||
|
||||
# list of languages for which language servers are started; choose from:
|
||||
# al bash clojure cpp csharp
|
||||
# csharp_omnisharp dart elixir elm erlang
|
||||
# fortran fsharp go groovy haskell
|
||||
# java julia kotlin lua markdown
|
||||
# matlab nix pascal perl php
|
||||
# php_phpactor powershell python python_jedi r
|
||||
# rego ruby ruby_solargraph rust scala
|
||||
# swift terraform toml typescript typescript_vts
|
||||
# vue yaml zig
|
||||
# (This list may be outdated. For the current list, see values of Language enum here:
|
||||
# https://github.com/oraios/serena/blob/main/src/solidlsp/ls_config.py
|
||||
# For some languages, there are alternative language servers, e.g. csharp_omnisharp, ruby_solargraph.)
|
||||
# Note:
|
||||
# - For C, use cpp
|
||||
# - For JavaScript, use typescript
|
||||
# - For Free Pascal/Lazarus, use pascal
|
||||
# Special requirements:
|
||||
# Some languages require additional setup/installations.
|
||||
# See here for details: https://oraios.github.io/serena/01-about/020_programming-languages.html#language-servers
|
||||
# When using multiple languages, the first language server that supports a given file will be used for that file.
|
||||
# The first language is the default language and the respective language server will be used as a fallback.
|
||||
# Note that when using the JetBrains backend, language servers are not used and this list is correspondingly ignored.
|
||||
languages:
|
||||
- typescript
|
||||
|
||||
# the encoding used by text files in the project
|
||||
# For a list of possible encodings, see https://docs.python.org/3.11/library/codecs.html#standard-encodings
|
||||
encoding: "utf-8"
|
||||
|
||||
# The language backend to use for this project.
|
||||
# If not set, the global setting from serena_config.yml is used.
|
||||
# Valid values: LSP, JetBrains
|
||||
# Note: the backend is fixed at startup. If a project with a different backend
|
||||
# is activated post-init, an error will be returned.
|
||||
language_backend:
|
||||
|
||||
# whether to use project's .gitignore files to ignore files
|
||||
ignore_all_files_in_gitignore: true
|
||||
|
||||
# list of additional paths to ignore in this project.
|
||||
# Same syntax as gitignore, so you can use * and **.
|
||||
# Note: global ignored_paths from serena_config.yml are also applied additively.
|
||||
ignored_paths: []
|
||||
|
||||
# whether the project is in read-only mode
|
||||
# If set to true, all editing tools will be disabled and attempts to use them will result in an error
|
||||
# Added on 2025-04-18
|
||||
read_only: false
|
||||
|
||||
# list of tool names to exclude. We recommend not excluding any tools, see the readme for more details.
|
||||
# Below is the complete list of tools for convenience.
|
||||
# To make sure you have the latest list of tools, and to view their descriptions,
|
||||
# execute `uv run scripts/print_tool_overview.py`.
|
||||
#
|
||||
# * `activate_project`: Activates a project by name.
|
||||
# * `check_onboarding_performed`: Checks whether project onboarding was already performed.
|
||||
# * `create_text_file`: Creates/overwrites a file in the project directory.
|
||||
# * `delete_lines`: Deletes a range of lines within a file.
|
||||
# * `delete_memory`: Deletes a memory from Serena's project-specific memory store.
|
||||
# * `execute_shell_command`: Executes a shell command.
|
||||
# * `find_referencing_code_snippets`: Finds code snippets in which the symbol at the given location is referenced.
|
||||
# * `find_referencing_symbols`: Finds symbols that reference the symbol at the given location (optionally filtered by type).
|
||||
# * `find_symbol`: Performs a global (or local) search for symbols with/containing a given name/substring (optionally filtered by type).
|
||||
# * `get_current_config`: Prints the current configuration of the agent, including the active and available projects, tools, contexts, and modes.
|
||||
# * `get_symbols_overview`: Gets an overview of the top-level symbols defined in a given file.
|
||||
# * `initial_instructions`: Gets the initial instructions for the current project.
|
||||
# Should only be used in settings where the system prompt cannot be set,
|
||||
# e.g. in clients you have no control over, like Claude Desktop.
|
||||
# * `insert_after_symbol`: Inserts content after the end of the definition of a given symbol.
|
||||
# * `insert_at_line`: Inserts content at a given line in a file.
|
||||
# * `insert_before_symbol`: Inserts content before the beginning of the definition of a given symbol.
|
||||
# * `list_dir`: Lists files and directories in the given directory (optionally with recursion).
|
||||
# * `list_memories`: Lists memories in Serena's project-specific memory store.
|
||||
# * `onboarding`: Performs onboarding (identifying the project structure and essential tasks, e.g. for testing or building).
|
||||
# * `prepare_for_new_conversation`: Provides instructions for preparing for a new conversation (in order to continue with the necessary context).
|
||||
# * `read_file`: Reads a file within the project directory.
|
||||
# * `read_memory`: Reads the memory with the given name from Serena's project-specific memory store.
|
||||
# * `remove_project`: Removes a project from the Serena configuration.
|
||||
# * `replace_lines`: Replaces a range of lines within a file with new content.
|
||||
# * `replace_symbol_body`: Replaces the full definition of a symbol.
|
||||
# * `restart_language_server`: Restarts the language server, may be necessary when edits not through Serena happen.
|
||||
# * `search_for_pattern`: Performs a search for a pattern in the project.
|
||||
# * `summarize_changes`: Provides instructions for summarizing the changes made to the codebase.
|
||||
# * `switch_modes`: Activates modes by providing a list of their names
|
||||
# * `think_about_collected_information`: Thinking tool for pondering the completeness of collected information.
|
||||
# * `think_about_task_adherence`: Thinking tool for determining whether the agent is still on track with the current task.
|
||||
# * `think_about_whether_you_are_done`: Thinking tool for determining whether the task is truly completed.
|
||||
# * `write_memory`: Writes a named memory (for future reference) to Serena's project-specific memory store.
|
||||
excluded_tools: []
|
||||
|
||||
# list of tools to include that would otherwise be disabled (particularly optional tools that are disabled by default)
|
||||
included_optional_tools: []
|
||||
|
||||
# fixed set of tools to use as the base tool set (if non-empty), replacing Serena's default set of tools.
|
||||
# This cannot be combined with non-empty excluded_tools or included_optional_tools.
|
||||
fixed_tools: []
|
||||
|
||||
# list of mode names to that are always to be included in the set of active modes
|
||||
# The full set of modes to be activated is base_modes + default_modes.
|
||||
# If the setting is undefined, the base_modes from the global configuration (serena_config.yml) apply.
|
||||
# Otherwise, this setting overrides the global configuration.
|
||||
# Set this to [] to disable base modes for this project.
|
||||
# Set this to a list of mode names to always include the respective modes for this project.
|
||||
base_modes:
|
||||
|
||||
# list of mode names that are to be activated by default.
|
||||
# The full set of modes to be activated is base_modes + default_modes.
|
||||
# If the setting is undefined, the default_modes from the global configuration (serena_config.yml) apply.
|
||||
# Otherwise, this overrides the setting from the global configuration (serena_config.yml).
|
||||
# This setting can, in turn, be overridden by CLI parameters (--mode).
|
||||
default_modes:
|
||||
|
||||
# initial prompt for the project. It will always be given to the LLM upon activating the project
|
||||
# (contrary to the memories, which are loaded on demand).
|
||||
initial_prompt: ""
|
||||
|
||||
# time budget (seconds) per tool call for the retrieval of additional symbol information
|
||||
# such as docstrings or parameter information.
|
||||
# This overrides the corresponding setting in the global configuration; see the documentation there.
|
||||
# If null or missing, use the setting from the global configuration.
|
||||
symbol_info_budget:
|
||||
BIN
autoload/.DS_Store
vendored
BIN
autoload/.DS_Store
vendored
Binary file not shown.
@@ -360,6 +360,9 @@ class ArticleRepository
|
||||
public function archive(int $articleId): bool
|
||||
{
|
||||
$result = $this->db->update('pp_articles', ['status' => -1], ['id' => $articleId]);
|
||||
if ($result) {
|
||||
$this->db->delete('pp_routes', ['article_id' => $articleId]);
|
||||
}
|
||||
return (bool)$result;
|
||||
}
|
||||
|
||||
@@ -381,6 +384,7 @@ class ArticleRepository
|
||||
$this->db->delete('pp_articles_langs', ['article_id' => $articleId]);
|
||||
$this->db->delete('pp_articles_images', ['article_id' => $articleId]);
|
||||
$this->db->delete('pp_articles_files', ['article_id' => $articleId]);
|
||||
$this->db->delete('pp_routes', ['article_id' => $articleId]);
|
||||
$this->db->delete('pp_articles', ['id' => $articleId]);
|
||||
|
||||
\Shared\Helpers\Helpers::delete_dir('../upload/article_images/article_' . $articleId . '/');
|
||||
|
||||
@@ -174,6 +174,7 @@ class CategoryRepository
|
||||
|
||||
$deleted = (bool)$this->db->delete('pp_shop_categories', ['id' => $id]);
|
||||
if ($deleted) {
|
||||
$this->db->delete('pp_routes', ['category_id' => $id]);
|
||||
$this->refreshCategoryArtifacts();
|
||||
}
|
||||
|
||||
|
||||
@@ -134,7 +134,11 @@ class PagesRepository
|
||||
return false;
|
||||
}
|
||||
|
||||
return (bool)$this->db->delete('pp_pages', ['id' => $pageId]);
|
||||
$deleted = (bool)$this->db->delete('pp_pages', ['id' => $pageId]);
|
||||
if ($deleted) {
|
||||
$this->db->delete('pp_routes', ['page_id' => $pageId]);
|
||||
}
|
||||
return $deleted;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -172,13 +172,19 @@ class UpdateRepository
|
||||
|
||||
foreach ( $manifest['sql'] as $query ) {
|
||||
$query = trim( $query );
|
||||
if ( $query !== '' ) {
|
||||
if ( $query === '' || strpos( $query, '--' ) === 0 ) {
|
||||
continue;
|
||||
}
|
||||
try {
|
||||
if ( $this->db->query( $query ) ) {
|
||||
$success++;
|
||||
} else {
|
||||
$errors++;
|
||||
$log[] = '[WARNING] Błąd SQL: ' . $query;
|
||||
}
|
||||
} catch ( \Exception $e ) {
|
||||
$errors++;
|
||||
$log[] = '[WARNING] Wyjątek SQL: ' . $e->getMessage() . ' | Query: ' . substr( $query, 0, 200 );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -425,42 +425,206 @@ class Helpers
|
||||
$site_map .= '<priority>1</priority>' . PHP_EOL;
|
||||
$site_map .= '</url>' . PHP_EOL;
|
||||
|
||||
$htaccess_data = file_get_contents( $dir . 'libraries/htaccess.conf' );
|
||||
$htaccess_data = str_replace( '{PAGE}', $url, $htaccess_data );
|
||||
//
|
||||
// SYSTEM ROUTES — delete all and reinsert
|
||||
//
|
||||
$mdb->delete( 'pp_routes', [ 'type' => 'system' ] );
|
||||
|
||||
$results = $mdb -> select( 'pp_langs', [ 'id' ], [ 'status' => 1, 'ORDER' => [ 'o' => 'ASC' ] ] );
|
||||
// Static system routes (hardcoded, never change)
|
||||
$systemRoutes = [
|
||||
// Wyszukiwarka
|
||||
[ 'pattern' => '^wyszukiwarka/([^/]+)/([0-9]+)$', 'destination' => 'index.php?module=search&action=search_results&query=$1&bs=$2' ],
|
||||
[ 'pattern' => '^wyszukiwarka/([^/]+)$', 'destination' => 'index.php?module=search&action=search_results&query=$1&bs=1' ],
|
||||
// Zamowienia
|
||||
[ 'pattern' => '^zamowienie/([a-zA-Z0-9-]+)$', 'destination' => 'index.php?module=shop_order&action=order_details&order_hash=$1' ],
|
||||
[ 'pattern' => '^potwierdzenie-platnosci/([a-zA-Z0-9-]+)$', 'destination' => 'index.php?module=shop_order&action=payment_confirmation&order_hash=$1' ],
|
||||
// Platnosci
|
||||
[ 'pattern' => '^tpay-status$', 'destination' => 'index.php?module=shop_order&action=payment_status_tpay' ],
|
||||
[ 'pattern' => '^platnosc-status$', 'destination' => 'index.php?module=shop_order&action=payment_status_hotpay' ],
|
||||
[ 'pattern' => '^przelewy24-status$', 'destination' => 'index.php?module=shop_order&action=payment_status_przelewy24pl' ],
|
||||
// Koszyk
|
||||
[ 'pattern' => '^koszyk$', 'destination' => 'index.php?module=shop_basket&action=main_view' ],
|
||||
[ 'pattern' => '^koszyk-podsumowanie$', 'destination' => 'index.php?module=shop_basket&action=summary_view' ],
|
||||
[ 'pattern' => '^zloz-zamowienie$', 'destination' => 'index.php?module=shop_basket&action=basket_save' ],
|
||||
// Klient
|
||||
[ 'pattern' => '^rejestracja$', 'destination' => 'index.php?module=shop_client&action=register_form' ],
|
||||
[ 'pattern' => '^logowanie$', 'destination' => 'index.php?module=shop_client&action=login_form' ],
|
||||
[ 'pattern' => '^wylogowanie$', 'destination' => 'index.php?module=shop_client&action=logout' ],
|
||||
[ 'pattern' => '^odzyskiwanie-hasla$', 'destination' => 'index.php?module=shop_client&action=recover_password' ],
|
||||
[ 'pattern' => '^panel-klienta/zamowienia$', 'destination' => 'index.php?module=shop_client&action=client_orders' ],
|
||||
[ 'pattern' => '^panel-klienta/adresy$', 'destination' => 'index.php?module=shop_client&action=client_addresses' ],
|
||||
[ 'pattern' => '^panel-klienta/nowy-adres$', 'destination' => 'index.php?module=shop_client&action=address_edit' ],
|
||||
[ 'pattern' => '^panel-klienta/edytuj-adres/([0-9]+)$', 'destination' => 'index.php?module=shop_client&action=address_edit&id=$1' ],
|
||||
[ 'pattern' => '^panel-klienta/usun-adres/([0-9]+)$', 'destination' => 'index.php?module=shop_client&action=address_delete&id=$1' ],
|
||||
// Newsletter
|
||||
[ 'pattern' => '^newsletter/signin$', 'destination' => 'index.php?module=newsletter&action=signin' ],
|
||||
[ 'pattern' => '^newsletter/confirm/hash=(.+)$', 'destination' => 'index.php?module=newsletter&action=confirm&hash=$1' ],
|
||||
[ 'pattern' => '^newsletter/unsubscribe/hash=(.+)$', 'destination' => 'index.php?module=newsletter&action=unsubscribe&hash=$1' ],
|
||||
// Moduły AJAX (shopBasket, shopClient, shopProduct, shopCoupon, search)
|
||||
[ 'pattern' => '^shopBasket/([^/]+)/(.+)$', 'destination' => 'index.php?module=shopBasket&action=$1&$2' ],
|
||||
[ 'pattern' => '^shopBasket/([^/]+)$', 'destination' => 'index.php?module=shopBasket&action=$1' ],
|
||||
[ 'pattern' => '^shopClient/([^/]+)/(.+)$', 'destination' => 'index.php?module=shopClient&action=$1&$2' ],
|
||||
[ 'pattern' => '^shopClient/([^/]+)$', 'destination' => 'index.php?module=shopClient&action=$1' ],
|
||||
[ 'pattern' => '^shopProduct/([^/]+)/(.+)$', 'destination' => 'index.php?module=shopProduct&action=$1&$2' ],
|
||||
[ 'pattern' => '^shopProduct/([^/]+)$', 'destination' => 'index.php?module=shopProduct&action=$1' ],
|
||||
[ 'pattern' => '^shopCoupon/([^/]+)/(.+)$', 'destination' => 'index.php?module=shopCoupon&action=$1&$2' ],
|
||||
[ 'pattern' => '^shopCoupon/([^/]+)$', 'destination' => 'index.php?module=shopCoupon&action=$1' ],
|
||||
[ 'pattern' => '^search/([^/]+)/(.+)$', 'destination' => 'index.php?module=search&action=$1&$2' ],
|
||||
[ 'pattern' => '^search/([^/]+)$', 'destination' => 'index.php?module=search&action=$1' ],
|
||||
];
|
||||
|
||||
foreach ( $systemRoutes as $route )
|
||||
{
|
||||
$mdb->insert( 'pp_routes', [
|
||||
'type' => 'system',
|
||||
'lang_id' => 0,
|
||||
'pattern' => $route['pattern'],
|
||||
'destination' => $route['destination'],
|
||||
] );
|
||||
}
|
||||
|
||||
// Dynamic system routes — languages
|
||||
$results = $mdb->select( 'pp_langs', [ 'id' ], [ 'status' => 1, 'ORDER' => [ 'o' => 'ASC' ] ] );
|
||||
if ( is_array( $results ) ) foreach ( $results as $row )
|
||||
{
|
||||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $row['id'] . '/$ index.php?a=change_language&id=' . $row['id'] . ' [L]';
|
||||
$mdb->insert( 'pp_routes', [
|
||||
'type' => 'system',
|
||||
'lang_id' => 0,
|
||||
'pattern' => '^' . $row['id'] . '$',
|
||||
'destination' => 'index.php?a=change_language&id=' . $row['id'],
|
||||
] );
|
||||
}
|
||||
|
||||
//
|
||||
// INNE
|
||||
//
|
||||
$htaccess_data .= PHP_EOL;
|
||||
$htaccess_data .= 'RewriteRule ^newsletter/signin/$ index.php?module=newsletter&action=signin [L]' . PHP_EOL;
|
||||
$htaccess_data .= 'RewriteRule ^newsletter/confirm/hash=(.*)$ index.php?module=newsletter&action=confirm&hash=$1 [L]' . PHP_EOL;
|
||||
$htaccess_data .= 'RewriteRule ^newsletter/unsubscribe/hash=(.*)$ index.php?module=newsletter&action=unsubscribe&hash=$1 [L]' . PHP_EOL;
|
||||
|
||||
//
|
||||
// PRODUCENCI
|
||||
//
|
||||
// Dynamic system routes — producenci
|
||||
$categoryDefaultLayoutId = ( new \Domain\Layouts\LayoutsRepository( $mdb ) )->categoryDefaultLayoutId();
|
||||
$htaccess_data .= 'RewriteRule ^producenci$ index.php?module=shop_producer&action=list&layout_id=' . $categoryDefaultLayoutId . '&%{QUERY_STRING} [L]' . PHP_EOL;
|
||||
|
||||
$rows = $mdb -> select( 'pp_shop_producer', '*', [ 'status' => 1 ] );
|
||||
$mdb->insert( 'pp_routes', [
|
||||
'type' => 'system',
|
||||
'lang_id' => 0,
|
||||
'pattern' => '^producenci$',
|
||||
'destination' => 'index.php?module=shop_producer&action=list&layout_id=' . $categoryDefaultLayoutId,
|
||||
] );
|
||||
|
||||
$rows = $mdb->select( 'pp_shop_producer', '*', [ 'status' => 1 ] );
|
||||
if ( self::is_array_fix( $rows ) ) foreach ( $rows as $row )
|
||||
{
|
||||
$htaccess_data .= 'RewriteRule ^producent/' . self::seo( $row['name'] ) . '$ index.php?module=shop_producer&action=products&producer_id=' . $row['id'] . '&layout_id=' . $categoryDefaultLayoutId . '&%{QUERY_STRING} [L]' . PHP_EOL;
|
||||
$htaccess_data .= 'RewriteRule ^producent/' . self::seo( $row['name'] ) . '/([0-9]+)$ index.php?module=shop_producer&action=products&producer_id=' . $row['id'] . '&layout_id=' . $categoryDefaultLayoutId . '&bs=$1&%{QUERY_STRING} [L]' . PHP_EOL;
|
||||
$mdb->insert( 'pp_routes', [
|
||||
'type' => 'system',
|
||||
'lang_id' => 0,
|
||||
'pattern' => '^producent/' . self::seo( $row['name'] ) . '$',
|
||||
'destination' => 'index.php?module=shop_producer&action=products&producer_id=' . $row['id'] . '&layout_id=' . $categoryDefaultLayoutId,
|
||||
] );
|
||||
$mdb->insert( 'pp_routes', [
|
||||
'type' => 'system',
|
||||
'lang_id' => 0,
|
||||
'pattern' => '^producent/' . self::seo( $row['name'] ) . '/([0-9]+)$',
|
||||
'destination' => 'index.php?module=shop_producer&action=products&producer_id=' . $row['id'] . '&layout_id=' . $categoryDefaultLayoutId . '&bs=$1',
|
||||
] );
|
||||
}
|
||||
|
||||
$results = $mdb -> select( 'pp_langs', [ 'id', 'start' ], [ 'status' => 1, 'ORDER' => [ 'o' => 'ASC' ] ] );
|
||||
//
|
||||
// HTACCESS — generuj z PHP (bez szablonu htaccess.conf)
|
||||
//
|
||||
$htaccess_data = 'RewriteEngine On' . PHP_EOL;
|
||||
$htaccess_data .= 'RewriteBase /' . PHP_EOL;
|
||||
$htaccess_data .= 'Options +FollowSymlinks' . PHP_EOL;
|
||||
$htaccess_data .= 'Options -Indexes' . PHP_EOL;
|
||||
$htaccess_data .= PHP_EOL;
|
||||
$htaccess_data .= '# Przekierowanie z www na bez www i z http na https w jednym kroku' . PHP_EOL;
|
||||
$htaccess_data .= 'RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]' . PHP_EOL;
|
||||
$htaccess_data .= 'RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]' . PHP_EOL;
|
||||
$htaccess_data .= PHP_EOL;
|
||||
$htaccess_data .= '# Przekierowanie z http na https, jesli nie zawiera www' . PHP_EOL;
|
||||
$htaccess_data .= 'RewriteCond %{HTTPS} off' . PHP_EOL;
|
||||
$htaccess_data .= 'RewriteCond %{REQUEST_URI} !^/(tpay-status|platnosc-status|przelewy24-status)$ [NC]' . PHP_EOL;
|
||||
$htaccess_data .= 'RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]' . PHP_EOL;
|
||||
$htaccess_data .= PHP_EOL;
|
||||
$htaccess_data .= '# Usuwanie koncowego slasha dla niekatalogów' . PHP_EOL;
|
||||
$htaccess_data .= 'RewriteCond %{REQUEST_FILENAME} !-d' . PHP_EOL;
|
||||
$htaccess_data .= 'RewriteCond %{REQUEST_URI} !^/admin/.*$ [NC]' . PHP_EOL;
|
||||
$htaccess_data .= 'RewriteCond %{REQUEST_URI} (.+)/$' . PHP_EOL;
|
||||
$htaccess_data .= 'RewriteRule ^ %1 [R=301,L]' . PHP_EOL;
|
||||
$htaccess_data .= PHP_EOL;
|
||||
$htaccess_data .= 'RewriteCond %{REQUEST_URI} !^(.*)/libraries/(.*) [NC]' . PHP_EOL;
|
||||
$htaccess_data .= 'RewriteCond %{REQUEST_URI} !^(.*)/layout/(.*) [NC]' . PHP_EOL;
|
||||
$htaccess_data .= 'RewriteRule ^admin/([^/]*)/([^/]*)/(.*)$ admin/index.php?module=$1&action=$2&$3 [L]' . PHP_EOL;
|
||||
$htaccess_data .= PHP_EOL;
|
||||
$htaccess_data .= 'RewriteRule ^admin/$ admin/index.php [L]' . PHP_EOL;
|
||||
$htaccess_data .= PHP_EOL;
|
||||
$htaccess_data .= 'RewriteRule ^thumb/([0-9]*)/([0-9]*)/(.*)$ /libraries/thumb.php?img=$3&w=$1&h=$2 [L]' . PHP_EOL;
|
||||
$htaccess_data .= PHP_EOL;
|
||||
$htaccess_data .= 'RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index.php' . PHP_EOL;
|
||||
$htaccess_data .= 'RewriteRule ^ /%1 [R=301,L]' . PHP_EOL;
|
||||
|
||||
/* cache block */
|
||||
if ( $settings['htaccess_cache'] )
|
||||
{
|
||||
$htaccess_data .= '<IfModule mod_deflate.c>' . PHP_EOL
|
||||
. 'AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript' . PHP_EOL
|
||||
. '</IfModule>' . PHP_EOL
|
||||
. '<IfModule mod_headers.c>' . PHP_EOL
|
||||
. 'Header set Access-Control-Allow-Origin "*"' . PHP_EOL
|
||||
. '</IfModule>' . PHP_EOL
|
||||
. '<IfModule mod_expires.c>' . PHP_EOL
|
||||
. 'ExpiresActive on' . PHP_EOL
|
||||
. 'ExpiresDefault "access plus 1 month"' . PHP_EOL
|
||||
. 'ExpiresByType text/css "access plus 1 year"' . PHP_EOL
|
||||
. 'ExpiresByType application/json "access plus 0 seconds"' . PHP_EOL
|
||||
. 'ExpiresByType application/xml "access plus 0 seconds"' . PHP_EOL
|
||||
. 'ExpiresByType text/xml "access plus 0 seconds"' . PHP_EOL
|
||||
. 'ExpiresByType image/x-icon "access plus 1 week"' . PHP_EOL
|
||||
. 'ExpiresByType text/x-component "access plus 1 month"' . PHP_EOL
|
||||
. 'ExpiresByType text/html "access plus 0 seconds"' . PHP_EOL
|
||||
. 'ExpiresByType application/javascript "access plus 1 year"' . PHP_EOL
|
||||
. 'ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"' . PHP_EOL
|
||||
. 'ExpiresByType text/cache-manifest "access plus 0 seconds"' . PHP_EOL
|
||||
. 'ExpiresByType audio/ogg "access plus 1 month"' . PHP_EOL
|
||||
. 'ExpiresByType image/gif "access plus 1 month"' . PHP_EOL
|
||||
. 'ExpiresByType image/jpeg "access plus 1 month"' . PHP_EOL
|
||||
. 'ExpiresByType image/png "access plus 1 month"' . PHP_EOL
|
||||
. 'ExpiresByType video/mp4 "access plus 1 month"' . PHP_EOL
|
||||
. 'ExpiresByType video/ogg "access plus 1 month"' . PHP_EOL
|
||||
. 'ExpiresByType video/webm "access plus 1 month"' . PHP_EOL
|
||||
. 'ExpiresByType application/atom+xml "access plus 1 hour"' . PHP_EOL
|
||||
. 'ExpiresByType application/rss+xml "access plus 1 hour"' . PHP_EOL
|
||||
. 'ExpiresByType application/font-woff "access plus 1 month"' . PHP_EOL
|
||||
. 'ExpiresByType application/vnd.ms-fontobject "access plus 1 month"' . PHP_EOL
|
||||
. 'ExpiresByType application/x-font-ttf "access plus 1 month"' . PHP_EOL
|
||||
. 'ExpiresByType font/opentype "access plus 1 month"' . PHP_EOL
|
||||
. 'ExpiresByType image/svg+xml "access plus 1 month"' . PHP_EOL
|
||||
. '</IfModule>' . PHP_EOL;
|
||||
}
|
||||
else
|
||||
{
|
||||
$htaccess_data .= '<IfModule mod_headers.c>' . PHP_EOL
|
||||
. 'Header set Cache-Control "no-cache, no-store, must-revalidate"' . PHP_EOL
|
||||
. 'Header set Pragma "no-cache"' . PHP_EOL
|
||||
. 'Header set Expires 0' . PHP_EOL
|
||||
. '</IfModule>' . PHP_EOL;
|
||||
}
|
||||
|
||||
$htaccess_data .= '<Files *.conf>' . PHP_EOL;
|
||||
$htaccess_data .= ' Order Deny,Allow' . PHP_EOL;
|
||||
$htaccess_data .= ' Deny from all' . PHP_EOL;
|
||||
$htaccess_data .= '</Files>' . PHP_EOL;
|
||||
$htaccess_data .= '<Files *.log>' . PHP_EOL;
|
||||
$htaccess_data .= ' Order Deny,Allow' . PHP_EOL;
|
||||
$htaccess_data .= ' Deny from all' . PHP_EOL;
|
||||
$htaccess_data .= '</Files>' . PHP_EOL;
|
||||
$htaccess_data .= '<Files *.ini>' . PHP_EOL;
|
||||
$htaccess_data .= ' Order Deny,Allow' . PHP_EOL;
|
||||
$htaccess_data .= ' Deny from all' . PHP_EOL;
|
||||
$htaccess_data .= '</Files>' . PHP_EOL;
|
||||
|
||||
//
|
||||
// KATEGORIE — sitemap + pp_routes (bez zmian)
|
||||
//
|
||||
$results = $mdb->select( 'pp_langs', [ 'id', 'start' ], [ 'status' => 1, 'ORDER' => [ 'o' => 'ASC' ] ] );
|
||||
if ( is_array( $results ) ) foreach ( $results as $row )
|
||||
{
|
||||
!$row['start'] ? $language_link = $row['id'] . '/' : $language_link = '';
|
||||
|
||||
$results2 = $mdb -> select( 'pp_shop_categories_langs', [ '[><]pp_shop_categories' => [ 'category_id' => 'id' ] ], [ 'seo_link', 'title', 'category_id' ], [ 'lang_id' => $row['id'], 'ORDER' => [ 'o' => 'ASC' ] ] );
|
||||
$results2 = $mdb->select( 'pp_shop_categories_langs', [ '[><]pp_shop_categories' => [ 'category_id' => 'id' ] ], [ 'seo_link', 'title', 'category_id' ], [ 'lang_id' => $row['id'], 'ORDER' => [ 'o' => 'ASC' ] ] );
|
||||
if ( is_array( $results2 ) ) foreach ( $results2 as $row2 )
|
||||
{
|
||||
if ( $row2['title'] )
|
||||
@@ -475,35 +639,42 @@ class Helpers
|
||||
$site_map .= '<priority>1</priority>' . PHP_EOL;
|
||||
$site_map .= '</url>' . PHP_EOL;
|
||||
|
||||
if ( $row2['seo_link'] )
|
||||
{
|
||||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $language_link . self::seo( $row2['seo_link'] ) . '$ index.php?category=' . $row2['category_id'] . '&lang=' . $row['id'] . '&%{QUERY_STRING} [L]';
|
||||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $language_link . self::seo( $row2['seo_link'] ) . '/([0-9]+)$ index.php?category=' . $row2['category_id'] . '&lang=' . $row['id'] . '&bs=$1&%{QUERY_STRING} [L]';
|
||||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $language_link . self::seo( $row2['seo_link'] ) . '/1$ ' . $language_link . self::seo( $row2['seo_link'] ) . ' [R=301,L]';
|
||||
}
|
||||
else
|
||||
{
|
||||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $language_link . 'k-' . $row2['category_id'] . '-' . self::seo( $row2['title'] ) . '$ index.php?category=' . $row2['category_id'] . '&lang=' . $row['id'] . '&%{QUERY_STRING} [L]';
|
||||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $language_link . 'k-' . $row2['category_id'] . '-' . self::seo( $row2['title'] ) . '/([0-9]+)$ index.php?category=' . $row2['category_id'] . '&lang=' . $row['id'] . '&bs=$1&%{QUERY_STRING} [L]';
|
||||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $language_link . 'k-' . $row2['category_id'] . '-' . self::seo( $row2['title'] ) . '/1$ ' . $language_link . 'k-' . $row2['category_id'] . '-' . self::seo( $row2['title'] ) . ' [R=301,L]';
|
||||
}
|
||||
$seoSlug = $row2['seo_link'] ? self::seo( $row2['seo_link'] ) : 'k-' . $row2['category_id'] . '-' . self::seo( $row2['title'] );
|
||||
|
||||
$mdb->delete( 'pp_routes', [ 'AND' => [ 'category_id' => $row2['category_id'], 'lang_id' => $row['id'] ] ] );
|
||||
|
||||
$mdb->insert( 'pp_routes', [
|
||||
'category_id' => $row2['category_id'],
|
||||
'lang_id' => $row['id'],
|
||||
'pattern' => '^' . $language_link . $seoSlug . '$',
|
||||
'destination' => 'index.php?category=' . $row2['category_id'] . '&lang=' . $row['id'],
|
||||
] );
|
||||
$mdb->insert( 'pp_routes', [
|
||||
'category_id' => $row2['category_id'],
|
||||
'lang_id' => $row['id'],
|
||||
'pattern' => '^' . $language_link . $seoSlug . '/([0-9]+)$',
|
||||
'destination' => 'index.php?category=' . $row2['category_id'] . '&lang=' . $row['id'] . '&bs=$1',
|
||||
] );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$results = $mdb -> select( 'pp_langs', [ 'id', 'start' ], [ 'status' => 1, 'ORDER' => [ 'o' => 'ASC' ] ] );
|
||||
//
|
||||
// PRODUKTY — sitemap + pp_routes (bez zmian)
|
||||
//
|
||||
$results = $mdb->select( 'pp_langs', [ 'id', 'start' ], [ 'status' => 1, 'ORDER' => [ 'o' => 'ASC' ] ] );
|
||||
if ( is_array( $results ) )
|
||||
{
|
||||
foreach ( $results as $row )
|
||||
{
|
||||
!$row['start'] ? $language_link = $row['id'] . '/' : $language_link = '';
|
||||
|
||||
$results2 = $mdb -> select( 'pp_shop_products_langs', [ '[><]pp_shop_products' => [ 'product_id' => 'id' ] ], [ 'seo_link', 'name', 'product_id' ], [ 'lang_id' => $row['id'], 'ORDER' => [ 'name' => 'ASC' ] ] );
|
||||
$results2 = $mdb->select( 'pp_shop_products_langs', [ '[><]pp_shop_products' => [ 'product_id' => 'id' ] ], [ 'seo_link', 'name', 'product_id' ], [ 'lang_id' => $row['id'], 'ORDER' => [ 'name' => 'ASC' ] ] );
|
||||
if ( is_array( $results2 ) )
|
||||
{
|
||||
foreach ( $results2 as $row2 )
|
||||
{
|
||||
$mdb -> delete( 'pp_routes', [ 'AND' => [ 'product_id' => $row2['product_id'], 'lang_id' => $row['id'] ] ] );
|
||||
$mdb->delete( 'pp_routes', [ 'AND' => [ 'product_id' => $row2['product_id'], 'lang_id' => $row['id'] ] ] );
|
||||
|
||||
if ( $row2['name'] )
|
||||
{
|
||||
@@ -519,27 +690,13 @@ class Helpers
|
||||
|
||||
if ( $row2['seo_link'] )
|
||||
{
|
||||
$pattern = '^' . $language_link . self::seo( $row2['seo_link'] ) . '$';
|
||||
$destination = 'index.php?product=' . $row2['product_id'];
|
||||
|
||||
$mdb -> insert( 'pp_routes', [ 'product_id' => $row2['product_id'], 'lang_id' => $row['id'], 'pattern' => $pattern, 'destination' => $destination ] );
|
||||
|
||||
$pattern = '^' . $language_link . self::seo( $row2['seo_link'] ) . '/([0-9-]+)$';
|
||||
$destination = 'index.php?product=' . $row2['product_id'] . '&permutation_hash=$1';
|
||||
|
||||
$mdb -> insert( 'pp_routes', [ 'product_id' => $row2['product_id'], 'lang_id' => $row['id'], 'pattern' => $pattern, 'destination' => $destination ] );
|
||||
$mdb->insert( 'pp_routes', [ 'product_id' => $row2['product_id'], 'lang_id' => $row['id'], 'pattern' => '^' . $language_link . self::seo( $row2['seo_link'] ) . '$', 'destination' => 'index.php?product=' . $row2['product_id'] ] );
|
||||
$mdb->insert( 'pp_routes', [ 'product_id' => $row2['product_id'], 'lang_id' => $row['id'], 'pattern' => '^' . $language_link . self::seo( $row2['seo_link'] ) . '/([0-9-]+)$', 'destination' => 'index.php?product=' . $row2['product_id'] . '&permutation_hash=$1' ] );
|
||||
}
|
||||
else
|
||||
{
|
||||
$pattern = '^' . $language_link . 'p-' . $row2['product_id'] . '-' . self::seo( $row2['name'] ) . '$';
|
||||
$destination = 'index.php?product=' . $row2['product_id'];
|
||||
|
||||
$mdb -> insert( 'pp_routes', [ 'product_id' => $row2['product_id'], 'lang_id' => $row['id'], 'pattern' => $pattern, 'destination' => $destination ] );
|
||||
|
||||
$pattern = '^' . $language_link . 'p-' . $row2['product_id'] . '-' . self::seo( $row2['name'] ) . '/([0-9-]+)$';
|
||||
$destination = 'index.php?product=' . $row2['product_id'] . '&permutation_hash=$1';
|
||||
|
||||
$mdb -> insert( 'pp_routes', [ 'product_id' => $row2['product_id'], 'lang_id' => $row['id'], 'pattern' => $pattern, 'destination' => $destination ] );
|
||||
$mdb->insert( 'pp_routes', [ 'product_id' => $row2['product_id'], 'lang_id' => $row['id'], 'pattern' => '^' . $language_link . 'p-' . $row2['product_id'] . '-' . self::seo( $row2['name'] ) . '$', 'destination' => 'index.php?product=' . $row2['product_id'] ] );
|
||||
$mdb->insert( 'pp_routes', [ 'product_id' => $row2['product_id'], 'lang_id' => $row['id'], 'pattern' => '^' . $language_link . 'p-' . $row2['product_id'] . '-' . self::seo( $row2['name'] ) . '/([0-9-]+)$', 'destination' => 'index.php?product=' . $row2['product_id'] . '&permutation_hash=$1' ] );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -547,13 +704,16 @@ class Helpers
|
||||
}
|
||||
}
|
||||
|
||||
$results = $mdb -> select( 'pp_langs', [ 'id', 'start' ], [ 'status' => 1, 'ORDER' => [ 'o' => 'ASC' ] ] );
|
||||
//
|
||||
// STRONY + ARTYKULY — sitemap + pp_routes (bez zmian)
|
||||
//
|
||||
$results = $mdb->select( 'pp_langs', [ 'id', 'start' ], [ 'status' => 1, 'ORDER' => [ 'o' => 'ASC' ] ] );
|
||||
if ( is_array( $results ) )
|
||||
foreach ( $results as $row )
|
||||
{
|
||||
( !$row['start'] and count( $results ) > 1 ) ? $language_link = $row['id'] . '/' : $language_link = '';
|
||||
|
||||
$results2 = $mdb -> select( 'pp_pages_langs', [ '[><]pp_pages' => [ 'page_id' => 'id' ] ], [ 'seo_link', 'title', 'page_id', 'noindex', 'start', 'link', 'page_type' ], [ 'lang_id' => $row['id'], 'ORDER' => [ 'start' => 'DESC', 'o' => 'ASC' ] ] );
|
||||
$results2 = $mdb->select( 'pp_pages_langs', [ '[><]pp_pages' => [ 'page_id' => 'id' ] ], [ 'seo_link', 'title', 'page_id', 'noindex', 'start', 'link', 'page_type' ], [ 'lang_id' => $row['id'], 'ORDER' => [ 'start' => 'DESC', 'o' => 'ASC' ] ] );
|
||||
if ( is_array( $results2 ) )
|
||||
foreach ( $results2 as $row2 )
|
||||
{
|
||||
@@ -590,44 +750,39 @@ class Helpers
|
||||
{
|
||||
$htaccess_data .= PHP_EOL . 'RewriteCond %{REQUEST_URI} ^/s-' . $row2['page_id'] . '-' . self::seo( $row2['title'] ) . '$';
|
||||
$htaccess_data .= PHP_EOL . 'RewriteRule ^(.*)$ http://www.' . $url . '/' . $language_link . ' [R=permanent,L]';
|
||||
|
||||
$htaccess_data .= PHP_EOL . 'RewriteCond %{REQUEST_URI} ^/s-' . $row2['page_id'] . '-' . self::seo( $row2['title'] ) . '-1$';
|
||||
$htaccess_data .= PHP_EOL . 'RewriteRule ^(.*)$ http://www.' . $url . '/' . $language_link . ' [R=permanent,L]';
|
||||
}
|
||||
|
||||
$htaccess_data .= PHP_EOL . 'RewriteRule ^$ index.php?a=page&id=' . $row2['page_id'] . '&lang=' . $row['id'] . ' [L]';
|
||||
}
|
||||
|
||||
if ( $row2['seo_link'] )
|
||||
{
|
||||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $language_link . self::seo( $row2['seo_link'] ) . '$ index.php?a=page&id=' . $row2['page_id'] . '&lang=' . $row['id'] . '&%{QUERY_STRING} [L]';
|
||||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $language_link . self::seo( $row2['seo_link'] ) . '/([0-9]+)$ index.php?a=page&id=' . $row2['page_id'] . '&lang=' . $row['id'] . '&bs=$1&%{QUERY_STRING} [L]';
|
||||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $language_link . self::seo( $row2['seo_link'] ) . '/1$ ' . $language_link . self::seo( $row2['seo_link'] ) . ' [R=301,L]';
|
||||
}
|
||||
else
|
||||
{
|
||||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $language_link . 's-' . $row2['page_id'] . '-' . self::seo( $row2['title'] ) . '$ index.php?a=page&id=' . $row2['page_id'] . '&lang=' . $row['id'] . '&%{QUERY_STRING} [L]';
|
||||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $language_link . 's-' . $row2['page_id'] . '-' . self::seo( $row2['title'] ) . '/([0-9]+)$ index.php?a=page&id=' . $row2['page_id'] . '&lang=' . $row['id'] . '&bs=$1&%{QUERY_STRING} [L]';
|
||||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $language_link . 's-' . $row2['page_id'] . '-' . self::seo( $row2['title'] ) . '/1$ ' . $language_link . 's-' . $row2['page_id'] . '-' . self::seo( $row2['title'] ) . ' [R=301,L]';
|
||||
}
|
||||
$seoSlug = $row2['seo_link'] ? self::seo( $row2['seo_link'] ) : 's-' . $row2['page_id'] . '-' . self::seo( $row2['title'] );
|
||||
$langPrefix = $row2['start'] ? '' : $language_link;
|
||||
|
||||
$mdb->delete( 'pp_routes', [ 'AND' => [ 'page_id' => $row2['page_id'], 'lang_id' => $row['id'] ] ] );
|
||||
|
||||
$mdb->insert( 'pp_routes', [
|
||||
'page_id' => $row2['page_id'],
|
||||
'lang_id' => $row['id'],
|
||||
'pattern' => '^' . $langPrefix . $seoSlug . '$',
|
||||
'destination' => 'index.php?a=page&id=' . $row2['page_id'] . '&lang=' . $row['id'],
|
||||
] );
|
||||
$mdb->insert( 'pp_routes', [
|
||||
'page_id' => $row2['page_id'],
|
||||
'lang_id' => $row['id'],
|
||||
'pattern' => '^' . $langPrefix . $seoSlug . '/([0-9]+)$',
|
||||
'destination' => 'index.php?a=page&id=' . $row2['page_id'] . '&lang=' . $row['id'] . '&bs=$1',
|
||||
] );
|
||||
}
|
||||
}
|
||||
|
||||
$results2 = $mdb -> select( 'pp_articles_langs', [ '[><]pp_articles' => [ 'article_id' => 'id' ] ], [ 'seo_link', 'title', 'article_id', 'noindex', 'copy_from' ], [ 'AND' => [ 'status' => 1, 'lang_id' => $row['id'], 'block_direct_access' => 0 ] ] );
|
||||
$results2 = $mdb->select( 'pp_articles_langs', [ '[><]pp_articles' => [ 'article_id' => 'id' ] ], [ 'seo_link', 'title', 'article_id', 'noindex', 'copy_from' ], [ 'AND' => [ 'status' => 1, 'lang_id' => $row['id'], 'block_direct_access' => 0 ] ] );
|
||||
if ( is_array( $results2 ) )
|
||||
foreach ( $results2 as $row2 )
|
||||
{
|
||||
if ( $row2['copy_from'] != null )
|
||||
{
|
||||
$results_tmp = $mdb -> get( 'pp_articles_langs', [
|
||||
'seo_link',
|
||||
'title'
|
||||
], [
|
||||
'AND' => [
|
||||
'article_id' => $row2['article_id'],
|
||||
'lang_id' => $row2['copy_from']
|
||||
]
|
||||
] );
|
||||
$results_tmp = $mdb->get( 'pp_articles_langs', [ 'seo_link', 'title' ], [ 'AND' => [ 'article_id' => $row2['article_id'], 'lang_id' => $row2['copy_from'] ] ] );
|
||||
$row2['seo_link'] = $results_tmp['seo_link'];
|
||||
$row2['title'] = $results_tmp['title'];
|
||||
}
|
||||
@@ -650,81 +805,52 @@ class Helpers
|
||||
$robots .= 'Disallow: /' . $row2['seo_link'] . PHP_EOL;
|
||||
}
|
||||
|
||||
$mdb->delete( 'pp_routes', [ 'AND' => [ 'article_id' => $row2['article_id'], 'lang_id' => $row['id'] ] ] );
|
||||
|
||||
if ( $row2['seo_link'] )
|
||||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $language_link . self::seo( $row2['seo_link'] ) . '$ index.php?article=' . $row2['article_id'] . '&lang=' . $row['id'] . '&%{QUERY_STRING} [L]';
|
||||
{
|
||||
$mdb->insert( 'pp_routes', [
|
||||
'article_id' => $row2['article_id'],
|
||||
'lang_id' => $row['id'],
|
||||
'pattern' => '^' . $language_link . self::seo( $row2['seo_link'] ) . '$',
|
||||
'destination' => 'index.php?article=' . $row2['article_id'] . '&lang=' . $row['id'],
|
||||
] );
|
||||
}
|
||||
else if ( $row2['title'] != null )
|
||||
$htaccess_data .= PHP_EOL . 'RewriteRule ^' . $language_link . 'a-' . $row2['article_id'] . '-' . self::seo( $row2['title'] ) . '$ index.php?article=' . $row2['article_id'] . '&lang=' . $row['id'] . '&%{QUERY_STRING} [L]';
|
||||
{
|
||||
$mdb->insert( 'pp_routes', [
|
||||
'article_id' => $row2['article_id'],
|
||||
'lang_id' => $row['id'],
|
||||
'pattern' => '^' . $language_link . 'a-' . $row2['article_id'] . '-' . self::seo( $row2['title'] ) . '$',
|
||||
'destination' => 'index.php?article=' . $row2['article_id'] . '&lang=' . $row['id'],
|
||||
] );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$results = $mdb -> get( 'pp_settings', 'value', [ 'param' => 'htaccess' ] );
|
||||
// Invalidacja cache tras
|
||||
try {
|
||||
( new \Shared\Cache\CacheHandler() )->delete( 'pp_routes:all' );
|
||||
} catch ( \Exception $e ) {
|
||||
// Redis niedostepny — ignorujemy
|
||||
}
|
||||
|
||||
$results = $mdb->get( 'pp_settings', 'value', [ 'param' => 'htaccess' ] );
|
||||
if ( $results )
|
||||
$htaccess_data .= PHP_EOL . $results;
|
||||
|
||||
$results = $mdb -> get( 'pp_settings', 'value', [ 'param' => 'robots' ] );
|
||||
$results = $mdb->get( 'pp_settings', 'value', [ 'param' => 'robots' ] );
|
||||
if ( $results )
|
||||
$robots .= PHP_EOL . $results;
|
||||
$robots .= PHP_EOL . $results;
|
||||
|
||||
$site_map .= '</urlset>';
|
||||
|
||||
/* cache */
|
||||
if ( $settings['htaccess_cache'] )
|
||||
{
|
||||
$htaccess_data = str_replace( '{HTACCESS_CACHE}',
|
||||
'<IfModule mod_deflate.c>' . PHP_EOL
|
||||
. 'AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript' . PHP_EOL
|
||||
. '</IfModule>' . PHP_EOL
|
||||
. '<IfModule mod_headers.c>' . PHP_EOL
|
||||
. 'Header set Access-Control-Allow-Origin "*"' . PHP_EOL
|
||||
. '</IfModule>' . PHP_EOL
|
||||
. '<IfModule mod_expires.c>' . PHP_EOL
|
||||
. 'ExpiresActive on' . PHP_EOL
|
||||
. 'ExpiresDefault "access plus 1 month"' . PHP_EOL
|
||||
. 'ExpiresByType text/css "access plus 1 year"' . PHP_EOL
|
||||
. 'ExpiresByType application/json "access plus 0 seconds"' . PHP_EOL
|
||||
. 'ExpiresByType application/xml "access plus 0 seconds"' . PHP_EOL
|
||||
. 'ExpiresByType text/xml "access plus 0 seconds"' . PHP_EOL
|
||||
. 'ExpiresByType image/x-icon "access plus 1 week"' . PHP_EOL
|
||||
. 'ExpiresByType text/x-component "access plus 1 month"' . PHP_EOL
|
||||
. 'ExpiresByType text/html "access plus 0 seconds"' . PHP_EOL
|
||||
. 'ExpiresByType application/javascript "access plus 1 year"' . PHP_EOL
|
||||
. 'ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"' . PHP_EOL
|
||||
. 'ExpiresByType text/cache-manifest "access plus 0 seconds"' . PHP_EOL
|
||||
. 'ExpiresByType audio/ogg "access plus 1 month"' . PHP_EOL
|
||||
. 'ExpiresByType image/gif "access plus 1 month"' . PHP_EOL
|
||||
. 'ExpiresByType image/jpeg "access plus 1 month"' . PHP_EOL
|
||||
. 'ExpiresByType image/png "access plus 1 month"' . PHP_EOL
|
||||
. 'ExpiresByType video/mp4 "access plus 1 month"' . PHP_EOL
|
||||
. 'ExpiresByType video/ogg "access plus 1 month"' . PHP_EOL
|
||||
. 'ExpiresByType video/webm "access plus 1 month"' . PHP_EOL
|
||||
. 'ExpiresByType application/atom+xml "access plus 1 hour"' . PHP_EOL
|
||||
. 'ExpiresByType application/rss+xml "access plus 1 hour"' . PHP_EOL
|
||||
. 'ExpiresByType application/font-woff "access plus 1 month"' . PHP_EOL
|
||||
. 'ExpiresByType application/vnd.ms-fontobject "access plus 1 month"' . PHP_EOL
|
||||
. 'ExpiresByType application/x-font-ttf "access plus 1 month"' . PHP_EOL
|
||||
. 'ExpiresByType font/opentype "access plus 1 month"' . PHP_EOL
|
||||
. 'ExpiresByType image/svg+xml "access plus 1 month"' . PHP_EOL
|
||||
. '</IfModule>'
|
||||
, $htaccess_data );
|
||||
}
|
||||
else
|
||||
{
|
||||
$htaccess_data = str_replace( '{HTACCESS_CACHE}',
|
||||
'<IfModule mod_headers.c>' . PHP_EOL
|
||||
. 'Header set Cache-Control "no-cache, no-store, must-revalidate"' . PHP_EOL
|
||||
. 'Header set Pragma "no-cache"' . PHP_EOL
|
||||
. 'Header set Expires 0' . PHP_EOL
|
||||
. '</IfModule>',
|
||||
$htaccess_data );
|
||||
}
|
||||
|
||||
$htaccess_data .= PHP_EOL;
|
||||
$htaccess_data .= 'RewriteCond %{REQUEST_FILENAME} !-f' . PHP_EOL;
|
||||
$htaccess_data .= 'RewriteCond %{REQUEST_FILENAME} !-d' . PHP_EOL;
|
||||
$htaccess_data .= 'RewriteRule ^ index.php [L]';
|
||||
|
||||
// Niektore hostingi blokuja zmiane wersji PHP przez .htaccess.
|
||||
// Automatycznie komentujemy niedozwolone dyrektywy, aby generowany plik byl kompatybilny.
|
||||
$htaccess_data = preg_replace( '/^(\\s*)(AddHandler|SetHandler|ForceType)\\b/im', '$1# $2', $htaccess_data );
|
||||
|
||||
$fp = fopen( $dir . '.htaccess', 'w' );
|
||||
|
||||
@@ -92,6 +92,7 @@ class ProductArchiveController
|
||||
. $skuEanHtml;
|
||||
|
||||
$rows[] = [
|
||||
'_checkbox' => '<input type="checkbox" class="js-bulk-check" value="' . $id . '" aria-label="Zaznacz produkt">',
|
||||
'lp' => $lp++ . '.',
|
||||
'product' => $productCell,
|
||||
'price_brutto' => $priceBrutto !== '' ? $priceBrutto : '-',
|
||||
@@ -123,6 +124,7 @@ class ProductArchiveController
|
||||
|
||||
$viewModel = new \admin\ViewModels\Common\PaginatedTableViewModel(
|
||||
[
|
||||
['key' => '_checkbox', 'label' => '', 'class' => 'text-center table-col-bulk-check', 'sortable' => false, 'raw' => true],
|
||||
['key' => 'lp', 'label' => 'Lp.', 'class' => 'text-center', 'sortable' => false],
|
||||
['key' => 'product', 'sort_key' => 'name', 'label' => 'Nazwa', 'sortable' => true, 'raw' => true],
|
||||
['key' => 'price_brutto', 'sort_key' => 'price_brutto', 'label' => 'Cena', 'class' => 'text-center', 'sortable' => true],
|
||||
@@ -190,4 +192,40 @@ class ProductArchiveController
|
||||
header( 'Location: /admin/product_archive/list/' );
|
||||
exit;
|
||||
}
|
||||
|
||||
public function bulk_delete_permanent(): void
|
||||
{
|
||||
header( 'Content-Type: application/json; charset=utf-8' );
|
||||
|
||||
$rawIds = isset( $_POST['ids'] ) && is_array( $_POST['ids'] ) ? $_POST['ids'] : [];
|
||||
$ids = [];
|
||||
foreach ( $rawIds as $raw ) {
|
||||
$id = (int) $raw;
|
||||
if ( $id > 0 ) {
|
||||
$ids[] = $id;
|
||||
}
|
||||
}
|
||||
|
||||
if ( empty( $ids ) ) {
|
||||
echo json_encode( ['success' => false, 'message' => 'Nie wybrano żadnych produktów.'] );
|
||||
exit;
|
||||
}
|
||||
|
||||
$deleted = 0;
|
||||
$errors = [];
|
||||
foreach ( $ids as $id ) {
|
||||
if ( $this->productRepository->delete( $id ) ) {
|
||||
$deleted++;
|
||||
} else {
|
||||
$errors[] = $id;
|
||||
}
|
||||
}
|
||||
|
||||
echo json_encode( [
|
||||
'success' => empty( $errors ),
|
||||
'deleted' => $deleted,
|
||||
'errors' => $errors,
|
||||
] );
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -104,6 +104,9 @@ class ApiRouter
|
||||
$producerRepo = new \Domain\Producer\ProducerRepository($db);
|
||||
return new Controllers\DictionariesApiController($statusRepo, $transportRepo, $paymentRepo, $attrRepo, $producerRepo);
|
||||
},
|
||||
'categories' => function () use ($db) {
|
||||
return new Controllers\CategoriesApiController();
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
104
autoload/api/Controllers/CategoriesApiController.php
Normal file
104
autoload/api/Controllers/CategoriesApiController.php
Normal file
@@ -0,0 +1,104 @@
|
||||
<?php
|
||||
namespace api\Controllers;
|
||||
|
||||
use api\ApiRouter;
|
||||
|
||||
class CategoriesApiController
|
||||
{
|
||||
public function list(): void
|
||||
{
|
||||
if (!ApiRouter::requireMethod('GET')) {
|
||||
return;
|
||||
}
|
||||
|
||||
$db = $GLOBALS['mdb'] ?? null;
|
||||
if (!$db) {
|
||||
ApiRouter::sendError('INTERNAL_ERROR', 'Database not available', 500);
|
||||
return;
|
||||
}
|
||||
|
||||
// Default shop language
|
||||
$defaultLang = $db->get('pp_langs', 'id', ['start' => 1]);
|
||||
if (!$defaultLang) {
|
||||
$defaultLang = 'pl';
|
||||
}
|
||||
$defaultLang = (string)$defaultLang;
|
||||
|
||||
// All active categories, ordered by display order
|
||||
$rows = $db->select(
|
||||
'pp_shop_categories',
|
||||
['id', 'parent_id'],
|
||||
[
|
||||
'status' => 1,
|
||||
'ORDER' => ['o' => 'ASC'],
|
||||
]
|
||||
);
|
||||
|
||||
if (!is_array($rows) || empty($rows)) {
|
||||
ApiRouter::sendSuccess(['categories' => []]);
|
||||
return;
|
||||
}
|
||||
|
||||
$categoryIds = array_values(array_filter(
|
||||
array_map(fn($row) => (int)($row['id'] ?? 0), $rows),
|
||||
fn($id) => $id > 0
|
||||
));
|
||||
|
||||
// Bulk fetch titles for default language
|
||||
$titlesByCategory = [];
|
||||
$titleRows = $db->select('pp_shop_categories_langs', ['category_id', 'title'], [
|
||||
'AND' => [
|
||||
'category_id' => $categoryIds,
|
||||
'lang_id' => $defaultLang,
|
||||
'title[!]' => '',
|
||||
],
|
||||
]);
|
||||
if (is_array($titleRows)) {
|
||||
foreach ($titleRows as $tr) {
|
||||
$tid = (int)($tr['category_id'] ?? 0);
|
||||
if ($tid > 0 && !isset($titlesByCategory[$tid])) {
|
||||
$titlesByCategory[$tid] = (string)($tr['title'] ?? '');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Bulk fetch fallback titles for categories without a title in default language
|
||||
$missingIds = array_values(array_filter($categoryIds, fn($id) => !isset($titlesByCategory[$id])));
|
||||
if (!empty($missingIds)) {
|
||||
$fallbackRows = $db->select('pp_shop_categories_langs', ['category_id', 'title'], [
|
||||
'AND' => [
|
||||
'category_id' => $missingIds,
|
||||
'title[!]' => '',
|
||||
],
|
||||
]);
|
||||
if (is_array($fallbackRows)) {
|
||||
foreach ($fallbackRows as $fr) {
|
||||
$fid = (int)($fr['category_id'] ?? 0);
|
||||
if ($fid > 0 && !isset($titlesByCategory[$fid])) {
|
||||
$titlesByCategory[$fid] = (string)($fr['title'] ?? '');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Build flat category list
|
||||
$categories = [];
|
||||
foreach ($rows as $row) {
|
||||
$categoryId = (int)($row['id'] ?? 0);
|
||||
if ($categoryId <= 0) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$parentId = $row['parent_id'] !== null ? (int)$row['parent_id'] : null;
|
||||
$title = $titlesByCategory[$categoryId] ?? ('Kategoria #' . $categoryId);
|
||||
|
||||
$categories[] = [
|
||||
'id' => $categoryId,
|
||||
'parent_id' => $parentId,
|
||||
'title' => $title,
|
||||
];
|
||||
}
|
||||
|
||||
ApiRouter::sendSuccess(['categories' => $categories]);
|
||||
}
|
||||
}
|
||||
BIN
autoload/front/.DS_Store
vendored
BIN
autoload/front/.DS_Store
vendored
Binary file not shown.
BIN
templates/.DS_Store
vendored
BIN
templates/.DS_Store
vendored
Binary file not shown.
@@ -1,5 +1,5 @@
|
||||
<?
|
||||
if ( is_array( $this -> pages ) ) {
|
||||
if ( is_array( $this -> pages ) and !empty( $this -> pages ) ) {
|
||||
$settings = ( new \Domain\Settings\SettingsRepository( $GLOBALS['mdb'] ) )->allSettings();
|
||||
|
||||
echo '<ul class="level-' . $this -> level . ' clear" level="' . $this -> level . '">';
|
||||
@@ -15,8 +15,9 @@ if ( is_array( $this -> pages ) ) {
|
||||
$page['language']['seo_link'] ? $url = '/' . $page['language']['seo_link'] : $url = '/s-' . $page['id'] . '-' . \Shared\Helpers\Helpers::seo( $page['language']['title'] );
|
||||
}
|
||||
$children = [];
|
||||
$has_children = !empty( $page['pages'] ) and is_array( $page['pages'] );
|
||||
|
||||
if ( is_array( $page['pages'] ) ): foreach ( $page['pages'] as $page_tmp ):
|
||||
if ( $has_children ): foreach ( $page['pages'] as $page_tmp ):
|
||||
$children[] = $page_tmp['id'];
|
||||
endforeach;
|
||||
endif;
|
||||
@@ -26,10 +27,10 @@ if ( is_array( $this -> pages ) ) {
|
||||
if ( $page['id'] == $this -> current_page )
|
||||
echo ' active';
|
||||
|
||||
if ( is_array( $page['pages'] ) and in_array( $this -> current_page, $children ) )
|
||||
if ( $has_children and in_array( $this -> current_page, $children ) )
|
||||
echo ' open';
|
||||
|
||||
if ( is_array( $page['pages'] ) )
|
||||
if ( $has_children )
|
||||
echo ' parent';
|
||||
|
||||
echo '">';
|
||||
@@ -40,14 +41,15 @@ if ( is_array( $this -> pages ) ) {
|
||||
if ( $page['language']['noindex'] )
|
||||
echo 'rel="nofollow"';
|
||||
echo ' title="' . $page['language']['title'] . '"';
|
||||
if ( is_array( $page['pages'] ) )
|
||||
if ( $has_children )
|
||||
echo "class='menu-trigger'";
|
||||
echo '>';
|
||||
echo $page['language']['title'];
|
||||
echo '</a>';
|
||||
if ( is_array( $page['pages'] ) )
|
||||
if ( $has_children )
|
||||
echo '<i class="fa fa-chevron-down menu-toggle" menu-id="link-' . $page['id'] . '"></i>';
|
||||
echo \front\Views\Menu::pages( $page['pages'], $this -> level + 1, $this -> current_page );
|
||||
if ( $has_children )
|
||||
echo \front\Views\Menu::pages( $page['pages'], $this -> level + 1, $this -> current_page );
|
||||
echo '</li>';
|
||||
}
|
||||
echo '</ul>';
|
||||
|
||||
Reference in New Issue
Block a user