diff --git a/ChangeLog b/ChangeLog index b8e4affd67dc74758708c6fa0fcfad24dcefeb8c..cf059c60b7a8be3cae5218d10676e127bd0ff699 100644 --- a/ChangeLog +++ b/ChangeLog @@ -42,6 +42,7 @@ For users: - New: Can select thirdparties into emailing targets, even if module category is not enabled. - New: [ task #498 ] Improvement of the block to add products/services lines. - New: ECM autodir works also for files joined to products and services. +- New: Add a selection module for emailing to enter a recipient from gui. New experimental modules: - New: Add margin and commissions management module. - New: Add holiday module. diff --git a/htdocs/core/modules/mailings/peche.modules.php b/htdocs/core/modules/mailings/xinputfile.modules.php similarity index 90% rename from htdocs/core/modules/mailings/peche.modules.php rename to htdocs/core/modules/mailings/xinputfile.modules.php index 5ae8e2c8bb138d9e85848ae5ad2ce88b5f09348d..bd693d324ee9733950051c3ee118d8eb09d64816 100644 --- a/htdocs/core/modules/mailings/peche.modules.php +++ b/htdocs/core/modules/mailings/xinputfile.modules.php @@ -1,5 +1,5 @@ <?php -/* Copyright (C) 2005-2009 Laurent Destailleur <eldy@users.sourceforge.net> +/* Copyright (C) 2005-2012 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 @@ -17,24 +17,23 @@ */ /** - * \file htdocs/core/modules/mailings/peche.modules.php + * \file htdocs/core/modules/mailings/xinputfile.modules.php * \ingroup mailing - * \brief File of class to offer a selector of emailing targets with Rule 'Peche'. + * \brief File of class to offer a selector of emailing targets with Rule 'xinputfile'. */ include_once DOL_DOCUMENT_ROOT.'/core/modules/mailings/modules_mailings.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; /** - * \class mailing_peche - * \brief Class to offer a selector of emailing targets with Rule 'Peche'. + * Class to offer a selector of emailing targets with Rule 'xinputfile'. */ -class mailing_peche extends MailingTargets +class mailing_xinputfile extends MailingTargets { var $name='EmailsFromFile'; // Identifiant du module mailing var $desc='EMails issus d\'un fichier'; // Libelle utilise si aucune traduction pour MailingModuleDescXXX ou XXX=name trouv�e var $require_module=array(); // Module mailing actif si modules require_module actifs - var $require_admin=1; // Module mailing actif pour user admin ou non + var $require_admin=0; // Module mailing actif pour user admin ou non var $picto='generic'; var $db; @@ -69,11 +68,12 @@ class mailing_peche extends MailingTargets } - /* - * \brief Return here number of distinct emails returned by your selector. - * For example if this selector is used to extract 500 different - * emails from a text file, this function must return 500. - * \return int '' means NA + /** + * Return here number of distinct emails returned by your selector. + * For example if this selector is used to extract 500 different + * emails from a text file, this function must return 500. + * + * @return int '' means NA */ function getNbOfRecipients() { diff --git a/htdocs/core/modules/mailings/xinputuser.modules.php b/htdocs/core/modules/mailings/xinputuser.modules.php new file mode 100644 index 0000000000000000000000000000000000000000..20462806bcb711b1eb0061813d242a87dadce35c --- /dev/null +++ b/htdocs/core/modules/mailings/xinputuser.modules.php @@ -0,0 +1,164 @@ +<?php +/* Copyright (C) 2005-2012 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 + * 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, see <http://www.gnu.org/licenses/>. + * or see http://www.gnu.org/ + */ + +/** + * \file htdocs/core/modules/mailings/xinputuser.modules.php + * \ingroup mailing + * \brief File of class to offer a selector of emailing targets with Rule 'xinputuser'. + */ +include_once DOL_DOCUMENT_ROOT.'/core/modules/mailings/modules_mailings.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; + + +/** + * Class to offer a selector of emailing targets with Rule 'xinputuser'. + */ +class mailing_xinputuser extends MailingTargets +{ + var $name='EmailsFromUser'; // Identifiant du module mailing + var $desc='EMails input by user'; // Libelle utilise si aucune traduction pour MailingModuleDescXXX ou XXX=name trouv�e + var $require_module=array(); // Module mailing actif si modules require_module actifs + var $require_admin=0; // Module mailing actif pour user admin ou non + var $picto='generic'; + + var $db; + + + /** + * Constructor + * + * @param DoliDB $db Database handler + */ + function __construct($db) + { + $this->db=$db; + } + + + /** + * On the main mailing area, there is a box with statistics. + * If you want to add a line in this report you must provide an + * array of SQL request that returns two field: + * One called "label", One called "nb". + * + * @return array Array with SQL requests + */ + function getSqlArrayForStats() + { + global $langs; + $langs->load("users"); + + $statssql=array(); + return $statssql; + } + + + /** + * Return here number of distinct emails returned by your selector. + * For example if this selector is used to extract 500 different + * emails from a text file, this function must return 500. + * + * @return int '' means NA + */ + function getNbOfRecipients() + { + return ''; + } + + + /** + * Renvoie url lien vers fiche de la source du destinataire du mailing + * + * @param int $id ID + * @return string Url lien + */ + function url($id) + { + return ''; + } + + + /** + * Affiche formulaire de filtre qui apparait dans page de selection des destinataires de mailings + * + * @return string Retourne zone select + */ + function formFilter() + { + global $langs; + + $s=''; + $s.='<input type="text" name="xinputuser" class="flat" size="40">'; + return $s; + } + + /** + * Ajoute destinataires dans table des cibles + * + * @param int $mailing_id Id of emailing + * @param array $filtersarray Requete sql de selection des destinataires + * @return int < 0 si erreur, nb ajout si ok + */ + function add_to_target($mailing_id,$filtersarray=array()) + { + global $conf,$langs,$_FILES; + + require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; + + $tmparray=explode(';',GETPOST('xinputuser')); + $email=$tmparray[0]; + $lastname=$tmparray[1]; + $firstname=$tmparray[2]; + $other=$tmparray[3]; + + $cibles=array(); + if (! empty($email)) + { + if (isValidEMail($email)) + { + $cibles[] = array( + 'email' => $email, + 'name' => $name, + 'firstname' => $firstname, + 'other' => $other, + 'source_url' => '', + 'source_id' => '', + 'source_type' => 'file' + ); + + return parent::add_to_target($mailing_id, $cibles); + } + else + { + $langs->load("errors"); + $this->error = $langs->trans("ErrorBadEMail",$email); + return -1; + } + } + else + { + $langs->load("errors"); + $this->error = $langs->trans("ErrorBadEmail",$email); + return -1; + } + + } + +} + +?> diff --git a/htdocs/install/upgrade2.php b/htdocs/install/upgrade2.php index eb4658bf5aa5083ad5454a693861aa8b25c42a8e..c5eb33de6d44864588aaae1f3b93148206d0178e 100644 --- a/htdocs/install/upgrade2.php +++ b/htdocs/install/upgrade2.php @@ -3407,6 +3407,7 @@ function migrate_delete_old_files($db,$langs,$conf) DOL_DOCUMENT_ROOT.'/core/menus/smartphone/iphone_backoffice.php', DOL_DOCUMENT_ROOT.'/core/menus/smartphone/iphone_frontoffice.php', DOL_DOCUMENT_ROOT.'/core/modules/mailings/dolibarr_services_expired.modules.php', + DOL_DOCUMENT_ROOT.'/core/modules/mailings/peche.modules.php', DOL_DOCUMENT_ROOT.'/core/modules/mailings/poire.modules.php', DOL_DOCUMENT_ROOT.'/core/modules/mailings/kiwi.modules.php', DOL_DOCUMENT_ROOT.'/core/modules/facture/pdf_crabe.modules.php', diff --git a/htdocs/langs/en_US/mails.lang b/htdocs/langs/en_US/mails.lang index dca09d03cd3d2214ca7957059e6bfe7deb7c7f7c..57c56785c70436d3f8782932ce6fa2209936a853 100644 --- a/htdocs/langs/en_US/mails.lang +++ b/htdocs/langs/en_US/mails.lang @@ -85,6 +85,7 @@ MailingModuleDescContactCompanies=Contacts of all third parties (customer, prosp MailingModuleDescDolibarrUsers=Dolibarr users MailingModuleDescFundationMembers=Foundation members with emails MailingModuleDescEmailsFromFile=EMails from a text file (email;lastname;firstname;other) +MailingModuleDescEmailsFromUser=EMails from user input (email;lastname;firstname;other) MailingModuleDescContactsCategories=Third parties (by category) MailingModuleDescDolibarrContractsLinesExpired=Third parties with expired contract's lines MailingModuleDescContactsByCompanyCategory=Contacts of third parties (by third parties category) diff --git a/htdocs/langs/fr_FR/mails.lang b/htdocs/langs/fr_FR/mails.lang index ee1c26af6d7855fe027e0075a194f2bbd70eb825..078bded11d2323453d766e9697ecb31014a1021c 100644 --- a/htdocs/langs/fr_FR/mails.lang +++ b/htdocs/langs/fr_FR/mails.lang @@ -85,6 +85,7 @@ MailingModuleDescContactCompanies=Contacts de tiers (prospects, clients, fournis MailingModuleDescDolibarrUsers=Utilisateurs de Dolibarr MailingModuleDescFundationMembers=Adhérents MailingModuleDescEmailsFromFile=EMails issus d'un fichier texte (email;nom;prenom;autre) +MailingModuleDescEmailsFromUser=EMails saisi manuellement (email;nom;prenom;autre) MailingModuleDescContactsCategories=Tiers (par catégorie) MailingModuleDescDolibarrContractsLinesExpired=Tiers avec lignes de contrats de services expirées MailingModuleDescContactsByCompanyCategory=Contacts de tiers (par catégorie de tiers)