* Copyright (C) 2010 Juanjo Menent * Copyright (C) 2018 Frédéric France * * 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 3 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 . */ /** * \file htdocs/core/class/html.formsms.class.php * \ingroup core * \brief Fichier de la classe permettant la generation du formulaire html d'envoi de mail unitaire */ require_once DOL_DOCUMENT_ROOT.'/core/class/html.form.class.php'; /** * Classe permettant la generation du formulaire d'envoi de Sms * Usage: $formsms = new FormSms($db) * $formsms->proprietes=1 ou chaine ou tableau de valeurs * $formsms->show_form() affiche le formulaire */ class FormSms { /** * @var DoliDB Database handler. */ public $db; public $fromid; public $fromname; public $fromsms; public $fromtype; public $replytoname; public $replytomail; public $toname; public $tomail; public $withsubstit; // Show substitution array public $withfrom; public $withto; public $withtopic; public $withbody; /** * @var int Id of company */ public $withtosocid; public $withfromreadonly; public $withreplytoreadonly; public $withtoreadonly; public $withtopicreadonly; public $withcancel; public $substit = array(); public $param = array(); /** * @var string Error code (or message) */ public $error = ''; /** * @var string[] Array of error strings */ public $errors = array(); /** * Constructor * * @param DoliDB $db Database handler */ public function __construct($db) { $this->db = $db; $this->withfrom = 1; $this->withto = 1; $this->withtopic = 1; $this->withbody = 1; $this->withfromreadonly = 1; $this->withreplytoreadonly = 1; $this->withtoreadonly = 0; $this->withtopicreadonly = 0; $this->withbodyreadonly = 0; } // phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps /** * Show the form to input an sms. * * @param string $morecss Class on first column td * @param int $showform Show form tags and submit button (recommanded is to use with value 0) * @return void */ public function show_form($morecss = 'titlefield', $showform = 1) { // phpcs:enable global $conf, $langs, $user, $form; if (!is_object($form)) $form = new Form($this->db); // Load translation files required by the page $langs->loadLangs(array('other', 'mails', 'sms')); $soc = new Societe($this->db); if (!empty($this->withtosocid) && $this->withtosocid > 0) { $soc->fetch($this->withtosocid); } print "\n\n"; print ' '; if ($showform) print "
param["returnurl"]."\">\n"; print ''; foreach ($this->param as $key=>$value) { print "\n"; } print "\n"; // Substitution array if (!empty($this->withsubstit)) // Unset or set ->withsubstit=0 to disable this. { print "\n"; } // From if ($this->withfrom) { if ($this->withfromreadonly) { print '\n"; print "\n"; } else { print ''; print "\n"; } } // To (target) if ($this->withto || is_array($this->withto)) { print '\n"; } // Message if ($this->withbody) { $defaultmessage = ''; if ($this->param["models"] == 'body') { $defaultmessage = $this->withbody; } $defaultmessage = make_substitutions($defaultmessage, $this->substit); if (isset($_POST["message"])) $defaultmessage = $_POST["message"]; $defaultmessage = str_replace('\n', "\n", $defaultmessage); print ""; print '"; print "'; } print "\n"; } print ' '; print "
"; $help = ""; foreach ($this->substit as $key => $val) { $help .= $key.' -> '.$langs->trans($val).'
'; } print $form->textwithpicto($langs->trans("SmsTestSubstitutionReplacedByGenericValues"), $help); print "
'.$langs->trans("SmsFrom"); print ''; print ""; if ($this->fromtype == 'user') { $langs->load("users"); $fuser = new User($this->db); $fuser->fetch($this->fromid); print $fuser->getNomUrl(1); print '   '; } if ($this->fromsms) { print $this->fromsms; } else { if ($this->fromtype) { $langs->load("errors"); print ' <'.$langs->trans("ErrorNoPhoneDefinedForThisUser").'> '; } } print "
'.$langs->trans("SmsFrom").""; //print ''; if ($conf->global->MAIN_SMS_SENDMODE == 'ovh') // For backward compatibility @deprecated { dol_include_once('/ovh/class/ovhsms.class.php'); try { $sms = new OvhSms($this->db); if (empty($conf->global->OVHSMS_ACCOUNT)) { $resultsender = 'ErrorOVHSMS_ACCOUNT not defined'; } else { $resultsender = $sms->SmsSenderList(); } } catch (Exception $e) { dol_print_error('', 'Error to get list of senders: '.$e->getMessage()); } } elseif (!empty($conf->global->MAIN_SMS_SENDMODE)) // $conf->global->MAIN_SMS_SENDMODE looks like a value 'class@module' { $tmp = explode('@', $conf->global->MAIN_SMS_SENDMODE); $classfile = $tmp[0]; $module = (empty($tmp[1]) ? $tmp[0] : $tmp[1]); dol_include_once('/'.$module.'/class/'.$classfile.'.class.php'); try { $classname = ucfirst($classfile); if (class_exists($classname)) { $sms = new $classname($this->db); $resultsender = $sms->SmsSenderList(); } else { $sms = new stdClass(); $sms->error = 'The SMS manager "'.$classfile.'" defined into SMS setup MAIN_SMS_SENDMODE is not found'; } } catch (Exception $e) { dol_print_error('', 'Error to get list of senders: '.$e->getMessage()); exit; } } else { dol_syslog("Warning: The SMS sending method has not been defined into MAIN_SMS_SENDMODE", LOG_WARNING); $resultsender = array(); $resultsender[0]->number = $this->fromsms; } if (is_array($resultsender) && count($resultsender) > 0) { print ''; } else { print ''.$langs->trans("SmsNoPossibleSenderFound"); if (is_object($sms) && !empty($sms->error)) print ' '.$sms->error; print ''; } print '
'; //$moretext=$langs->trans("YouCanUseCommaSeparatorForSeveralRecipients"); $moretext = ''; print $form->textwithpicto($langs->trans("SmsTo"), $moretext); print ''; if ($this->withtoreadonly) { print (!is_array($this->withto) && !is_numeric($this->withto)) ? $this->withto : ""; } else { print "withto) && $this->withto != '1' ? (isset($_REQUEST["sendto"]) ?GETPOST("sendto") : $this->withto) : "+")."\">"; if (!empty($this->withtosocid) && $this->withtosocid > 0) { $liste = array(); foreach ($soc->thirdparty_and_contact_phone_array() as $key => $value) { $liste[$key] = $value; } print " ".$langs->trans("or")." "; //var_dump($_REQUEST);exit; print $form->selectarray("receiver", $liste, GETPOST("receiver"), 1); } print ' '.$langs->trans("SmsInfoNumero").''; } print "
'.$langs->trans("SmsText").""; if ($this->withbodyreadonly) { print nl2br($defaultmessage); print ''; } else { print ''; print '
'.$langs->trans("SmsInfoCharRemain").': '.(160 - dol_strlen($defaultmessage)).'
'.$langs->trans("DelayBeforeSending").':
'.$langs->trans("Priority").' :
'.$langs->trans("Type").' :
'.$langs->trans("DisableStopIfSupported").' :
\n"; if ($showform) { print '
'; print ''; if ($this->withcancel) { print '     '; print ''; } print '
'; print "
\n"; } print "\n"; } }