source: spip-zone/_plugins_/libphonenumber/verifier/phone.php @ 118089

Last change on this file since 118089 was 118089, checked in by toutati@…, 12 months ago

premier depot du plugin libphonenumber_demo

File size: 3.6 KB
Line 
1<?php
2/**
3 * vérification des numéros internationaux
4 *
5 * @plugin     libphonenumber for SPIP
6 * @copyright  2019
7 * @author     Anne-lise Martenot
8 * @licence    GNU/GPL
9 * (c) 2019 - Distribue sous licence GNU/GPL
10 *
11**/
12
13if (!defined('_ECRIRE_INC_VERSION')) {
14        return;
15}
16
17/**
18 * Vérifie un numéro de téléphone avec la lib https://github.com/giggsey/libphonenumber-for-php
19 *
20 *
21 * @param string $valeur
22 *   La valeur à vérifier.
23 * @param array $options
24 *   pays
25 * @return string
26 *   Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur.
27 */
28
29        include_spip('lib/libphonenumber/src/MatcherAPIInterface');
30        include_spip('lib/libphonenumber/src/MetadataLoaderInterface');
31        include_spip('lib/libphonenumber/src/DefaultMetadataLoader');
32        include_spip('lib/libphonenumber/src/MetadataSourceInterface');
33        include_spip('lib/libphonenumber/src/MultiFileMetadataSourceImpl');
34        include_spip('lib/libphonenumber/src/PhoneNumberUtil');
35        include_spip('lib/libphonenumber/src/CountryCodeToRegionCodeMap');
36        include_spip('lib/libphonenumber/src/RegexBasedMatcher');
37        include_spip('lib/libphonenumber/src/PhoneNumber');
38        include_spip('lib/libphonenumber/src/CountryCodeSource');
39        include_spip('lib/libphonenumber/src/Matcher');
40        include_spip('lib/libphonenumber/src/PhoneMetadata');
41        include_spip('lib/libphonenumber/src/PhoneNumberDesc');
42        include_spip('lib/libphonenumber/src/NumberFormat');
43        include_spip('lib/libphonenumber/src/PhoneNumberType');
44        include_spip('lib/libphonenumber/src/ValidationResult');
45        include_spip('lib/libphonenumber/src/NumberParseException');
46        include_spip('lib/libphonenumber/src/PhoneNumberFormat');
47       
48
49        use libphonenumber\MatcherAPIInterface;
50        use libphonenumber\MetadataLoaderInterface;
51        use libphonenumber\DefaultMetadataLoader;
52        use libphonenumber\MetadataSourceInterface;
53        use libphonenumber\MultiFileMetadataSourceImpl;
54        use libphonenumber\PhoneNumberUtil;
55        use libphonenumber\PhoneNumber;
56        use libphonenumber\RegexBasedMatcher;
57        use libphonenumber\CountryCodeToRegionCodeMap;
58        use libphonenumber\CountryCodeSource;
59        use libphonenumber\Matcher;
60        use libphonenumber\PhoneMetadata;
61        use libphonenumber\PhoneNumberDesc;
62        use libphonenumber\NumberFormat;
63        use libphonenumber\PhoneNumberType;
64        use libphonenumber\ValidationResult;
65        use libphonenumber\NumberParseException;
66        use libphonenumber\PhoneNumberFormat;
67
68
69function verifier_phone_dist($valeur, $options = array()) { 
70        $ok = '';
71       
72        $erreur = _T('verifier:erreur_telephone');
73        if (!is_string($valeur) OR strlen($valeur) < 8 ) {
74                return $erreur;
75        }
76       
77        $clean_number = str_replace("|","",$valeur);
78        if($valeur != $clean_number){
79                return $erreur." Merci de retirer le signe |";
80        }
81       
82        $pays = $options['prefixes_pays']; //"CH"
83       
84        $NumberStr = $valeur ;//"044 668 18 00";
85        $phoneUtil = libphonenumber\PhoneNumberUtil::getInstance();
86        try {
87                $NumberProto = $phoneUtil->parse($NumberStr, $pays);
88                //var_dump($NumberProto);
89        } catch (libphonenumber\NumberParseException $e) {
90                //var_dump($e);
91                return $e;
92        }
93       
94        $isValid = $phoneUtil->isValidNumber($NumberProto);
95        //var_dump($isValid); // true →1
96        if(!$isValid){
97                $erreur = "Attention à l'écriture du numéro";
98                return $erreur;
99        }
100        //on va peut-être garder l'international pour la construction du form Elavon
101        $international = $phoneUtil->format($NumberProto, \libphonenumber\PhoneNumberFormat::INTERNATIONAL);
102       
103        if($valeur != $international){
104                $erreur = "Erreur dans l'internationalisation du numéro"; //.$NumberProto['nationalNumber'];
105                $erreur .= " essayez ". $phoneUtil->format($NumberProto, \libphonenumber\PhoneNumberFormat::INTERNATIONAL);
106                return $erreur;
107        }
108   
109   return $ok;
110}
Note: See TracBrowser for help on using the repository browser.