31 if (empty($conf) || !is_object($conf)) {
32 print
"Error, template page can't be called as URL";
37 if ($action ==
'presend') {
38 $langs->load(
"mails");
40 $titreform =
'SendMail';
42 $object->fetch_projet();
44 if (!in_array($object->element, array(
'societe',
'user',
'member'))) {
48 include_once DOL_DOCUMENT_ROOT.
'/core/lib/files.lib.php';
50 if ($object->element ==
'invoice_supplier') {
51 $fileparams =
dol_most_recent_file($diroutput.
'/'.
get_exdir($object->id, 2, 0, 0, $object, $object->element).$ref, preg_quote($ref,
'/').
'([^\-])+');
56 $file = $fileparams[
'fullname'];
60 $outputlangs = $langs;
62 if (!empty($conf->global->MAIN_MULTILANGS) && empty($newlang)) {
63 $newlang = $object->thirdparty->default_lang;
64 if (
GETPOST(
'lang_id',
'aZ09')) {
65 $newlang =
GETPOST(
'lang_id',
'aZ09');
69 if (!empty($newlang)) {
71 $outputlangs->setDefaultLang($newlang);
73 $outputlangs->loadLangs(array(
'commercial',
'bills',
'orders',
'contracts',
'members',
'propal',
'products',
'supplier_proposal',
'interventions',
'receptions',
'sendings'));
77 if (empty($object->ref_client)) {
78 $topicmail = $outputlangs->trans($defaulttopic,
'__REF__');
79 } elseif (!empty($object->ref_client)) {
80 $topicmail = $outputlangs->trans($defaulttopic,
'__REF__ (__REF_CLIENT__)');
84 $forcebuilddoc =
true;
85 if (in_array($object->element, array(
'societe',
'user',
'member'))) {
86 $forcebuilddoc =
false;
88 if ($object->element ==
'invoice_supplier' && empty($conf->global->INVOICE_SUPPLIER_ADDON_PDF)) {
89 $forcebuilddoc =
false;
92 if ((!$file || !is_readable($file)) && method_exists($object,
'generateDocument')) {
93 $result = $object->generateDocument(
GETPOST(
'model') ?
GETPOST(
'model') : $object->model_pdf, $outputlangs, $hidedetails, $hidedesc, $hideref);
98 if ($object->element ==
'invoice_supplier') {
99 $fileparams =
dol_most_recent_file($diroutput.
'/'.
get_exdir($object->id, 2, 0, 0, $object, $object->element).$ref, preg_quote($ref,
'/').
'([^\-])+');
104 $file = $fileparams[
'fullname'];
108 print
'<div id="formmailbeforetitle" name="formmailbeforetitle"></div>';
109 print
'<div class="clearboth"></div>';
116 include_once DOL_DOCUMENT_ROOT.
'/core/class/html.formmail.class.php';
119 $formmail->param[
'langsmodels'] = (empty($newlang) ? $langs->defaultlang : $newlang);
120 $formmail->fromtype = (
GETPOST(
'fromtype') ?
GETPOST(
'fromtype') : (!empty($conf->global->MAIN_MAIL_DEFAULT_FROMTYPE) ? $conf->global->MAIN_MAIL_DEFAULT_FROMTYPE :
'user'));
122 if ($formmail->fromtype ===
'user') {
123 $formmail->fromid = $user->id;
126 if ($object->element ===
'facture' && !empty($conf->global->INVOICE_EMAIL_SENDER)) {
127 $formmail->frommail = $conf->global->INVOICE_EMAIL_SENDER;
128 $formmail->fromname = (!empty($conf->global->INVOICE_EMAIL_SENDER_NAME) ? $conf->global->INVOICE_EMAIL_SENDER_NAME :
'');
129 $formmail->fromtype =
'special';
131 if ($object->element ===
'shipping' && !empty($conf->global->SHIPPING_EMAIL_SENDER)) {
132 $formmail->frommail = $conf->global->SHIPPING_EMAIL_SENDER;
133 $formmail->fromname = (!empty($conf->global->SHIPPING_EMAIL_SENDER_NAME) ? $conf->global->SHIPPING_EMAIL_SENDER_NAME :
'');
134 $formmail->fromtype =
'special';
136 if ($object->element ===
'commande' && !empty($conf->global->COMMANDE_EMAIL_SENDER)) {
137 $formmail->frommail = $conf->global->COMMANDE_EMAIL_SENDER;
138 $formmail->fromname = (!empty($conf->global->COMMANDE_EMAIL_SENDER_NAME) ? $conf->global->COMMANDE_EMAIL_SENDER_NAME :
'');
139 $formmail->fromtype =
'special';
141 if ($object->element ===
'order_supplier' && !empty($conf->global->ORDER_SUPPLIER_EMAIL_SENDER)) {
142 $formmail->frommail = $conf->global->ORDER_SUPPLIER_EMAIL_SENDER;
143 $formmail->fromname = (!empty($conf->global->ORDER_SUPPLIER_EMAIL_SENDER_NAME) ? $conf->global->ORDER_SUPPLIER_EMAIL_SENDER_NAME :
'');
144 $formmail->fromtype =
'special';
147 $formmail->trackid = $trackid;
148 $formmail->withfrom = 1;
152 if ($object->element ==
'expensereport') {
153 $fuser =
new User($db);
154 $fuser->fetch($object->fk_user_author);
155 $liste[
'thirdparty'] = $fuser->getFullName($outputlangs).
" <".$fuser->email.
">";
156 } elseif ($object->element ==
'partnership' &&
getDolGlobalString(
'PARTNERSHIP_IS_MANAGED_FOR') ==
'member') {
158 $fadherent->fetch($object->fk_member);
159 $liste[
'member'] = $fadherent->getFullName($outputlangs).
" <".$fadherent->email.
">";
160 } elseif ($object->element ==
'societe') {
161 foreach ($object->thirdparty_and_contact_email_array(1) as $key => $value) {
162 $liste[$key] = $value;
164 } elseif ($object->element ==
'contact') {
165 $liste[
'contact'] = $object->getFullName($outputlangs).
" <".$object->email.
">";
166 } elseif ($object->element ==
'user' || $object->element ==
'member') {
167 $liste[
'thirdparty'] = $object->getFullName($outputlangs).
" <".$object->email.
">";
169 if (!empty($object->socid) && $object->socid > 0 && !is_object($object->thirdparty) && method_exists($object,
'fetch_thirdparty')) {
170 $object->fetch_thirdparty();
172 if (is_object($object->thirdparty)) {
173 foreach ($object->thirdparty->thirdparty_and_contact_email_array(1) as $key => $value) {
174 $liste[$key] = $value;
178 if (!empty($conf->global->MAIN_MAIL_ENABLED_USER_DEST_SELECT)) {
179 $listeuser = array();
180 $fuserdest =
new User($db);
182 $result = $fuserdest->fetchAll(
'ASC',
't.lastname', 0, 0, array(
'customsql'=>
"t.statut=1 AND t.employee=1 AND t.email IS NOT NULL AND t.email <> ''"),
'AND',
true);
183 if ($result > 0 && is_array($fuserdest->users) && count($fuserdest->users) > 0) {
184 foreach ($fuserdest->users as $uuserdest) {
185 $listeuser[$uuserdest->id] = $uuserdest->user_get_property($uuserdest->id,
'email');
187 } elseif ($result < 0) {
190 if (count($listeuser) > 0) {
191 $formmail->withtouser = $listeuser;
192 $formmail->withtoccuser = $listeuser;
197 if (!isset($arrayoffamiliestoexclude)) {
198 $arrayoffamiliestoexclude =
null;
204 $formmail->setSubstitFromObject($object, $langs);
207 $substitutionarray[
'__CHECK_READ__'] =
"";
208 if (is_object($object) && is_object($object->thirdparty)) {
209 $checkRead=
'<img src="'.DOL_MAIN_URL_ROOT.
'/public/emailing/mailing-read.php';
210 $checkRead.=
'?tag='.(!empty($object->thirdparty->tag)?urlencode($object->thirdparty->tag):
"");
211 $checkRead.=
'&securitykey='.(!empty($conf->global->MAILING_EMAIL_UNSUBSCRIBE_KEY)?urlencode($conf->global->MAILING_EMAIL_UNSUBSCRIBE_KEY):
"");
212 $checkRead.=
'" width="1" height="1" style="width:1px;height:1px" border="0"/>';
213 $substitutionarray[
'__CHECK_READ__'] = $checkRead;
215 $substitutionarray[
'__PERSONALIZED__'] =
'';
216 $substitutionarray[
'__CONTACTCIVNAME__'] =
'';
218 'mode' =>
'formemail'
223 $tmpobject = $object;
224 if (($object->element ==
'shipping' || $object->element ==
'reception')) {
225 $origin = $object->origin;
226 $origin_id = $object->origin_id;
228 if (!empty($origin) && !empty($origin_id)) {
229 $element = $subelement = $origin;
231 if (preg_match(
'/^([^_]+)_([^_]+)/i', $origin, $regs)) {
233 $subelement = $regs[2];
236 if ($element ==
'order') {
237 $element = $subelement =
'commande';
239 if ($element ==
'propal') {
240 $element =
'comm/propal';
241 $subelement =
'propal';
243 if ($element ==
'contract') {
244 $element = $subelement =
'contrat';
246 if ($element ==
'inter') {
247 $element = $subelement =
'ficheinter';
249 if ($element ==
'shipping') {
250 $element = $subelement =
'expedition';
252 if ($element ==
'order_supplier') {
254 $subelement =
'fournisseur.commande';
256 if ($element ==
'project') {
261 $classname = ucfirst($origin);
262 $objectsrc =
new $classname($db);
263 $objectsrc->fetch($origin_id);
265 $tmpobject = $objectsrc;
269 $contactarr = array();
270 $contactarr = $tmpobject->liste_contact(-1,
'external');
272 if (is_array($contactarr) && count($contactarr) > 0) {
273 require_once DOL_DOCUMENT_ROOT.
'/contact/class/contact.class.php';
274 require_once DOL_DOCUMENT_ROOT.
'/societe/class/societe.class.php';
275 $contactstatic =
new Contact($db);
276 $tmpcompany =
new Societe($db);
278 foreach ($contactarr as $contact) {
279 $contactstatic->fetch($contact[
'id']);
281 $substitutionarray[
'__CONTACT_NAME_'.$contact[
'code'].
'__'] = $contactstatic->getFullName($outputlangs, 1);
282 $substitutionarray[
'__CONTACT_LASTNAME_'.$contact[
'code'].
'__'] = $contactstatic->lastname;
283 $substitutionarray[
'__CONTACT_FIRSTNAME_'.$contact[
'code'].
'__'] = $contactstatic->firstname;
284 $substitutionarray[
'__CONTACT_TITLE_'.$contact[
'code'].
'__'] = $contactstatic->getCivilityLabel();
287 if (empty($liste[$contact[
'id']])) {
289 if (isset($object->thirdparty) && is_object($object->thirdparty)) {
290 if ($contactstatic->fk_soc != $object->thirdparty->id) {
291 $tmpcompany->fetch($contactstatic->fk_soc);
292 if ($tmpcompany->id > 0) {
293 $contacttoshow .= $tmpcompany->name.
': ';
297 $contacttoshow .= $contactstatic->getFullName($outputlangs, 1);
298 $contacttoshow .=
" <".($contactstatic->email ? $contactstatic->email : $langs->transnoentitiesnoconv(
"NoEMail")) .
">";
299 $liste[$contact[
'id']] = $contacttoshow;
304 $formmail->withto = $liste;
305 $formmail->withtofree = (
GETPOST(
'sendto',
'alphawithlgt') ?
GETPOST(
'sendto',
'alphawithlgt') :
'1');
306 $formmail->withtocc = $liste;
308 $formmail->withtopic = $topicmail;
309 $formmail->withfile = 2;
310 $formmail->withbody = 1;
311 $formmail->withdeliveryreceipt = 1;
312 $formmail->withcancel = 1;
315 $formmail->substit = $substitutionarray;
318 $formmail->param[
'action'] =
'send';
319 $formmail->param[
'models'] = $modelmail;
320 $formmail->param[
'models_id'] =
GETPOST(
'modelmailselected',
'int');
321 $formmail->param[
'id'] = $object->id;
322 $formmail->param[
'returnurl'] = $_SERVER[
"PHP_SELF"].
'?id='.$object->id;
323 $formmail->param[
'fileinit'] = array($file);
326 print $formmail->get_form();