From f13a64351c6b874a12e9b556b2ac1359f91f5ea5 Mon Sep 17 00:00:00 2001 From: rGaillard Date: Wed, 26 Sep 2012 13:26:14 +0000 Subject: [PATCH] // Do not delete customer addresses when delete it git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@17567 b9a71923-0436-4b27-9f14-aed3839534dd --- classes/Customer.php | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/classes/Customer.php b/classes/Customer.php index db2bc3107..6c4197c3c 100644 --- a/classes/Customer.php +++ b/classes/Customer.php @@ -240,14 +240,41 @@ class CustomerCore extends ObjectModel public function delete() { - $addresses = $this->getAddresses((int)Configuration::get('PS_LANG_DEFAULT')); - foreach ($addresses as $address) + if (!count(Order::getCustomerOrders((int)$this->id))) { - $obj = new Address((int)$address['id_address']); - $obj->delete(); + $addresses = $this->getAddresses((int)Configuration::get('PS_LANG_DEFAULT')); + foreach ($addresses as $address) + { + $obj = new Address((int)$address['id_address']); + $obj->delete(); + } } Db::getInstance()->execute('DELETE FROM `'._DB_PREFIX_.'customer_group` WHERE `id_customer` = '.(int)$this->id); - CartRule::deleteByIdCustomer((int)$this->id); + Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'message WHERE id_customer='.(int)$this->id); + Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'specific_price WHERE id_customer='.(int)$this->id); + Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'compare WHERE id_customer='.(int)$this->id); + + $carts = Db::getInstance()->executes('SELECT id_cart + FROM '._DB_PREFIX_.'cart + WHERE id_customer='.(int)$this->id); + if ($carts) + foreach ($carts as $cart) + { + Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'cart WHERE id_cart='.(int)$cart['id_cart']); + Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'cart_product WHERE id_cart='.(int)$cart['id_cart']); + } + + $cts = Db::getInstance()->executes('SELECT id_customer_thread + FROM '._DB_PREFIX_.'customer_thread + WHERE id_customer='.(int)$this->id); + if ($cts) + foreach ($cts as $ct) + { + Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'customer_thread WHERE id_customer_thread='.(int)$ct['id_customer_thread']); + Db::getInstance()->execute('DELETE FROM '._DB_PREFIX_.'customer_message WHERE id_customer_thread='.(int)$ct['id_customer_thread']); + } + + Discount::deleteByIdCustomer((int)$this->id); return parent::delete(); }