forked from Wavyzz/dolibarr
New: SMS sending now works with OVH
This commit is contained in:
@@ -43,12 +43,14 @@ $substitutionarrayfortest=array(
|
|||||||
'__FIRSTNAME__' => 'TESTFirstname'
|
'__FIRSTNAME__' => 'TESTFirstname'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
$action=GETPOST('action');
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Actions
|
* Actions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (isset($_POST["action"]) && $_POST["action"] == 'update' && empty($_POST["cancel"]))
|
if ($action == 'update' && empty($_POST["cancel"]))
|
||||||
{
|
{
|
||||||
dolibarr_set_const($db, "MAIN_DISABLE_ALL_SMS", $_POST["MAIN_DISABLE_ALL_SMS"],'chaine',0,'',$conf->entity);
|
dolibarr_set_const($db, "MAIN_DISABLE_ALL_SMS", $_POST["MAIN_DISABLE_ALL_SMS"],'chaine',0,'',$conf->entity);
|
||||||
|
|
||||||
@@ -65,61 +67,63 @@ if (isset($_POST["action"]) && $_POST["action"] == 'update' && empty($_POST["can
|
|||||||
/*
|
/*
|
||||||
* Send sms
|
* Send sms
|
||||||
*/
|
*/
|
||||||
if ($_POST['action'] == 'send' && ! $_POST['cancel'])
|
if ($action == 'send' && ! $_POST['cancel'])
|
||||||
{
|
{
|
||||||
$error=0;
|
$error=0;
|
||||||
|
|
||||||
$email_from='';
|
$smsfrom='';
|
||||||
if (! empty($_POST["fromname"])) $email_from=$_POST["fromname"].' ';
|
if (! empty($_POST["fromsms"])) $smsfrom=GETPOST("fromsms");
|
||||||
if (! empty($_POST["fromsms"])) $email_from.='<'.$_POST["fromsms"].'>';
|
if (empty($smsfrom)) $smsfrom=GETPOST("fromname");
|
||||||
|
$sendto = GETPOST("sendto");
|
||||||
$errors_to = $_POST["errorstosms"];
|
$body = GETPOST('message');
|
||||||
$sendto = $_POST["sendto"];
|
$deliveryreceipt= GETPOST("deliveryreceipt");
|
||||||
$body = $_POST['message'];
|
$deferred = GETPOST('deferred');
|
||||||
$deliveryreceipt= $_POST["deliveryreceipt"];
|
$priority = GETPOST('priority');
|
||||||
|
$class = GETPOST('class');
|
||||||
|
$errors_to = GETPOST("errorstosms");
|
||||||
|
|
||||||
// Create form object
|
// Create form object
|
||||||
include_once(DOL_DOCUMENT_ROOT.'/core/class/html.formsms.class.php');
|
include_once(DOL_DOCUMENT_ROOT.'/core/class/html.formsms.class.php');
|
||||||
$formsms = new FormSms($db);
|
$formsms = new FormSms($db);
|
||||||
|
|
||||||
if (empty($_POST["fromsms"]))
|
if (empty($body))
|
||||||
|
{
|
||||||
|
$message='<div class="error">'.$langs->trans("ErrorFieldRequired",$langs->transnoentities("Message")).'</div>';
|
||||||
|
$action='test';
|
||||||
|
$error++;
|
||||||
|
}
|
||||||
|
if (empty($smsfrom) || ! str_replace('+','',$smsfrom))
|
||||||
{
|
{
|
||||||
$message='<div class="error">'.$langs->trans("ErrorFieldRequired",$langs->transnoentities("SmsFrom")).'</div>';
|
$message='<div class="error">'.$langs->trans("ErrorFieldRequired",$langs->transnoentities("SmsFrom")).'</div>';
|
||||||
$_GET["action"]='test';
|
$action='test';
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
if (empty($sendto))
|
if (empty($sendto) || ! str_replace('+','',$sendto))
|
||||||
{
|
{
|
||||||
$message='<div class="error">'.$langs->trans("ErrorFieldRequired",$langs->transnoentities("SmsTo")).'</div>';
|
$message='<div class="error">'.$langs->trans("ErrorFieldRequired",$langs->transnoentities("SmsTo")).'</div>';
|
||||||
$_GET["action"]='test';
|
$action='test';
|
||||||
$error++;
|
$error++;
|
||||||
}
|
}
|
||||||
if (! $error)
|
if (! $error)
|
||||||
{
|
{
|
||||||
// Le message est-il en html
|
// Make substitutions into message
|
||||||
$msgishtml=0; // Message is not HTML
|
|
||||||
|
|
||||||
// Pratique les substitutions sur le sujet et message
|
|
||||||
$subject=make_substitutions($subject,$substitutionarrayfortest,$langs);
|
|
||||||
$body=make_substitutions($body,$substitutionarrayfortest,$langs);
|
$body=make_substitutions($body,$substitutionarrayfortest,$langs);
|
||||||
|
|
||||||
require_once(DOL_DOCUMENT_ROOT."/lib/CSMSFile.class.php");
|
require_once(DOL_DOCUMENT_ROOT."/lib/CSMSFile.class.php");
|
||||||
$smsfile = new CSMSFile($subject,$sendto,$email_from,$body,
|
|
||||||
$filepath,$mimetype,$filename,
|
|
||||||
$sendtocc, $sendtoccc, $deliveryreceipt, $msgishtml,$errors_to);
|
|
||||||
|
|
||||||
$result=$smsfile->sendfile();
|
$smsfile = new CSMSFile($sendto, $smsfrom, $body, $deliveryreceipt, $deferred, $priority, $class); // This define OvhSms->login, pass, session and account
|
||||||
|
$result=$smsfile->sendfile(); // This send SMS
|
||||||
|
|
||||||
if ($result)
|
if ($result)
|
||||||
{
|
{
|
||||||
$message='<div class="ok">'.$langs->trans("SmsSuccessfulySent",$email_from,$sendto).'</div>';
|
$message='<div class="ok">'.$langs->trans("SmsSuccessfulySent",$smsfrom,$sendto).'</div>';
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$message='<div class="error">'.$langs->trans("ResultKo").'<br>'.$smsfile->error.' '.$result.'</div>';
|
$message='<div class="error">'.$langs->trans("ResultKo").'<br>'.$smsfile->error.' '.$result.'</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
$_GET["action"]='';
|
$action='';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -151,9 +155,10 @@ if ($message) print $message.'<br>';
|
|||||||
|
|
||||||
// List of sending methods
|
// List of sending methods
|
||||||
$listofmethods=$conf->sms_engine;
|
$listofmethods=$conf->sms_engine;
|
||||||
|
$listofmethods['']='';
|
||||||
|
asort($listofmethods);
|
||||||
|
|
||||||
|
if ($action == 'edit')
|
||||||
if (isset($_GET["action"]) && $_GET["action"] == 'edit')
|
|
||||||
{
|
{
|
||||||
$html=new Form($db);
|
$html=new Form($db);
|
||||||
|
|
||||||
@@ -188,7 +193,7 @@ if (isset($_GET["action"]) && $_GET["action"] == 'edit')
|
|||||||
|
|
||||||
// From
|
// From
|
||||||
$var=!$var;
|
$var=!$var;
|
||||||
print '<tr '.$bc[$var].'><td>'.$langs->trans("MAIN_MAIL_SMS_FROM",ini_get('sendmail_from')?ini_get('sendmail_from'):$langs->transnoentities("Undefined")).'</td>';
|
print '<tr '.$bc[$var].'><td>'.$langs->trans("MAIN_MAIL_SMS_FROM",$langs->transnoentities("Undefined")).'</td>';
|
||||||
print '<td><input class="flat" name="MAIN_MAIL_SMS_FROM" size="32" value="' . $conf->global->MAIN_MAIL_SMS_FROM;
|
print '<td><input class="flat" name="MAIN_MAIL_SMS_FROM" size="32" value="' . $conf->global->MAIN_MAIL_SMS_FROM;
|
||||||
print '"></td></tr>';
|
print '"></td></tr>';
|
||||||
|
|
||||||
@@ -228,15 +233,15 @@ else
|
|||||||
$var=!$var;
|
$var=!$var;
|
||||||
print '<tr '.$bc[$var].'><td>'.$langs->trans("MAIN_SMS_SENDMODE").'</td><td>';
|
print '<tr '.$bc[$var].'><td>'.$langs->trans("MAIN_SMS_SENDMODE").'</td><td>';
|
||||||
$text=$listofmethods[$conf->global->MAIN_SMS_SENDMODE];
|
$text=$listofmethods[$conf->global->MAIN_SMS_SENDMODE];
|
||||||
if (empty($text)) $text=$langs->trans("Undefined").img_warning();
|
if (empty($text)) $text=$langs->trans("Undefined").' '.img_warning();
|
||||||
print $text;
|
print $text;
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// From
|
// From
|
||||||
$var=!$var;
|
$var=!$var;
|
||||||
print '<tr '.$bc[$var].'><td>'.$langs->trans("MAIN_MAIL_SMS_FROM",ini_get('sendmail_from')?ini_get('sendmail_from'):$langs->transnoentities("Undefined")).'</td>';
|
print '<tr '.$bc[$var].'><td>'.$langs->trans("MAIN_MAIL_SMS_FROM",$langs->transnoentities("Undefined")).'</td>';
|
||||||
print '<td>'.$conf->global->MAIN_MAIL_SMS_FROM;
|
print '<td>'.$conf->global->MAIN_MAIL_SMS_FROM;
|
||||||
if (!empty($conf->global->MAIN_MAIL_SMS_FROM) && ! isValidPhone($conf->global->MAIN_MAIL_SMS_FROM)) print img_warning($langs->trans("ErrorBadPhone"));
|
if (!empty($conf->global->MAIN_MAIL_SMS_FROM) && ! isValidPhone($conf->global->MAIN_MAIL_SMS_FROM)) print ' '.img_warning($langs->trans("ErrorBadPhone"));
|
||||||
print '</td></tr>';
|
print '</td></tr>';
|
||||||
|
|
||||||
// Autocopy to
|
// Autocopy to
|
||||||
@@ -268,8 +273,14 @@ else
|
|||||||
print '<a class="butActionRefused" href="#" title="'.$langs->trans("FeatureNotAvailableOnLinux").'">'.$langs->trans("DoTestServerAvailability").'</a>';
|
print '<a class="butActionRefused" href="#" title="'.$langs->trans("FeatureNotAvailableOnLinux").'">'.$langs->trans("DoTestServerAvailability").'</a>';
|
||||||
}*/
|
}*/
|
||||||
|
|
||||||
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=test&mode=init">'.$langs->trans("DoTestSend").'</a>';
|
if (! empty($conf->global->MAIN_SMS_SENDMODE))
|
||||||
|
{
|
||||||
|
print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=test&mode=init">'.$langs->trans("DoTestSend").'</a>';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
print '<a class="butActionRefused" href="#">'.$langs->trans("DoTestSend").'</a>';
|
||||||
|
}
|
||||||
print '</div>';
|
print '</div>';
|
||||||
|
|
||||||
|
|
||||||
@@ -297,7 +308,7 @@ else
|
|||||||
}*/
|
}*/
|
||||||
|
|
||||||
// Affichage formulaire de TEST simple
|
// Affichage formulaire de TEST simple
|
||||||
if ($_GET["action"] == 'test')
|
if ($action == 'test')
|
||||||
{
|
{
|
||||||
print '<br>';
|
print '<br>';
|
||||||
print_titre($langs->trans("DoTestSend"));
|
print_titre($langs->trans("DoTestSend"));
|
||||||
@@ -313,10 +324,8 @@ else
|
|||||||
$formsms->withfrom=1;
|
$formsms->withfrom=1;
|
||||||
$formsms->witherrorsto=1;
|
$formsms->witherrorsto=1;
|
||||||
$formsms->withto=(isset($_POST['sendto'])?$_POST['sendto']:$user->user_mobile?$user->user_mobile:1);
|
$formsms->withto=(isset($_POST['sendto'])?$_POST['sendto']:$user->user_mobile?$user->user_mobile:1);
|
||||||
$formsms->withtopic=(isset($_POST['subject'])?$_POST['subject']:$langs->trans("Test"));
|
|
||||||
$formsms->withtopicreadonly=0;
|
|
||||||
$formsms->withfile=2;
|
$formsms->withfile=2;
|
||||||
$formsms->withbody=(isset($_POST['message'])?$_POST['message']:$langs->trans("ThisIsATestMessage"));
|
$formsms->withbody=(isset($_POST['message'])?(empty($_POST['message'])?1:$_POST['message']):$langs->trans("ThisIsATestMessage"));
|
||||||
$formsms->withbodyreadonly=0;
|
$formsms->withbodyreadonly=0;
|
||||||
$formsms->withcancel=1;
|
$formsms->withcancel=1;
|
||||||
$formsms->withfckeditor=0;
|
$formsms->withfckeditor=0;
|
||||||
|
|||||||
@@ -62,8 +62,8 @@ class FormSms
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Constructeur
|
* Constructor
|
||||||
* \param DB handler d'acces base de donnee
|
* @param DB handler d'acces base de donnee
|
||||||
*/
|
*/
|
||||||
function FormSms($DB)
|
function FormSms($DB)
|
||||||
{
|
{
|
||||||
@@ -171,8 +171,7 @@ function limitChars(textarea, limit, infodiv)
|
|||||||
{
|
{
|
||||||
print "<tr><td>".$langs->trans("SmsFrom")."</td><td>";
|
print "<tr><td>".$langs->trans("SmsFrom")."</td><td>";
|
||||||
//print '<input type="text" name="fromname" size="30" value="'.$this->fromsms.'">';
|
//print '<input type="text" name="fromname" size="30" value="'.$this->fromsms.'">';
|
||||||
print '<select name="fromsms" id="valid" class="flat">';
|
if ($conf->global->MAIN_SMS_SENDMODE == 'ovh')
|
||||||
if ($conf->global->MAIN_SMS_SENDMODE == 'ovh')
|
|
||||||
{
|
{
|
||||||
dol_include_once('/ovh/class/ovhsms.class.php');
|
dol_include_once('/ovh/class/ovhsms.class.php');
|
||||||
$sms = new OvhSms($db);
|
$sms = new OvhSms($db);
|
||||||
@@ -182,12 +181,18 @@ function limitChars(textarea, limit, infodiv)
|
|||||||
{
|
{
|
||||||
$resultsender[0]->number=$this->fromsms;
|
$resultsender[0]->number=$this->fromsms;
|
||||||
}
|
}
|
||||||
$i=0;
|
if (sizeof($resultsender) > 0)
|
||||||
while($resultsender[$i]){
|
{
|
||||||
print '<option value="'.$resultsender[$i]->number.'">'.$resultsender[$i]->number.'</option>';
|
print '<select name="fromsms" id="valid" class="flat">';
|
||||||
$i++;
|
$i=0;
|
||||||
|
while($resultsender[$i])
|
||||||
|
{
|
||||||
|
print '<option value="'.$resultsender[$i]->number.'">'.$resultsender[$i]->number.'</option>';
|
||||||
|
$i++;
|
||||||
|
}
|
||||||
|
print '</select>';
|
||||||
}
|
}
|
||||||
print '</select>';
|
else print '<span class="error">'.$langs->trans("SmsNoPossibleRecipientFound").'</span>';
|
||||||
print '</td>';
|
print '</td>';
|
||||||
print "</tr>\n";
|
print "</tr>\n";
|
||||||
}
|
}
|
||||||
@@ -207,7 +212,7 @@ function limitChars(textarea, limit, infodiv)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
print "<input size=\"16\" name=\"sendto\" value=\"".(! is_array($this->withto) && ! is_numeric($this->withto)? (isset($_REQUEST["sendto"])?$_REQUEST["sendto"]:$this->withto):"+")."\">";
|
print "<input size=\"16\" name=\"sendto\" value=\"".(! is_array($this->withto) && $this->withto != '1'? (isset($_REQUEST["sendto"])?$_REQUEST["sendto"]:$this->withto):"+")."\">";
|
||||||
if ($this->withtosocid > 0)
|
if ($this->withtosocid > 0)
|
||||||
{
|
{
|
||||||
$liste=array();
|
$liste=array();
|
||||||
@@ -282,20 +287,20 @@ function limitChars(textarea, limit, infodiv)
|
|||||||
<td>'.$langs->trans("DelayBeforeSending").':</td>
|
<td>'.$langs->trans("DelayBeforeSending").':</td>
|
||||||
<td> <input name="deferred" id="deferred" size="4" value="0"></td></tr>
|
<td> <input name="deferred" id="deferred" size="4" value="0"></td></tr>
|
||||||
|
|
||||||
<tr><td>'.$langs->trans("Type").' :</td><td>
|
<tr><td>'.$langs->trans("Priority").' :</td><td>
|
||||||
|
<select name="priority" id="valid" class="flat">
|
||||||
|
<option value="0">0</option>
|
||||||
|
<option value="1">1</option>
|
||||||
|
<option value="2">2</option>
|
||||||
|
<option value="3" selected="selected">3</option>
|
||||||
|
</select></td></tr>
|
||||||
|
|
||||||
|
<tr><td>'.$langs->trans("Type").' :</td><td>
|
||||||
<select name="class" id="valid" class="flat">
|
<select name="class" id="valid" class="flat">
|
||||||
<option value="0">Flash</option>
|
<option value="0">Flash</option>
|
||||||
<option value="1" selected="selected">Standard</option>
|
<option value="1" selected="selected">Standard</option>
|
||||||
<option value="2">SIM</option>
|
<option value="2">SIM</option>
|
||||||
<option value="3">ToolKit</option>
|
<option value="3">ToolKit</option>
|
||||||
</select></td></tr>
|
|
||||||
|
|
||||||
<tr><td>'.$langs->trans("Priority").' :</td><td>
|
|
||||||
<select name="class" id="valid" class="flat">
|
|
||||||
<option value="0">0</option>
|
|
||||||
<option value="1">1</option>
|
|
||||||
<option value="2">2</option>
|
|
||||||
<option value="3" selected="selected">3</option>
|
|
||||||
</select></td></tr>';
|
</select></td></tr>';
|
||||||
|
|
||||||
print '<tr><td align="center" colspan="2"><center>';
|
print '<tr><td align="center" colspan="2"><center>';
|
||||||
|
|||||||
@@ -233,7 +233,7 @@ MAIN_MAIL_SMTPS_PW=SMTP Password if authentication required
|
|||||||
MAIN_MAIL_EMAIL_TLS= Use TLS (SSL) encrypt
|
MAIN_MAIL_EMAIL_TLS= Use TLS (SSL) encrypt
|
||||||
MAIN_DISABLE_ALL_SMS=Disable all SMS sendings (for test purposes or demos)
|
MAIN_DISABLE_ALL_SMS=Disable all SMS sendings (for test purposes or demos)
|
||||||
MAIN_SMS_SENDMODE=Method to use to send SMS
|
MAIN_SMS_SENDMODE=Method to use to send SMS
|
||||||
MAIN_MAIL_SMS_FROM=Sender phone number for Sms sending
|
MAIN_MAIL_SMS_FROM=Default sender phone number for Sms sending
|
||||||
FeatureNotAvailableOnLinux=Feature not available on Unix like systems. Test your sendmail program locally.
|
FeatureNotAvailableOnLinux=Feature not available on Unix like systems. Test your sendmail program locally.
|
||||||
SubmitTranslation=If translation for this language is not complete or you find errors, you can correct this by editing files into directory <b>langs/%s</b> and submit modified files on www.dolibarr.org forum.
|
SubmitTranslation=If translation for this language is not complete or you find errors, you can correct this by editing files into directory <b>langs/%s</b> and submit modified files on www.dolibarr.org forum.
|
||||||
ModuleSetup=Module setup
|
ModuleSetup=Module setup
|
||||||
|
|||||||
@@ -234,7 +234,7 @@ MAIN_MAIL_SMTPS_PW= SMTP Authentification Password si authentification SMTP requ
|
|||||||
MAIN_MAIL_EMAIL_TLS= Utilisation du cryptage TLS (SSL)
|
MAIN_MAIL_EMAIL_TLS= Utilisation du cryptage TLS (SSL)
|
||||||
MAIN_DISABLE_ALL_SMS=Désactiver globalement tout envoi de Sms (pour mode test ou démos)
|
MAIN_DISABLE_ALL_SMS=Désactiver globalement tout envoi de Sms (pour mode test ou démos)
|
||||||
MAIN_SMS_SENDMODE=Méthode d'envoi des SMS
|
MAIN_SMS_SENDMODE=Méthode d'envoi des SMS
|
||||||
MAIN_MAIL_SMS_FROM=Téléphone émetteur pour envoi Sms
|
MAIN_MAIL_SMS_FROM=Numéro de téléphone par défaut pour envoi Sms
|
||||||
FeatureNotAvailableOnLinux= Fonctionnalité non disponible sous systèmes Unix. Tester votre sendmail localement.
|
FeatureNotAvailableOnLinux= Fonctionnalité non disponible sous systèmes Unix. Tester votre sendmail localement.
|
||||||
SubmitTranslation=Si la traduction pour cette langue est incomplète ou si vous trouvez des erreurs, vous pouvez les corriger en éditant les fichiers dans le répertoire <b>langs/%s</b> et soumettre les modifications sur le forum www.dolibarr.fr.
|
SubmitTranslation=Si la traduction pour cette langue est incomplète ou si vous trouvez des erreurs, vous pouvez les corriger en éditant les fichiers dans le répertoire <b>langs/%s</b> et soumettre les modifications sur le forum www.dolibarr.fr.
|
||||||
ModuleSetup= Configuration du module
|
ModuleSetup= Configuration du module
|
||||||
|
|||||||
@@ -50,4 +50,5 @@ SendSms=Envoyer SMS
|
|||||||
SmsInfoCharRemain=Nb de caractères restant
|
SmsInfoCharRemain=Nb de caractères restant
|
||||||
SmsInfoNumero= (format international ex : +33899701761)
|
SmsInfoNumero= (format international ex : +33899701761)
|
||||||
DelayBeforeSending=Délai avant envoi (en minutes)
|
DelayBeforeSending=Délai avant envoi (en minutes)
|
||||||
|
SmsNoPossibleRecipientFound=Aucun destinataire disponible. Vérifier la configuration de votre fournisseur de SMS.
|
||||||
|
|
||||||
|
|||||||
190
htdocs/lib/CSMSFile.class.php
Executable file
190
htdocs/lib/CSMSFile.class.php
Executable file
@@ -0,0 +1,190 @@
|
|||||||
|
<?php
|
||||||
|
/* Copyright (C) 2000-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||||
|
* Copyright (C) 2003 Jean-Louis Bergamo <jlb@j1b.org>
|
||||||
|
* Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||||
|
* Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr>
|
||||||
|
*
|
||||||
|
* 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.
|
||||||
|
* or see http://www.gnu.org/
|
||||||
|
*
|
||||||
|
* Lots of code inspired from Dan Potter's CSMSFile class
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \file htdocs/lib/CSMSFile.class.php
|
||||||
|
* \brief File of class to send sms
|
||||||
|
* \version $Id$
|
||||||
|
* \author Laurent Destailleur.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \class CSMSFile
|
||||||
|
* \brief Class to send SMS
|
||||||
|
* \remarks Usage: $smsfile = new CSMSFile($subject,$sendto,$replyto,$message,$filepath,$mimetype,$filename,$cc,$ccc,$deliveryreceipt,$msgishtml,$errors_to);
|
||||||
|
* \remarks $smsfile->sendfile();
|
||||||
|
*/
|
||||||
|
class CSMSFile
|
||||||
|
{
|
||||||
|
var $error='';
|
||||||
|
|
||||||
|
var $message;
|
||||||
|
var $addr_from;
|
||||||
|
var $addr_to;
|
||||||
|
var $deliveryreceipt;
|
||||||
|
var $deferred;
|
||||||
|
var $priority;
|
||||||
|
var $class;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* CSMSFile
|
||||||
|
* @param to Recipients SMS
|
||||||
|
* @param from Sender SMS
|
||||||
|
* @param msg Message
|
||||||
|
* @param deliveryreceipt Ask a delivery receipt
|
||||||
|
*/
|
||||||
|
function CSMSFile($to,$from,$msg,$deliveryreceipt=0,$deferred=0,$priority=3,$class=1)
|
||||||
|
{
|
||||||
|
global $conf;
|
||||||
|
|
||||||
|
// On definit fin de ligne
|
||||||
|
$this->eol="\n";
|
||||||
|
if (preg_match('/^win/i',PHP_OS)) $this->eol="\r\n";
|
||||||
|
if (preg_match('/^mac/i',PHP_OS)) $this->eol="\r";
|
||||||
|
|
||||||
|
// If ending method not defined
|
||||||
|
if (empty($conf->global->MAIN_SMS_SENDMODE))
|
||||||
|
{
|
||||||
|
$this->error='No SMS Engine defined';
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
dol_syslog("CSMSFile::CSMSFile: MAIN_SMS_SENDMODE=".$conf->global->MAIN_SMS_SENDMODE." charset=".$conf->file->character_set_client." from=$from, to=$to, errors_to=$errors_to", LOG_DEBUG);
|
||||||
|
dol_syslog("CSMSFile::CSMSFile: deliveryreceipt=".$deliveryreceipt." deferred=".$deferred." priority=".$priority." class=".$class, LOG_DEBUG);
|
||||||
|
|
||||||
|
// Action according to choosed sending method
|
||||||
|
if ($conf->global->MAIN_SMS_SENDMODE == 'ovh')
|
||||||
|
{
|
||||||
|
$this->addr_from=$from;
|
||||||
|
$this->addr_to=$to;
|
||||||
|
$this->message=$msg;
|
||||||
|
$this->deliveryreceipt=$deliveryreceipt;
|
||||||
|
$this->deferred=$deferred;
|
||||||
|
$this->priority=$priority;
|
||||||
|
$this->class=$class;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Send mail method not correctly defined
|
||||||
|
// --------------------------------------
|
||||||
|
|
||||||
|
return 'Bad value for MAIN_SMS_SENDMODE constant';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send mail that was prepared by constructor
|
||||||
|
*
|
||||||
|
* @return boolean True if mail sent, false otherwise
|
||||||
|
*/
|
||||||
|
function sendfile()
|
||||||
|
{
|
||||||
|
global $conf;
|
||||||
|
|
||||||
|
$errorlevel=error_reporting();
|
||||||
|
error_reporting($errorlevel ^ E_WARNING); // Desactive warnings
|
||||||
|
|
||||||
|
$res=false;
|
||||||
|
|
||||||
|
dol_syslog("CSMSFile::sendfile addr_to=".$this->addr_to, LOG_DEBUG);
|
||||||
|
dol_syslog("CSMSFile::sendfile message=\n".$this->message);
|
||||||
|
|
||||||
|
$this->message=stripslashes($this->message);
|
||||||
|
|
||||||
|
if (! empty($conf->global->MAIN_SMS_DEBUG)) $this->dump_sms();
|
||||||
|
|
||||||
|
if (empty($conf->global->MAIN_DISABLE_ALL_SMS))
|
||||||
|
{
|
||||||
|
// Action according to choosed sending method
|
||||||
|
if ($conf->global->MAIN_SMS_SENDMODE == 'ovh')
|
||||||
|
{
|
||||||
|
dol_include_once('/ovh/class/ovhsms.class.php');
|
||||||
|
$ovhsms=new OvhSms($this->db);
|
||||||
|
//$ovhsms->session='';
|
||||||
|
//$ovhsms->account='';
|
||||||
|
$ovhsms->expe=$this->addr_from;
|
||||||
|
$ovhsms->dest=$this->addr_to;
|
||||||
|
$ovhsms->message=$this->message;
|
||||||
|
//$ovhsms->validity='';
|
||||||
|
$ovhsms->deferred=$this->deferred;
|
||||||
|
$ovhsms->priority=$this->priority;
|
||||||
|
$ovhsms->class=$this->class;
|
||||||
|
|
||||||
|
$res=$ovhsms->SmsSend();
|
||||||
|
|
||||||
|
if (! $res)
|
||||||
|
{
|
||||||
|
$this->error="Failed to send SMS<br>Check your server logs and your firewalls setup";
|
||||||
|
dol_syslog("CSMSFile::sendfile: mail end error=".$this->error, LOG_ERROR);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
dol_syslog("CSMSFile::sendfile: mail end success", LOG_DEBUG);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Send mail method not correctly defined
|
||||||
|
// --------------------------------------
|
||||||
|
|
||||||
|
return 'Bad value for MAIN_SMS_SENDMODE constant';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$this->error='No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_SMS';
|
||||||
|
dol_syslog("CSMSFile::sendfile: ".$this->error, LOG_WARNING);
|
||||||
|
}
|
||||||
|
|
||||||
|
error_reporting($errorlevel); // Reactive niveau erreur origine
|
||||||
|
|
||||||
|
return $res;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Write content of a SMTP request into a dump file (mode = all)
|
||||||
|
* Used for debugging.
|
||||||
|
*/
|
||||||
|
function dump_sms()
|
||||||
|
{
|
||||||
|
global $conf,$dolibarr_main_data_root;
|
||||||
|
|
||||||
|
if (@is_writeable($dolibarr_main_data_root)) // Avoid fatal error on fopen with open_basedir
|
||||||
|
{
|
||||||
|
$fp = fopen($dolibarr_main_data_root."/dolibarr_sms.log","w");
|
||||||
|
|
||||||
|
fputs($fp, $this->message);
|
||||||
|
|
||||||
|
fclose($fp);
|
||||||
|
if (! empty($conf->global->MAIN_UMASK))
|
||||||
|
@chmod($outputfile, octdec($conf->global->MAIN_UMASK));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
||||||
Reference in New Issue
Block a user