From 7fd6a929a4cae72c2c09947f327a63023bcbb788 Mon Sep 17 00:00:00 2001 From: Rodolphe Quiedeville Date: Wed, 5 Jan 2005 15:26:05 +0000 Subject: [PATCH] Nouveau fichier --- htdocs/comm/mailing/cibles.php | 115 ++++++++++++ htdocs/comm/mailing/fiche.php | 261 ++++++++++++++++++++++++++ htdocs/comm/mailing/mailing.class.php | 217 +++++++++++++++++++++ 3 files changed, 593 insertions(+) create mode 100644 htdocs/comm/mailing/cibles.php create mode 100644 htdocs/comm/mailing/fiche.php create mode 100644 htdocs/comm/mailing/mailing.class.php diff --git a/htdocs/comm/mailing/cibles.php b/htdocs/comm/mailing/cibles.php new file mode 100644 index 00000000000..bc0c2241e71 --- /dev/null +++ b/htdocs/comm/mailing/cibles.php @@ -0,0 +1,115 @@ + + * + * 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 + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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$ + * + */ + +require("./pre.inc.php"); + +$mesg = ''; + + +llxHeader("","","Fiche mailing"); + +if ($cancel == $langs->trans("Cancel")) +{ + $action = ''; +} + +/* + * Création + * + */ + +$mil = new Mailing($db); + + +$html = new Form($db); +if ($mil->fetch($_GET["id"]) == 0) +{ + + $h=0; + $head[$h][0] = DOL_URL_ROOT."/comm/mailing/fiche.php?id=".$mil->id; + $head[$h][1] = $langs->trans("Fiche"); + $h++; + + $head[$h][0] = DOL_URL_ROOT."/comm/mailing/cibles.php?id=".$mil->id; + $head[$h][1] = $langs->trans('Destinatires'); + $hselected = $h; + $h++; + + dolibarr_fiche_head($head, $hselected, substr($mil->titre,0,20)); + + + print_titre("Mailing"); + + print ''; + + print ''; + print '
Nom'.$mil->titre.'
'; + + /* + * + * + * + */ + $sql = "SELECT mc.nom, mc.prenom, mc.email"; + $sql .= " FROM ".MAIN_DB_PREFIX."mailing_cibles as mc"; + $sql .= " WHERE mc.fk_mailing=".$mil->id; + + if ( $db->query($sql) ) + { + $num = $db->num_rows(); + + print '
'; + print ''; + $var = true; + $i = 0; + + while ($i < $num ) + { + $obj = $db->fetch_object(); + $var=!$var; + + print ""; + print ''; + print ''; + print ''; + + $i++; + } + + print "
'.$langs->trans("Destinataires").'
'.stripslashes($obj->prenom).''.stripslashes($obj->nom).''.$obj->email.'

"; + + $db->free(); + } + else + { + dolibarr_print_error($db); + } +} + + + + + +$db->close(); + +llxFooter("Dernière modification $Date$ révision $Revision$"); +?> diff --git a/htdocs/comm/mailing/fiche.php b/htdocs/comm/mailing/fiche.php new file mode 100644 index 00000000000..6a170d9b9ad --- /dev/null +++ b/htdocs/comm/mailing/fiche.php @@ -0,0 +1,261 @@ + + * + * 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 + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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$ + * + */ + +require("./pre.inc.php"); + +$mesg = ''; + +if ($_POST["action"] == 'add') +{ + $mil = new Mailing($db); + + $mil->titre = $_POST["titre"]; + $mil->sujet = $_POST["sujet"]; + $mil->body = $_POST["body"]; + + + if ( $mil->create($user) == 0) + { + Header("Location: fiche.php?id=".$mil->id); + } +} + +if ($_POST["action"] == 'update') +{ + $mil = new Mailing($db); + + $mil->id = $_GET["id"]; + $mil->titre = $_POST["titre"]; + $mil->sujet = $_POST["sujet"]; + $mil->body = $_POST["body"]; + + + if ( $mil->update() == 0) + { + Header("Location: fiche.php?id=".$mil->id); + } +} + +if ($_POST["action"] == 'confirm_valide') +{ + + if ($_POST["confirm"] == 'yes') + { + $mil = new Mailing($db); + + if ($mil->fetch($_GET["id"]) == 0) + { + $mil->valid($user); + + Header("Location: fiche.php?id=".$mil->id); + } + else + { + print "Erreur"; + } + } + else + { + Header("Location: fiche.php?id=".$_GET["id"]); + } +} + +if ($_POST["action"] == 'confirm_approve') +{ + + if ($_POST["confirm"] == 'yes') + { + $mil = new Mailing($db); + + if ($mil->fetch($_GET["id"]) == 0) + { + $mil->approve($user); + + Header("Location: fiche.php?id=".$mil->id); + } + else + { + print "Erreur"; + } + } + else + { + Header("Location: fiche.php?id=".$_GET["id"]); + } +} + +llxHeader("","","Fiche Mailing"); + +if ($cancel == $langs->trans("Cancel")) +{ + $action = ''; +} + +/* + * Création + * + */ + +$mil = new Mailing($db); + +if ($_GET["action"] == 'create') +{ + print '
'."\n"; + print ''; + + print_titre("Nouveau Mailing"); + + print ''; + + print ''; + + print ''; + + print ''; + + print ''; + print '
Titre
Sujet (sujet du mail)
Message
'; + print '
'; +} +else +{ + $html = new Form($db); + if ($mil->fetch($_GET["id"]) == 0) + { + + $h=0; + $head[$h][0] = DOL_URL_ROOT."/comm/mailing/fiche.php?id=".$mil->id; + $head[$h][1] = $langs->trans("Fiche"); + $hselected = $h; + $h++; + + $head[$h][0] = DOL_URL_ROOT."/comm/mailing/cibles.php?id=".$mil->id; + $head[$h][1] = $langs->trans('Destinatires'); + $h++; + + dolibarr_fiche_head($head, $hselected, substr($mil->titre,0,20)); + + + /* + * Confirmation de la validation du mailing + * + */ + if ($_GET["action"] == 'valide') + { + $html->form_confirm("fiche.php?id=".$mil->id, + "Valider le mailing", + "Confirmez-vous la validation du mailing ?", + "confirm_valide"); + } + /* + * Confirmation de l'approbation du mailing + * + */ + if ($_GET["action"] == 'approve') + { + $html->form_confirm("fiche.php?id=".$mil->id, + "Approuver le mailing", + "Confirmez-vous l'approbation du mailing ?", + "confirm_approve"); + } + + print_titre("Mailing"); + + print ''; + + print ''; + + print ''; + print ''; + + print ''; + + //print ''; + //print ''; + + if ($mil->statut > 0) + { + print ''; + } + + print ''; + + $uc = new User($db, $mil->user_creat); + $uc->fetch(); + print ''; + print ''; + print ''; + + + if ($mil->statut > 0) + { + $uv = new User($db, $mil->user_valid); + $uv->fetch(); + print ''; + print ''; + print ''; + } + + if ($mil->statut > 1) + { + $ua = new User($db, $mil->user_appro); + $ua->fetch(); + print ''; + print ''; + print ''; + } + + print '
Titre'.$mil->titre.'
Emetteur'.htmlentities($mil->email_from).'Email'.htmlentities($mil->email_from).'
Message'; + + print 'Sujet : '.$mil->sujet.'

'; + print nl2br($mil->body).'
Réponse'.htmlentities($mil->email_replyto).'
Retour Erreur'.htmlentities($mil->email_errorsto).'
Nb destinataires'.$mil->nbemail.'
Statut'.$mil->statuts[$mil->statut].'
Créé par'.$uc->fullname.'le'.strftime("%d %b %Y %H:%M", $mil->date_creat).'
Validé par'.$uv->fullname.'le'.strftime("%d %b %Y %H:%M", $mil->date_valid).'
Approuvé par'.$ua->fullname.'le'.strftime("%d %b %Y %H:%M", $mil->date_appro).'
'; + + print "\n\n
\n"; + + if ($_GET["action"] == '') + { + + print ''.$langs->trans("Tester").''; + + if ($mil->statut == 0) + { + print ''.$langs->trans("Valider").''; + } + + if ($mil->statut == 1 && $mil->nbemail > 0) + { + print ''.$langs->trans("Approuver").''; + } + + + } + print '

'; + } + +} + + + +$db->close(); + +llxFooter("Dernière modification $Date$ révision $Revision$"); +?> diff --git a/htdocs/comm/mailing/mailing.class.php b/htdocs/comm/mailing/mailing.class.php new file mode 100644 index 00000000000..246d11c701f --- /dev/null +++ b/htdocs/comm/mailing/mailing.class.php @@ -0,0 +1,217 @@ + + * + * 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 + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * 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$ + * + */ + + + + +/*! \class Mailing + +*/ + +class Mailing +{ + var $id; + + /** + * \brief Constructeur de la classe + * \param DB handler accès base de données + */ + function Mailing($DB, $soc_idp="") + { + $this->db = $DB ; + $this->db_table = MAIN_DB_PREFIX."mailing"; + + $this->statuts[0] = "En préparation"; + $this->statuts[1] = "Validé"; + $this->statuts[2] = "Approuvé"; + $this->statuts[3] = "Envoyé"; + } + + /** + * \brief Création du mailing + * \param user object utilisateur qui crée + * + */ + function create($user) + { + dolibarr_syslog("Mailing::Create"); + $sql = "INSERT INTO ".$this->db_table; + $sql .= " (date_creat, fk_user_creat)"; + $sql .= " VALUES (now(), ".$user->id.")"; + + if (strlen(trim($this->titre)) == 0) + { + $this->titre = "Sans titre"; + } + + if ( $this->db->query($sql) ) + { + $this->id = $this->db->last_insert_id(); + + return $this->update(); + } + else + { + dolibarr_syslog("Mailing::Create Erreur -1"); + return -1; + } + } + /** + * \brief Update les infos du mailing + */ + function update() + { + dolibarr_syslog("Mailing::Update"); + + $sql = "UPDATE ".MAIN_DB_PREFIX."mailing "; + $sql .= " SET titre = '".$this->titre."'"; + $sql .= " , sujet = '".$this->sujet."'"; + $sql .= " , body = '".$this->body."'"; + $sql .= " WHERE rowid = ".$this->id; + + if ($this->db->query($sql) ) + { + return 0; + } + else + { + dolibarr_syslog("Mailing::Update Erreur -1"); + return -1; + } + } + /** + * \brief Recupére l'objet mailing + * \param rowid id du mailing + */ + function fetch($rowid) + { + $sql = "SELECT m.rowid, m.titre, m.sujet, m.body"; + $sql .= " , m.email_from, m.email_replyto, m.email_errorsto"; + $sql .= " , m.statut, m.nbemail"; + $sql .= ", m.fk_user_creat, m.fk_user_valid, m.fk_user_appro"; + $sql .= ", ".$this->db->pdate("m.date_creat") . " as date_creat"; + $sql .= ", ".$this->db->pdate("m.date_valid") . " as date_valid"; + $sql .= ", ".$this->db->pdate("m.date_appro") . " as date_appro"; + $sql .= " FROM ".MAIN_DB_PREFIX."mailing as m"; + $sql .= " WHERE m.rowid = ".$rowid; + + if ($this->db->query($sql) ) + { + if ($this->db->num_rows()) + { + $obj = $this->db->fetch_object(); + + $this->id = $obj->rowid; + $this->statut = $obj->statut; + $this->nbemail = $obj->nbemail; + $this->titre = stripslashes($obj->titre); + $this->sujet = stripslashes($obj->sujet); + $this->body = stripslashes($obj->body); + + $this->email_from = $obj->email_from; + $this->email_replyto = $obj->email_replyto; + $this->email_errorsto = $obj->email_errorsto; + + $this->user_creat = $obj->fk_user_creat; + $this->user_valid = $obj->fk_user_valid; + $this->user_appro = $obj->fk_user_appro; + + $this->date_creat = $obj->date_creat; + $this->date_valid = $obj->date_valid; + $this->date_appro = $obj->date_appro; + + return 0; + } + else + { + dolibarr_syslog("Mailing::Fetch Erreur -1"); + return -1; + } + } + else + { + dolibarr_syslog("Mailing::Fetch Erreur -2"); + return -2; + } + } + + + /** + * \brief Valide le mailing + * \param userid id de l'utilisateur qui valide + */ + function valid($user) + { + dolibarr_syslog("Mailing::Valid"); + + $sql = "UPDATE ".MAIN_DB_PREFIX."mailing "; + $sql .= " SET statut = 1, date_valid = now(), fk_user_valid=".$user->id; + + $sql .= " WHERE rowid = ".$this->id." AND statut = 0 ;"; + + if ($this->db->query($sql) ) + { + return 0; + } + else + { + dolibarr_syslog("Mailing::Valid Erreur -1"); + return -1; + } + } + + /** + * \brief Approuve le mailing + * \param userid id de l'utilisateur qui valide + */ + function approve($user) + { + $sql = "UPDATE ".MAIN_DB_PREFIX."mailing "; + $sql .= " SET statut = 2, date_appro = now(), fk_user_appro=".$user->id; + + $sql .= " WHERE rowid = ".$this->id." AND statut = 1 ;"; + + if ($this->db->query($sql) ) + { + return 0; + } + else + { + dolibarr_syslog("Mailing::Valid Erreur -1"); + return -1; + } + } + + + /** + * \brief Supprime le mailing + * \param rowid id à supprimer + */ + function delete($rowid) + { + $sql = "DELETE FROM ".MAIN_DB_PREFIX."mailing"; + $sql .= " WHERE fk_facture = ".$rowid; + + } +} + +?>