Toujours plus de souplesse : gérer les simulations avec smsfactor

Proposition d'un test qui permet de voir les liens courts
pull/2/head
thrax 9 months ago
parent be9a76c0d3
commit 780c3af5fa

@ -8,7 +8,7 @@ class SendSMSclass
//input parameters ---------------------
var $username; //your username
var $password; //your password
var $sender; //sender text
var $option = array(); // sender...
var $message; //message text
var $inputgsmnumbers = array(); //destination gsm numbers
//--------------------------------------
@ -20,15 +20,20 @@ class SendSMSclass
var $response;
function SendSMS($username, $password, $sender, $message, $inputgsmnumbers)
function SendSMS($username, $password, $options, $message, $inputgsmnumbers)
{
$dir = '';
$this->username = $username;
$this->password = $password;
$this->sender = $sender;
$this->sender = $options['sender'];
if ($options['type_sms'] == 'simulate'){
$dir = '/send/simulate'; // l'API accueillera la demande mais le SMS ne sera pas envoyé
}
$this->message = $message;
$this->inputgsmnumbers = $inputgsmnumbers;
$this->host = "https://api.smsfactor.com";
$this->host = "https://api.smsfactor.com" . $dir;
$this->convertGSMnumberstoXML();
$this->prepareXMLdata();
@ -82,13 +87,8 @@ class SendSMSclass
*/
private function texte_avec_liens_courts() {
// Masque
$masque = '#'; // début du masque
$masque .= '([http|ftp|https]+://'; // un lien débute par http:// ou ftp:// ou https://
$masque .= '[www\.]?'; // et peut être suivi de www.
$masque .= '[a-zA-Z]+:[0-9]+'; // ou localhost:8888 par exemple si on test en local
$masque .= '[\?/\=\&\-_.a-zA-Z0-9]+)'; // et de caractères alphabétiques ou numériques y compris certains autres caractères spéciaux
$masque .= '#i'; // fin du masque où l'on précise que l'on se moque de la casse
preg_match_all($masque,$this->message,$trouvaille,PREG_SET_ORDER);
$regex = '@([http|ftp|https]+://[a-z0-9?=:&\./+,%#_-]+)@i';
preg_match_all($regex,$this->message,$trouvaille,PREG_SET_ORDER);
$links = '';
if ($trouvaille){
foreach ($trouvaille as $key => $value) {
@ -97,6 +97,6 @@ class SendSMSclass
}
return "<text><![CDATA[${reformatage}]]></text>" . $links;
}
return "<text>" . $this->message ."</text>";
return "<text>" . $this->message . "</text>";
}
}

@ -43,8 +43,17 @@
<textarea class="textarea message" required name="#GET{name}" id="#GET{name}">#ENV{#GET{name}}</textarea>
</div>
</div>
[(#CONFIG{sms/prestataire}|=={smsfactor}|oui)
<div class="editer_groupe">
#SET{name,simulate}
#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
#SET{obli,""}
<div class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
<input type="checkbox" id="simulate" name="simulate" checked>
<label for="simulate" style="display: inline;"><:sms:smsfactor_simulate:></label>
</div>
</div>
]
<div class="boutons">
<button type="submit" class="submit"><:sms:envoyer:></button>

@ -11,22 +11,22 @@ function formulaires_tester_envoi_sms_charger_dist($redirect = '') {
$destinataire = _TEST_SMS_DEST;
}
}
$texte ='Jean Valjean, pense à ton rendez-vous avec Victor Hugo en date du lundi 5 septembre 2022 à 23h00 ! lieu : http://localhost:8888/spip.php?victor_hugo1';
$valeurs = array(
'tel' => $destinataire[0],
'message' => _T('sms:sms_test'),
'message' => $texte, //_T('sms:sms_test'),
);
return $valeurs;
}
function formulaires_tester_envoi_sms_verifier_dist($redirect = '') {
$erreurs = array();
$tel = [_request('tel')];
$message = _request('message');
$options = [
'type_sms' => 'test'
];
$options['type_sms'] = (_request('simulate') == 'on') ? 'simulate' : 'test';
/*
* envoi SMS via sms_fonctions.php => envoyer_sms()
*/
*/
$r = envoyer_sms($message . ' via_appel_direct', $tel, $options );
if (!$r) {
$erreurs['via_appel_direct'] = 'error';
@ -43,5 +43,22 @@ function formulaires_tester_envoi_sms_verifier_dist($redirect = '') {
} else {
$erreurs['via_appel_charger_fonction'] = 'envoye';
}
// echo "<b>Le balisage XML du message sera le suivant :</b><xmp>" . texte_avec_liens_courts($message) ."</xmp>";
return $erreurs;
}
}
function texte_avec_liens_courts($message) {
// Masque
$regex = '@([http|ftp|https]+://[a-z0-9?=:&\./+,%#_-]+)@i';
preg_match_all($regex,$message,$trouvaille,PREG_SET_ORDER);
$links = '';
if ($trouvaille){
foreach ($trouvaille as $key => $value) {
$links .= "<links>$value[0]</links>";
$reformatage = str_replace($value[0], '<-short->', $message);
}
return "<text><![CDATA[${reformatage}]]></text>" . $links;
}
return "<text>".$message."</text>";
}

@ -27,11 +27,11 @@
include_spip('inc/config');
function inc_envoyer_sms_dist($message,$destinataire,$arg=array()) {
function inc_envoyer_sms_dist($message,$destinataire,$options=array()) {
if (lire_config('sms/prestataire') == "smsfactor") {
return smsfactor($message,$destinataire,$arg);
return smsfactor($message,$destinataire,$options);
} elseif (lire_config('sms/prestataire') == "octopush") {
return octopush($message,$destinataire,$arg);
return octopush($message,$destinataire,$options);
} else {
return false;
}
@ -44,13 +44,13 @@ function inc_envoyer_sms_dist($message,$destinataire,$arg=array()) {
* le texte d'envoie doit etre du texte et non du html
* @param array $destinataire
* @param array $arg
* utilise pour : $arg['sender']
* utilise pour : $options['sender']
* @return boolean
**/
function smsfactor($message,$destinataire,$arg) {
function smsfactor($message,$destinataire,$options = array()) {
$username = lire_config('sms/login_smsfactor');
$password = lire_config('sms/mdp_smsfactor');
$sender = $arg['sender'] ?? lire_config('sms/expediteur_smsfactor');
$options['sender'] = $options['sender'] ?? lire_config('sms/expediteur_smsfactor');
include_spip('inc/filtres');
$message = textebrut($message);
@ -63,7 +63,8 @@ function smsfactor($message,$destinataire,$arg) {
$destinataire = _TEST_SMS_DEST;
}
}
$retour = $SENDSMS->SendSMS($username,$password,$sender,$message,$destinataire);
$retour = $SENDSMS->SendSMS($username,$password,$options,$message,$destinataire);
libxml_use_internal_errors(true);
try{
@ -78,8 +79,8 @@ function smsfactor($message,$destinataire,$arg) {
}
$type_sms = '';
if (array_key_exists('type_sms', $arg)) {
$type_sms = $arg['type_sms'];
if (array_key_exists('type_sms', $options)) {
$type_sms = $options['type_sms'];
}
foreach ($destinataire as $tel) {

Loading…
Cancel
Save