Changeset 115390 in spip-zone


Ignore:
Timestamp:
May 14, 2019, 4:22:06 PM (5 days ago)
Author:
rastapopoulos@…
Message:

Pour la vérif date, on ne fait plus de dérogation en dur, mais on gère le cas où c'est vide dans la fonction dédiée. En effet, même si c'est vide, on veut absolument passer dedans car ça peut être normalisé ! Là si c'était vide, pas de normalisation et donc pétage de SQL si on devait avoir un datetime. Dans tous les cas, la fonction renvoie pareil qu'avant : chaine vide, si la date est vide, mais c'est fait en interne.

Location:
_plugins_/verifier
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/verifier/inc/verifier.php

    r109086 r115390  
    3535        // Si la valeur est vide, il n'y a rien a verifier donc c'est bon
    3636        if (is_null($valeur) or (is_string($valeur) and $valeur == '')) {
    37                 return '';
    38         }
    39         // Si c'est une date avec horaire c'est un tableau
    40         if (is_array($valeur) and isset($valeur['date']) and $valeur['date'] == '') {
    4137                return '';
    4238        }
  • _plugins_/verifier/paquet.xml

    r115292 r115390  
    22        prefix="verifier"
    33        categorie="outil"
    4         version="1.9.2"
     4        version="1.9.3"
    55        etat="stable"
    66        compatibilite="[2.0.10;3.2.*]"
  • _plugins_/verifier/plugin.xml

    r115292 r115390  
    1010        <icon>images/verifier-128.png</icon>
    1111        <licence>GPL v3</licence>
    12         <version>1.9.2</version>
     12        <version>1.9.3</version>
    1313        <etat>stable</etat>
    1414        <description>
  • _plugins_/verifier/verifier/date.php

    r115027 r115390  
    6363        }
    6464
    65         $ok = '';
     65        // On ne fait tout la suite que s'il y a une date
     66        // car comme on peut vouloir normaliser, il est possible d'être dans cette fonction avec une date vide
     67        if ($valeur) {
     68                // On tolère différents séparateurs
     69                $valeur = preg_replace('#\.|/| #i', '-', $valeur);
    6670
    67         // On tolère différents séparateurs
    68         $valeur = preg_replace('#\.|/| #i', '-', $valeur);
    69 
    70         // On vérifie la validité du format
    71         $format = isset($options['format']) ? $options['format'] : 'jma';
    72         if ($format=='mja') {
    73                 if (!preg_match('#^[0-9]{1,2}-[0-9]{1,2}-[0-9]{4}$#', $valeur)) {
     71                // On vérifie la validité du format
     72                $format = isset($options['format']) ? $options['format'] : 'jma';
     73                if ($format=='mja') {
     74                        if (!preg_match('#^[0-9]{1,2}-[0-9]{1,2}-[0-9]{4}$#', $valeur)) {
     75                                return $erreur;
     76                        }
     77                        list($mois,$jour,$annee) = explode('-', $valeur);
     78                } elseif ($format=='amj') {
     79                        if (!preg_match('#^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$#', $valeur)) {
     80                                return $erreur;
     81                        }
     82                        list($annee,$mois,$jour) = explode('-', $valeur);
     83                } else {
     84                // Format jma par défaut
     85                        if (!preg_match('#^[0-9]{1,2}-[0-9]{1,2}-[0-9]{4}$#', $valeur)) {
     86                                return $erreur;
     87                        }
     88                        list($jour,$mois,$annee) = explode('-', $valeur);
     89                }
     90                // Validité de la date
     91                $erreur = _T('verifier:erreur_date');
     92                if (!checkdate($mois, $jour, $annee)) {
    7493                        return $erreur;
    7594                }
    76                 list($mois,$jour,$annee) = explode('-', $valeur);
    77         } elseif ($format=='amj') {
    78                 if (!preg_match('#^[0-9]{4}-[0-9]{1,2}-[0-9]{1,2}$#', $valeur)) {
    79                         return $erreur;
    80                 }
    81                 list($annee,$mois,$jour) = explode('-', $valeur);
    82         } else {
    83         // Format jma par défaut
    84                 if (!preg_match('#^[0-9]{1,2}-[0-9]{1,2}-[0-9]{4}$#', $valeur)) {
    85                         return $erreur;
    86                 }
    87                 list($jour,$mois,$annee) = explode('-', $valeur);
    88         }
    89         // Validité de la date
    90         $erreur = _T('verifier:erreur_date');
    91         if (!checkdate($mois, $jour, $annee)) {
    92                 return $erreur;
    93         }
    9495
    95         if ($horaire) {
    96                 // Format de l'heure
    97                 $options['heure'] = str_replace(array('h','m','min'), array(':','',''), $options['heure']);
    98                 if (!preg_match('#^([0-9]{1,2}):([0-9]{1,2})$#', $options['heure'], $hetm)) {
    99                         return _T('verifier:erreur_heure_format');
    100                 } else {
    101                         // Si c'est le bon format, on teste si les nombres donnés peuvent exister
    102                         $heures = intval($hetm[1]);
    103                         $minutes = intval($hetm[2]);
    104                         if ($heures < 0 or $heures > 23 or $minutes < 0 or $minutes > 59) {
    105                                 return _T('verifier:erreur_heure');
     96                if ($horaire) {
     97                        // Format de l'heure
     98                        $options['heure'] = str_replace(array('h','m','min'), array(':','',''), $options['heure']);
     99                        if (!preg_match('#^([0-9]{1,2}):([0-9]{1,2})$#', $options['heure'], $hetm)) {
     100                                return _T('verifier:erreur_heure_format');
    106101                        } else {
    107                                 // Si tout est bon pour l'heure, on recompose en ajoutant des 0 si besoin
    108                                 $options['heure'] = sprintf('%02d:%02d', $heures, $minutes);
     102                                // Si c'est le bon format, on teste si les nombres donnés peuvent exister
     103                                $heures = intval($hetm[1]);
     104                                $minutes = intval($hetm[2]);
     105                                if ($heures < 0 or $heures > 23 or $minutes < 0 or $minutes > 59) {
     106                                        return _T('verifier:erreur_heure');
     107                                } else {
     108                                        // Si tout est bon pour l'heure, on recompose en ajoutant des 0 si besoin
     109                                        $options['heure'] = sprintf('%02d:%02d', $heures, $minutes);
     110                                }
    109111                        }
    110112                }
    111113        }
    112         // normaliser si demandé
     114       
     115        // Normaliser si demandé
     116        $ok = '';
    113117        if ($options['normaliser'] and $options['normaliser'] == 'datetime') {
    114118                $valeur_normalisee = normaliser_date_datetime_dist($valeur, $options, $ok);
Note: See TracChangeset for help on using the changeset viewer.