Post by tt87 » Sun Dec 04, 2016 1:36 am

Opencart seems to save items in the shopping cart from previous shopping sessions. Is there an easy way to have shopping cart contents cleared after a certain amount of time? I have tried both extensions for this and neither of them work.

Version 2.0.3.1

New member

Posts

Joined
Mon Sep 21, 2015 7:08 am

Post by opencartmart » Sun Dec 04, 2016 1:56 am

You mean logged customer shopping cart, right?

XForm - Opencart Form Builder
Xshippingpro - An advanced Shipping Module
Need Professional support? Skype: opencartmart


Active Member

Posts

Joined
Wed Oct 02, 2013 3:59 am

Post by tt87 » Thu Dec 29, 2016 10:46 am

Yes that is correct. Logged customer shopping cart

New member

Posts

Joined
Mon Sep 21, 2015 7:08 am

Post by opencartmart » Thu Dec 29, 2016 1:18 pm

You can do it easily. In the file system/library/cart/cart.php, find following line

Code: Select all

$this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 1 HOUR)");
Above line basically remove all the expired carts with no customer ID. You can modify it for any customer. For example:

Code: Select all

$this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE date_added < DATE_SUB(NOW(), INTERVAL 1 HOUR)");

XForm - Opencart Form Builder
Xshippingpro - An advanced Shipping Module
Need Professional support? Skype: opencartmart


Active Member

Posts

Joined
Wed Oct 02, 2013 3:59 am

Post by pipoy » Sun Jan 01, 2017 3:25 pm

This is actually interesting because my abandon cart module save the cart after every login by the customer.
Even when the abandon cart triggers the mail, then tomorrow when customer logs in, the products in cart are still there and abandon cart will save them once again.

@opencartmart
Will work on 2.1.0.2?

thanks!

Active Member

Posts

Joined
Fri Mar 04, 2016 12:18 pm

Post by opencartmart » Sun Jan 01, 2017 3:29 pm

I am not sure about working with abandon cart module. It depends how abandon cart module works actually.

XForm - Opencart Form Builder
Xshippingpro - An advanced Shipping Module
Need Professional support? Skype: opencartmart


Active Member

Posts

Joined
Wed Oct 02, 2013 3:59 am

Post by pipoy » Sun Jan 01, 2017 6:54 pm

Well there is only 1 way to find out.

Using your query. Is there a way to make it in seconds or in minute interval only?

$this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE date_added < DATE_SUB(NOW(), INTERVAL 1 HOUR)");

Active Member

Posts

Joined
Fri Mar 04, 2016 12:18 pm

Post by opencartmart » Sun Jan 01, 2017 8:35 pm

Yes you can use MINUTE or SECOND instead of DAY but what is the point?

XForm - Opencart Form Builder
Xshippingpro - An advanced Shipping Module
Need Professional support? Skype: opencartmart


Active Member

Posts

Joined
Wed Oct 02, 2013 3:59 am

Post by pipoy » Sun Jan 01, 2017 11:18 pm

to test if it really got cleared so I do not have to wait 1 hour

Active Member

Posts

Joined
Fri Mar 04, 2016 12:18 pm

Post by tt87 » Mon Jan 02, 2017 12:02 am

do you put this query in a php file or where?

New member

Posts

Joined
Mon Sep 21, 2015 7:08 am

Post by opencartmart » Mon Jan 02, 2017 12:39 am

The above solution will work for OC version > 2.1, for other version, you can do following

in the file system/library/customer.php, You can replace following line

Code: Select all

$cart = unserialize($customer_query->row['cart']);
by

Code: Select all

$cart =array();
Thanks

XForm - Opencart Form Builder
Xshippingpro - An advanced Shipping Module
Need Professional support? Skype: opencartmart


Active Member

Posts

Joined
Wed Oct 02, 2013 3:59 am

Post by tt87 » Mon Jan 02, 2017 1:41 am

Thanks, what exactly does this change do?

New member

Posts

Joined
Mon Sep 21, 2015 7:08 am

Post by opencartmart » Mon Jan 02, 2017 2:02 am

It will clear customer old cart whenever he/she login

XForm - Opencart Form Builder
Xshippingpro - An advanced Shipping Module
Need Professional support? Skype: opencartmart


Active Member

Posts

Joined
Wed Oct 02, 2013 3:59 am

Post by tt87 » Mon Jan 02, 2017 2:32 am

I just tried it and it didnt work.

New member

Posts

Joined
Mon Sep 21, 2015 7:08 am

Post by tt87 » Mon Jan 02, 2017 3:19 am

Could I insert this line below this code?


$customer_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer WHERE LOWER(email) = '" . $this->db->escape(utf8_strtolower($email)) . "' AND (password = SHA1(CONCAT(salt, SHA1(CONCAT(salt, SHA1('" . $this->db->escape($password) . "'))))) OR password = '" . $this->db->escape(md5($password)) . "') AND status = '1' AND approved = '1'");
}




$this->db->query("UPDATE " . DB_PREFIX . "customer SET cart = ''");

New member

Posts

Joined
Mon Sep 21, 2015 7:08 am

Post by opencartmart » Mon Jan 02, 2017 2:03 pm

Can you share your code? Have you replaced correctly?

XForm - Opencart Form Builder
Xshippingpro - An advanced Shipping Module
Need Professional support? Skype: opencartmart


Active Member

Posts

Joined
Wed Oct 02, 2013 3:59 am

Post by mrnet » Fri Apr 14, 2017 9:25 pm

opencartmart wrote:
Thu Dec 29, 2016 1:18 pm
You can do it easily. In the file system/library/cart/cart.php, find following line

Code: Select all

$this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE (api_id > '0' OR customer_id = '0') AND date_added < DATE_SUB(NOW(), INTERVAL 1 HOUR)");
Above line basically remove all the expired carts with no customer ID. You can modify it for any customer. For example:

Code: Select all

$this->db->query("DELETE FROM " . DB_PREFIX . "cart WHERE date_added < DATE_SUB(NOW(), INTERVAL 1 HOUR)");
Thank you! This worked for me!

New member

Posts

Joined
Thu Dec 08, 2011 8:16 am

Post by opencartmart » Thu May 04, 2017 11:37 pm

Glad to hear. Thanks

XForm - Opencart Form Builder
Xshippingpro - An advanced Shipping Module
Need Professional support? Skype: opencartmart


Active Member

Posts

Joined
Wed Oct 02, 2013 3:59 am

Post by IP_CAM » Fri May 05, 2017 1:01 am

opencartmart wrote:in the file system/library/customer.php, You can replace following line

Code: Select all

$cart = unserialize($customer_query->row['cart']);
by

Code: Select all

$cart =array();
worked on spot in my OC v.1.5.6.5_rc Version, just to mention it! ;)
Ernie
Image

My Github OC Site: https://github.com/IP-CAM
5'600 + FREE OC Extensions, on the World's largest private Github OC Repository Archive Site.


User avatar
Legendary Member

Posts

Joined
Tue Mar 04, 2014 1:37 am
Location - Switzerland
Who is online

Users browsing this forum: No registered users and 57 guests