Skip to content
Extraits de code Groupes Projets
Valider c467a935 rédigé par marcimat's avatar marcimat
Parcourir les fichiers

Ticket #3914 : Pour le calcul de la date dans les formulaires de datages,...

Ticket #3914 : Pour le calcul de la date dans les formulaires de datages, éviter différents problèmes :
- lorsqu'on saisit une date inexistante (31/02/2017), retourner une erreur, plutôt que d'arbitrairement calculer une date sur le mois suivant avec les jours en trop
- lorsqu'on saisit une heure erronée (25:00 ou 12:78), retourner une erreur également, sinon l'enregistrement SQL echoue ensuite.
- il manquait les chaînes de langues des erreurs, depuis l'introduction de ce formulaire en r16420
parent eb8c3179
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -288,6 +288,8 @@ le site "@nom_site_spip@" (@adresse_login@) :',
'form_prop_non_enregistre' => 'Votre proposition n’a pas été enregistrée.',
'form_prop_sujet' => 'Sujet',
'form_prop_url_site' => 'Adresse URL du site',
'format_date_incorrecte' => 'La date ou son format est incorrect',
'format_heure_incorrecte' => 'L’heure ou son format est incorrect',
'forum_non_inscrit' => 'Vous n’êtes pas inscrit, ou l’adresse ou le mot de passe sont erronés.',
'forum_par_auteur' => 'par @auteur@',
'forum_titre_erreur' => 'Erreur...',
......
......@@ -318,11 +318,11 @@ function formulaires_dater_traiter_dist($objet, $id_objet, $retour = '', $option
}
/**
* Récupérer annee,mois,jour sur la date saisie
* Récupérer annee, mois, jour sur la date saisie
*
* @param string $post
* @param string $quoi
* @return array
* @return array|string Chaîne vide si date invalide, tableau (année, mois, jour) sinon.
*/
function dater_recuperer_date_saisie($post, $quoi = 'date') {
if (!preg_match('#^(?:(?:([0-9]{1,2})[/-])?([0-9]{1,2})[/-])?([0-9]{4}|[0-9]{1,2})#', $post, $regs)) {
......@@ -335,13 +335,13 @@ function dater_recuperer_date_saisie($post, $quoi = 'date') {
return array($regs[3], $regs[2], $regs[1]);
} else {
$t = mktime(0, 0, 0, $regs[2], $regs[1], $regs[3]);
// si la date n'est pas valide selon mktime, la refuser
if (!$t) {
return '';
if (
checkdate(intval($regs[2]), intval($regs[1]), intval($regs[3]))
and $t = mktime(0, 0, 0, $regs[2], $regs[1], $regs[3])
) {
return array(date('Y', $t), date('m', $t), date('d', $t));
}
return array(date('Y', $t), date('m', $t), date('d', $t));
return '';
}
}
......@@ -355,6 +355,9 @@ function dater_recuperer_heure_saisie($post) {
if (!preg_match('#([0-9]{1,2})(?:[h:](?:([0-9]{1,2}))?)?#', $post, $regs)) {
return '';
}
if ($regs[1] >= 23 or $regs[2] >= 59) {
return '';
}
return array($regs[1], $regs[2]);
}
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter