source: spip-zone/_plugins_/sms/trunk/sms_fonctions.php @ 115791

Last change on this file since 115791 was 115791, checked in by pierrekuhn82@…, 14 months ago

[sms] Version 1.1.9: On met dans la base que le code erreur.

File size: 4.7 KB
Line 
1<?php
2/**
3 * Fonctions utiles au plugin SMS SPIP
4 *
5 * @plugin         SMS SPIP
6 * @copyright  2015
7 * @author         tofulm
8 * @licence    GNU/GPL
9 * @package    SPIP\Sms\Fonctions
10 */
11
12if (!defined('_ECRIRE_INC_VERSION')) return;
13
14//Utilisation de SMS factor
15include_spip('inc/config');
16if (lire_config('sms/prestataire') == "smsfactor") {
17        function envoyer_sms($message,$destinataire,$arg=array()) {
18                return smsfactor($message,$destinataire,$arg);
19        }
20} elseif (lire_config('sms/prestataire') == "octopush") {
21        function envoyer_sms($message,$destinataire,$arg=array()) {
22                return octopush($message,$destinataire,$arg);
23        }
24}
25
26/**
27 * Envoie le sms en utilisant l'API du prestataire sms factor
28 *
29 * @param string $message
30 *              le texte d'envoie doit etre du texte et non du html
31 * @param array $destinataire
32 * @param array $arg
33 *              utilise pour : $arg['sender']
34 * @return boolean
35**/
36function smsfactor($message,$destinataire,$arg) {
37        $username = lire_config('sms/login_smsfactor');
38        $password = lire_config('sms/mdp_smsfactor');
39        $sender   = ($arg['sender']) ? $arg['sender'] : lire_config('sms/expediteur_smsfactor');
40        //$message  = nettoyer_xml($message);
41
42        require_once('classes/smsfactor/sendSMSclass.php');
43        $SENDSMS = new SendSMSclass();
44        $retour  = $SENDSMS->SendSMS($username,$password,$sender,$message,$destinataire);
45
46        $reponse = new SimpleXMLElement($retour);
47        if ( $reponse->message == "OK" ) {
48                if (count($destinataire)) {
49                        $cost = $reponse->cost;
50                        $sent = $reponse->sent;
51                        $nbr_sms = 0;
52                        if ($sent != 0) {
53                                $nbr_sms = $cost / $sent;
54                        }
55
56                        $type_sms = '';
57                        if (array_key_exists('type_sms', $arg)) {
58                                $type_sms = $arg['type_sms'];
59                        }
60
61                        foreach ($destinataire as $tel) {
62                                $set = array(
63                                        'telephone' => md5($tel),
64                                        'date'      => date("Y-m-d H:i:s"),
65                                        'message'   => $message,
66                                        'nbr_sms'   => $nbr_sms,
67                                        'type_sms'  => $type_sms
68                                );
69                                sql_insertq('spip_sms_logs',$set);
70                        }
71                }
72                return true;
73        } else {
74                return false;
75        }
76}
77
78/**
79 * Envoie le sms en utilisant l'API du prestataire octopush-dm
80 *
81 * @param string $message
82 *              le texte d'envoie doit etre du texte et non du html
83 * @param array $destinataire
84 * @param array $arg
85 *              utilise pour : $arg['sms_sender']
86 *              utilise pour : $arg['sms_mode'] => XXX = LowCost; FR = Premium; WWW = Monde
87 *              utilise pour : $arg['sms_type'] => INSTANTANE (par defaut) ou DIFFERE (Non prévu pour le moment)
88 * @return boolean
89**/
90function octopush($sms_text,$sms_recipients,$arg) {
91        $user_login     = lire_config('sms/login_octopush');
92        $api_key        = lire_config('sms/cle_api_octopush');
93        $sms_text       = nettoyer_xml($sms_text);
94
95        // Variable pour l'envoi
96        $sms_type       = isset($arg['sms_type']) ? $arg['sms_type'] : 'XXX';
97        $sms_mode       = isset($arg['sms_mode']) ? $arg['sms_mode'] : 'INSTANTANE';
98        $sms_sender     = isset($arg['sms_sender']) ? $arg['sms_sender'] : lire_config('sms/expediteur_octopush');
99        require_once('classes/octopush/sms.inc.php');
100
101        $sms = new SMS_OCTOSPUSH();
102
103        $sms->set_user_login($user_login);
104        $sms->set_api_key($api_key);
105        $sms->set_sms_mode($sms_mode);
106        $sms->set_sms_text($sms_text);
107        $sms->set_sms_recipients($sms_recipients);
108        $sms->set_sms_type($sms_type);
109        $sms->set_sms_sender($sms_sender);
110        $sms->set_sms_request_id(uniqid());
111        $sms->set_option_with_replies(0);
112        $sms->set_option_transactional(1);
113        $sms->set_sender_is_msisdn(0);
114        //$sms->set_date(2016, 4, 17, 10, 19); // En cas d'envoi différé.
115        $sms->set_request_keys('TRS');
116        $xml = $sms->send();
117        $xml = simplexml_load_string($xml);
118        // Enregistrement pour suivi
119        foreach ($sms_recipients as $tel) {
120                $set = array(
121                        'telephone' => md5($tel),
122                        'date'      => date("Y-m-d H:i:s"),
123                        'message'   => $xml->error_code,
124                        'nbr_sms'   => '',
125                        'type_sms'  => $sms_type
126                );
127                sql_insertq('spip_sms_logs',$set);
128        }
129        return $xml;
130}
131
132
133/**
134 * Afficher la balance de sms disponible
135 *
136 * <INCLURE{fond=inclure/octopush_balance} /> pour l'affichage
137 *
138 * @param string $type
139 *              standard ou premium
140 * @return boolean
141 *              valeur en nombre entier de sms restant
142**/
143function filtre_balance($type) {
144        $username = lire_config('sms/login_octopush');
145        $password = lire_config('sms/cle_api_octopush');
146
147        require_once('classes/octopush/sms.inc.php');
148        $sms = new SMS_OCTOSPUSH();
149
150        $sms->set_user_login($username);
151        $sms->set_api_key($password);
152
153        $xml = $sms->getBalance();
154        $xml = simplexml_load_string($xml);
155        $balance = $xml->balance;
156        $standard = $balance['1'];
157        $premium = $balance['0'];
158        $balance = array('standard' => $standard, 'premium' => $premium);
159        $valeurs = intval($balance[$type]);
160        return $valeurs;
161}
162
163function nettoyer_xml($texte) {
164        $texte = str_replace('&', '&amp;',  $texte);
165        $texte = str_replace('<', '&lt;',   $texte);
166        $texte = str_replace('>', '&gt;',   $texte);
167        $texte = str_replace('"', '&quot;', $texte);
168        $texte = str_replace("'", "&apos;", $texte);
169
170        return $texte;
171}
Note: See TracBrowser for help on using the repository browser.