From 4aa8d0eb0c3a6c833d5bfaec6f1c0f93e5b7b312 Mon Sep 17 00:00:00 2001
From: Regis Houssin <regis@dolibarr.fr>
Date: Sat, 18 Aug 2012 10:16:25 +0200
Subject: [PATCH] Fix: [ bug #501 ] Error while trying to modify an user

---
 htdocs/adherents/class/adherent.class.php | 67 +++++++++++++----------
 1 file changed, 37 insertions(+), 30 deletions(-)

diff --git a/htdocs/adherents/class/adherent.class.php b/htdocs/adherents/class/adherent.class.php
index 20195bf073b..1566b934afe 100644
--- a/htdocs/adherents/class/adherent.class.php
+++ b/htdocs/adherents/class/adherent.class.php
@@ -717,36 +717,43 @@ class Adherent extends CommonObject
             $resql=$this->db->query($sql);
             if ($resql)
             {
-                $sql = "DELETE FROM ".MAIN_DB_PREFIX."adherent WHERE rowid = ".$rowid;
-                dol_syslog(get_class($this)."::delete sql=".$sql);
-                $resql=$this->db->query($sql);
-                if ($resql)
-                {
-                    if ($this->db->affected_rows($resql))
-                    {
-                        // Appel des triggers
-                        include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php");
-                        $interface=new Interfaces($this->db);
-                        $result=$interface->run_triggers('MEMBER_DELETE',$this,$user,$langs,$conf);
-                        if ($result < 0) { $error++; $this->errors=$interface->errors; }
-                        // Fin appel triggers
-
-                        $this->db->commit();
-                        return 1;
-                    }
-                    else
-                    {
-                        // Rien a effacer
-                        $this->db->rollback();
-                        return 0;
-                    }
-                }
-                else
-                {
-                    $this->error=$this->db->error();
-                    $this->db->rollback();
-                    return -3;
-                }
+            	// Remove linked user
+            	$ret=$this->setUserId(0);
+            	if ($ret > 0)
+            	{
+            		$sql = "DELETE FROM ".MAIN_DB_PREFIX."adherent WHERE rowid = ".$rowid;
+            		dol_syslog(get_class($this)."::delete sql=".$sql);
+            		$resql=$this->db->query($sql);
+            		if ($resql)
+            		{
+            			if ($this->db->affected_rows($resql))
+            			{
+            				// Appel des triggers
+            				include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php");
+            				$interface=new Interfaces($this->db);
+            				$result=$interface->run_triggers('MEMBER_DELETE',$this,$user,$langs,$conf);
+            				if ($result < 0) {
+            					$error++; $this->errors=$interface->errors;
+            				}
+            				// Fin appel triggers
+
+            				$this->db->commit();
+            				return 1;
+            			}
+            			else
+            			{
+            				// Rien a effacer
+            				$this->db->rollback();
+            				return 0;
+            			}
+            		}
+            		else
+            		{
+            			$this->error=$this->db->error();
+            			$this->db->rollback();
+            			return -3;
+            		}
+            	}
             }
             else
             {
-- 
GitLab