[SPIP] +2.1.12
[velocampus/web/www.git] / www / plugins / auto / verifier / verifier / date.php
1 <?php
2
3 // Sécurité
4 if (!defined("_ECRIRE_INC_VERSION")) return;
5
6 /**
7 * Une date au format JJ/MM/AAAA (avec séparateurs souples : espace / - .)
8 * Options :
9 * - format : permet de préciser le format de la date jma pour jour/mois/année (par défaut), mja (pour mois / jour / année), amj (année/mois/jour)
10 * TODO : compléter les formats
11 * On pourrait faire mieux, genre vérifier les jours en fonction du mois
12 * Mais c'est pas très important, on reste simple
13 *
14 * @param string $valeur
15 * La valeur à vérifier.
16 * @param array $options
17 * tableau d'options [NON UTILISE].
18 * @return string
19 * Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur.
20 */
21 function verifier_date_dist($valeur, $options=array()){
22 $erreur = _T('verifier:erreur_date_format');
23 if (!is_string($valeur))
24 return $erreur;
25
26 $ok = '';
27 // On tolère différents séparateurs
28 $valeur = preg_replace("#\.|/| #i",'-',$valeur);
29
30 // On vérifie la validité du format
31 $format = isset($options['format']) ? $options['format'] : 'jma';
32
33 if ($format=='mja') {
34 if(!preg_match('#^[0-9]{1,2}-[0-9]{1,2}-[0-9]{4}$#',$valeur)) return $erreur;
35 list($mois,$jour,$annee) = explode('-',$valeur);
36 } elseif ($format=='amj') {
37 if(!preg_match('#^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$#',$valeur)) return $erreur;
38 list($annee,$mois,$jour) = explode('-',$valeur);
39 } else {
40 // Format jma par défaut
41 if(!preg_match('#^[0-9]{1,2}-[0-9]{1,2}-[0-9]{4}$#',$valeur)) return $erreur;
42 list($jour,$mois,$annee) = explode('-',$valeur);
43 }
44
45 // validité de la date
46 $erreur = _T('verifier:erreur_date');
47 if (!checkdate($mois, $jour, $annee)) return $erreur;
48
49 return $ok;
50 }