Dodanie obsługi kuponów rabatowych w szczegółach zamówienia oraz aktualizacja adresów URL do zasobów aktualizacji

This commit is contained in:
2025-03-11 23:56:31 +01:00
parent 8adeb8eb10
commit 2184e285b1
15 changed files with 126 additions and 98 deletions

View File

@@ -64,7 +64,7 @@ echo $grid -> draw();
?>
<?
ob_start();
echo $versions = file_get_contents( 'http://www.shoppro.project-dc.pl/updates/changelog.php' );
echo $versions = file_get_contents( 'https://shoppro.project-dc.pl/updates/changelog.php' );
$out = ob_get_clean();
$grid = new \gridEdit;

BIN
autoload/.DS_Store vendored Normal file

Binary file not shown.

View File

@@ -51,12 +51,16 @@ class ShopOrder
public static function order_details()
{
$order = new \shop\Order( (int)\S::get( 'order_id' ) );
$coupon = new \shop\Coupon( $order -> coupon_id );
return \Tpl::view( 'shop-order/order-details', [
'order' => new \shop\Order( (int)\S::get( 'order_id' ) ),
'order_statuses' => \shop\Order::order_statuses(),
'next_order_id' => \admin\factory\ShopOrder::next_order_id( (int)\S::get( 'order_id' ) ),
'prev_order_id' => \admin\factory\ShopOrder::prev_order_id( (int)\S::get( 'order_id' ) ),
] );
'order' => $order,
'coupon' => $coupon,
'order_statuses' => \shop\Order::order_statuses(),
'next_order_id' => \admin\factory\ShopOrder::next_order_id( (int)\S::get( 'order_id' ) ),
'prev_order_id' => \admin\factory\ShopOrder::prev_order_id( (int)\S::get( 'order_id' ) ),
] );
}
public static function view_list()

View File

@@ -9,7 +9,7 @@ class Update
\S::delete_session( 'new-version' );
$versions = file_get_contents( 'http://www.shoppro.project-dc.pl/updates/versions.php?key=' . $settings['update_key'] );
$versions = file_get_contents( 'https://shoppro.project-dc.pl/updates/versions.php?key=' . $settings['update_key'] );
$versions = explode( PHP_EOL, $versions );
foreach ( $versions as $ver )
@@ -22,7 +22,7 @@ class Update
else
$dir = substr( $ver, 0, strlen( $ver ) - 1 ) . 0;
$file = file_get_contents( 'http://www.shoppro.project-dc.pl/updates/' . $dir . '/ver_' . $ver . '.zip' );
$file = file_get_contents( 'https://shoppro.project-dc.pl/updates/' . $dir . '/ver_' . $ver . '.zip' );
$dlHandler = fopen( 'update.zip' , 'w' );
if ( !fwrite( $dlHandler, $file ) )
@@ -34,10 +34,10 @@ class Update
else
{
/* aktualizacja bazy danych */
$url = 'http://www.shoppro.project-dc.pl/updates/' . $dir . '/ver_' . $ver . '_sql.txt';
$url = 'https://shoppro.project-dc.pl/updates/' . $dir . '/ver_' . $ver . '_sql.txt';
$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_HEADER, true );
curl_setopt( $ch, CURLOPT_HEADER, false );
$response = curl_exec( $ch );
$content_type = curl_getinfo( $ch, CURLINFO_CONTENT_TYPE );
@@ -53,10 +53,10 @@ class Update
}
/* usuwanie zbędnych plików */
$url = 'http://www.shoppro.project-dc.pl/updates/' . $dir . '/ver_' . $ver . '_files.txt';
$url = 'https://shoppro.project-dc.pl/updates/' . $dir . '/ver_' . $ver . '_files.txt';
$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_HEADER, true );
curl_setopt( $ch, CURLOPT_HEADER, false );
$response = curl_exec( $ch );
$content_type = curl_getinfo( $ch, CURLINFO_CONTENT_TYPE );

View File

@@ -4,6 +4,7 @@ class Log
static public function save_log( $message, $user_id = null )
{
global $mdb;
$mdb -> insert( 'pp_log', [
'message' => $message,
'user_id' => $user_id ? $user_id : null,

View File

@@ -117,96 +117,97 @@ class S
static public function generate_webp_image($file, $compression_quality = 85)
{
if (strpos($file, 'thumb/') !== false) {
$file_tmp = explode('/', $file);
if ( strpos( $file, 'thumb/' ) !== false )
{
$file_tmp = explode( '/', $file );
$width = $file_tmp[1] ?? 500;
$height = $file_tmp[2] ?? 500;
$width = $file_tmp[1];
if ( empty( $width ) and $width !== '0' )
$width = 500;
for ($i = 0; $i <= 2; $i++) {
unset($file_tmp[$i]);
}
$height = $file_tmp[2];
if ( empty( $height ) and $height !== '0' )
$height = 500;
$img_src = implode('/', $file_tmp);
$crop_w = $_GET['c_w'] ?? 0;
$crop_h = $_GET['c_h'] ?? 0;
for ( $i = 0; $i <= 2; $i++ )
unset( $file_tmp[$i] );
$img_md5 = md5($img_src . $height . $width . $crop_h . $crop_w);
$file = 'thumbs/' . $img_md5[0] . '/' . $img_md5[1] . '/' . $img_md5[2] . '/' . $img_md5;
}
$img_src = implode( '/', $file_tmp );
if (!file_exists($file)) {
$crop_w = $_GET['c_w'];
$crop_h = $_GET['c_h'];
$img_md5 = md5( $img_src . $height . $width . $crop_h . $crop_w );
$file = 'thumbs/' . $img_md5[0] . '/' . $img_md5[1] . '/' . $img_md5[2] . '/' . $img_md5;
}
if ( !file_exists( $file ) )
return false;
$output_file = 'cache/' . $file . '.webp';
if ( file_exists( $output_file ) )
return $output_file;
$file_type = mime_content_type( $file );
if ( function_exists( 'imagewebp' ) )
{
switch ( $file_type )
{
case 'image/jpeg':
$image = imagecreatefromjpeg($file);
break;
case 'image/png':
$image = imagecreatefrompng($file);
imagepalettetotruecolor($image);
imagealphablending($image, true);
imagesavealpha($image, true);
break;
case 'image/gif':
$image = imagecreatefromgif($file);
break;
default:
return false;
}
$output_file = 'cache/' . $file . '.webp';
if (file_exists($output_file)) {
return $output_file;
$dir = dirname($output_file);
if (!is_dir($dir))
mkdir($dir, 0755, true);
$result = imagewebp($image, $output_file, $compression_quality);
if (false === $result)
return false;
imagedestroy($image);
return $output_file;
}
elseif (class_exists('Imagick'))
{
$dir = dirname($output_file);
if (!is_dir($dir))
mkdir($dir, 0755, true);
$image = new \Imagick();
$image->readImage($file);
if ($file_type === 'png')
{
$image->setImageFormat('webp');
$image->setImageCompressionQuality($compression_quality);
$image->setOption('webp:lossless', 'true');
}
$file_type = mime_content_type($file);
$image->writeImage($output_file);
return $output_file;
}
if (function_exists('imagewebp')) {
switch ($file_type) {
case 'image/jpeg':
$image = imagecreatefromjpeg($file);
break;
case 'image/png':
$image = imagecreatefrompng($file);
if (!$image) {
return false; // Jeśli nie udało się wczytać obrazu, zwróć false
}
imagepalettetotruecolor($image);
imagealphablending($image, true);
imagesavealpha($image, true);
break;
case 'image/gif':
$image = imagecreatefromgif($file);
break;
default:
return false;
}
if (!$image) {
return false; // Zapobiega błędowi jeśli wczytanie obrazu się nie powiedzie
}
$dir = dirname($output_file);
if (!is_dir($dir)) {
mkdir($dir, 0755, true);
}
$result = imagewebp($image, $output_file, $compression_quality);
imagedestroy($image);
return $result ? $output_file : false;
} elseif (class_exists('Imagick')) {
$dir = dirname($output_file);
if (!is_dir($dir)) {
mkdir($dir, 0755, true);
}
$image = new \Imagick();
try {
$image->readImage($file);
} catch (Exception $e) {
return false;
}
if ($file_type === 'image/png') {
$image->setImageFormat('webp');
$image->setImageCompressionQuality($compression_quality);
$image->setOption('webp:lossless', 'true');
}
$image->writeImage($output_file);
return $output_file;
}
return false;
return false;
}
public static function is_array_fix( $value )
{
if ( is_array( $value ) and count( $value ) )
@@ -394,7 +395,7 @@ class S
return $version;
$version = 0;
$versions = file_get_contents( 'http://www.shoppro.project-dc.pl/updates/versions.php?key=' . $settings['update_key'] );
$versions = file_get_contents( 'https://shoppro.project-dc.pl/updates/versions.php?key=' . $settings['update_key'] );
$versions = explode( PHP_EOL, $versions );
foreach ( $versions as $key => $version_tmp )
{

BIN
autoload/front/.DS_Store vendored Normal file

Binary file not shown.

View File

@@ -142,11 +142,14 @@ class ShopOrder
global $page, $settings;
$page['language']['meta_title'] = \S::lang( 'meta-title-szczegoly-zamowienia' ) . ' | ' . $settings['firm_name'];
$order = \front\factory\ShopOrder::order_details(
\front\factory\ShopOrder::order_id( \S::get( 'order_hash' ) )
);
$coupon = new \shop\Coupon( $order['coupon_id'] );
return \Tpl::view( 'shop-order/order-details', [
'order' => \front\factory\ShopOrder::order_details(
\front\factory\ShopOrder::order_id( \S::get( 'order_hash' ) )
),
'order' => $order,
'coupon' => $coupon,
'client' => \S::get_session( 'client' ),
'settings' => $settings
] );

View File

@@ -140,12 +140,14 @@ class ShopOrder
'apilo_order_status_date' => date( 'Y-m-d H:i:s' ),
'sellasist_order_status_date' => date( 'Y-m-d H:i:s' ),
] );
$order_id = $mdb -> id();
if ( !$order_id )
return false;
\Log::save_log( 'Złożono nowe zamówienie | NR: ' . $order_id );
if ( $coupon )
$mdb -> update( 'pp_shop_coupon', [ 'used_count[+]' => 1 ], [ 'id' => $coupon -> id ] );
// ustawienie statusu zamówienia
$mdb -> insert( 'pp_shop_order_statuses', [ 'order_id' => $order_id, 'status_id' => 0, 'mail' => 1 ] );
@@ -217,9 +219,10 @@ class ShopOrder
$order = \front\factory\ShopOrder::order_details( $order_id );
$mail_order = \Tpl::view( 'shop-order/mail-summary', [
'settings' => $settings,
'order' => $order
] );
'settings' => $settings,
'order' => $order,
'coupon' => $coupon,
] );
$settings[ 'ssl' ] ? $base = 'https' : $base = 'http';

View File

@@ -328,10 +328,12 @@ class Order implements \ArrayAccess
global $settings;
$order = \front\factory\ShopOrder::order_details( $this -> id );
$coupon = new \shop\Coupon( $order['coupon_id'] );
$mail_order = \Tpl::view( 'shop-order/mail-summary', [
'settings' => $settings,
'order' => $order
'order' => $order,
'coupon' => $coupon,
] );
$settings[ 'ssl' ] ? $base = 'https' : $base = 'http';

BIN
templates/.DS_Store vendored Normal file

Binary file not shown.

View File

@@ -136,6 +136,13 @@ echo $this -> settings['newsletter_header'];
</td>
</tr>
<? endif;?>
<? if ( $this -> coupon ):?>
<tr>
<td style="text-align: right; font-weight: 600; padding-top: 10px;" colspan="4">
Kod rabatowy: <span style="color: #cc0000;"><?= $this -> coupon -> name;?> - <?= $this -> coupon -> amount;?> <?= $this -> coupon -> type == 1 ? '%' : 'zł';?></span>
</td>
</tr>
<? endif;?>
<tr>
<td style="text-align: right; font-weight: 600; padding-top: 10px;" colspan="4"><?= $this -> order['payment_method'];?></td>
</tr>

View File

@@ -5,6 +5,7 @@
</div>
<?= \Tpl::view( 'shop-order/order-simple', [
'order' => $this -> order,
'coupon' => $this -> coupon,
'statuses' => \shop\Order::order_statuses()
] );?>
<? if ( $this -> order['status'] == 0 or $this -> order['status'] == 2 ):?>

View File

@@ -88,6 +88,11 @@
Rabat <span class="text-danger"><?= \S::decimal( $discount );?> zł</span>
</div>
<? endif;?>
<? if ( $this -> coupon ):?>
<div class="basket-summary">
Kod rabatowy: <span style="color: #cc0000;"><?= $this -> coupon -> name;?> - <?= $this -> coupon -> amount;?> <?= $this -> coupon -> type == 1 ? '%' : 'zł';?></span>
</div>
<? endif;?>
<div class="basket-summary">
<?= $this -> order['transport'];?> <span><?= \S::decimal( $this -> order['transport_cost'] );?> zł</span>
</div>

View File

@@ -5,6 +5,7 @@
</div>
<?= \Tpl::view( 'shop-order/order-simple', [
'order' => $this -> order,
'coupon' => $this -> coupon,
'statuses' => \shop\Order::order_statuses()
] );?>
<? if ( $this -> order['status'] == 0 or $this -> order['status'] == 2 ):?>