From b7e9ae5aaaca4c778499444f95ae88983975a518 Mon Sep 17 00:00:00 2001
From: Laurent Destailleur <eldy@users.sourceforge.net>
Date: Fri, 14 Nov 2008 11:43:24 +0000
Subject: [PATCH] Fix: Support of option mysql strict

---
 htdocs/don.class.php            | 681 ++++++++++++++++----------------
 mysql/migration/2.4.0-2.5.0.sql |   3 +
 mysql/tables/llx_don.sql        |   4 +-
 3 files changed, 341 insertions(+), 347 deletions(-)

diff --git a/htdocs/don.class.php b/htdocs/don.class.php
index ac8d3f63265..4a0ffdf0c9e 100644
--- a/htdocs/don.class.php
+++ b/htdocs/don.class.php
@@ -1,6 +1,6 @@
 <?php
 /* Copyright (C) 2002      Rodolphe Quiedeville <rodolphe@quiedeville.org>
- * Copyright (C) 2004-2006 Laurent Destailleur  <eldy@users.sourceforge.net>
+ * Copyright (C) 2004-2008 Laurent Destailleur  <eldy@users.sourceforge.net>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -15,72 +15,68 @@
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * $Id$
- * $Source$
  */
 
 /**
-    	\file       htdocs/don.class.php
-		\ingroup    don
-		\brief      Fichier de la classe des dons
-		\version    $Revision$
-*/
+ *   	\file       htdocs/don.class.php
+ *		\ingroup    don
+ *		\brief      Fichier de la classe des dons
+ *		\version    $Id$
+ */
 
 
 /**
-        \class      Don
-		\brief      Classe permettant la gestion des dons
-*/
-
+ *      \class      Don
+ *		\brief      Classe permettant la gestion des dons
+ */
 class Don
 {
 	var $db;
 	var $error;
 	var $element='don';
 	var $table_element='don';
-	
+
 	var $id;
-  var $date;
-  var $amount;
-  var $prenom;
-  var $nom;
-  var $societe;
-  var $adresse;
-  var $cp;
-  var $ville;
-  var $pays;
-  var $email;
-  var $public;
-  var $projetid;
-  var $modepaiement;
-  var $modepaiementid;
-  var $note;
-  var $statut;
-    
-  var $projet;
-    
-    /**
-     *    \brief  Constructeur
-     *    \param  DB          	Handler d'acc�s base
-     */
-    function Don($DB)
-    {
-        global $langs;
-        
-        $this->db = $DB ;
-        $this->modepaiementid = 0;
-    
-        $langs->load("donations");
-        $this->labelstatut[0]=$langs->trans("DonationStatusPromiseNotValidated");
-        $this->labelstatut[1]=$langs->trans("DonationStatusPromiseValidated");
-        $this->labelstatut[2]=$langs->trans("DonationStatusPayed");
-        $this->labelstatutshort[0]=$langs->trans("DonationStatusPromiseNotValidatedShort");
-        $this->labelstatutshort[1]=$langs->trans("DonationStatusPromiseValidatedShort");
-        $this->labelstatutshort[2]=$langs->trans("DonationStatusPayedShort");
-    }
-
-    
+	var $date;
+	var $amount;
+	var $prenom;
+	var $nom;
+	var $societe;
+	var $adresse;
+	var $cp;
+	var $ville;
+	var $pays;
+	var $email;
+	var $public;
+	var $projetid;
+	var $modepaiement;
+	var $modepaiementid;
+	var $note;
+	var $statut;
+
+	var $projet;
+
+	/**
+	 *    \brief  Constructeur
+	 *    \param  DB          	Handler d'acc�s base
+	 */
+	function Don($DB)
+	{
+		global $langs;
+
+		$this->db = $DB ;
+		$this->modepaiementid = 0;
+
+		$langs->load("donations");
+		$this->labelstatut[0]=$langs->trans("DonationStatusPromiseNotValidated");
+		$this->labelstatut[1]=$langs->trans("DonationStatusPromiseValidated");
+		$this->labelstatut[2]=$langs->trans("DonationStatusPayed");
+		$this->labelstatutshort[0]=$langs->trans("DonationStatusPromiseNotValidatedShort");
+		$this->labelstatutshort[1]=$langs->trans("DonationStatusPromiseValidatedShort");
+		$this->labelstatutshort[2]=$langs->trans("DonationStatusPayedShort");
+	}
+
+
 	/**
 	 *    \brief      Retourne le libell� du statut d'un don (brouillon, valid�e, abandonn�e, pay�e)
 	 *    \param      mode          0=libell� long, 1=libell� court, 2=Picto + Libell� court, 3=Picto, 4=Picto + Libell� long
@@ -136,8 +132,8 @@ class Don
 			if ($statut == 2) return $this->labelstatutshort[$statut].' '.img_picto($this->labelstatut[$statut],'statut6');
 		}
 	}
-	
-	
+
+
 	/**
 	 *		\brief		Initialise le don avec valeurs fictives al�atoire
 	 *					Sert � g�n�rer une recu de don pour l'aperu des mod�les ou demo
@@ -164,7 +160,7 @@ class Don
 		}
 
 		// Initialise param�tres
-    	$this->id=0;
+		$this->id=0;
 		$this->ref = 'SPECIMEN';
 		$this->specimen=1;
 		$this->nom = 'Doe';
@@ -182,320 +178,315 @@ class Don
 		$this->note='';
 		$this->statut=1;
 	}
-	
-	
+
+
 	/*
-     *
-     */
-    function print_error_list()
-    {
-    $num = sizeof($this->error);
-    for ($i = 0 ; $i < $num ; $i++)
-      {
-	print "<li>" . $this->error[$i];
-      }
-    }
-
-  /*
-   *
-   *
-   */
-  function check($minimum=0) 
-    {
-      $err = 0;
-
-      if (strlen(trim($this->societe)) == 0)
+	 *
+	 */
+	function print_error_list()
 	{
-	  if ((strlen(trim($this->nom)) + strlen(trim($this->prenom))) == 0)
-	    {
-	      $error_string[$err] = "Vous devez saisir vos nom et pr�nom ou le nom de votre soci�t�.";
-	      $err++;
-	    }
+		$num = sizeof($this->error);
+		for ($i = 0 ; $i < $num ; $i++)
+		{
+			print "<li>" . $this->error[$i];
+		}
 	}
 
-      if (strlen(trim($this->adresse)) == 0)
+	/*
+	 *
+	 *
+	 */
+	function check($minimum=0)
 	{
-	  $error_string[$err] = "L'adresse saisie est invalide";
-	  $err++;
-	}
+		$err = 0;
 
-      if (strlen(trim($this->cp)) == 0)
-	{
-	  $error_string[$err] = "Le code postal saisi est invalide";
-	  $err++;
-	}
+		if (strlen(trim($this->societe)) == 0)
+		{
+			if ((strlen(trim($this->nom)) + strlen(trim($this->prenom))) == 0)
+			{
+				$error_string[$err] = "Vous devez saisir vos nom et pr�nom ou le nom de votre soci�t�.";
+				$err++;
+			}
+		}
 
-      if (strlen(trim($this->ville)) == 0)
-	{
-	  $error_string[$err] = "La ville saisie est invalide";
-	  $err++;
-	}
+		if (strlen(trim($this->adresse)) == 0)
+		{
+			$error_string[$err] = "L'adresse saisie est invalide";
+			$err++;
+		}
 
-      if (strlen(trim($this->email)) == 0)
-	{
-	  $error_string[$err] = "L'email saisi est invalide";
-	  $err++;
-	}
+		if (strlen(trim($this->cp)) == 0)
+		{
+			$error_string[$err] = "Le code postal saisi est invalide";
+			$err++;
+		}
 
-      $this->amount = trim($this->amount);
+		if (strlen(trim($this->ville)) == 0)
+		{
+			$error_string[$err] = "La ville saisie est invalide";
+			$err++;
+		}
+
+		if (strlen(trim($this->email)) == 0)
+		{
+			$error_string[$err] = "L'email saisi est invalide";
+			$err++;
+		}
+
+		$this->amount = trim($this->amount);
+
+		$map = range(0,9);
+		for ($i = 0; $i < strlen($this->amount) ; $i++)
+		{
+			if (!isset($map[substr($this->amount, $i, 1)] ))
+			{
+				$error_string[$err] = "Le montant du don contient un/des caract�re(s) invalide(s)";
+				$err++;
+				$amount_invalid = 1;
+				break;
+			}
+		}
+
+		if (! $amount_invalid)
+		{
+			if ($this->amount == 0)
+			{
+				$error_string[$err] = "Le montant du don est null";
+				$err++;
+			}
+			else
+			{
+				if ($this->amount < $minimum && $minimum > 0)
+				{
+					$error_string[$err] = "Le montant minimum du don est de $minimum";
+					$err++;
+				}
+			}
+		}
+
+		if ($err)
+		{
+			$this->error = $error_string;
+			return 0;
+		}
+		else
+		{
+			return 1;
+		}
 
-      $map = range(0,9);
-      for ($i = 0; $i < strlen($this->amount) ; $i++)
-	{
-	  if (!isset($map[substr($this->amount, $i, 1)] ))
-	    {
-	      $error_string[$err] = "Le montant du don contient un/des caract�re(s) invalide(s)";
-	      $err++;
-	      $amount_invalid = 1;
-	      break;
-	    } 	      
 	}
 
-      if (! $amount_invalid)
+	/**
+	 *    \brief      Cr�ation du don en base
+	 *    \param      user          Objet utilisateur qui cr�e le don
+	 *    \return     int           Id don cr�e si ok, <0 si ko
+	 */
+	function create($user)
 	{
-	  if ($this->amount == 0)
-	    {
-	      $error_string[$err] = "Le montant du don est null";
-	      $err++;
-	    }
-	  else
-	    {
-	      if ($this->amount < $minimum && $minimum > 0)
+		$this->date = $this->db->idate($this->date);
+
+		$sql = "INSERT INTO ".MAIN_DB_PREFIX."don (datec, amount, fk_paiement,prenom, nom, societe,adresse, cp, ville, pays, public,";
+		$sql .= " fk_don_projet,";
+		$sql .= " note, fk_user_author, fk_user_valid, datedon, email)";
+		$sql .= " VALUES (".$this->db->idate(mktime()).",".price2num($this->amount).", $this->modepaiementid,'$this->prenom','$this->nom','$this->societe','$this->adresse', '$this->cp','$this->ville','$this->pays',$this->public, ";
+		$sql .= " ".($this->projetid > 0?$this->projetid:"null").",";
+		$sql .= " '".addslashes($this->note)."', ".$user->id.", null, '$this->date','$this->email')";
+
+		dolibarr_syslog("Don::create sql=".$sql, LOG_DEBUG);
+		$result = $this->db->query($sql);
+		if ($result)
+		{
+			return $this->db->last_insert_id(MAIN_DB_PREFIX."don");
+		}
+		else
 		{
-		  $error_string[$err] = "Le montant minimum du don est de $minimum";
-		  $err++;
+			dolibarr_print_error($this->db);
+			return -1;
 		}
-	    }
 	}
-      
-      if ($err)
+
+	/**
+	 *    \brief      Mise � jour du don
+	 *    \param      user        Objet utilisateur qui met � jour le don
+	 *    \return     int         >0 si ok, <0 si ko
+	 */
+	function update($user)
 	{
-	  $this->error = $error_string;
-	  return 0;
+
+		$this->date = $this->db->idate($this->date);
+
+		$sql = "UPDATE ".MAIN_DB_PREFIX."don SET ";
+		$sql .= "amount = " . $this->amount;
+		$sql .= ",fk_paiement = ".$this->modepaiementid;
+		$sql .= ",prenom = '".$this->prenom ."'";
+		$sql .= ",nom='".$this->nom."'";
+		$sql .= ",societe='".$this->societe."'";
+		$sql .= ",adresse='".$this->adresse."'";
+		$sql .= ",cp='".$this->cp."'";
+		$sql .= ",ville='".$this->ville."'";
+		$sql .= ",pays='".$this->pays."'";
+		$sql .= ",public=".$this->public;
+		if ($this->projetid) {    $sql .= ",fk_don_projet=".$this->projetid; }
+		$sql .= ",note='".$this->note."'";
+		$sql .= ",datedon='".$this->date."'";
+		$sql .= ",email='".$this->email."'";
+		$sql .= ",fk_statut=".$this->statut;
+
+		$sql .= " WHERE rowid = $this->id";
+
+		$result = $this->db->query($sql);
+		if ($result)
+		{
+			return 1;
+		}
+		else
+		{
+			dolibarr_print_error($this->db);
+			return -1;
+		}
 	}
-      else
+
+	/*
+	 *    \brief  Suppression du don de la base
+	 *    \param  rowid   id du don � supprimer
+	 */
+	function delete($rowid)
 	{
-	  return 1;
-	}
 
-    }
-
-    /**
-     *    \brief      Cr�ation du don en base
-     *    \param      user          Objet utilisateur qui cr�e le don
-     *    \return     int           Id don cr�e si ok, <0 si ko
-     */
-    function create($user)
-    {
-        $this->date = $this->db->idate($this->date);
-    
-        $sql = "INSERT INTO ".MAIN_DB_PREFIX."don (datec, amount, fk_paiement,prenom, nom, societe,adresse, cp, ville, pays, public,";
-        if ($this->projetid)
-        {
-            $sql .= " fk_don_projet,";
-        }
-        $sql .= " note, fk_user_author, datedon, email)";
-        $sql .= " VALUES (".$this->db->idate(mktime()).",".price2num($this->amount).", $this->modepaiementid,'$this->prenom','$this->nom','$this->societe','$this->adresse', '$this->cp','$this->ville','$this->pays',$this->public, ";
-        if ($this->projetid)
-        {
-            $sql .= " $this->projetid,";
-        }
-        $sql .= " '$this->note', ".$user->id.", '$this->date','$this->email')";
-    
-        $result = $this->db->query($sql);
-        if ($result)
-        {
-            return $this->db->last_insert_id(MAIN_DB_PREFIX."don");
-        }
-        else
-        {
-            dolibarr_print_error($this->db);
-            return -1;
-        }
-    }
-
-  /**
-   *    \brief      Mise � jour du don
-   *    \param      user        Objet utilisateur qui met � jour le don
-   *    \return     int         >0 si ok, <0 si ko
-   */
-    function update($user)
-    {
-    
-        $this->date = $this->db->idate($this->date);
-    
-        $sql = "UPDATE ".MAIN_DB_PREFIX."don SET ";
-        $sql .= "amount = " . $this->amount;
-        $sql .= ",fk_paiement = ".$this->modepaiementid;
-        $sql .= ",prenom = '".$this->prenom ."'";
-        $sql .= ",nom='".$this->nom."'";
-        $sql .= ",societe='".$this->societe."'";
-        $sql .= ",adresse='".$this->adresse."'";
-        $sql .= ",cp='".$this->cp."'";
-        $sql .= ",ville='".$this->ville."'";
-        $sql .= ",pays='".$this->pays."'";
-        $sql .= ",public=".$this->public;
-        if ($this->projetid) {    $sql .= ",fk_don_projet=".$this->projetid; }
-        $sql .= ",note='".$this->note."'";
-        $sql .= ",datedon='".$this->date."'";
-        $sql .= ",email='".$this->email."'";
-        $sql .= ",fk_statut=".$this->statut;
-    
-        $sql .= " WHERE rowid = $this->id";
-    
-        $result = $this->db->query($sql);
-        if ($result)
-        {
-            return 1;
-        }
-        else
-        {
-            dolibarr_print_error($this->db);
-            return -1;
-        }
-    }
-
-  /*
-   *    \brief  Suppression du don de la base
-   *    \param  rowid   id du don � supprimer 
-   */
-  function delete($rowid)
-  {
-    
-    $sql = "DELETE FROM ".MAIN_DB_PREFIX."don WHERE rowid = $rowid AND fk_statut = 0;";
-
-    if ( $this->db->query( $sql) )
-      {
-	if ( $this->db->affected_rows() )
+		$sql = "DELETE FROM ".MAIN_DB_PREFIX."don WHERE rowid = $rowid AND fk_statut = 0;";
+
+		if ( $this->db->query( $sql) )
+		{
+			if ( $this->db->affected_rows() )
 	  {
-	    return 1;
+	  	return 1;
 	  }
-	else
+	  else
 	  {
-	    return -1;
+	  	return -1;
 	  }
-      }
-    else
-      {
-      dolibarr_print_error($this->db);
+		}
+		else
+		{
+			dolibarr_print_error($this->db);
 	  return -1;
-      }    
-  }
-
-    /*
-     *      \brief      Charge l'objet don en m�moire depuis la base de donn�e
-     *      \param      rowid       Id du don � charger
-     *      \return     int         <0 si ko, >0 si ok
-     */
-    function fetch($rowid)
-    {
-        $sql = "SELECT d.rowid, ".$this->db->pdate("d.datec")." as datec,";
-        $sql.= " ".$this->db->pdate("d.datedon")." as datedon,";
-        $sql.= " d.prenom, d.nom, d.societe, d.amount, p.libelle as projet, d.fk_statut, d.adresse, d.cp, d.ville, d.pays, d.public, d.amount, d.fk_paiement, d.note, cp.libelle, d.email, d.fk_don_projet";
-        $sql.= " FROM ".MAIN_DB_PREFIX."c_paiement as cp, ".MAIN_DB_PREFIX."don as d";
-        $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."don_projet as p";
-        $sql.= " ON p.rowid = d.fk_don_projet";
-        $sql.= " WHERE cp.id = d.fk_paiement AND d.rowid = ".$rowid;
-    
-        if ( $this->db->query( $sql) )
-        {
-            if ($this->db->num_rows())
-            {
-    
-                $obj = $this->db->fetch_object();
-    
-                $this->id             = $obj->rowid;
-                $this->ref            = $obj->rowid;
-                $this->datec          = $obj->datec;
-                $this->date           = $obj->datedon;
-                $this->prenom         = stripslashes($obj->prenom);
-                $this->nom            = stripslashes($obj->nom);
-                $this->societe        = stripslashes($obj->societe);
-                $this->statut         = $obj->fk_statut;
-                $this->adresse        = stripslashes($obj->adresse);
-                $this->cp             = stripslashes($obj->cp);
-                $this->ville          = stripslashes($obj->ville);
-                $this->email          = stripslashes($obj->email);
-                $this->pays           = stripslashes($obj->pays);
-                $this->projet         = $obj->projet;
-                $this->projetid       = $obj->fk_don_projet;
-                $this->public         = $obj->public;
-                $this->modepaiementid = $obj->fk_paiement;
-                $this->modepaiement   = $obj->libelle;
-                $this->amount         = $obj->amount;
-                $this->commentaire    = stripslashes($obj->note);
-            }
-            return 1;
-        }
-        else
-        {
-            dolibarr_print_error($this->db);
-            return -1;
-        }
-    
-    }
-
-  /*
-   *    \brief  Valide une promesse de don
-   *    \param  rowid   id du don � modifier
-   *    \param  userid  utilisateur qui valide la promesse
-   *
-   */
-  function valid_promesse($rowid, $userid)
-  {
-
-    $sql = "UPDATE ".MAIN_DB_PREFIX."don SET fk_statut = 1, fk_user_valid = $userid WHERE rowid = $rowid AND fk_statut = 0;";
-
-    if ( $this->db->query( $sql) )
-      {
-	if ( $this->db->affected_rows() )
+		}
+	}
+
+	/*
+	 *      \brief      Charge l'objet don en m�moire depuis la base de donn�e
+	 *      \param      rowid       Id du don � charger
+	 *      \return     int         <0 si ko, >0 si ok
+	 */
+	function fetch($rowid)
+	{
+		$sql = "SELECT d.rowid, ".$this->db->pdate("d.datec")." as datec,";
+		$sql.= " ".$this->db->pdate("d.datedon")." as datedon,";
+		$sql.= " d.prenom, d.nom, d.societe, d.amount, p.libelle as projet, d.fk_statut, d.adresse, d.cp, d.ville, d.pays, d.public, d.amount, d.fk_paiement, d.note, cp.libelle, d.email, d.fk_don_projet";
+		$sql.= " FROM ".MAIN_DB_PREFIX."c_paiement as cp, ".MAIN_DB_PREFIX."don as d";
+		$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."don_projet as p";
+		$sql.= " ON p.rowid = d.fk_don_projet";
+		$sql.= " WHERE cp.id = d.fk_paiement AND d.rowid = ".$rowid;
+
+		if ( $this->db->query( $sql) )
+		{
+			if ($this->db->num_rows())
+			{
+
+				$obj = $this->db->fetch_object();
+
+				$this->id             = $obj->rowid;
+				$this->ref            = $obj->rowid;
+				$this->datec          = $obj->datec;
+				$this->date           = $obj->datedon;
+				$this->prenom         = stripslashes($obj->prenom);
+				$this->nom            = stripslashes($obj->nom);
+				$this->societe        = stripslashes($obj->societe);
+				$this->statut         = $obj->fk_statut;
+				$this->adresse        = stripslashes($obj->adresse);
+				$this->cp             = stripslashes($obj->cp);
+				$this->ville          = stripslashes($obj->ville);
+				$this->email          = stripslashes($obj->email);
+				$this->pays           = stripslashes($obj->pays);
+				$this->projet         = $obj->projet;
+				$this->projetid       = $obj->fk_don_projet;
+				$this->public         = $obj->public;
+				$this->modepaiementid = $obj->fk_paiement;
+				$this->modepaiement   = $obj->libelle;
+				$this->amount         = $obj->amount;
+				$this->commentaire    = stripslashes($obj->note);
+			}
+			return 1;
+		}
+		else
+		{
+			dolibarr_print_error($this->db);
+			return -1;
+		}
+
+	}
+
+	/*
+	 *    \brief  Valide une promesse de don
+	 *    \param  rowid   id du don � modifier
+	 *    \param  userid  utilisateur qui valide la promesse
+	 *
+	 */
+	function valid_promesse($rowid, $userid)
+	{
+
+		$sql = "UPDATE ".MAIN_DB_PREFIX."don SET fk_statut = 1, fk_user_valid = $userid WHERE rowid = $rowid AND fk_statut = 0;";
+
+		if ( $this->db->query( $sql) )
+		{
+			if ( $this->db->affected_rows() )
 	  {
-	    return 1;
+	  	return 1;
 	  }
-	else
+	  else
 	  {
-	    return 0;
+	  	return 0;
 	  }
-      }
-    else
-      {
-      dolibarr_print_error($this->db);
+		}
+		else
+		{
+			dolibarr_print_error($this->db);
 	  return 0;
-      }    
-  }
-
-    /*
-     *    \brief  Classe le don comme pay�, le don a �t� recu
-     *    \param  rowid           id du don � modifier
-     *    \param  modepaiementd   mode de paiement
-     */
-    function set_paye($rowid, $modepaiement='')
-    {
-        $sql = "UPDATE ".MAIN_DB_PREFIX."don SET fk_statut = 2";
-    
-        if ($modepaiement)
-        {
-            $sql .= ", fk_paiement=$modepaiement";
-        }
-        $sql .=  " WHERE rowid = $rowid AND fk_statut = 1;";
-    
-        if ( $this->db->query( $sql) )
-        {
-            if ( $this->db->affected_rows() )
-            {
-                return 1;
-            }
-            else
-            {
-                return 0;
-            }
-        }
-        else
-        {
-            dolibarr_print_error($this->db);
-            return 0;
-        }
-    }
+		}
+	}
+
+	/*
+	 *    \brief  Classe le don comme pay�, le don a �t� recu
+	 *    \param  rowid           id du don � modifier
+	 *    \param  modepaiementd   mode de paiement
+	 */
+	function set_paye($rowid, $modepaiement='')
+	{
+		$sql = "UPDATE ".MAIN_DB_PREFIX."don SET fk_statut = 2";
+
+		if ($modepaiement)
+		{
+			$sql .= ", fk_paiement=$modepaiement";
+		}
+		$sql .=  " WHERE rowid = $rowid AND fk_statut = 1;";
+
+		if ( $this->db->query( $sql) )
+		{
+			if ( $this->db->affected_rows() )
+			{
+				return 1;
+			}
+			else
+			{
+				return 0;
+			}
+		}
+		else
+		{
+			dolibarr_print_error($this->db);
+			return 0;
+		}
+	}
 
 
 	/*
@@ -505,9 +496,9 @@ class Don
 	 */
 	function set_encaisse($rowid)
 	{
-	
+
 		$sql = "UPDATE ".MAIN_DB_PREFIX."don SET fk_statut = 3 WHERE rowid = $rowid AND fk_statut = 2;";
-	
+
 		if ( $this->db->query( $sql) )
 		{
 			if ( $this->db->affected_rows() )
@@ -533,11 +524,11 @@ class Don
 	function sum_donations($param)
 	{
 		$result=0;
-		
+
 		$sql = "SELECT sum(amount) as total";
 		$sql.= " FROM ".MAIN_DB_PREFIX."don";
 		$sql.= " WHERE fk_statut = ".$param;
-	
+
 		$resql=$this->db->query($sql);
 		if ($resql)
 		{
diff --git a/mysql/migration/2.4.0-2.5.0.sql b/mysql/migration/2.4.0-2.5.0.sql
index 219b93ecaec..9f8ebdad166 100644
--- a/mysql/migration/2.4.0-2.5.0.sql
+++ b/mysql/migration/2.4.0-2.5.0.sql
@@ -67,3 +67,6 @@ update llx_expedition_methode set code='ENL', libelle='Enlevement' where code='e
 update llx_expedition_methode set code='TRANS', libelle='Transporteur' where code='transporteur';
 
 alter table llx_fichinterdet modify date datetime;
+
+alter table llx_don modify fk_don_projet   integer NULL;
+alter table llx_don modify fk_user_valid   integer NULL;
diff --git a/mysql/tables/llx_don.sql b/mysql/tables/llx_don.sql
index 3664e34adeb..f8efce739aa 100644
--- a/mysql/tables/llx_don.sql
+++ b/mysql/tables/llx_don.sql
@@ -37,8 +37,8 @@ create table llx_don
   pays            varchar(50),
   email           varchar(255),
   public          smallint DEFAULT 1 NOT NULL, -- le don est-il public (0,1)
-  fk_don_projet   integer NOT NULL, -- projet auquel est fait le don
+  fk_don_projet   integer NULL, -- projet auquel est fait le don
   fk_user_author  integer NOT NULL,
-  fk_user_valid   integer NOT NULL,
+  fk_user_valid   integer NULL,
   note            text
 )type=innodb;
-- 
GitLab