diff --git a/.gitattributes b/.gitattributes index cca1007013ba3d1686c916f48563501003067e84..2c55545e1ea85ed150ad3b3501d92e76d7e962be 100644 --- a/.gitattributes +++ b/.gitattributes @@ -4,7 +4,6 @@ aide/verifier_fonctions.php -text images/icones-infos.txt -text images/verifier-128.png -text inc/is_email.php -text -inc/normaliser.php -text inc/verifier.php -text lang/paquet-verifier_en.php -text lang/paquet-verifier_fr.php -text @@ -19,7 +18,6 @@ lang/verifier_fr_tu.php -text lang/verifier_it.php -text lang/verifier_pt_br.php -text lang/verifier_sk.php -text -normaliser/datepicker.php -text /paquet.xml -text /plugin.xml -text test/verifier.html -text diff --git a/inc/normaliser.php b/inc/normaliser.php deleted file mode 100644 index fa9d71fb9db09f69e6da3a7230791070faa2f261..0000000000000000000000000000000000000000 --- a/inc/normaliser.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php - -// Sécurité -if (!defined("_ECRIRE_INC_VERSION")) return; - -/** - * Fonction de base de l'API de normalisation. - * (En cours de dev... sera peut etre a revoir) - * - */ -function inc_normaliser_dist($valeur, $type, $options=null){ - - // On vérifie que les options sont bien un tableau - if (!is_array($options)) - $options = array(); - - $erreur = ''; - - // On cherche si une fonction correspond au type existant - if ($normaliser = charger_fonction($type, 'normaliser', true)) { - $valeur_normalisee = $normaliser($valeur, $options, $erreur); - } - - return array( - 'erreur' => $erreur, - 'valeur' => $valeur_normalisee, - 'changement' => !$erreur and ($valeur_normalisee != $valeur) - ); -} - - -?> diff --git a/inc/verifier.php b/inc/verifier.php index de8b6526e2b84fe100b7ce18e6b646b85f216157..f73ea77dccfb8601bad7a1473aeb34ed762bc568 100644 --- a/inc/verifier.php +++ b/inc/verifier.php @@ -8,9 +8,12 @@ if (!defined("_ECRIRE_INC_VERSION")) return; * @param mixed $valeur La valeur a verifier. * @param string $type Le type de verification a appliquer. * @param array $options Un eventuel tableau d'options suivant le type. + * @param array $valeur_normalisee + * Si des options de verification modifient la valeur entrante (normalisent), + * alors la valeur modifie sera stockee dans cette variable. * @return string Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur. */ -function inc_verifier_dist($valeur, $type, $options=null){ +function inc_verifier_dist($valeur, $type, $options=null, &$valeur_normalisee=null){ // On vérifie que les options sont bien un tableau if (!is_array($options)) @@ -21,7 +24,7 @@ function inc_verifier_dist($valeur, $type, $options=null){ // On cherche si une fonction correspondant au type existe if ($verifier = charger_fonction($type, 'verifier',true)){ - $erreur = $verifier($valeur, $options); + $erreur = $verifier($valeur, $options, $valeur_normalisee); } // On passe le tout dans le pipeline du meme nom @@ -31,7 +34,7 @@ function inc_verifier_dist($valeur, $type, $options=null){ 'args' => array( 'valeur' => $valeur, 'type' => $type, - 'options' => $options + 'options' => $options, ), 'data' => $erreur ) @@ -42,44 +45,53 @@ function inc_verifier_dist($valeur, $type, $options=null){ /** * Liste toutes les vérifications possibles - * + * + * @param string $repertoire + * Dans quel repertoire chercher les yaml. + * * @return Retourne un tableau listant les vérifications et leurs options */ -function verifier_lister_disponibles(){ - static $verifications = null; - - if (is_null($verifications)){ - $verifications = array(); - $liste = find_all_in_path('verifier/', '.+[.]yaml$'); +function verifier_lister_disponibles($repertoire='verifier'){ + static $verifications = array(); + + if (is_null($verifications[$repertoire])){ + $verifications[$repertoire] = array(); + $liste = find_all_in_path("$repertoire/", '.+[.]yaml$'); if (count($liste)){ foreach ($liste as $fichier=>$chemin){ - $type_verif = preg_replace(',[.]yaml$,i', '', $fichier); + $type = preg_replace(',[.]yaml$,i', '', $fichier); $dossier = str_replace($fichier, '', $chemin); // On ne garde que les vérifications qui ont bien la fonction ! - if (charger_fonction($type_verif, 'verifier', true) + if (charger_fonction($type, $repertoire, true) and ( - is_array($verif = verifier_charger_infos($type_verif)) + is_array($verif = verifier_charger_infos($type, $repertoire)) ) ){ - $verifications[$type_verif] = $verif; + $verifications[$repertoire][$type] = $verif; } } } } - return $verifications; + return $verifications[$repertoire]; } + /** * Charger les informations contenues dans le yaml d'une vérification * - * @param string $type_verif Le type de la vérification + * @param string $type_verif + * Le type de la vérification + * + * @param string $repertoire + * Dans quel repertoire chercher les yaml. + * * @return array Un tableau contenant le YAML décodé */ -function verifier_charger_infos($type_verif){ +function verifier_charger_infos($type_verif, $repertoire='verifier'){ include_spip('inc/yaml'); - $fichier = find_in_path("verifier/$type_verif.yaml"); + $fichier = find_in_path("$repertoire/$type_verif.yaml"); $verif = yaml_decode_file($fichier); if (is_array($verif)){ $verif['titre'] = $verif['titre'] ? _T_ou_typo($verif['titre']) : $type_verif; diff --git a/lang/verifier_fr.php b/lang/verifier_fr.php index 17e519d3505e601569262b604924065229429a1a..2e357fe5896a2fceb23082752df398936b506ac7 100644 --- a/lang/verifier_fr.php +++ b/lang/verifier_fr.php @@ -38,6 +38,11 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( 'erreur_url_protocole' => 'L\'adresse saisie <em>(@url@)</em> doit commencer par @protocole@', 'erreur_url_protocole_exact' => 'L\'adresse saisie <em>(@url@)</em> ne commence pas par un protocole valide (http:// par exemple)', + // N + 'normaliser_option_date' => 'Normaliser la date ?', + 'normaliser_option_date_aucune' => 'Non', + 'normaliser_option_date_en_datetime' => 'Au format «Datetime» (pour SQL)', + // O 'option_decimal_nb_decimales_label' => 'Nombre de décimales après la virgule', 'option_email_disponible_label' => 'Adresse disponible', diff --git a/normaliser/datepicker.php b/normaliser/datepicker.php deleted file mode 100644 index eafb9254aecb09e799f3eb64c82a703115103fe5..0000000000000000000000000000000000000000 --- a/normaliser/datepicker.php +++ /dev/null @@ -1,64 +0,0 @@ -<?php - -// Sécurité -if (!defined("_ECRIRE_INC_VERSION")) return; - -/** - * Convertir une date vers un type de format - */ -function normaliser_datepicker_dist($valeur, $options=array(), &$erreur) { - - if (!isset($options['format'])) { - $erreur = "Pas de format de date transmis pour normalisation."; - return; - } - - $format = $options['format']; - $normaliser = charger_fonction('datepicker_'.$format, 'normaliser', true); - - if (!$normaliser) { - $erreur = "Pas de normalisation trouvee pour 'date' vers '$format'"; - return; - } - - return $normaliser($valeur, $options, $erreur); -} - - -/** - * Convertir une date en datetime - * -**/ -function normaliser_datepicker_datetime_dist($valeur, $options, &$erreur) { - $defaut = '0000-00-00 00:00:00'; - - if (!$valeur) { - return $defaut; - } - - $date = $valeur; - if (isset($options['heure'])) { - $date .= (' ' . $options['heure'] . ':00'); - } else { - $date .= ' 00:00:00'; - } - - include_spip('inc/filtres'); - if (!$date = recup_date($date)) { - $erreur = "Impossible d'extraire la date de $date"; - return; - } - - if (!($date = mktime($date[3], $date[4], 0, (int)$date[1], (int)$date[2], (int)$date[0]))) { - // mauvais format de date - $erreur = "Impossible de normaliser la date..."; - return false; - } - - $date = date("Y-m-d H:i:s", $date); - $date = vider_date($date); // enlever les valeurs considerees comme nulles (1 1 1970, etc...) - if (!$date) { - $date = $defaut; - } - return $date; -} diff --git a/paquet.xml b/paquet.xml index 7bea50bb43f27911950854e395c098f10e8d4558..abbb4ae7b1b1ddda74d47855134da4cdfe2f6470 100644 --- a/paquet.xml +++ b/paquet.xml @@ -1,7 +1,7 @@ <paquet prefix="verifier" categorie="outil" - version="0.1.11" + version="0.1.12" etat="test" compatibilite="[2.0.10;3.0.99]" logo="images/verifier-128.png" diff --git a/plugin.xml b/plugin.xml index 58d6c9f43f38ca9d8067c83f0999c77d8667c42d..dda729a5dabd8155721503c6b950e7af42f40a85 100644 --- a/plugin.xml +++ b/plugin.xml @@ -9,7 +9,7 @@ <auteur>[Les Développements Durables->http://www.ldd.fr]</auteur> <icon>images/verifier-128.png</icon> <licence>GPL v3</licence> - <version>0.1.11</version> + <version>0.1.12</version> <etat>test</etat> <description> <multi> diff --git a/verifier/date.php b/verifier/date.php index f2a2e8a78689235b8ca05aeade4caa15e61bb074..868fdbd678c36810b4ecb5544492932f48abf8e6 100644 --- a/verifier/date.php +++ b/verifier/date.php @@ -14,11 +14,13 @@ if (!defined("_ECRIRE_INC_VERSION")) return; * @param string $valeur * La valeur à vérifier. * @param array $options - * tableau d'options [NON UTILISE]. + * tableau d'options. + * @param null $valeur_normalisee + * Si normalisation a faire, la variable sera rempli par la date normalisee. * @return string * Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur. */ -function verifier_date_dist($valeur, $options=array()){ +function verifier_date_dist($valeur, $options=array(), &$valeur_normalisee){ $erreur = _T('verifier:erreur_date_format'); if (!is_string($valeur)) return $erreur; @@ -45,6 +47,56 @@ function verifier_date_dist($valeur, $options=array()){ // validité de la date $erreur = _T('verifier:erreur_date'); if (!checkdate($mois, $jour, $annee)) return $erreur; + + // normaliser si demandé + if ($options['normaliser'] and $options['normaliser'] == 'datetime') { + $valeur_normalisee = normaliser_date_datetime_dist($valeur, $options, $ok); + } return $ok; } + + + + +/** + * Convertir une date en datetime + * +**/ +function normaliser_date_datetime_dist($valeur, $options, &$erreur) { + $defaut = '0000-00-00 00:00:00'; + + if (!$valeur) { + return $defaut; + } + + $date = str_replace('-', '/', $valeur); // formater en jj/mm/aaaa + + if (isset($options['heure'])) { + $date .= (' ' . $options['heure'] . ':00'); + } else { + $date .= ' 00:00:00'; + } + + include_spip('inc/filtres'); + if (!$date = recup_date($date)) { + $erreur = "Impossible d'extraire la date de $date"; + return false; + } + + if (!($date = mktime($date[3], $date[4], 0, (int)$date[1], (int)$date[2], (int)$date[0]))) { + // mauvais format de date + $erreur = "Impossible de normaliser la date..."; + return false; + } + + $date = date("Y-m-d H:i:s", $date); + $date = vider_date($date); // enlever les valeurs considerees comme nulles (1 1 1970, etc...) + + if (!$date) { + $date = $defaut; + } + + return $date; +} + diff --git a/verifier/date.yaml b/verifier/date.yaml index 90a9c54e0977d6158eb1bcba6cae10225f5d65c6..aef4408aee46456adb3f7c76348101a1cf5b93b1 100644 --- a/verifier/date.yaml +++ b/verifier/date.yaml @@ -1,3 +1,13 @@ titre: '<:verifier:type_date:>' description: '<:verifier:type_date_description:>' +options: + - + saisie: 'radio' + options: + nom: 'normaliser' + label: '<:verifier:normaliser_option_date:>' + datas: + aucune: '<:verifier:normaliser_option_date_aucune:>' + datetime: '<:verifier:normaliser_option_date_en_datetime:>' + defaut: 'datetime' diff --git a/verifier/email.yaml b/verifier/email.yaml index fd6ea33119589fd1477c1a17a1f0876dc9e0ee90..bbd904fe8783449ed674d35a369131a71b9bcefb 100644 --- a/verifier/email.yaml +++ b/verifier/email.yaml @@ -10,7 +10,7 @@ options: datas: normal: '<:verifier:option_email_mode_normal:>' strict: '<:verifier:option_email_mode_strict:>' - rfc5322: '<:verifier:option_email_mode_rfc5322:>' + rfc5322: '<:verifier:option_email_mode_5322:>' defaut: 'normal' - saisie: 'case'