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