X-Cart: shopping cart software

X-Cart forums (https://forum.x-cart.com/index.php)
-   Third Party Add-Ons for X-Cart 4 (https://forum.x-cart.com/forumdisplay.php?f=45)
-   -   altered carts OnSale mod for php 7+ (https://forum.x-cart.com/showthread.php?t=76935)

keystone 06-06-2019 01:23 PM

Re: altered carts OnSale mod for php 7+
 
I did get this error with the php code checker...

Quote:

Warning: There is 1 array declaration that contains a single equal sign '=' instead of '=>':


Code:

array(func_query_first_cell("SELECT categoryid FROM $sql_tbl[products_categories] WHERE productid='".$product['productid']."' AND main='Y'"))

It that really an error or is the code ok?

keystone 06-07-2019 10:33 AM

Re: altered carts OnSale mod for php 7+
 
So i've made a few changes to the OnSale mod to try and get it in line with php7.2 and here one I'm stuck on... I currently have
Code:

                if (db_query("UPDATE xcart_onsale SET begin='$begin', end='$end', saletype='$saletype', criteria='".addslashes(serialize($product_criteria))."', coupon_code='$coupon_code', uses='$times_to_use', home_display='$home_display', onsale_product_display='$onsale_product_display', onsale_display='$onsale_display', per_customer='$per_customer', productids='$productids', catids='$catids', provider='$login', status='".mysqli_real_escape_string($sale_status)."' WHERE onsaleid='$edit_update'")){
and get the error
Quote:

Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in /home/keyston1/public_html.dev/admin/onsale.php on line 677


Apparently I need to add the connection to the db in the mysqli function part
Code:

.mysqli_real_escape_string($my_connection,$sale_status)
I'm not sure what $my_connection should actually say...?
and am I headed in the right direction?
Thanks.

Thomasb134 06-07-2019 10:56 AM

Re: altered carts OnSale mod for php 7+
 
Don't update the original code to use mysqli_real_escape_string(). Instead, leave the old code as-is and recreate the missing mysql_real_escape_string() function that was removed in PHP7.

The details on how to do it are explained here:
https://forum.x-cart.com/showpost.php?p=410661&postcount=10
.

keystone 06-07-2019 11:57 AM

Re: altered carts OnSale mod for php 7+
 
I notice that post says if it is the ionCube version than that fix won't help. The instructions in the Bills unencrypted source code says that
Quote:

The licensing for the module uses ionCube

does that mean I can't use the fix?

Thomasb134 06-07-2019 12:12 PM

Re: altered carts OnSale mod for php 7+
 
In the Final weeks of Bill closing down his business he provided unencrypted source code (ioncube removed) to existing customers for a small fee. It was a limited time offer.

If that is what you have then you can ignore the ioncube license comment in his instructions since it does not apply.

keystone 06-07-2019 12:13 PM

Re: altered carts OnSale mod for php 7+
 
Looks like it may have worked, stand by.

keystone 07-05-2019 09:47 AM

Re: altered carts OnSale mod for php 7+
 
I'm still working through this and am getting this Warning...

count(): Parameter must be an array or an object that implements Countable

here are the 2 lines of code it referring to...

Code:

$smarty->assign('pidCount'count(): Parameter must be an array or an object that implements Countable, count(isset($sale['criteria']['purchase_products']) ? $sale['criteria']['purchase_products'] : 0)+count(isset($sale['criteria']['received_products']) ? $sale['criteria']['received_products'] : 0)+1);
        $smarty->assign('wPidCount', count(isset($sale['criteria']['wholesale']) ? $sale['criteria']['wholesale'] : 0)+1);                       


Should this be different for php7?

Thomasb134 07-05-2019 10:46 AM

Re: altered carts OnSale mod for php 7+
 
That warning was suppressed in earlier PHP versions. But now PHP7.2+ has elevated the warning to encourage better coding practices.

The solution is to test the variable to confirm it is countable BEFORE counting it. It would be something like this:
Code:

$smarty->assign('wPidCount', (($sale['criteria']['wholesale'] instanceof Countable) && count(isset($sale['criteria']['wholesale'])) ? $sale['criteria']['wholesale'] : 0)+1);

This is just a coding example and may not work as-is. My example is just to give you a fundamental idea on how to fix it.

BTW, PHP7.3 introduced the is_countable() function as alternate way to do the "instanceof Countable" var test. Details here:
https://www.php.net/manual/en/function.is-countable.php

.

keystone 07-30-2019 01:04 PM

Re: altered carts OnSale mod for php 7+
 
I've worked through the changes that were suggested and still don't have this working right. I get a bunch of Undefined index: and Undefined variable: notices and have no idea how to fix them. For example...

Undefined index
Quote:

Notice: Undefined index: use_taxed_price_product in /home/keyston1/public_html.dev/modules/alteredCart_On_Sale/onsale_sessions.php on line 23
Notice: Undefined index: no_globals_w_ind in /home/keyston1/public_html.dev/modules/alteredCart_On_Sale/onsale_sessions.php on line 39



Code:

// Load Settings //
x_session_register('onsale_settings');
$GLOBALS['onsale_settings'] = unserialize(func_query_first_cell("SELECT settings FROM xcart_onsale_settings WHERE os_set_id='1'"));

// Taxed Price //
$GLOBALS['onsale_settings']['use_taxed_price'] = $GLOBALS['onsale_settings']['use_taxed_price_product'] == 'Y' ? 'Y' : ''; // LINE 23
$smarty->assign('onsale_settings', $GLOBALS['onsale_settings']);

x_session_register('_message');
x_session_register('added_sales');
x_session_register('onsale_shipping');
x_session_register('cart');

$smarty->assign('onsale_messages', $_message);

// Get the Coupon Code //
$coupon_code = '';       

// Array of saletypes with discounts that load on the product/catalog page //
$cp_display = array('5', '10');

if ($GLOBALS['onsale_settings']['no_globals_w_ind'] == 'Y'){    // LINE 39
        $ind_pids = onsale_load_ind_productids();
}


example of Undefinded variable
Quote:

Undefined variable: p_query in /home/keyston1/public_html.dev/modules/alteredCart_On_Sale/onsale_functions.php on line 524


Code:

        $query = "SELECT * FROM $sql_tbl[onsale]
                        WHERE begin < '".$__time."'
                        AND end > '".$__time."'
                        AND status IN ('A', 'S', 'E') $p_query $c_query $ospage_filter    // LINE 524
                        ORDER BY order_to_apply ASC";
                       
        $md5 = md5($query);
       


can someone give me an example of what I should do so I can fix the rest of them? I tried google but they talk way over my head so it's like comparing apples to oranges.
Thanks.

cflsystems 07-30-2019 04:22 PM

Re: altered carts OnSale mod for php 7+
 
These are notices not even warnings. So you can ignore them. If you want them to go away you will have to assign a value no matter what.

So for example for the $p_query you need to find where its value is assigned somewhere before this line 524 and check if value is not assign and you can do something like

$p_query = '';

It will highly depend on the code there what it does and how it does it to decide how to assign the variable value.


All times are GMT -8. The time now is 03:55 PM.

Powered by vBulletin Version 3.5.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.