Édition d'un SMS
Code
Jetez un œil au fichier filtersms.php dans le dossier library :
- function filtersms($s) {
- $charset7bit = "@£\$¥èéùìòÇ\nØø\rÅåΔ_ΦΓΛΩΠΨΣΘΞÆæßÉ !\"#¤%&'()*+,-./0123456789:;<=>?¡ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÑܧ¿abcdefghijklmnopqrstuvwxyzäöñüà";
- $charset7bitext = "\f^{}\\[~]|€";
- $s = preg_replace('/\R/', "\r\n", trimsms($s));
- if (preg_match('/[^' . preg_quote($charset7bit . $charset7bitext, '/') . ']/', $s)) {
- $coding='16bit';
- $maxlen=70;
- $extlen=67;
- }
- else {
- $coding='7bit';
- $maxlen=160;
- $extlen=153;
- $s = preg_replace('/([' . preg_quote($charset7bitext, '/') . '])/u', "\e\\1", $s);
- }
- $msglen = mb_strlen($s, 'UTF-8');
- if ($msglen > $maxlen) {
- $count = 1 + floor($msglen / $extlen);
- $len = $count * $extlen;
- }
- else {
- $count = 1;
- $len = $maxlen;
- }
- return array($s, $coding, $msglen, $count, $len);
- }
- function trimsms($s) {
- return preg_replace('/ *(\R)+/', '\1', preg_replace('/^ /m', '', preg_replace('/[ \t]+/', ' ', trim($s))));
- }
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 :
- case 'sms':
- $text = $c['text'];
- if ($text) {
- require_once 'filtersms.php';
- list(, $coding, $msglen, $count, $len)=filtersms($text);
- echo '<div class="sms">', PHP_EOL;
- echo '<p id="sms_params">', PHP_EOL;
- echo "$msglen / $len -  $count SMS $coding", PHP_EOL;
- echo '</p>', PHP_EOL;
- echo '<p>', nl2br(htmlspecialchars($text, ENT_COMPAT, 'UTF-8')), '</p>', PHP_EOL;
- echo '</div>', PHP_EOL;
- }
- break;
Modifiez la vue smseditor en français et en anglais dans les fichiers views/fr/smseditor.phtml et views/en/smseditor.phtml :
- <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>
- <p id="sms_params">
- <span id="sms_msglen"><?php echo $sms_msglen; ?></span>
- /
- <span id="sms_len"><?php echo $sms_len; ?></span>
- -
- <span id="sms_count"><?php echo $sms_count; ?></span>
- SMS
- <span id="sms_coding"><?php echo $sms_coding; ?></span>
- </p>
- <?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 :
- require_once 'filtersms.php';
- if (isset($_POST['sms_text'])) {
- $sms_text=trimsms(readarg($_POST['sms_text'], false, false)); // don't trim and DON'T strip!
- }
- list(, $sms_coding, $sms_msglen, $sms_count, $sms_len)=filtersms($sms_text);
- $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 :
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
- /izendsms.com
- blocks
- smseditor.php
- css
- theme.css
- views
- filtersms.phtml
- nodecontent.phtml
- en
- smseditor.phtml
- fr
- smseditor.phtml
- blocks
Commitez cette version :
$ git status
$ git add blocks css/theme.css views
$ git commit -m'Shows message properties when editing or displaying a SMS'
Commentaires