[PLUGINS] ~maj globale
[lhc/web/www.git] / www / plugins / verifier / verifier / telephone.php
1 <?php
2
3 // Sécurité
4 if (!defined('_ECRIRE_INC_VERSION')) {
5 return;
6 }
7
8 /**
9 * Vérifie un numéro de téléphone. Pour l'instant seulement avec le schéma français.
10 *
11 * @param string $valeur
12 * La valeur à vérifier.
13 * @param array $options
14 * [INUTILISE].
15 * @return string
16 * Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur.
17 */
18 function verifier_telephone_dist($valeur, $options = array()) {
19 $erreur = _T('verifier:erreur_telephone');
20 if (!is_string($valeur)) {
21 return $erreur;
22 }
23 $ok = '';
24
25 // On accepte differentes notations, les points, les tirets, les espaces, les slashes
26 $tel = preg_replace('#\.|/|-| #i', '', $valeur);
27
28 // Pour les prefixes, on accepte les notations +33 et 0033
29 $prefixe_FR = '/^(\+|00)33/';
30 $prefixe_ES = '/^(\+|00)34/';
31 $prefixe_CH = '/^(\+|00)41/';
32 if (preg_match($prefixe_FR, $tel)) {
33 $options['pays'] = 'FR';
34 $tel = preg_replace($prefixe_FR, '0', $tel);
35 }
36 if (preg_match($prefixe_ES, $tel)) {
37 $options['pays'] = 'ES';
38 $tel = preg_replace($prefixe_ES, '', $tel);
39 }
40 if (preg_match($prefixe_CH, $tel)) {
41 $options['pays'] = 'CH';
42 $tel = preg_replace($prefixe_CH, '0', $tel);
43 }
44
45 switch ($options['pays']) {
46 case 'CH':
47 if (!preg_match('/^0[1-9]{9}$/', $tel)) {
48 return $erreur;
49 }
50 break;
51 case 'ES':
52 if (!preg_match('/^[69][0-9]{8}$/', $tel)) {
53 return $erreur;
54 }
55 break;
56 case 'FR':
57 if (!preg_match('/^0[1-9][0-9]{8}$/', $tel)) {
58 return $erreur;
59 }
60 break;
61 default:
62 // On interdit les 000 etc. mais je pense qu'on peut faire plus malin
63 // On interdit egalement les "numéros" tout en lettres
64 // TODO finaliser les numéros à la con
65 if (intval($tel) == 0) {
66 return $erreur;
67 }
68 break;
69 }
70
71 return $ok;
72 }