Fix: Support of option mysql strict

This commit is contained in:
Laurent Destailleur 2008-11-14 11:43:24 +00:00
parent f0923d8535
commit b7e9ae5aaa
3 changed files with 342 additions and 348 deletions

View File

@ -1,6 +1,6 @@
<?php <?php
/* Copyright (C) 2002 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* 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 * 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 * it under the terms of the GNU General Public License as published by
@ -15,24 +15,20 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* $Id$
* $Source$
*/ */
/** /**
\file htdocs/don.class.php * \file htdocs/don.class.php
\ingroup don * \ingroup don
\brief Fichier de la classe des dons * \brief Fichier de la classe des dons
\version $Revision$ * \version $Id$
*/ */
/** /**
\class Don * \class Don
\brief Classe permettant la gestion des dons * \brief Classe permettant la gestion des dons
*/ */
class Don class Don
{ {
var $db; var $db;
@ -41,44 +37,44 @@ class Don
var $table_element='don'; var $table_element='don';
var $id; var $id;
var $date; var $date;
var $amount; var $amount;
var $prenom; var $prenom;
var $nom; var $nom;
var $societe; var $societe;
var $adresse; var $adresse;
var $cp; var $cp;
var $ville; var $ville;
var $pays; var $pays;
var $email; var $email;
var $public; var $public;
var $projetid; var $projetid;
var $modepaiement; var $modepaiement;
var $modepaiementid; var $modepaiementid;
var $note; var $note;
var $statut; var $statut;
var $projet; var $projet;
/** /**
* \brief Constructeur * \brief Constructeur
* \param DB Handler d'accès base * \param DB Handler d'accès base
*/ */
function Don($DB) function Don($DB)
{ {
global $langs; global $langs;
$this->db = $DB ; $this->db = $DB ;
$this->modepaiementid = 0; $this->modepaiementid = 0;
$langs->load("donations"); $langs->load("donations");
$this->labelstatut[0]=$langs->trans("DonationStatusPromiseNotValidated"); $this->labelstatut[0]=$langs->trans("DonationStatusPromiseNotValidated");
$this->labelstatut[1]=$langs->trans("DonationStatusPromiseValidated"); $this->labelstatut[1]=$langs->trans("DonationStatusPromiseValidated");
$this->labelstatut[2]=$langs->trans("DonationStatusPayed"); $this->labelstatut[2]=$langs->trans("DonationStatusPayed");
$this->labelstatutshort[0]=$langs->trans("DonationStatusPromiseNotValidatedShort"); $this->labelstatutshort[0]=$langs->trans("DonationStatusPromiseNotValidatedShort");
$this->labelstatutshort[1]=$langs->trans("DonationStatusPromiseValidatedShort"); $this->labelstatutshort[1]=$langs->trans("DonationStatusPromiseValidatedShort");
$this->labelstatutshort[2]=$langs->trans("DonationStatusPayedShort"); $this->labelstatutshort[2]=$langs->trans("DonationStatusPayedShort");
} }
/** /**
@ -164,7 +160,7 @@ class Don
} }
// Initialise paramètres // Initialise paramètres
$this->id=0; $this->id=0;
$this->ref = 'SPECIMEN'; $this->ref = 'SPECIMEN';
$this->specimen=1; $this->specimen=1;
$this->nom = 'Doe'; $this->nom = 'Doe';
@ -185,317 +181,312 @@ class Don
/* /*
* *
*/ */
function print_error_list() 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)
{ {
if ((strlen(trim($this->nom)) + strlen(trim($this->prenom))) == 0) $num = sizeof($this->error);
{ for ($i = 0 ; $i < $num ; $i++)
$error_string[$err] = "Vous devez saisir vos nom et prénom ou le nom de votre société.";
$err++;
}
}
if (strlen(trim($this->adresse)) == 0)
{
$error_string[$err] = "L'adresse saisie est invalide";
$err++;
}
if (strlen(trim($this->cp)) == 0)
{
$error_string[$err] = "Le code postal saisi est invalide";
$err++;
}
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"; print "<li>" . $this->error[$i];
$err++;
} }
}
} }
if ($err) /*
*
*
*/
function check($minimum=0)
{ {
$this->error = $error_string; $err = 0;
return 0;
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->adresse)) == 0)
{
$error_string[$err] = "L'adresse saisie est invalide";
$err++;
}
if (strlen(trim($this->cp)) == 0)
{
$error_string[$err] = "Le code postal saisi est invalide";
$err++;
}
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;
}
} }
else
/**
* \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)
{ {
return 1; $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
{
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);
* \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,"; $sql = "UPDATE ".MAIN_DB_PREFIX."don SET ";
if ($this->projetid) $sql .= "amount = " . $this->amount;
{ $sql .= ",fk_paiement = ".$this->modepaiementid;
$sql .= " fk_don_projet,"; $sql .= ",prenom = '".$this->prenom ."'";
} $sql .= ",nom='".$this->nom."'";
$sql .= " note, fk_user_author, datedon, email)"; $sql .= ",societe='".$this->societe."'";
$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 .= ",adresse='".$this->adresse."'";
if ($this->projetid) $sql .= ",cp='".$this->cp."'";
{ $sql .= ",ville='".$this->ville."'";
$sql .= " $this->projetid,"; $sql .= ",pays='".$this->pays."'";
} $sql .= ",public=".$this->public;
$sql .= " '$this->note', ".$user->id.", '$this->date','$this->email')"; 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;
$result = $this->db->query($sql); $sql .= " WHERE rowid = $this->id";
if ($result)
{
return $this->db->last_insert_id(MAIN_DB_PREFIX."don");
}
else
{
dolibarr_print_error($this->db);
return -1;
}
}
/** $result = $this->db->query($sql);
* \brief Mise à jour du don if ($result)
* \param user Objet utilisateur qui met à jour le don {
* \return int >0 si ok, <0 si ko return 1;
*/ }
function update($user) else
{ {
dolibarr_print_error($this->db);
return -1;
}
}
$this->date = $this->db->idate($this->date); /*
* \brief Suppression du don de la base
* \param rowid id du don à supprimer
*/
function delete($rowid)
{
$sql = "UPDATE ".MAIN_DB_PREFIX."don SET "; $sql = "DELETE FROM ".MAIN_DB_PREFIX."don WHERE rowid = $rowid AND fk_statut = 0;";
$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"; if ( $this->db->query( $sql) )
{
$result = $this->db->query($sql); if ( $this->db->affected_rows() )
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() )
{ {
return 1; return 1;
} }
else else
{ {
return -1; return -1;
} }
} }
else else
{ {
dolibarr_print_error($this->db); dolibarr_print_error($this->db);
return -1; return -1;
} }
} }
/* /*
* \brief Charge l'objet don en mémoire depuis la base de donnée * \brief Charge l'objet don en mémoire depuis la base de donnée
* \param rowid Id du don à charger * \param rowid Id du don à charger
* \return int <0 si ko, >0 si ok * \return int <0 si ko, >0 si ok
*/ */
function fetch($rowid) function fetch($rowid)
{ {
$sql = "SELECT d.rowid, ".$this->db->pdate("d.datec")." as datec,"; $sql = "SELECT d.rowid, ".$this->db->pdate("d.datec")." as datec,";
$sql.= " ".$this->db->pdate("d.datedon")." as datedon,"; $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.= " 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.= " 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.= " LEFT JOIN ".MAIN_DB_PREFIX."don_projet as p";
$sql.= " ON p.rowid = d.fk_don_projet"; $sql.= " ON p.rowid = d.fk_don_projet";
$sql.= " WHERE cp.id = d.fk_paiement AND d.rowid = ".$rowid; $sql.= " WHERE cp.id = d.fk_paiement AND d.rowid = ".$rowid;
if ( $this->db->query( $sql) ) if ( $this->db->query( $sql) )
{ {
if ($this->db->num_rows()) if ($this->db->num_rows())
{ {
$obj = $this->db->fetch_object(); $obj = $this->db->fetch_object();
$this->id = $obj->rowid; $this->id = $obj->rowid;
$this->ref = $obj->rowid; $this->ref = $obj->rowid;
$this->datec = $obj->datec; $this->datec = $obj->datec;
$this->date = $obj->datedon; $this->date = $obj->datedon;
$this->prenom = stripslashes($obj->prenom); $this->prenom = stripslashes($obj->prenom);
$this->nom = stripslashes($obj->nom); $this->nom = stripslashes($obj->nom);
$this->societe = stripslashes($obj->societe); $this->societe = stripslashes($obj->societe);
$this->statut = $obj->fk_statut; $this->statut = $obj->fk_statut;
$this->adresse = stripslashes($obj->adresse); $this->adresse = stripslashes($obj->adresse);
$this->cp = stripslashes($obj->cp); $this->cp = stripslashes($obj->cp);
$this->ville = stripslashes($obj->ville); $this->ville = stripslashes($obj->ville);
$this->email = stripslashes($obj->email); $this->email = stripslashes($obj->email);
$this->pays = stripslashes($obj->pays); $this->pays = stripslashes($obj->pays);
$this->projet = $obj->projet; $this->projet = $obj->projet;
$this->projetid = $obj->fk_don_projet; $this->projetid = $obj->fk_don_projet;
$this->public = $obj->public; $this->public = $obj->public;
$this->modepaiementid = $obj->fk_paiement; $this->modepaiementid = $obj->fk_paiement;
$this->modepaiement = $obj->libelle; $this->modepaiement = $obj->libelle;
$this->amount = $obj->amount; $this->amount = $obj->amount;
$this->commentaire = stripslashes($obj->note); $this->commentaire = stripslashes($obj->note);
} }
return 1; return 1;
} }
else else
{ {
dolibarr_print_error($this->db); dolibarr_print_error($this->db);
return -1; return -1;
} }
} }
/* /*
* \brief Valide une promesse de don * \brief Valide une promesse de don
* \param rowid id du don à modifier * \param rowid id du don à modifier
* \param userid utilisateur qui valide la promesse * \param userid utilisateur qui valide la promesse
* *
*/ */
function valid_promesse($rowid, $userid) 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;"; $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->query( $sql) )
{ {
if ( $this->db->affected_rows() ) if ( $this->db->affected_rows() )
{ {
return 1; return 1;
} }
else else
{ {
return 0; return 0;
} }
} }
else else
{ {
dolibarr_print_error($this->db); dolibarr_print_error($this->db);
return 0; return 0;
} }
} }
/* /*
* \brief Classe le don comme payé, le don a été recu * \brief Classe le don comme payé, le don a été recu
* \param rowid id du don à modifier * \param rowid id du don à modifier
* \param modepaiementd mode de paiement * \param modepaiementd mode de paiement
*/ */
function set_paye($rowid, $modepaiement='') function set_paye($rowid, $modepaiement='')
{ {
$sql = "UPDATE ".MAIN_DB_PREFIX."don SET fk_statut = 2"; $sql = "UPDATE ".MAIN_DB_PREFIX."don SET fk_statut = 2";
if ($modepaiement) if ($modepaiement)
{ {
$sql .= ", fk_paiement=$modepaiement"; $sql .= ", fk_paiement=$modepaiement";
} }
$sql .= " WHERE rowid = $rowid AND fk_statut = 1;"; $sql .= " WHERE rowid = $rowid AND fk_statut = 1;";
if ( $this->db->query( $sql) ) if ( $this->db->query( $sql) )
{ {
if ( $this->db->affected_rows() ) if ( $this->db->affected_rows() )
{ {
return 1; return 1;
} }
else else
{ {
return 0; return 0;
} }
} }
else else
{ {
dolibarr_print_error($this->db); dolibarr_print_error($this->db);
return 0; return 0;
} }
} }
/* /*

View File

@ -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'; update llx_expedition_methode set code='TRANS', libelle='Transporteur' where code='transporteur';
alter table llx_fichinterdet modify date datetime; 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;

View File

@ -37,8 +37,8 @@ create table llx_don
pays varchar(50), pays varchar(50),
email varchar(255), email varchar(255),
public smallint DEFAULT 1 NOT NULL, -- le don est-il public (0,1) 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_author integer NOT NULL,
fk_user_valid integer NOT NULL, fk_user_valid integer NULL,
note text note text
)type=innodb; )type=innodb;