Refactor code structure for improved readability and maintainability

This commit is contained in:
2026-02-21 21:48:03 +01:00
parent 29970ba4ee
commit 846bad0085
21 changed files with 172 additions and 150 deletions

View File

@@ -13,7 +13,8 @@
"Bash(git status:*)", "Bash(git status:*)",
"Bash(powershell -Command \"& { Add-Type -AssemblyName System.IO.Compression.FileSystem; [System.IO.Compression.ZipFile]::OpenRead\\(''updates/0.20/ver_0.296.zip''\\).Entries | ForEach-Object { Write-Output $_.FullName } }\")", "Bash(powershell -Command \"& { Add-Type -AssemblyName System.IO.Compression.FileSystem; [System.IO.Compression.ZipFile]::OpenRead\\(''updates/0.20/ver_0.296.zip''\\).Entries | ForEach-Object { Write-Output $_.FullName } }\")",
"Bash(powershell -Command \"Compress-Archive -Path ''*'' -DestinationPath ''../ver_0.296.zip'' -Force\")", "Bash(powershell -Command \"Compress-Archive -Path ''*'' -DestinationPath ''../ver_0.296.zip'' -Force\")",
"Bash(powershell -Command \"Add-Type -AssemblyName System.IO.Compression.FileSystem; [IO.Compression.ZipFile]::OpenRead\\(\\(Resolve-Path ''updates/0.20/ver_0.296.zip''\\)\\).Entries.FullName\")" "Bash(powershell -Command \"Add-Type -AssemblyName System.IO.Compression.FileSystem; [IO.Compression.ZipFile]::OpenRead\\(\\(Resolve-Path ''updates/0.20/ver_0.296.zip''\\)\\).Entries.FullName\")",
"Bash(powershell -Command \"Compress-Archive -Path ''*'' -DestinationPath ''../ver_0.297.zip'' -Force\")"
] ]
} }
} }

File diff suppressed because one or more lines are too long

1
.vscode/ftp-kr.diff.ver_0.298.zi# vendored Normal file
View File

@@ -0,0 +1 @@
c:\visual studio code\projekty\shopPRO\updates\0.20\ver_0.298.zi#

View File

@@ -577,7 +577,7 @@ class OrderAdminService
return false; return false;
} }
$email = new \Email(0); $email = new \Shared\Email\Email();
$email->load_by_name('#sklep-zmiana-statusu-zamowienia'); $email->load_by_name('#sklep-zmiana-statusu-zamowienia');
$email->text = str_replace('[NUMER_ZAMOWIENIA]', $number, $email->text); $email->text = str_replace('[NUMER_ZAMOWIENIA]', $number, $email->text);
@@ -800,4 +800,4 @@ class OrderAdminService
FILE_APPEND FILE_APPEND
); );
} }
} }

View File

@@ -741,10 +741,11 @@ class OrderRepository
$product_price_tmp = \Domain\Basket\BasketCalculator::calculateBasketProductPrice((float)$product['price_brutto_promo'], (float)$product['price_brutto'], $coupon, $basket_position, $productRepo); $product_price_tmp = \Domain\Basket\BasketCalculator::calculateBasketProductPrice((float)$product['price_brutto_promo'], (float)$product['price_brutto'], $coupon, $basket_position, $productRepo);
// Cena promo = 0 gdy taka sama jak cena bazowa (brak realnej promocji/kuponu) // Cena promo = 0 gdy taka sama jak cena bazowa (brak realnej promocji/kuponu).
$effectivePromoPrice = (float)$product_price_tmp['price_new']; // Porównujemy po zaokrągleniu do 2 miejsc, żeby uniknąć artefaktów float (IEEE 754).
$effectiveBasePrice = (float)$product_price_tmp['price']; $effectivePromoPrice = round((float)$product_price_tmp['price_new'], 2);
$promoPrice = ($effectivePromoPrice != $effectiveBasePrice) ? $effectivePromoPrice : 0; $effectiveBasePrice = round((float)$product_price_tmp['price'], 2);
$promoPrice = ($effectivePromoPrice > 0 && $effectivePromoPrice < $effectiveBasePrice) ? $effectivePromoPrice : 0;
$this->db->insert('pp_shop_order_products', [ $this->db->insert('pp_shop_order_products', [
'order_id' => $order_id, 'order_id' => $order_id,

View File

@@ -1,7 +1,3 @@
# <FilesMatch "\.(php4|php5|php3|php2|php|phtml)$">
# SetHandler application/x-lsphp83 /opt/alt/php83 usr/bin/lsphp
# </FilesMatch>
RewriteEngine On RewriteEngine On
RewriteBase / RewriteBase /
Options +FollowSymlinks Options +FollowSymlinks
@@ -13,6 +9,7 @@ RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L]
# Przekierowanie z http na https, jeśli nie zawiera www # Przekierowanie z http na https, jeśli nie zawiera www
RewriteCond %{HTTPS} off RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/(tpay-status|platnosc-status|przelewy24-status)$ [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# Usuwanie końcowego slash'a dla niekatalogów # Usuwanie końcowego slash'a dla niekatalogów
@@ -21,11 +18,9 @@ RewriteCond %{REQUEST_URI} !^/admin/.*$ [NC] # Wyklucza ścieżki rozpoczynając
RewriteCond %{REQUEST_URI} (.+)/$ RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [R=301,L] RewriteRule ^ %1 [R=301,L]
ErrorDocument 404 /index.php
RewriteCond %{REQUEST_URI} !^(.*)/libraries/(.*) [NC] RewriteCond %{REQUEST_URI} !^(.*)/libraries/(.*) [NC]
RewriteCond %{REQUEST_URI} !^(.*)/layout/(.*) [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 ^admin/$ admin/index.php [L]
@@ -33,9 +28,9 @@ RewriteRule ^wyszukiwarka/(.*)/([0-9]*)$ index.php?module=search&action=search_r
RewriteRule ^wyszukiwarka/(.*)$ index.php?module=search&action=search_results&query=$1&bs=1 [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 ^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 ^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%{QUERY_STRING} [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%{QUERY_STRING} [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%{QUERY_STRING} [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$ index.php?module=shop_basket&action=main_view [L]
RewriteRule ^koszyk-podsumowanie$ index.php?module=shop_basket&action=summary_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 ^zloz-zamowienie$ index.php?module=shop_basket&action=basket_save [L]

BIN
templates/.DS_Store vendored

Binary file not shown.

View File

@@ -8,7 +8,7 @@
$basket = \Shared\Helpers\Helpers::get_session( 'basket' ); $basket = \Shared\Helpers\Helpers::get_session( 'basket' );
$coupon = \Shared\Helpers\Helpers::get_session( 'coupon' ); $coupon = \Shared\Helpers\Helpers::get_session( 'coupon' );
$transport_cost = ( new \Domain\Transport\TransportRepository( $GLOBALS['mdb'] ) )->transportCostCached( \Shared\Helpers\Helpers::get_session( 'basket-transport-method-id' ) ); $transport_cost = ( new \Domain\Transport\TransportRepository( $GLOBALS['mdb'] ) )->transportCostCached( (int)\Shared\Helpers\Helpers::get_session( 'basket-transport-method-id' ) ) ?? 0.0;
$basket_summary = \Domain\Basket\BasketCalculator::summaryPrice( $basket, $coupon ) + $transport_cost; $basket_summary = \Domain\Basket\BasketCalculator::summaryPrice( $basket, $coupon ) + $transport_cost;
?> ?>
@@ -41,4 +41,4 @@
</div> </div>
</div> </div>
<? endif;?> <? endif;?>
<? endforeach; endif;?> <? endforeach; endif;?>

View File

@@ -1,9 +1,22 @@
<div id="category-subcategory-tiles"> <div id="category-subcategory-tiles">
<ul class="category-subcategory-tiles"> <ul class="category-subcategory-tiles">
<?php foreach ( $this -> categories as $category ): ?> <?php
global $lang_id;
$categoryRepo = new \Domain\Category\CategoryRepository( $GLOBALS['mdb'] );
foreach ( $this -> categories as $category ):
$title = $category['language']['title'] ?? ( $category['title'] ?? '' );
$url = '#';
if ( !empty( $category['id'] ) ) {
$url = $categoryRepo->categoryUrl( (int)$category['id'], (string)$lang_id );
} elseif ( !empty( $category['language']['seo_link'] ) ) {
$url = '/' . ltrim( (string)$category['language']['seo_link'], '/' );
} elseif ( !empty( $category['seo_link'] ) ) {
$url = '/' . ltrim( (string)$category['seo_link'], '/' );
}
?>
<li class="category-subcategory-tile"> <li class="category-subcategory-tile">
<a href="/<?= $category['seo_link']; ?>"><?= $category['title']; ?></a> <a href="<?= $url; ?>"><?= $title; ?></a>
</li> </li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
</div> </div>

View File

@@ -16,7 +16,7 @@ endif;
if ( $this -> category['view_subcategories'] ): if ( $this -> category['view_subcategories'] ):
echo \Shared\Tpl\Tpl::view( 'shop-category/_partials/category-subcategory-tiles', [ echo \Shared\Tpl\Tpl::view( 'shop-category/_partials/category-subcategory-tiles', [
'categories' => ( new \Domain\Category\CategoryRepository( $GLOBALS['mdb'] ) )->subcategoriesLangCached( (int)$this -> category['id'] ), 'categories' => ( new \Domain\Category\CategoryRepository( $GLOBALS['mdb'] ) )->categoriesTree( $lang_id, (int)$this -> category['id'] ),
] ); ] );
endif; endif;
@@ -36,4 +36,4 @@ if ( $this -> category_description ):
'category' => $this -> category 'category' => $this -> category
] ); ] );
endif; endif;
?> ?>

View File

@@ -106,23 +106,26 @@ echo $this -> settings['newsletter_header'];
</td> </td>
<td style="text-align: right; white-space: nowrap; padding: 0 5px;"> <td style="text-align: right; white-space: nowrap; padding: 0 5px;">
<? <?
echo \Shared\Helpers\Helpers::decimal( $position['price_brutto_promo'] ) . ' zł'; $_promo = round( (float)$position['price_brutto_promo'], 2 );
$_base = round( (float)$position['price_brutto'], 2 );
if ( $position['price_brutto_promo'] and $position['price_brutto_promo'] < $position['price_brutto']) if ( $_promo > 0 and $_promo < $_base ) {
echo '<u style="font-size: 15px; font-weight: 400; color: #c3c3c3; margin-left: 5px; text-decoration: line-through;">' . \Shared\Helpers\Helpers::decimal( $position['price_brutto'] ) . ' zł</u>'; echo \Shared\Helpers\Helpers::decimal( $_promo ) . ' zł';
echo '<u style="font-size: 15px; font-weight: 400; color: #c3c3c3; margin-left: 5px; text-decoration: line-through;">' . \Shared\Helpers\Helpers::decimal( $_base ) . ' zł</u>';
if ( $position['price_brutto_promo'] and $position['price_brutto_promo'] < $position['price_brutto'] ) $discount += \Shared\Helpers\Helpers::normalize_decimal( ( $_base - $_promo ) * $position['quantity'] );
$discount += \Shared\Helpers\Helpers::normalize_decimal( ( $position['price_brutto'] - $position['price_brutto_promo'] ) * $position['quantity'] ); } else {
echo \Shared\Helpers\Helpers::decimal( $_base ) . ' zł';
}
$_effective = ( $_promo > 0 and $_promo < $_base ) ? $_promo : $_base;
?> ?>
</td> </td>
<td style="text-align: right; white-space: nowrap; padding: 0 5px;"> <td style="text-align: right; white-space: nowrap; padding: 0 5px;">
<?= $position['quantity'];?> <?= $position['quantity'];?>
</td> </td>
<td style="text-align: right; white-space: nowrap; padding: 0 5px;"> <td style="text-align: right; white-space: nowrap; padding: 0 5px;">
<?= \Shared\Helpers\Helpers::decimal( \Shared\Helpers\Helpers::normalize_decimal( $position['price_brutto_promo'] * $position['quantity'] ) );?> zł <?= \Shared\Helpers\Helpers::decimal( \Shared\Helpers\Helpers::normalize_decimal( $_effective * $position['quantity'] ) );?> zł
</td> </td>
</tr> </tr>
<? $summary += \Shared\Helpers\Helpers::normalize_decimal( $position['price_brutto'] * $position['quantity'] );?> <? $summary += \Shared\Helpers\Helpers::normalize_decimal( $_base * $position['quantity'] );?>
<? $quantity += $position['quantity'];?> <? $quantity += $position['quantity'];?>
<? endforeach; endif;?> <? endforeach; endif;?>
<tr> <tr>

View File

@@ -1,4 +1,4 @@
<? global $config; $this -> settings['ssl'] ? $base = 'https' : $base = 'http'; $paymentRepo = new \Domain\PaymentMethod\PaymentMethodRepository( $GLOBALS['mdb'] );?> <? global $config; $this -> settings['ssl'] ? $base = 'https' : $base = 'http'; $base_secure = 'https'; $paymentRepo = new \Domain\PaymentMethod\PaymentMethodRepository( $GLOBALS['mdb'] );?>
<div class="order-summary"> <div class="order-summary">
<div class="box-title"> <div class="box-title">
<?= ucfirst( \Shared\Helpers\Helpers::lang( 'szczegoly-zamowienia' ) );?>: <?= $this -> order['number'];?> <?= ucfirst( \Shared\Helpers\Helpers::lang( 'szczegoly-zamowienia' ) );?>: <?= $this -> order['number'];?>
@@ -119,9 +119,9 @@
$url .= '&email=' . urlencode( $this -> order['client_email'] ); $url .= '&email=' . urlencode( $this -> order['client_email'] );
$url .= '&nazwisko=' . urlencode( $this -> order['client_name'] . ' ' . $this -> order['client_surname'] ); $url .= '&nazwisko=' . urlencode( $this -> order['client_name'] . ' ' . $this -> order['client_surname'] );
$url .= '&crc=' . $this -> order['hash']; $url .= '&crc=' . $this -> order['hash'];
$url .= '&result_url=' . urlencode( $base . "://" . $_SERVER['SERVER_NAME'] . '/tpay-status' ); $url .= '&result_url=' . urlencode( $base_secure . "://" . $_SERVER['SERVER_NAME'] . '/tpay-status' );
$url .= '&return_url=' . urlencode( $base . "://" . $_SERVER['SERVER_NAME'] . '/potwierdzenie-platnosci/' . $this -> order['hash'] ); $url .= '&return_url=' . urlencode( $base_secure . "://" . $_SERVER['SERVER_NAME'] . '/potwierdzenie-platnosci/' . $this -> order['hash'] );
$url .= '&return_error_url=' . urlencode( $base . "://" . $_SERVER['SERVER_NAME'] . '/zamowienie/' . $this -> order['hash'] ); $url .= '&return_error_url=' . urlencode( $base_secure . "://" . $_SERVER['SERVER_NAME'] . '/zamowienie/' . $this -> order['hash'] );
$url .= '&md5sum=' . md5( $id . '&' . str_replace( ',', '.', round( $this -> order['summary'], 2 ) ) . '&' . $this -> order['hash'] . '&' . $code ); $url .= '&md5sum=' . md5( $id . '&' . str_replace( ',', '.', round( $this -> order['summary'], 2 ) ) . '&' . $this -> order['hash'] . '&' . $code );
?> ?>
<button type="button" onclick="document.location.href='<?= $url;?>'" class="btn btn-success"><?= \Shared\Helpers\Helpers::lang( 'zaplac-online' );?> <?= \Shared\Helpers\Helpers::decimal( $this -> order['summary'] );?> zł</b></button> <button type="button" onclick="document.location.href='<?= $url;?>'" class="btn btn-success"><?= \Shared\Helpers\Helpers::lang( 'zaplac-online' );?> <?= \Shared\Helpers\Helpers::decimal( $this -> order['summary'] );?> zł</b></button>
@@ -189,4 +189,4 @@
<? unset( $_SESSION['google-analytics-purchase'] );?> <? unset( $_SESSION['google-analytics-purchase'] );?>
<? endif;?> <? endif;?>
}); });
</script> </script>

View File

@@ -65,20 +65,23 @@
<div class="prices"> <div class="prices">
<div class="price"> <div class="price">
<? <?
echo \Shared\Helpers\Helpers::decimal( $product['price_brutto_promo'] ) . ' zł'; $_promo = round( (float)$product['price_brutto_promo'], 2 );
$_base = round( (float)$product['price_brutto'], 2 );
if ( $product['price_brutto_promo'] and $product['price_brutto_promo'] < $product['price_brutto'] ) if ( $_promo > 0 and $_promo < $_base ) {
echo '<u>' . \Shared\Helpers\Helpers::decimal( $product['price_brutto'] ) . ' zł</u>'; echo \Shared\Helpers\Helpers::decimal( $_promo ) . ' zł';
echo '<u>' . \Shared\Helpers\Helpers::decimal( $_base ) . ' zł</u>';
if ( $product['price_brutto_promo'] and $product['price_brutto_promo'] < $product['price_brutto'] ) $discount += \Shared\Helpers\Helpers::normalize_decimal( ( $_base - $_promo ) * $product['quantity'] );
$discount += \Shared\Helpers\Helpers::normalize_decimal( ( $product['price_brutto'] - $product['price_brutto_promo'] ) * $product['quantity'] ); } else {
echo \Shared\Helpers\Helpers::decimal( $_base ) . ' zł';
}
$effective_price = ( $_promo > 0 and $_promo < $_base ) ? $_promo : $_base;
?> ?>
<span>x <?= $product['quantity'];?></span> <span>x <?= $product['quantity'];?></span>
<?= \Shared\Helpers\Helpers::decimal( \Shared\Helpers\Helpers::normalize_decimal( $product['price_brutto'] * $product['quantity'] ) );?> zł <?= \Shared\Helpers\Helpers::decimal( \Shared\Helpers\Helpers::normalize_decimal( $effective_price * $product['quantity'] ) );?> zł
</div> </div>
</div> </div>
</div> </div>
<? $summary += \Shared\Helpers\Helpers::normalize_decimal( $product['price_brutto'] * $product['quantity'] );?> <? $summary += \Shared\Helpers\Helpers::normalize_decimal( $_base * $product['quantity'] );?>
<? endforeach;?> <? endforeach;?>
<div class="basket-summary"> <div class="basket-summary">
Wartość koszyka <span><?= \Shared\Helpers\Helpers::decimal( $summary );?> zł</span> Wartość koszyka <span><?= \Shared\Helpers\Helpers::decimal( $summary );?> zł</span>

View File

@@ -1,23 +1,10 @@
<? if ( is_array( $this -> custom_fields ) ) : ?> <? if ( is_array( $this -> custom_fields ) ): foreach ( $this -> custom_fields as $custom_field ):?>
<? foreach ( $this -> custom_fields as $custom_field ): ?> <div class="custom-field">
<? if ( $custom_field['type'] == 'text' ) : ?> <div class="_name">
<div class="custom-field"> <?= $custom_field['name'];?><? if ( !empty( $custom_field['is_required'] ) ): ?>*<? endif; ?>:
<div class="_name"> </div>
<?= $custom_field['name'];?><? if ( !empty( $custom_field['is_required'] ) ): ?>*<? endif; ?>: <div class="_input">
</div> <input type="text" class="form-control" name="custom_field[<?= $custom_field['id_additional_field'];?>]" field_name="<?= $custom_field['name'];?>" value="" <? if ( !empty( $custom_field['is_required'] ) ): ?>required<? endif; ?>>
<div class="_input"> </div>
<input type="text" class="form-control" name="custom_field[<?= $custom_field['id_additional_field'];?>]" field_name="<?= $custom_field['name'];?>" value="" <? if ( !empty( $custom_field['is_required'] ) ): ?>required<? endif; ?>> </div>
</div> <? endforeach; endif;?>
</div>
<? elseif ( $custom_field['type'] == 'image' ) : ?>
<div class="custom-field">
<div class="_name">
<?= $custom_field['name'];?><? if ( !empty( $custom_field['is_required'] ) ): ?>*<? endif; ?>:
</div>
<div class="_input">
<input type="file" class="form-control-file" name="custom_field[<?= $custom_field['id_additional_field'];?>]" field_name="<?= $custom_field['name'];?>" src="" alt="" <? if ( !empty( $custom_field['is_required'] ) ): ?>required<? endif; ?>>
</div>
</div>
<? endif; ?>
<? endforeach; ?>
<? endif;?>

View File

@@ -260,11 +260,13 @@
<a href="javascript:history.go(-1)" class="btn btn-success history-back"><?= \Shared\Helpers\Helpers::lang( 'wstecz' );?></a> <a href="javascript:history.go(-1)" class="btn btn-success history-back"><?= \Shared\Helpers\Helpers::lang( 'wstecz' );?></a>
</div> </div>
<link class="footer" rel="stylesheet" type="text/css" href="/libraries/fancybox3/css/core.css"> <link class="footer" rel="stylesheet" type="text/css" href="/libraries/fancybox3/css/core.css">
<link class="footer" rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css">
<link class="footer" rel="stylesheet" type="text/css" href="/plugins/OwlCarousel/owl.carousel.css"> <link class="footer" rel="stylesheet" type="text/css" href="/plugins/OwlCarousel/owl.carousel.css">
<link class="footer" rel="stylesheet" type="text/css" href="/plugins/OwlCarousel/owl.theme.default.css"> <link class="footer" rel="stylesheet" type="text/css" href="/plugins/OwlCarousel/owl.theme.default.css">
<script class="footer" type="text/javascript" src="/libraries/fancybox3/js/core.js"></script> <script class="footer" type="text/javascript" src="/libraries/fancybox3/js/core.js"></script>
<script class="footer" type="text/javascript" src="/libraries/fancybox3/js/guestures.js"></script> <script class="footer" type="text/javascript" src="/libraries/fancybox3/js/guestures.js"></script>
<script class="footer" type="text/javascript" src="/libraries/fancybox3/js/wheel.js"></script> <script class="footer" type="text/javascript" src="/libraries/fancybox3/js/wheel.js"></script>
<script class="footer" type="text/javascript" src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>
<script class="footer" type="text/javascript" src="/plugins/OwlCarousel/owl.carousel.js"></script> <script class="footer" type="text/javascript" src="/plugins/OwlCarousel/owl.carousel.js"></script>
<script type="text/javascript"> <script type="text/javascript">
$(function(){ $(function(){

Binary file not shown.

View File

@@ -1,11 +1 @@
DELETE r1 FROM pp_redirects r1 DELETE FROM pp_redirects WHERE id IN (SELECT id FROM (SELECT r1.id FROM pp_redirects r1 INNER JOIN pp_redirects r2 ON r1.`from` = r2.`from` AND (r1.lang_id <=> r2.lang_id) AND (IFNULL(r1.date_add, '1000-01-01 00:00:00') < IFNULL(r2.date_add, '1000-01-01 00:00:00') OR (IFNULL(r1.date_add, '1000-01-01 00:00:00') = IFNULL(r2.date_add, '1000-01-01 00:00:00') AND r1.id < r2.id))) AS tmp);
INNER JOIN pp_redirects r2
ON r1.`from` = r2.`from`
AND (r1.lang_id <=> r2.lang_id)
AND (
IFNULL(r1.date_add, '1000-01-01 00:00:00') < IFNULL(r2.date_add, '1000-01-01 00:00:00')
OR (
IFNULL(r1.date_add, '1000-01-01 00:00:00') = IFNULL(r2.date_add, '1000-01-01 00:00:00')
AND r1.id < r2.id
)
);

View File

@@ -0,0 +1,23 @@
D: ../autoload/admin/controls/
D: ../autoload/admin/factory/
D: ../autoload/admin/view/
D: ../autoload/cms/
D: ../autoload/front/controls/
D: ../autoload/front/factory/
D: ../autoload/front/view/
D: ../autoload/shop/
F: ../autoload/admin/class.Site.php
F: ../autoload/class.Article.php
F: ../autoload/class.Cache.php
F: ../autoload/class.CacheHandler.php
F: ../autoload/class.DbModel.php
F: ../autoload/class.Email.php
F: ../autoload/class.Html.php
F: ../autoload/class.Image.php
F: ../autoload/class.Log.php
F: ../autoload/class.Mobile_Detect.php
F: ../autoload/class.RedisConnection.php
F: ../autoload/class.S.php
F: ../autoload/class.Tpl.php
F: ../autoload/curl.class.php
D: ../updates/

BIN
updates/0.20/ver_0.298.zip Normal file

Binary file not shown.

View File

@@ -1,3 +1,6 @@
<b>ver. 0.298 - 20.02.2026</b><br />
- FIX - kilka poprawek po aktualizacji
<hr>
<b>ver. 0.297 - 19.02.2026</b><br /> <b>ver. 0.297 - 19.02.2026</b><br />
- NEW - REST API produktów (lista, szczegóły, tworzenie, aktualizacja) - NEW - REST API produktów (lista, szczegóły, tworzenie, aktualizacja)
- NEW - Endpoint products z filtrowaniem, sortowaniem i paginacją - NEW - Endpoint products z filtrowaniem, sortowaniem i paginacją
@@ -318,7 +321,7 @@
<hr><b>ver. 0.257 - 12.02.2026</b><br /> <hr><b>ver. 0.257 - 12.02.2026</b><br />
- NEW - migracja modulu `Newsletter` do architektury Domain + DI (`Domain\\Newsletter\\NewsletterRepository`, `Domain\\Newsletter\\NewsletterPreviewRenderer`, `admin\\Controllers\\NewsletterController`) - NEW - migracja modulu `Newsletter` do architektury Domain + DI (`Domain\\Newsletter\\NewsletterRepository`, `Domain\\Newsletter\\NewsletterPreviewRenderer`, `admin\\Controllers\\NewsletterController`)
- UPDATE - widoki `/admin/newsletter/*` przepiete z legacy `grid/gridEdit` na nowe komponenty (`components/table-list`, `components/form-edit`) + nowy endpoint `/admin/newsletter/preview/` - UPDATE - widoki `/admin/newsletter/*` przepiete z legacy `grid/gridEdit` na nowe komponenty (`components/table-list`, `components/form-edit`) + nowy endpoint `/admin/newsletter/preview/`
- UPDATE - routing DI (`admin\\Site`) rozszerzony o moduĹ‚ `Newsletter` - UPDATE - routing DI (`admin\\Site`) rozszerzony o moduł `Newsletter`
- UPDATE - `admin\\factory\\Newsletter` dziala jako fasada do nowego repozytorium (backward compatibility) - UPDATE - `admin\\factory\\Newsletter` dziala jako fasada do nowego repozytorium (backward compatibility)
- UPDATE - `front\\factory\\Newsletter` nie korzysta juz z `admin\\view\\Newsletter` - UPDATE - `front\\factory\\Newsletter` nie korzysta juz z `admin\\view\\Newsletter`
- CLEANUP - usuniete legacy klasy `autoload/admin/controls/class.Newsletter.php`, `autoload/admin/view/class.Newsletter.php` - CLEANUP - usuniete legacy klasy `autoload/admin/controls/class.Newsletter.php`, `autoload/admin/view/class.Newsletter.php`
@@ -339,7 +342,7 @@
- UPDATE - migracja widokow languages (`languages-list`, `language-edit`, `translations-list`, `translation-edit`) na `components/table-list` i `components/form-edit` - UPDATE - migracja widokow languages (`languages-list`, `language-edit`, `translations-list`, `translation-edit`) na `components/table-list` i `components/form-edit`
- UPDATE - routing DI dla `Languages` w `admin\\Site` oraz kompatybilna fasada `admin\\factory\\Languages` delegujaca do repozytorium - UPDATE - routing DI dla `Languages` w `admin\\Site` oraz kompatybilna fasada `admin\\factory\\Languages` delegujaca do repozytorium
- UPDATE - naprawiono zapis edycji jezyka (ID jezyka pobierane z URL przy edycji) - UPDATE - naprawiono zapis edycji jezyka (ID jezyka pobierane z URL przy edycji)
- UPDATE - globalne poprawki UX filtrĂłw w `components/table-list` (kompaktowe kolumny `Aktywny`/`Domyslny`, spacing i pelna szerokosc selecta) - UPDATE - globalne poprawki UX filtrów w `components/table-list` (kompaktowe kolumny `Aktywny`/`Domyslny`, spacing i pelna szerokosc selecta)
- CLEANUP - usuniete legacy klasy: `autoload/admin/controls/class.Languages.php`, `autoload/admin/view/class.Languages.php` - CLEANUP - usuniete legacy klasy: `autoload/admin/controls/class.Languages.php`, `autoload/admin/view/class.Languages.php`
<hr> <hr>
<b>ver. 0.253 - 12.02.2026</b><br /> <b>ver. 0.253 - 12.02.2026</b><br />
@@ -402,74 +405,74 @@
- UPDATE - refaktoryzacja: article_save przeniesiony do Domain\Article\ArticleRepository::save() z prywatnymi helperami - UPDATE - refaktoryzacja: article_save przeniesiony do Domain\Article\ArticleRepository::save() z prywatnymi helperami
- UPDATE - refaktoryzacja: article_delete przeniesiony do Domain\Article\ArticleRepository::archive() - UPDATE - refaktoryzacja: article_delete przeniesiony do Domain\Article\ArticleRepository::archive()
- UPDATE - ArticlesController: nowe akcje save() i delete() z DI - UPDATE - ArticlesController: nowe akcje save() i delete() z DI
- UPDATE - admin\factory\Articles::article_save() i articles_set_archive() delegujÄ… do repozytorium (kompatybilność) - UPDATE - admin\factory\Articles::article_save() i articles_set_archive() delegują do repozytorium (kompatybilność)
<hr><b>ver. 0.243</b><br /> <hr><b>ver. 0.243</b><br />
- UPDATE - refaktoryzacja: cleanup nieprzypisanych plikĂłw/zdjęć artykułów przeniesiony do Domain\Article\ArticleRepository - UPDATE - refaktoryzacja: cleanup nieprzypisanych plików/zdjęć artykułów przeniesiony do Domain\Article\ArticleRepository
- UPDATE - ArticlesController::edit() uĹĽywa repozytorium do cleanupu, a admin\factory\Articles zachowuje delegowanie (kompatybilność) - UPDATE - ArticlesController::edit() używa repozytorium do cleanupu, a admin\factory\Articles zachowuje delegowanie (kompatybilność)
<hr><b>ver. 0.242</b><br /> <hr><b>ver. 0.242</b><br />
- NEW - refaktoryzacja: Domain\Article\ArticleRepository + migracja article_edit do admin\Controllers\ArticlesController (DI) - NEW - refaktoryzacja: Domain\Article\ArticleRepository + migracja article_edit do admin\Controllers\ArticlesController (DI)
- UPDATE - admin\factory\Articles::article_details() deleguje do nowego repozytorium (kompatybilność zachowana) - UPDATE - admin\factory\Articles::article_details() deleguje do nowego repozytorium (kompatybilność zachowana)
- UPDATE - metody przejÄ™te przez nowe kontrolery oznaczone jako @deprecated w legacy kontrolerach admin\controls - UPDATE - metody przejęte przez nowe kontrolery oznaczone jako @deprecated w legacy kontrolerach admin\controls
<hr><b>ver. 0.241</b><br /> <hr><b>ver. 0.241</b><br />
- NEW - refaktoryzacja: admin\Controllers\ProductArchiveController - archiwum produktĂłw z DI - NEW - refaktoryzacja: admin\Controllers\ProductArchiveController - archiwum produktów z DI
- NEW - ProductRepository::archive(), unarchive() - operacje archiwizacji w repozytorium - NEW - ProductRepository::archive(), unarchive() - operacje archiwizacji w repozytorium
- FIX - naprawiono SQL w liĹ›cie archiwum (puste wyszukiwanie filtrowaĹ‚o wszystkie wyniki) - FIX - naprawiono SQL w liście archiwum (puste wyszukiwanie filtrowało wszystkie wyniki)
- FIX - naprawiono brakujÄ…cy filtr archive = 1 w zapytaniu bez wyszukiwania - FIX - naprawiono brakujący filtr archive = 1 w zapytaniu bez wyszukiwania
- UPDATE - wyczyszczono szablony archiwum (usuniÄ™to zbÄ™dne funkcje: apilo, baselinker, duplikowanie) - UPDATE - wyczyszczono szablony archiwum (usunięto zbędne funkcje: apilo, baselinker, duplikowanie)
<hr> <hr>
<b>ver. 0.240</b><br /> <b>ver. 0.240</b><br />
- NEW - refaktoryzacja: Domain\Settings\SettingsRepository + admin\Controllers\SettingsController (architektura Domain-Driven) - NEW - refaktoryzacja: Domain\Settings\SettingsRepository + admin\Controllers\SettingsController (architektura Domain-Driven)
- NEW - refaktoryzacja: Domain\Cache\CacheRepository - czyszczenie cache z obsĹugÄ… Redis - NEW - refaktoryzacja: Domain\Cache\CacheRepository - czyszczenie cache z obsługą Redis
- FIX - komunikat potwierdzenia zapisu ustawieĹ„ w panelu administratora - FIX - komunikat potwierdzenia zapisu ustawień w panelu administratora
- FIX - naprawiono element #content w layoucie admina (powiadomienia grid.js) - FIX - naprawiono element #content w layoucie admina (powiadomienia grid.js)
<hr><b>ver. 0.239</b><br /> <hr><b>ver. 0.239</b><br />
- NEW - refaktoryzacja: Domain\Banner\BannerRepository + admin\Controllers\BannerController (peĹ‚na migracja kontrolera) - NEW - refaktoryzacja: Domain\Banner\BannerRepository + admin\Controllers\BannerController (pełna migracja kontrolera)
- NEW - refaktoryzacja: Domain\Product\ProductRepository::getPrice(), getName() - migracja kolejnych metod - NEW - refaktoryzacja: Domain\Product\ProductRepository::getPrice(), getName() - migracja kolejnych metod
- NEW - router admin z obsĹugÄ… nowych kontrolerĂłw (fallback na stare) - NEW - router admin z obsługą nowych kontrolerów (fallback na stare)
- UPDATE - shop\Product::get_product_price(), get_product_name() uĹĽywajÄ… nowego repozytorium (kompatybilność zachowana) - UPDATE - shop\Product::get_product_price(), get_product_name() używają nowego repozytorium (kompatybilność zachowana)
<hr> <hr>
<b>ver. 0.238</b><br /> <b>ver. 0.238</b><br />
- NEW - refaktoryzacja: Domain\Product\ProductRepository - pierwsza klasa w nowej architekturze Domain-Driven - NEW - refaktoryzacja: Domain\Product\ProductRepository - pierwsza klasa w nowej architekturze Domain-Driven
- NEW - Dependency Injection zamiast global variables - NEW - Dependency Injection zamiast global variables
- UPDATE - shop\Product::get_product_quantity() uĹĽywa teraz nowego repozytorium (kompatybilność zachowana) - UPDATE - shop\Product::get_product_quantity() używa teraz nowego repozytorium (kompatybilność zachowana)
<hr> <hr>
<b>ver. 0.237</b><br /> <b>ver. 0.237</b><br />
- NEW - automatyczne czyszczenie cache produktu po aktualizacji przez CRON (Sellasist, Apilo, Baselinker) - NEW - automatyczne czyszczenie cache produktu po aktualizacji przez CRON (Sellasist, Apilo, Baselinker)
- UPDATE - przycisk "Wyczyść cache" w panelu administratora z obsĹugÄ… AJAX i komunikatami o postÄ™pie - UPDATE - przycisk "Wyczyść cache" w panelu administratora z obsługą AJAX i komunikatami o postępie
<hr> <hr>
<b>ver. 0.236</b><br /> <b>ver. 0.236</b><br />
- FIX - zabezpieczenie przed duplikatami zamĂłwieĹ„ w Apilo - automatyczne pobieranie ID zamĂłwienia przy błędzie "idExternal juĹĽ wykorzystywany" - FIX - zabezpieczenie przed duplikatami zamówień w Apilo - automatyczne pobieranie ID zamówienia przy błędzie "idExternal już wykorzystywany"
<hr> <hr>
<b>ver. 0.235</b><br /> <b>ver. 0.235</b><br />
- FIX - poprawka funkcji aktualizacji - FIX - poprawka funkcji aktualizacji
<hr> <hr>
<b>ver. 0.234</b><br /> <b>ver. 0.234</b><br />
- NEW - przycisk zaznaczania zamĂłwienia jako wysĹ‚ane do trustmate.io - NEW - przycisk zaznaczania zamówienia jako wysłane do trustmate.io
<hr> <hr>
<b>ver. 0.232</b><br /> <b>ver. 0.232</b><br />
- NEW - opcje GPSR - NEW - opcje GPSR
<hr> <hr>
<b>ver. 0.231</b><br /> <b>ver. 0.231</b><br />
- FIX - poprawki bezpieczeĹ„stwa + dwuetapowa weryfikacja logowania - FIX - poprawki bezpieczeństwa + dwuetapowa weryfikacja logowania
<hr> <hr>
<b>ver. 0.230</b><br /> <b>ver. 0.230</b><br />
- FIX - poprawki bezpieczeĹ„stwa - FIX - poprawki bezpieczeństwa
<hr> <hr>
<b>ver. 0.229</b><br /> <b>ver. 0.229</b><br />
- NEW - pola dodatkowe z opcjÄ… wymagane/niewymagane - NEW - pola dodatkowe z opcją wymagane/niewymagane
<hr> <hr>
<b>ver. 0.228</b><br /> <b>ver. 0.228</b><br />
- NEW - cron do wysyĹ‚ania zamĂłwieĹ„ do trustmate.io - NEW - cron do wysyłania zamówień do trustmate.io
<hr> <hr>
<b>ver. 0.227</b><br /> <b>ver. 0.227</b><br />
- NEW - historia kodĂłw rabatowych - NEW - historia kodów rabatowych
<hr> <hr>
<b>ver. 0.226</b><br /> <b>ver. 0.226</b><br />
- NEW - dodanie opcji faktury do zamĂłwienia - NEW - dodanie opcji faktury do zamówienia
<hr> <hr>
<b>ver. 0.225</b><br /> <b>ver. 0.225</b><br />
- NEW - przycisk czyszczenia cache<br> - NEW - przycisk czyszczenia cache<br>
- NEW - ponowne wysyĹ‚anie zamĂłwienia do apilo - NEW - ponowne wysyłanie zamówienia do apilo
<hr> <hr>
<b>ver. 0.224</b><br /> <b>ver. 0.224</b><br />
- NEW - sortowanie form dostawy - NEW - sortowanie form dostawy
@@ -481,20 +484,20 @@
- NEW - integracja z Orlen Paczka - NEW - integracja z Orlen Paczka
<hr> <hr>
<b>ver. 0.221</b><br /> <b>ver. 0.221</b><br />
- NEW - Automatyczne przekierowania adresĂłw URL produktĂłw, zmiany w pliku htaccess - NEW - Automatyczne przekierowania adresów URL produktów, zmiany w pliku htaccess
<hr> <hr>
<b>ver. 0.220</b><br /> <b>ver. 0.220</b><br />
- NEW - Dodanie moĹĽliwoĹ›ci wyĹ›wietlenia na strone ostatnio dodane produkty [PRODUKTY_NEW] lub [PRODUKTY_NEW:10].<br> - NEW - Dodanie możliwości wyświetlenia na strone ostatnio dodane produkty [PRODUKTY_NEW] lub [PRODUKTY_NEW:10].<br>
- NEW - Dodanie moĹĽliwoĹ›ci wyĹ›wietlenia na strone popularnych produktĂłw [PRODUKTY_TOP] lub [PRODUKTY_TOP:10]. - NEW - Dodanie możliwości wyświetlenia na strone popularnych produktów [PRODUKTY_TOP] lub [PRODUKTY_TOP:10].
<hr> <hr>
<b>ver. 0.219</b><br /> <b>ver. 0.219</b><br />
- NEW - Dodanie moĹĽliwoĹ›ci zmiany daty w artykuĹ‚ach - NEW - Dodanie możliwości zmiany daty w artykułach
<hr> <hr>
<b>ver. 0.218</b><br /> <b>ver. 0.218</b><br />
- NEW - indywidualny kod GTM - NEW - indywidualny kod GTM
<hr> <hr>
<b>ver. 0.217</b><br /> <b>ver. 0.217</b><br />
- NEW - zwiÄ™kszenie obsĹ‚ugi REDIS - NEW - zwiększenie obsługi REDIS
<hr> <hr>
<b>ver. 0.216</b><br /> <b>ver. 0.216</b><br />
- NEW - aktualizacja api i cron (apilo) - NEW - aktualizacja api i cron (apilo)
@@ -509,43 +512,43 @@
- FIX - wyliczenie darmowej dostawy - FIX - wyliczenie darmowej dostawy
<hr> <hr>
<b>ver. 0.212</b><br /> <b>ver. 0.212</b><br />
- NEW - zmiany w zapisywaniu zamĂłwienia do apilo - NEW - zmiany w zapisywaniu zamówienia do apilo
<hr> <hr>
<b>ver. 0.211</b><br /> <b>ver. 0.211</b><br />
- NEW - Debugowanie apilo + wyĹ›wietlanie podkategorii - NEW - Debugowanie apilo + wyświetlanie podkategorii
<hr> <hr>
<b>ver. 0.210</b><br /> <b>ver. 0.210</b><br />
- NEW - dodatkowe pola w widoku produktĂłw - NEW - dodatkowe pola w widoku produktów
<hr> <hr>
<b>ver. 0.209</b><br /> <b>ver. 0.209</b><br />
- NEW - zmiany w widoku produktĂłw (panel administratora) - NEW - zmiany w widoku produktów (panel administratora)
<hr> <hr>
<b>ver. 0.208</b><br /> <b>ver. 0.208</b><br />
- NEW - zmiany w wyszukiwarce produktĂłw - NEW - zmiany w wyszukiwarce produktów
<hr> <hr>
<b>ver. 0.204-0.207</b><br /> <b>ver. 0.204-0.207</b><br />
- NEW - htaccess update - NEW - htaccess update
<hr> <hr>
<b>ver. 0.204-0.206</b><br /> <b>ver. 0.204-0.206</b><br />
- NEW - wysyĹ‚anie produktĂłw do apilo - NEW - wysyłanie produktów do apilo
<hr> <hr>
<b>ver. 0.203</b><br /> <b>ver. 0.203</b><br />
- NEW - zmiana sposobu wyliczania cen produkty z dodatkami - NEW - zmiana sposobu wyliczania cen produkty z dodatkami
<hr> <hr>
<b>ver. 0.202</b><br /> <b>ver. 0.202</b><br />
- NEW - dodano "główne zdjÄ™cie" w edycji artykuĹ‚u - NEW - dodano "ówne zdjęcie" w edycji artykułu
<hr> <hr>
<b>ver. 0.201</b><br /> <b>ver. 0.201</b><br />
- FIX - aktualizacja statusĂłw na podstawie baselinkera - FIX - aktualizacja statusów na podstawie baselinkera
<hr> <hr>
<b>ver. 0.200</b><br /> <b>ver. 0.200</b><br />
- NEW - wysyĹ‚anie produktĂłw do baselinker - NEW - wysyłanie produktów do baselinker
<hr> <hr>
<b>ver. 0.199</b><br /> <b>ver. 0.199</b><br />
- NEW - usprawnienie edycji danych do XML - NEW - usprawnienie edycji danych do XML
<hr> <hr>
<b>ver. 0.198</b><br /> <b>ver. 0.198</b><br />
- NEW - automatyczne generowanie kodĂłw SKU - NEW - automatyczne generowanie kodów SKU
<hr> <hr>
<b>ver. 0.197</b><br /> <b>ver. 0.197</b><br />
- FIX - poprawki w Dashboard - FIX - poprawki w Dashboard
@@ -554,7 +557,7 @@
- FIX - integracja z apilo.com - FIX - integracja z apilo.com
<hr> <hr>
<b>ver. 0.195</b><br /> <b>ver. 0.195</b><br />
- FIX - aktualizacja statusĂłw - FIX - aktualizacja statusów
<hr> <hr>
<b>ver. 0.194</b><br /> <b>ver. 0.194</b><br />
- UPDATE - integracja apilo - UPDATE - integracja apilo
@@ -563,46 +566,46 @@
- UPDATE - aktualizacja synchronizacji z baselinker - UPDATE - aktualizacja synchronizacji z baselinker
<hr> <hr>
<b>ver. 0.192</b><br /> <b>ver. 0.192</b><br />
- NEW - pobieranie statusĂłw z sellasist - NEW - pobieranie statusów z sellasist
<hr> <hr>
<b>ver. 0.191</b><br /> <b>ver. 0.191</b><br />
- NEW - integracja z selasist - NEW - integracja z selasist
<hr> <hr>
<b>ver. 0.190</b><br /> <b>ver. 0.190</b><br />
- FIX - produkty powiÄ…zane - FIX - produkty powiązane
<hr> <hr>
<b>ver. 0.189</b><br /> <b>ver. 0.189</b><br />
- FIX - ceny promocyjne produktĂłw z dodatkiem - FIX - ceny promocyjne produktów z dodatkiem
<hr> <hr>
<b>ver. 0.188</b><br /> <b>ver. 0.188</b><br />
- NEW - widok listy produktĂłw - NEW - widok listy produktów
<hr> <hr>
<b>ver. 0.187</b><br /> <b>ver. 0.187</b><br />
- FIX - pobieranie cen z APILO - FIX - pobieranie cen z APILO
<hr> <hr>
<b>ver. 0.186</b><br /> <b>ver. 0.186</b><br />
- FIX - dodawanie do koszyka tych samych produktĂłw ale z różnÄ… personalizacjÄ… - FIX - dodawanie do koszyka tych samych produktów ale z różną personalizacją
<hr> <hr>
<b>ver. 0.185</b><br /> <b>ver. 0.185</b><br />
- FIX - masowa edycja produktĂłw - FIX - masowa edycja produktów
<hr> <hr>
<b>ver. 0.184</b><br /> <b>ver. 0.184</b><br />
- NEW - druga część integracji z apilo, masowa edycja produktĂłw - NEW - druga część integracji z apilo, masowa edycja produktów
<hr> <hr>
<b>ver. 0.183</b><br /> <b>ver. 0.183</b><br />
- NEW - pierwsza część integracji z apilo - NEW - pierwsza część integracji z apilo
<hr> <hr>
<b>ver. 0.182</b><br /> <b>ver. 0.182</b><br />
- FIX - layout - FIX - layout
<hr> <hr>
<b>ver. 0.181</b><br /> <b>ver. 0.181</b><br />
- NEW - infinitescroll - opcja włączy/wyłącz - NEW - infinitescroll - opcja włączy/wyłącz
<hr> <hr>
<b>ver. 0.180</b><br /> <b>ver. 0.180</b><br />
- NEW - aktualizacja dashboard - NEW - aktualizacja dashboard
<hr> <hr>
<b>ver. 0.179</b><br /> <b>ver. 0.179</b><br />
- NEW - obsĹ‚uga EAN - NEW - obsługa EAN
<hr> <hr>
<b>ver. 0.177, 0.178</b><br /> <b>ver. 0.177, 0.178</b><br />
- FIX - custom_label - FIX - custom_label
@@ -618,7 +621,7 @@
<hr> <hr>
<b>ver. 0.173</b><br /> <b>ver. 0.173</b><br />
- NEW - duplikowanie produktu wraz z kombinacjami - NEW - duplikowanie produktu wraz z kombinacjami
- NEW - dodanie przechodzenia pomiÄ™dzy zamĂłwienia (poprzednie/nastÄ™pne zamĂłwienie) - NEW - dodanie przechodzenia pomiędzy zamówienia (poprzednie/następne zamówienie)
<hr> <hr>
<b>ver. 0.172</b><br /> <b>ver. 0.172</b><br />
- FIX - poprawki w Cache - FIX - poprawki w Cache
@@ -630,22 +633,22 @@
- NEW - usuwanie cache produktu przy zapisie - NEW - usuwanie cache produktu przy zapisie
<hr> <hr>
<b>ver. 0.169</b><br /> <b>ver. 0.169</b><br />
- FIX - poprawki w liĹ›cie produktĂłw - FIX - poprawki w liście produktów
<hr> <hr>
<b>ver. 0.168</b><br /> <b>ver. 0.168</b><br />
- NEW - archiwum produktĂłw - NEW - archiwum produktów
<hr> <hr>
<b>ver. 0.167</b><br /> <b>ver. 0.167</b><br />
- NEW - dodanie obsĹ‚ugi cen i stanĂłw magazynowych kombinacji produktĂłw - NEW - dodanie obsługi cen i stanów magazynowych kombinacji produktów
<hr> <hr>
<b>ver. 0.166</b><br /> <b>ver. 0.166</b><br />
- NEW - współpraca z GTM - NEW - współpraca z GTM
<hr> <hr>
<b>ver. 0.164/5</b><br /> <b>ver. 0.164/5</b><br />
- FIX - ukrywanie produktĂłw nieaktywnych - FIX - ukrywanie produktów nieaktywnych
<hr> <hr>
<b>ver. 0.163</b><br /> <b>ver. 0.163</b><br />
- NEW - automatyczne podpowiadanie produktĂłw do zestawu na podstawie wczeĹ›niejszych zakupĂłw klientĂłw - NEW - automatyczne podpowiadanie produktów do zestawu na podstawie wcześniejszych zakupów klientów
<hr> <hr>
<b>ver. 0.162</b><br /> <b>ver. 0.162</b><br />
- NEW - GA4 - NEW - GA4
@@ -661,7 +664,7 @@
- FIX - cron Baselinker - FIX - cron Baselinker
<hr> <hr>
<b>ver. 0.158</b><br /> <b>ver. 0.158</b><br />
- UPDATE - poprawa kolorystyki przyciskĂłw - UPDATE - poprawa kolorystyki przycisków
<hr> <hr>
<b>ver. 0.157</b><br /> <b>ver. 0.157</b><br />
- NEW - szybka zmiana statusu produktu - NEW - szybka zmiana statusu produktu
@@ -673,10 +676,10 @@
- NEW - infinite scroll w widoku kategorii - NEW - infinite scroll w widoku kategorii
<hr> <hr>
<b>ver. 0.154</b><br /> <b>ver. 0.154</b><br />
- FIX - atrybuty produktĂłw - FIX - atrybuty produktów
<hr> <hr>
<b>ver. 0.153</b><br /> <b>ver. 0.153</b><br />
- FIX - atrybuty produktĂłw - FIX - atrybuty produktów
<hr> <hr>
<b>ver. 0.152</b><br /> <b>ver. 0.152</b><br />
- FIX - tematy maili - FIX - tematy maili
@@ -685,7 +688,7 @@
- FIX - tematy maili - FIX - tematy maili
<hr> <hr>
<b>ver. 0.150</b><br /> <b>ver. 0.150</b><br />
- NEW - domyĹ›lna forma transportu - NEW - domyślna forma transportu
<hr> <hr>
<b>ver. 0.149</b><br /> <b>ver. 0.149</b><br />
- NEW - tematy maili - NEW - tematy maili
@@ -703,10 +706,10 @@
- NEW - omnibus ready - NEW - omnibus ready
<hr> <hr>
<b>ver. 0.144</b><br /> <b>ver. 0.144</b><br />
- FIX - usuniÄ™cie adresu marianek.pl z kodu - FIX - usunięcie adresu marianek.pl z kodu
<hr> <hr>
<b>ver. 0.143</b><br /> <b>ver. 0.143</b><br />
- FIX - poprawa generowania plikĂłw WEBP - FIX - poprawa generowania plików WEBP
<hr> <hr>
<b>ver. 0.142</b><br /> <b>ver. 0.142</b><br />
- FIX - poprawa adresu strony głównej - FIX - poprawa adresu strony ównej

View File

@@ -1,5 +1,5 @@
<? <?
$current_ver = 297; $current_ver = 298;
for ($i = 1; $i <= $current_ver; $i++) for ($i = 1; $i <= $current_ver; $i++)
{ {