[CSS] +fix page header and title color
[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 $pays = isset($options['pays']) ? $options['pays'] : null;
46 switch ($pays) {
47 case 'CH':
48 if (!preg_match('/^0[1-9]{9}$/', $tel)) {
49 return $erreur;
50 }
51 break;
52 case 'ES':
53 if (!preg_match('/^[69][0-9]{8}$/', $tel)) {
54 return $erreur;
55 }
56 break;
57 case 'FR':
58 if (!preg_match('/^0[1-9][0-9]{8}$/', $tel)) {
59 return $erreur;
60 }
61 break;
62 default:
63 // On interdit les 000 etc. mais je pense qu'on peut faire plus malin
64 // On interdit egalement les "numéros" tout en lettres
65 // TODO finaliser les numéros à la con
66 if (intval($tel) == 0) {
67 return $erreur;
68 }
69 break;
70 }
71
72 return $ok;
73 }