1
96

Édition d'un SMS

Code

Jetez un œil au fichier filtersms.php dans le dossier library :

filtersms

  1. function filtersms($s) {
  2.     $charset7bit = "@£\$¥èéùìòÇ\nØø\rÅåΔ_ΦΓΛΩΠΨΣΘΞÆæßÉ !\"#¤%&'()*+,-./0123456789:;<=>?¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà";
  3.     $charset7bitext = "\f^{}\\[~]|€";
  4.  
  5.     $s = preg_replace('/\R/', "\r\n", trimsms($s));
  6.  
  7.     if (preg_match('/[^' . preg_quote($charset7bit . $charset7bitext, '/') . ']/', $s)) {
  8.         $coding='16bit';
  9.         $maxlen=70;
  10.         $extlen=67;
  11.     }
  12.     else {
  13.         $coding='7bit';
  14.         $maxlen=160;
  15.         $extlen=153;
  16.  
  17.         $s = preg_replace('/([' . preg_quote($charset7bitext, '/') . '])/u', "\e\\1", $s);
  18.     }
  19.  
  20.     $msglen = mb_strlen($s, 'UTF-8');
  21.  
  22.     if ($msglen > $maxlen) {
  23.         $count = 1 + floor($msglen / $extlen);
  24.         $len = $count * $extlen;
  25.     }
  26.     else {
  27.         $count = 1;
  28.         $len = $maxlen;
  29.     }
  30.  
  31.     return array($s, $coding, $msglen, $count, $len);
  32. }
  33.  
  34. function trimsms($s) {
  35.     return preg_replace('/ *(\R)+/', '\1', preg_replace('/^ /m', '', preg_replace('/[ \t]+/', ' ', trim($s))));
  36. }

filtersms retourne un tableau contenant le texte SMS $s normalisé pour la transmission, le codage des caractères, la longueur du texte, le nombre de SMS nécessaires et le nombre de caractères pouvant être saisis avant qu'un SMS supplémentaire ne soit nécessaire.

Éditez le fichier views/nodecontent.phtml :

  1.         case 'sms':
  2.             $text = $c['text'];
  3.             if ($text) {
  4.                 require_once 'filtersms.php';
  5.  
  6.                 list(, $coding, $msglen, $count, $len)=filtersms($text);
  7.  
  8.                 echo '<div class="sms">', PHP_EOL;
  9.                 echo '<p id="sms_params">', PHP_EOL;
  10.                 echo "$msglen / $len &nbsp;-&nbsp $count SMS $coding", PHP_EOL;
  11.                 echo '</p>', PHP_EOL;
  12.                 echo '<p>', nl2br(htmlspecialchars($text, ENT_COMPAT, 'UTF-8')), '</p>', PHP_EOL;
  13.                 echo '</div>', PHP_EOL;
  14.             }
  15.             break;

Modifiez la vue smseditor en français et en anglais dans les fichiers views/fr/smseditor.phtml et views/en/smseditor.phtml :

  1. <textarea id="sms_text" name="sms_text" cols="80" rows="5" title="SMS" placeholder="" onkeyup="return filtersms()"><?php if ($sms_text): ?><?php echo htmlspecialchars($sms_text, ENT_COMPAT, 'UTF-8'); ?><?php endif; ?></textarea>
  2. <p id="sms_params">
  3. <span id="sms_msglen"><?php echo $sms_msglen; ?></span>
  4. /
  5. <span id="sms_len"><?php echo $sms_len; ?></span>
  6. &nbsp;-&nbsp;
  7. <span id="sms_count"><?php echo $sms_count; ?></span>
  8. SMS
  9. <span id="sms_coding"><?php echo $sms_coding; ?></span>
  10. </p>
  1. <?php require VIEWS_DIR . DIRECTORY_SEPARATOR . 'filtersms.phtml'; ?>

Créez le fichier filtersms.phtml dans le dossier views :

La modification de la version en anglais est identique :

Éditez le fichier blocks/smseditor.php :

  1. require_once 'filtersms.php';
  1.             if (isset($_POST['sms_text'])) {
  2.                 $sms_text=trimsms(readarg($_POST['sms_text'], false, false));   // don't trim and DON'T strip!
  3.             }
  1.     list(, $sms_coding, $sms_msglen, $sms_count, $sms_len)=filtersms($sms_text);
  1.     $output = view('smseditor', $lang, compact('clang', 'inlanguages', 'sms_modified', 'sms_title', 'sms_cloud', 'sms_subject', 'sms_text', 'sms_msg', 'sms_coding', 'sms_msglen', 'sms_count', 'sms_len', 'errors'));

Ajoutez le CSS pour l'affichage des propriétés d'un SMS à la fin du fichier css/theme.css :

#sms_params {font-size:small;}
Test

Connectez-vous avec l'identifiant barfoo. Affichez la campagne Le moteur web.

Message

98 / 160  -  1 SMS 7bit

Créez votre site multimédias en quelques minutes avec iZend - Le moteur web : https://www.izend.org

Éditez la campagne.

Message :

98 / 160  -  1 SMS 7bit

Cliquez dans la zone de saisie du SMS à la fin de la ligne. Le compteur est à 99. Appuyez deux fois sur Entrée pour ajouter une ligne vide. Le compteur ne change pas.

Tapez Gagnez des. Dès que vous avez tapé le G, le compteur est passé à 102, 99 + 2 x les 2 caractères CR (CARRIAGE RETURN) et LF (LINEFEED) pour les deux fins de ligne + 1 pour le G. Le compteur est à 111.

Entrez un espace. Le compteur ne change pas.

Entrez un $ (DOLLAR). Le compteur passe à 113, 1 pour l'espace + 1 pour le $.

Remplacez le $ par un € (EURO). Le compteur passe à 114. 1 € prend 2 caractères.

Ajoutez des espaces entre des mots, en début ou en fin de ligne. Le compteur ne change pas.

Ajoutez la ligne Привет, мир!. Le SMS passe en encodage 16bit. L'envoi du message prendra 2 SMS de 67 caractères maximum chacun.

Appuyez sur Configurer pour vérifier que le code en PHP fait les mêmes calculs.

Affichez la campagne.

Git
  1. /izendsms.com
    1. blocks
      1. smseditor.php
    2. css
      1. theme.css
    3. views
      1. filtersms.phtml
      2. nodecontent.phtml
      3. en
        1. smseditor.phtml
      4. fr
        1. smseditor.phtml

Commitez cette version :

$ git status
$ git add blocks css/theme.css views
$ git commit -m'Shows message properties when editing or displaying a SMS'

Gestion du fil des campagnes

Commentaires

Votre commentaire :
[p] [b] [i] [u] [s] [quote] [pre] [br] [code] [url] [email] strip aide 2000

Entrez un maximum de 2000 caractères.
Améliorez la présentation de votre texte avec les balises de formatage suivantes :
[p]paragraphe[/p], [b]gras[/b], [i]italique[/i], [u]souligné[/u], [s]barré[/s], [quote]citation[/quote], [pre]tel quel[/pre], [br]à la ligne,
[url]http://www.izend.org[/url], [url=http://www.izend.org]site[/url], [email]izend@izend.org[/email], [email=izend@izend.org]izend[/email],
[code]commande[/code], [code=langage]code source en c, java, php, html, javascript, xml, css, sql, bash, dos, make, etc.[/code].