ver. 0.283: Legacy class cleanup — S, Html, Email, Image, Log, Mobile_Detect → Shared namespace

- Migrate class.S → Shared\Helpers\Helpers (140+ files), remove 12 unused methods
- Migrate class.Html → Shared\Html\Html
- Migrate class.Email → Shared\Email\Email
- Migrate class.Image → Shared\Image\ImageManipulator
- Delete class.Log (unused), class.Mobile_Detect (outdated UA detection)
- Remove grid library loading from admin (index.php, ajax.php)
- Replace gridEdit usage in 10 admin templates with grid-edit-replacement.php
- Fix grid-edit-replacement.php AJAX to send values as JSON (grid.js compat)
- Remove mobile layout conditionals (m_html/m_css/m_js) from Site + LayoutsRepository
- Remove \Log::save_log() calls from OrderAdminService, ShopOrder, Order

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-16 23:06:06 +01:00
parent 285cbe5515
commit 319491975d
159 changed files with 1501 additions and 3043 deletions

View File

@@ -49,11 +49,11 @@ class Basket implements \ArrayAccess
{
$basket[ $key ][ 'quantity' ] = $quantity_options['quantity'];
if ( $message )
\S::error( 'Ilość jednego lub więcej produktów została zmniejszona z powodu niestarczających stanów magazynowych. Sprawdź proszę koszyk.' );
\Shared\Helpers\Helpers::error( 'Ilość jednego lub więcej produktów została zmniejszona z powodu niestarczających stanów magazynowych. Sprawdź proszę koszyk.' );
$result = true;
}
}
\S::set_session( 'basket', $basket );
\Shared\Helpers\Helpers::set_session( 'basket', $basket );
return $result;
}

View File

@@ -8,7 +8,7 @@ class Coupon implements \ArrayAccess
if ( $element_id )
{
$result = $mdb -> get( 'pp_shop_coupon', '*', [ 'id' => $element_id ] );
if ( \S::is_array_fix( $result ) ) foreach ( $result as $key => $val )
if ( \Shared\Helpers\Helpers::is_array_fix( $result ) ) foreach ( $result as $key => $val )
$this -> $key = $val;
}
}

View File

@@ -24,21 +24,21 @@ class Order implements \ArrayAccess
if ( $order_id )
{
$result = $mdb -> get( 'pp_shop_orders', '*', [ 'id' => $order_id ] );
if ( \S::is_array_fix( $result ) ) foreach ( $result as $key => $val )
if ( \Shared\Helpers\Helpers::is_array_fix( $result ) ) foreach ( $result as $key => $val )
$this -> $key = $val;
}
if ( $hash )
{
$result = $mdb -> get( 'pp_shop_orders', '*', [ 'hash' => $hash ] );
if ( \S::is_array_fix( $result ) ) foreach ( $result as $key => $val )
if ( \Shared\Helpers\Helpers::is_array_fix( $result ) ) foreach ( $result as $key => $val )
$this -> $key = $val;
}
if ( $przelewy24_hash )
{
$result = $mdb -> get( 'pp_shop_orders', '*', [ 'przelewy24_hash' => $przelewy24_hash ] );
if ( \S::is_array_fix( $result ) ) foreach ( $result as $key => $val )
if ( \Shared\Helpers\Helpers::is_array_fix( $result ) ) foreach ( $result as $key => $val )
$this -> $key = $val;
}
@@ -183,8 +183,8 @@ class Order implements \ArrayAccess
$regex = "-(<a[^>]+href\s*=\s*['\"])(((?!'|\"|https?://).)*)(['\"][^>]*>)-i";
$mail_order = preg_replace( $regex, "$1" . $base . "://" . $_SERVER[ 'SERVER_NAME' ] . "$2$4", $mail_order );
\S::send_email( $this -> client_email, \S::lang( 'potwierdzenie-zamowienia-ze-sklepu' ) . ' ' . $settings[ 'firm_name' ], $mail_order );
\S::send_email( $settings[ 'contact_email' ], 'Nowe zamówienie / ' . $settings[ 'firm_name' ] . ' / ' . $order['number'] . ' - ' . $order['client_surname'] . ' ' . $order['client_name'], $mail_order );
\Shared\Helpers\Helpers::send_email( $this -> client_email, \Shared\Helpers\Helpers::lang( 'potwierdzenie-zamowienia-ze-sklepu' ) . ' ' . $settings[ 'firm_name' ], $mail_order );
\Shared\Helpers\Helpers::send_email( $settings[ 'contact_email' ], 'Nowe zamówienie / ' . $settings[ 'firm_name' ] . ' / ' . $order['number'] . ' - ' . $order['client_surname'] . ' ' . $order['client_name'], $mail_order );
return true;
}
@@ -245,7 +245,7 @@ class Order implements \ArrayAccess
global $mdb;
$rows = $mdb -> select( 'pp_shop_order_products', '*', [ 'order_id' => $order_id ] );
if ( \S::is_array_fix( $rows ) ) foreach ( $rows as $row )
if ( \Shared\Helpers\Helpers::is_array_fix( $rows ) ) foreach ( $rows as $row )
{
if ( $row['price_brutto_promo'] )
$summary += $row['price_brutto_promo'] * $row['quantity'];
@@ -298,8 +298,6 @@ class Order implements \ArrayAccess
'id' => $order_id
] );
\Log::save_log( 'Zamówienie zmienione przez administratora | ID: ' . $order_id, $user['id'] );
return true;
}
@@ -423,7 +421,7 @@ class Order implements \ArrayAccess
public static function process_apilo_sync_queue( int $limit = 10 ): int
{
$queue = self::load_apilo_sync_queue();
if ( !\S::is_array_fix( $queue ) )
if ( !\Shared\Helpers\Helpers::is_array_fix( $queue ) )
return 0;
$processed = 0;

View File

@@ -12,7 +12,7 @@ class Product implements \ArrayAccess
$lang_id = ( new \Domain\Languages\LanguagesRepository( $mdb ) )->defaultLanguage();
$result = $mdb -> get( 'pp_shop_products', '*', [ 'id' => $product_id ] );
if ( \S::is_array_fix( $result ) ) foreach ( $result as $key => $val )
if ( \Shared\Helpers\Helpers::is_array_fix( $result ) ) foreach ( $result as $key => $val )
$this -> $key = $val;
// kombinacja produktu
@@ -22,12 +22,12 @@ class Product implements \ArrayAccess
if ( !$this -> price_netto or !$this -> price_brutto )
{
$result = $mdb -> get( 'pp_shop_products', [ 'price_netto', 'price_brutto', 'price_netto_promo', 'price_brutto_promo', 'vat', 'wp' ], [ 'id' => $this -> parent_id ] );
if ( \S::is_array_fix( $result ) ) foreach ( $result as $key => $val )
if ( \Shared\Helpers\Helpers::is_array_fix( $result ) ) foreach ( $result as $key => $val )
$this -> $key = $val;
}
$results = $mdb -> select( 'pp_shop_products_langs', '*', [ 'AND' => [ 'product_id' => $this -> parent_id, 'lang_id' => $lang_id ] ] );
if ( \S::is_array_fix( $results ) ) foreach ( $results as $row )
if ( \Shared\Helpers\Helpers::is_array_fix( $results ) ) foreach ( $results as $row )
{
if ( $row[ 'copy_from' ] )
{
@@ -50,7 +50,7 @@ class Product implements \ArrayAccess
else
{
$results = $mdb -> select( 'pp_shop_products_langs', '*', [ 'AND' => [ 'product_id' => $product_id, 'lang_id' => $lang_id ] ] );
if ( \S::is_array_fix( $results ) ) foreach ( $results as $row )
if ( \Shared\Helpers\Helpers::is_array_fix( $results ) ) foreach ( $results as $row )
{
if ( $row[ 'copy_from' ] )
{
@@ -71,7 +71,7 @@ class Product implements \ArrayAccess
$this -> products_sets = $mdb -> select( 'pp_shop_product_sets_products', 'product_id', [ 'AND' => [ 'set_id' => $this -> set_id, 'product_id[!]' => $product_id ] ] );
$results = $mdb -> select( 'pp_shop_products', 'id', [ 'parent_id' => $product_id ] );
if ( \S::is_array_fix( $results ) )
if ( \Shared\Helpers\Helpers::is_array_fix( $results ) )
{
foreach ( $results as $row )
$product_combinations[] = \shop\Product::getFromCache( $row, $lang_id );
@@ -367,7 +367,7 @@ class Product implements \ArrayAccess
global $mdb;
$results = $mdb -> select( 'pp_shop_products_images', 'src', [ 'product_id' => $product_id, 'ORDER' => [ 'o' => 'ASC' ] ] );
if ( \S::is_array_fix( $results ) ) foreach ( $results as $row )
if ( \Shared\Helpers\Helpers::is_array_fix( $results ) ) foreach ( $results as $row )
return $row;
}
@@ -380,7 +380,7 @@ class Product implements \ArrayAccess
$lang_id = ( new \Domain\Languages\LanguagesRepository( $mdb ) )->defaultLanguage();
$results = $mdb -> select( 'pp_shop_products_langs', '*', [ 'AND' => [ 'product_id' => $product_id, 'lang_id' => $lang_id ] ] );
if ( \S::is_array_fix( $results ) ) foreach ( $results as $row )
if ( \Shared\Helpers\Helpers::is_array_fix( $results ) ) foreach ( $results as $row )
{
if ( $row[ 'copy_from' ] )
{
@@ -393,7 +393,7 @@ class Product implements \ArrayAccess
$language = $row;
}
$language['seo_link'] ? $url = '/' . $language['seo_link'] : $url = '/p-' . $product_id . '-' . \S::seo( $language['name'] );
$language['seo_link'] ? $url = '/' . $language['seo_link'] : $url = '/p-' . $product_id . '-' . \Shared\Helpers\Helpers::seo( $language['name'] );
return $url;
}
@@ -632,25 +632,25 @@ class Product implements \ArrayAccess
{
if ( in_array( $category_tmp, $product_categories ) )
{
$price['price_new'] = \S::normalize_decimal( $price['price_new'] - $price['price_new'] * $coupon -> amount / 100 );
$price['price_new'] = \Shared\Helpers\Helpers::normalize_decimal( $price['price_new'] - $price['price_new'] * $coupon -> amount / 100 );
break;
}
}
}
// ? nieograniczony kategoriami
else
$price['price_new'] = \S::normalize_decimal( $price['price_new'] - $price['price_new'] * $coupon -> amount / 100 );
$price['price_new'] = \Shared\Helpers\Helpers::normalize_decimal( $price['price_new'] - $price['price_new'] * $coupon -> amount / 100 );
// ? uwzględnij promocję jeżeli może łączyć się z rabatami i produktami przecenionymi
if ( $basket_position['discount_amount'] && $basket_position['discount_include_coupon'] && $basket_position['include_product_promo'] )
{
// ? najtańszy produkt w koszyku (z wybranych kategorii) za X zł
if ( $basket_position['discount_type'] == 3 )
$price['price_new'] = \S::normalize_decimal( $basket_position['discount_amount'] );
$price['price_new'] = \Shared\Helpers\Helpers::normalize_decimal( $basket_position['discount_amount'] );
// ? rabat procentowy
if ( $basket_position['discount_type'] == 1 )
$price['price_new'] = \S::normalize_decimal($price['price_new'] - $price['price_new'] * $basket_position['discount_amount'] / 100 );
$price['price_new'] = \Shared\Helpers\Helpers::normalize_decimal($price['price_new'] - $price['price_new'] * $basket_position['discount_amount'] / 100 );
}
}
// ? brak kodu rabatowego
@@ -660,11 +660,11 @@ class Product implements \ArrayAccess
{
// ? Najtańszy produkt w koszyku (z wybranych kategorii) za X zł
if ( $basket_position['discount_type'] == 3 )
$price['price_new'] = \S::normalize_decimal( $basket_position['discount_amount'] );
$price['price_new'] = \Shared\Helpers\Helpers::normalize_decimal( $basket_position['discount_amount'] );
// ? rabat procentowy
if ( $basket_position['discount_type'] == 1 )
$price['price_new'] = \S::normalize_decimal($price['price_new'] - $price['price_new'] * $basket_position['discount_amount'] / 100 );
$price['price_new'] = \Shared\Helpers\Helpers::normalize_decimal($price['price_new'] - $price['price_new'] * $basket_position['discount_amount'] / 100 );
}
}
}
@@ -686,25 +686,25 @@ class Product implements \ArrayAccess
{
if ( in_array( $category_tmp, $product_categories ) )
{
$price['price_new'] = \S::normalize_decimal( $price['price_new'] - $price['price_new'] * $coupon -> amount / 100 );
$price['price_new'] = \Shared\Helpers\Helpers::normalize_decimal( $price['price_new'] - $price['price_new'] * $coupon -> amount / 100 );
break;
}
}
}
// ? nieograniczony
else
$price['price_new'] = \S::normalize_decimal($price['price'] - $price['price'] * $coupon -> amount / 100 );
$price['price_new'] = \Shared\Helpers\Helpers::normalize_decimal($price['price'] - $price['price'] * $coupon -> amount / 100 );
// ? uwzględnij promocję jeżeli może łączyć się z rabatami i produktami przecenionymi
if ( $basket_position['discount_amount'] && $basket_position['discount_include_coupon'] && $basket_position['include_product_promo'] )
{
// ? najtańszy produkt w koszyku (z wybranych kategorii) za X zł
if ( $basket_position['discount_type'] == 3 )
$price['price_new'] = \S::normalize_decimal( $basket_position['discount_amount'] );
$price['price_new'] = \Shared\Helpers\Helpers::normalize_decimal( $basket_position['discount_amount'] );
// ? rabat procentowy
if ( $basket_position['discount_type'] == 1 )
$price['price_new'] = \S::normalize_decimal($price['price'] - $price['price'] * $basket_position['discount_amount'] / 100 );
$price['price_new'] = \Shared\Helpers\Helpers::normalize_decimal($price['price'] - $price['price'] * $basket_position['discount_amount'] / 100 );
}
}
// ? bez kodu rabatowego
@@ -714,11 +714,11 @@ class Product implements \ArrayAccess
{
// ? Najtańszy produkt w koszyku (z wybranych kategorii) za X zł
if ( $basket_position['discount_type'] == 3 )
$price['price_new'] = \S::normalize_decimal( $basket_position['discount_amount'] );
$price['price_new'] = \Shared\Helpers\Helpers::normalize_decimal( $basket_position['discount_amount'] );
// ? rabat procentowy
if ( $basket_position['discount_type'] == 1 )
$price['price_new'] = \S::normalize_decimal($price['price'] - $price['price'] * $basket_position['discount_amount'] / 100 );
$price['price_new'] = \Shared\Helpers\Helpers::normalize_decimal($price['price'] - $price['price'] * $basket_position['discount_amount'] / 100 );
}
}
}
@@ -792,7 +792,7 @@ class Product implements \ArrayAccess
}
}
$attributes = S::removeDuplicates( $attributes, 'id' );
$attributes = \Shared\Helpers\Helpers::removeDuplicates( $attributes, 'id' );
foreach ( $attributes as $key => $val )
{

View File

@@ -50,11 +50,11 @@ class ProductAttribute implements \ArrayAccess
$lang_id = ( new \Domain\Languages\LanguagesRepository( $mdb ) )->defaultLanguage();
$result = $mdb -> get( 'pp_shop_attributes', '*', [ 'id' => $attribute_id ] );
if ( \S::is_array_fix( $result ) ) foreach ( $result as $key => $val )
if ( \Shared\Helpers\Helpers::is_array_fix( $result ) ) foreach ( $result as $key => $val )
$this -> $key = $val;
$results = $mdb -> select( 'pp_shop_attributes_langs', '*', [ 'AND' => [ 'attribute_id' => $attribute_id, 'lang_id' => $lang_id ] ] );
if ( \S::is_array_fix( $results ) ) foreach ( $results as $row )
if ( \Shared\Helpers\Helpers::is_array_fix( $results ) ) foreach ( $results as $row )
$this -> language = $row;
}

View File

@@ -8,7 +8,7 @@ class ProductCustomField implements \ArrayAccess
global $mdb;
$result = $mdb -> get( 'pp_shop_products_custom_fields', '*', [ 'id_additional_field' => $custom_field_id ] );
if ( \S::is_array_fix( $result ) ) foreach ( $result as $key => $val )
if ( \Shared\Helpers\Helpers::is_array_fix( $result ) ) foreach ( $result as $key => $val )
$this -> $key = $val;
}

View File

@@ -13,12 +13,12 @@ class Search implements \ArrayAccess
{
global $lang_id;
$bs = \S::get( 'bs' );
$bs = \Shared\Helpers\Helpers::get( 'bs' );
$results = \shop\Product::searchProductsByName( \S::get( 'query' ), $lang_id, (int)$bs );
$results = \shop\Product::searchProductsByName( \Shared\Helpers\Helpers::get( 'query' ), $lang_id, (int)$bs );
$out = \Tpl::view( 'shop-search/products', [
'query' => \S::get( 'query' ),
'query' => \Shared\Helpers\Helpers::get( 'query' ),
'products' => $results['products']
]);
@@ -27,7 +27,7 @@ class Search implements \ArrayAccess
$tpl = new \Tpl;
$tpl -> ls = $results['ls'];
$tpl -> bs = $bs ? $bs : 1;
$tpl -> link = 'wyszukiwarka/' . \S::get( 'query' );
$tpl -> link = 'wyszukiwarka/' . \Shared\Helpers\Helpers::get( 'query' );
$out .= $tpl -> render( 'site/pager' );
}
@@ -38,8 +38,8 @@ class Search implements \ArrayAccess
{
global $lang_id;
$results = \shop\Product::searchProductByNameAjax( \S::get( 'query' ), $lang_id );
if ( \S::is_array_fix( $results ) ) foreach ( $results as $row )
$results = \shop\Product::searchProductByNameAjax( \Shared\Helpers\Helpers::get( 'query' ), $lang_id );
if ( \Shared\Helpers\Helpers::is_array_fix( $results ) ) foreach ( $results as $row )
$products[] = \Tpl::view( 'shop-search/product-search', [
'product' => Product::getFromCache( $row['product_id'], $lang_id )
] );

View File

@@ -7,7 +7,7 @@ class Shop implements \ArrayAccess
if ( self::isWholeNumber( $price ) )
$price = round( $price, 0 );
else
$price = \S::decimal( $price );
$price = \Shared\Helpers\Helpers::decimal( $price );
return $price;
}