From 7acb066483da86a29ef4d22c19913c3a93a06fd3 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Mon, 17 Oct 2011 21:08:05 +0200 Subject: [PATCH] Fix: error management --- htdocs/admin/sms.php | 8 +- htdocs/core/class/html.formsms.class.php | 412 ++++++++++++----------- 2 files changed, 228 insertions(+), 192 deletions(-) diff --git a/htdocs/admin/sms.php b/htdocs/admin/sms.php index 1885090998b..a7c1a92c164 100755 --- a/htdocs/admin/sms.php +++ b/htdocs/admin/sms.php @@ -85,6 +85,12 @@ if ($action == 'send' && ! $_POST['cancel']) include_once(DOL_DOCUMENT_ROOT.'/core/class/html.formsms.class.php'); $formsms = new FormSms($db); + if (! empty($formsms->error)) + { + $message='
'.$formsms->error.'
'; + $action='test'; + $error++; + } if (empty($body)) { $message='
'.$langs->trans("ErrorFieldRequired",$langs->transnoentities("Message")).'
'; @@ -151,7 +157,7 @@ print_fiche_titre($langs->trans("SmsSetup"),'','setup'); print $langs->trans("SmsDesc")."
\n"; print "
\n"; -if ($message) print $message.'
'; +dol_htmloutput_mesg($message); // List of sending methods $listofmethods=(is_array($conf->sms_engine)?$conf->sms_engine:array()); diff --git a/htdocs/core/class/html.formsms.class.php b/htdocs/core/class/html.formsms.class.php index adb27154155..6cd8bf9c8c5 100755 --- a/htdocs/core/class/html.formsms.class.php +++ b/htdocs/core/class/html.formsms.class.php @@ -1,20 +1,20 @@ * Copyright (C) 2010 Juanjo Menent - * - * 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 . - */ +* +* 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 . +*/ /** * \file htdocs/core/class/html.formmail.class.php @@ -32,77 +32,80 @@ require_once(DOL_DOCUMENT_ROOT ."/core/class/html.form.class.php"); */ class FormSms { - var $db; + var $db; - var $fromname; - var $fromsms; - var $replytoname; - var $replytomail; - var $toname; - var $tomail; + var $fromname; + var $fromsms; + var $replytoname; + var $replytomail; + var $toname; + var $tomail; - var $withsubstit; // Show substitution array - var $withfrom; - var $withto; - var $withtopic; - var $withbody; + var $withsubstit; // Show substitution array + var $withfrom; + var $withto; + var $withtopic; + var $withbody; - var $withfromreadonly; - var $withreplytoreadonly; - var $withtoreadonly; - var $withtopicreadonly; - var $withcancel; + var $withfromreadonly; + var $withreplytoreadonly; + var $withtoreadonly; + var $withtopicreadonly; + var $withcancel; - var $substit=array(); - var $param=array(); + var $substit=array(); + var $param=array(); - var $error; + var $error; - /** - * Constructor - * - * @param DoliDB $DB Database handler - */ - function FormSms($DB) - { - $this->db = $DB; + /** + * Constructor + * + * @param DoliDB $DB Database handler + */ + function FormSms($DB) + { + $this->db = $DB; - $this->withfrom=1; - $this->withto=1; - $this->withtopic=1; - $this->withbody=1; + $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; + $this->withfromreadonly=1; + $this->withreplytoreadonly=1; + $this->withtoreadonly=0; + $this->withtopicreadonly=0; + $this->withbodyreadonly=0; - return 1; - } + return 1; + } - /** - * Show the form to input an sms - */ - function show_form($width='180px') - { - global $conf, $langs, $user; + /** + * Show the form to input an sms + * + * @param string $width Width of form + * @return void + */ + function show_form($width='180px') + { + global $conf, $langs, $user; - $langs->load("other"); - $langs->load("mails"); - $langs->load("sms"); + $langs->load("other"); + $langs->load("mails"); + $langs->load("sms"); - $form=new Form($this->db); + $form=new Form($this->db); $soc=new Societe($this->db); - if (!empty($this->withtosocid) && $this->withtosocid > 0) + if (!empty($this->withtosocid) && $this->withtosocid > 0) { $soc->fetch($this->withtosocid); } - print "\n\n"; + print "\n\n"; - print ' + print ' '; - print "
param["returnurl"]."\">\n"; - print ''; - foreach ($this->param as $key=>$value) - { - print "\n"; - } - print "\n"; + print "param["returnurl"]."\">\n"; + print ''; + foreach ($this->param as $key=>$value) + { + print "\n"; + } + print "
\n"; - // Substitution array - if ($this->withsubstit) - { - print "\n"; - } + // Substitution array + if ($this->withsubstit) + { + print "\n"; + } - // From - if ($this->withfrom) - { - if ($this->withfromreadonly) - { - print ''; - print "\n"; - print "\n"; - } - else - { - print "\n"; + print "\n"; + } + else + { + print "'; - print "\n"; - } - } + print "\n"; + } + } - // To - if ($this->withto || is_array($this->withto)) - { - print '\n"; - } + // To + 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,$langs); - if (isset($_POST["message"])) $defaultmessage=$_POST["message"]; - $defaultmessage=str_replace('\n',"\n",$defaultmessage); + // Message + if ($this->withbody) + { + $defaultmessage=''; + if ($this->param["models"]=='body') + { + $defaultmessage=$this->withbody; + } + $defaultmessage=make_substitutions($defaultmessage,$this->substit,$langs); + if (isset($_POST["message"])) $defaultmessage=$_POST["message"]; + $defaultmessage=str_replace('\n',"\n",$defaultmessage); - print ""; - print ""; - print ""; + print ""; + print "'; - } - print "\n"; - } + print '
'.$langs->trans("SmsInfoCharRemain").': '.(160-dol_strlen($defaultmessage)).'
'; + } + print "\n"; + } - print ' + print ' @@ -287,20 +316,21 @@ function limitChars(textarea, limit, infodiv) '; - print '\n"; - print "
"; - $help=""; - foreach($this->substit as $key => $val) - { - $help.=$key.' -> '.$langs->trans($val).'
'; - } - print $form->textwithpicto($langs->trans("SmsTestSubstitutionReplacedByGenericValues"),$help); - print "
"; + $help=""; + foreach($this->substit as $key => $val) + { + $help.=$key.' -> '.$langs->trans($val).'
'; + } + print $form->textwithpicto($langs->trans("SmsTestSubstitutionReplacedByGenericValues"),$help); + print "
".$langs->trans("SmsFrom").""; - 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").""; + // From + if ($this->withfrom) + { + if ($this->withfromreadonly) + { + print ''; + print "
".$langs->trans("SmsFrom").""; + 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') + if ($conf->global->MAIN_SMS_SENDMODE == 'ovh') // For backward compatibility @deprecated { dol_include_once('/ovh/class/ovhsms.class.php'); try @@ -182,7 +185,7 @@ function limitChars(textarea, limit, infodiv) } else { - $resultsender = $sms->SmsSenderList($conf->global->OVHSMS_ACCOUNT); + $resultsender = $sms->SmsSenderList(); } } catch(Exception $e) @@ -190,12 +193,30 @@ function limitChars(textarea, limit, infodiv) dol_print_error('','Error to get list of senders: '.$e->getMessage()); } } + else if (!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); + $sms = new $classname($this->db); + $resultsender = $sms->SmsSenderList(); + } + 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[0]->number=$this->fromsms; } - if (count($resultsender) > 0) + + if (is_array($resultsender) && count($resultsender) > 0) { print ''; } - else print ''.$langs->trans("SmsNoPossibleRecipientFound").''; + else + { + print ''.$langs->trans("SmsNoPossibleRecipientFound"); + 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"])?$_REQUEST["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 "
'; + //$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"])?$_REQUEST["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 "
".$langs->trans("SmsText").""; + if ($this->withbodyreadonly) + { + print nl2br($defaultmessage); + print ''; + } + else + { print ''; - print '
'.$langs->trans("SmsInfoCharRemain").': '.(160-dol_strlen($defaultmessage)).'
'.$langs->trans("DelayBeforeSending").':
'; - print "trans("SendSms")."\""; - print ">"; - if ($this->withcancel) - { - print "     "; - print "trans("Cancel")."\">"; - } - print "
\n"; + print "\n"; - print "
\n"; - print "\n"; - } + print '
'; + print "trans("SendSms")."\""; + print ">"; + if ($this->withcancel) + { + print "     "; + print "trans("Cancel")."\">"; + } + print "
\n"; + + print "\n"; + print "\n"; + } }