diff --git a/.gitattributes b/.gitattributes index eda6a4ec7166f07a0cdc62326febd608428404a1..b1237b8cd4f5af6442b0cfbd80480d4fe32d38d1 100644 --- a/.gitattributes +++ b/.gitattributes @@ -26,6 +26,8 @@ lang/verifier_sk.php -text test/verifier.html -text verifier/code_postal.php -text verifier/comparaison_champ.php -text +verifier/couleur.php -text +verifier/couleur.yaml -text verifier/date.php -text verifier/date.yaml -text verifier/decimal.php -text diff --git a/lang/paquet-verifier_fr.php b/lang/paquet-verifier_fr.php index 5fac119348b91e3155a8ab65ea3f0f6974ddb922..ebf16f1013a6e71bc168d7fb96ceb7017785ff67 100644 --- a/lang/paquet-verifier_fr.php +++ b/lang/paquet-verifier_fr.php @@ -1,14 +1,14 @@ -<?php -// This is a SPIP language file -- Ceci est un fichier langue de SPIP -// Fichier source, a modifier dans svn://zone.spip.org/spip-zone/_plugins_/verifier/lang/ -if (!defined('_ECRIRE_INC_VERSION')) return; - -$GLOBALS[$GLOBALS['idx_lang']] = array( - - // V - 'verifier_description' => 'Fournit une fonction unique <code>verifier($valeur, $type, $options)</code> permettant de tester la validité d\'une valeur.', - 'verifier_nom' => 'API de vérification', - 'verifier_slogan' => 'Une API générique pour vérifier une valeur' -); - -?> +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// Fichier source, a modifier dans svn://zone.spip.org/spip-zone/_plugins_/verifier/lang/ +if (!defined('_ECRIRE_INC_VERSION')) return; + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // V + 'verifier_description' => 'Fournit une fonction unique <code>verifier($valeur, $type, $options, &$valeur_normalisee)</code> permettant de tester la validité d\'une valeur.', + 'verifier_nom' => 'API de vérification', + 'verifier_slogan' => 'Une API générique pour vérifier une valeur' +); + +?> diff --git a/lang/verifier_fr.php b/lang/verifier_fr.php index 7925624ea0e515f2c86d74bde7912cf8ae72b081..15d7791c6020df04d5760597d242e870fd5d1f71 100644 --- a/lang/verifier_fr.php +++ b/lang/verifier_fr.php @@ -1,97 +1,103 @@ -<?php -// This is a SPIP language file -- Ceci est un fichier langue de SPIP -// Fichier source, a modifier dans svn://zone.spip.org/spip-zone/_plugins_/verifier/lang/ -if (!defined('_ECRIRE_INC_VERSION')) return; - -$GLOBALS[$GLOBALS['idx_lang']] = array( - - // E - 'erreur_code_postal' => 'Ce code postal est incorrect.', - 'erreur_comparaison_egal' => 'La valeur doit être égale au champ "@nom_champ@"', - 'erreur_comparaison_egal_type' => 'La valeur doit être égale et de même type que le champ "@nom_champ@"', - 'erreur_comparaison_grand' => 'La valeur doit être supérieure au champ "@nom_champ@"', - 'erreur_comparaison_grand_egal' => 'La valeur doit être supérieure ou égale au champ "@nom_champ@"', - 'erreur_comparaison_petit' => 'La valeur doit être inférieure au champ "@nom_champ@"', - 'erreur_comparaison_petit_egal' => 'La valeur doit être inférieure ou égale au champ "@nom_champ@"', - 'erreur_date' => 'La date n\'est pas valide.', - 'erreur_date_format' => 'Le format de la date n\'est pas accepté.', - 'erreur_decimal' => 'La valeur doit être un nombre décimal.', - 'erreur_decimal_nb_decimales' => 'Le nombre ne doit pas avoir plus de @nb_decimales@ chiffres après la virgule.', - 'erreur_email' => 'L\'adresse de courriel <em>@email@</em> n\'a pas un format valide.', - 'erreur_email_nondispo' => 'L\'adresse de courriel <em>@email@</em> est déjà utilisée.', - 'erreur_entier' => 'La valeur doit être un entier.', - 'erreur_entier_entre' => 'La valeur doit être comprise entre @min@ et @max@.', - 'erreur_entier_max' => 'La valeur doit être inférieure à @max@.', - 'erreur_entier_min' => 'La valeur doit être supérieure à @min@.', - 'erreur_id_document' => 'Cet identifiant de document n\'est pas valide.', - 'erreur_inconnue_generique' => 'Le format n\'est pas correct.', - 'erreur_numerique' => 'Le format du nombre n\'est pas valide.', - 'erreur_regex' => 'Le format de la chaîne n\'est pas valide.', - 'erreur_siren' => 'Le numéro de SIREN n\'est pas valide.', - 'erreur_siret' => 'Le numéro de SIRET n\'est pas valide.', - 'erreur_taille_egal' => 'La valeur doit comprendre exactement @egal@ caractères.', - 'erreur_taille_entre' => 'La valeur doit comprendre entre @min@ et @max@ caractères.', - 'erreur_taille_max' => 'La valeur doit comprendre au maximum @max@ caractères.', - 'erreur_taille_min' => 'La valeur doit comprendre au minimum @min@ caractères.', - 'erreur_telephone' => 'Le numéro n\'est pas valide.', - 'erreur_url' => 'L\'adresse <em>@url@</em> n\'est pas valide.', - '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', - 'option_email_disponible_label_case' => 'Vérifier que l\'adresse n\'est pas déjà utilisée par un utilisateur', - 'option_email_mode_5322' => 'Vérification la plus conforme aux standards disponibles', - 'option_email_mode_label' => 'Mode de vérification des courriels', - 'option_email_mode_normal' => 'Vérification normale de SPIP', - 'option_email_mode_strict' => 'Vérification moins permissive', - 'option_entier_max_label' => 'Valeur maximum', - 'option_entier_min_label' => 'Valeur minimum', - 'option_regex_modele_label' => 'La valeur doit correspondre au masque suivant', - 'option_siren_siret_mode_label' => 'Que voulez-vous vérifier ?', - 'option_siren_siret_mode_siren' => 'le SIREN', - 'option_siren_siret_mode_siret' => 'le SIRET', - 'option_taille_max_label' => 'Taille maximum', - 'option_taille_min_label' => 'Taille minimum', - 'option_url_mode_complet' => 'Vérification complète de l\'url', - 'option_url_mode_label' => 'Mode de vérification des urls', - 'option_url_mode_php_filter' => 'Vérification complète de l\'url via le filtre FILTER_VALIDATE_URL de php', - 'option_url_mode_protocole_seul' => 'Vérification uniquement de la présence d\'un protocole', - 'option_url_protocole_label' => 'Nom du protocole à vérifier', - 'option_url_type_protocole_exact' => 'Saisir un protocole ci-dessous :', - 'option_url_type_protocole_ftp' => 'Protocoles ftp : ftp ou sftp', - 'option_url_type_protocole_label' => 'Type de protocole à vérifier', - 'option_url_type_protocole_mail' => 'Protocoles mail : imap, pop3 ou smtp', - 'option_url_type_protocole_tous' => 'Tous protocoles acceptés', - 'option_url_type_protocole_web' => 'Protocoles web : http ou https', - - // T - 'type_date' => 'Date', - 'type_date_description' => 'Vérifie que la valeur est une date au format JJ/MM/AAAA. Le séparateur est libre (".", "/", etc).', - 'type_decimal' => 'Nombre décimal', - 'type_decimal_description' => 'Vérifie que la valeur est un nombre décimal, avec la possibilité de restreindre entre deux valeurs et de préciser le nombre de décimales après la virgule.', - 'type_email' => 'Adresse de courriel', - 'type_email_description' => 'Vérifie que l\'adresse de courriel a un format correct.', - 'type_email_disponible' => 'Disponibilité d\'une adresse de courriel', - 'type_email_disponible_description' => 'Vérifie que l\'adresse de courriel n\'est pas déjà utilisé par un autre utilisateur du système.', - 'type_entier' => 'Nombre entier', - 'type_entier_description' => 'Vérifie que la valeur est un entier, avec la possibilité de restreindre entre deux valeurs.', - 'type_regex' => 'Expression régulière', - 'type_regex_description' => 'Vérifie que la valeur correspond au masque demandé. Pour l\'utilisation des masques, reportez-vous à <a href="http://fr2.php.net/manual/fr/reference.pcre.pattern.syntax.php">l\'aide en ligne de PHP</a>.', - 'type_siren_siret' => 'SIREN ou SIRET', - 'type_siren_siret_description' => 'Vérifie que la valeur est un numéro valide du <a href="http://fr.wikipedia.org/wiki/SIREN">Système d’Identification du Répertoire des ENtreprises</a> français.', - 'type_taille' => 'Taille', - 'type_taille_description' => 'Vérifie que la taille de la valeur correspond au minimum et/ou au maximum demandé.', - 'type_telephone' => 'Numéro de téléphone', - 'type_telephone_description' => 'Vérifie que le numéro de téléphone correspond à un schéma reconnu.', - 'type_url' => 'URL', - 'type_url_description' => 'Vérifie que l\'url correspond à un schéma reconnu.' -); - -?> +<?php +// This is a SPIP language file -- Ceci est un fichier langue de SPIP +// Fichier source, a modifier dans svn://zone.spip.org/spip-zone/_plugins_/verifier/lang/ +if (!defined('_ECRIRE_INC_VERSION')) return; + +$GLOBALS[$GLOBALS['idx_lang']] = array( + + // E + 'erreur_code_postal' => 'Ce code postal est incorrect.', + 'erreur_comparaison_egal' => 'La valeur doit être égale au champ "@nom_champ@"', + 'erreur_comparaison_egal_type' => 'La valeur doit être égale et de même type que le champ "@nom_champ@"', + 'erreur_comparaison_grand' => 'La valeur doit être supérieure au champ "@nom_champ@"', + 'erreur_comparaison_grand_egal' => 'La valeur doit être supérieure ou égale au champ "@nom_champ@"', + 'erreur_comparaison_petit' => 'La valeur doit être inférieure au champ "@nom_champ@"', + 'erreur_comparaison_petit_egal' => 'La valeur doit être inférieure ou égale au champ "@nom_champ@"', + 'erreur_couleur' => 'Le code couleur n\'est pas valide.', + 'erreur_date' => 'La date n\'est pas valide.', + 'erreur_date_format' => 'Le format de la date n\'est pas accepté.', + 'erreur_decimal' => 'La valeur doit être un nombre décimal.', + 'erreur_decimal_nb_decimales' => 'Le nombre ne doit pas avoir plus de @nb_decimales@ chiffres après la virgule.', + 'erreur_email' => 'L\'adresse de courriel <em>@email@</em> n\'a pas un format valide.', + 'erreur_email_nondispo' => 'L\'adresse de courriel <em>@email@</em> est déjà utilisée.', + 'erreur_entier' => 'La valeur doit être un entier.', + 'erreur_entier_entre' => 'La valeur doit être comprise entre @min@ et @max@.', + 'erreur_entier_max' => 'La valeur doit être inférieure à @max@.', + 'erreur_entier_min' => 'La valeur doit être supérieure à @min@.', + 'erreur_id_document' => 'Cet identifiant de document n\'est pas valide.', + 'erreur_inconnue_generique' => 'Le format n\'est pas correct.', + 'erreur_numerique' => 'Le format du nombre n\'est pas valide.', + 'erreur_regex' => 'Le format de la chaîne n\'est pas valide.', + 'erreur_siren' => 'Le numéro de SIREN n\'est pas valide.', + 'erreur_siret' => 'Le numéro de SIRET n\'est pas valide.', + 'erreur_taille_egal' => 'La valeur doit comprendre exactement @egal@ caractères.', + 'erreur_taille_entre' => 'La valeur doit comprendre entre @min@ et @max@ caractères.', + 'erreur_taille_max' => 'La valeur doit comprendre au maximum @max@ caractères.', + 'erreur_taille_min' => 'La valeur doit comprendre au minimum @min@ caractères.', + 'erreur_telephone' => 'Le numéro n\'est pas valide.', + 'erreur_url' => 'L\'adresse <em>@url@</em> n\'est pas valide.', + '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_couleur_normaliser_label' => 'Normaliser le code couleur ?', + 'option_couleur_type_hexa' => 'Code couleur au format héxadécimal', + 'option_couleur_type_label' => 'Type de vérification à effectuer', + 'option_decimal_nb_decimales_label' => 'Nombre de décimales après la virgule', + 'option_email_disponible_label' => 'Adresse disponible', + 'option_email_disponible_label_case' => 'Vérifier que l\'adresse n\'est pas déjà utilisée par un utilisateur', + 'option_email_mode_5322' => 'Vérification la plus conforme aux standards disponibles', + 'option_email_mode_label' => 'Mode de vérification des courriels', + 'option_email_mode_normal' => 'Vérification normale de SPIP', + 'option_email_mode_strict' => 'Vérification moins permissive', + 'option_entier_max_label' => 'Valeur maximum', + 'option_entier_min_label' => 'Valeur minimum', + 'option_regex_modele_label' => 'La valeur doit correspondre au masque suivant', + 'option_siren_siret_mode_label' => 'Que voulez-vous vérifier ?', + 'option_siren_siret_mode_siren' => 'le SIREN', + 'option_siren_siret_mode_siret' => 'le SIRET', + 'option_taille_max_label' => 'Taille maximum', + 'option_taille_min_label' => 'Taille minimum', + 'option_url_mode_complet' => 'Vérification complète de l\'url', + 'option_url_mode_label' => 'Mode de vérification des urls', + 'option_url_mode_php_filter' => 'Vérification complète de l\'url via le filtre FILTER_VALIDATE_URL de php', + 'option_url_mode_protocole_seul' => 'Vérification uniquement de la présence d\'un protocole', + 'option_url_protocole_label' => 'Nom du protocole à vérifier', + 'option_url_type_protocole_exact' => 'Saisir un protocole ci-dessous :', + 'option_url_type_protocole_ftp' => 'Protocoles ftp : ftp ou sftp', + 'option_url_type_protocole_label' => 'Type de protocole à vérifier', + 'option_url_type_protocole_mail' => 'Protocoles mail : imap, pop3 ou smtp', + 'option_url_type_protocole_tous' => 'Tous protocoles acceptés', + 'option_url_type_protocole_web' => 'Protocoles web : http ou https', + + // T + 'type_couleur' => 'Couleur', + 'type_couleur_description' => 'Vérifie que la valeur est un code couleur.', + 'type_date' => 'Date', + 'type_date_description' => 'Vérifie que la valeur est une date au format JJ/MM/AAAA. Le séparateur est libre (".", "/", etc).', + 'type_decimal' => 'Nombre décimal', + 'type_decimal_description' => 'Vérifie que la valeur est un nombre décimal, avec la possibilité de restreindre entre deux valeurs et de préciser le nombre de décimales après la virgule.', + 'type_email' => 'Adresse de courriel', + 'type_email_description' => 'Vérifie que l\'adresse de courriel a un format correct.', + 'type_email_disponible' => 'Disponibilité d\'une adresse de courriel', + 'type_email_disponible_description' => 'Vérifie que l\'adresse de courriel n\'est pas déjà utilisé par un autre utilisateur du système.', + 'type_entier' => 'Nombre entier', + 'type_entier_description' => 'Vérifie que la valeur est un entier, avec la possibilité de restreindre entre deux valeurs.', + 'type_regex' => 'Expression régulière', + 'type_regex_description' => 'Vérifie que la valeur correspond au masque demandé. Pour l\'utilisation des masques, reportez-vous à <a href="http://fr2.php.net/manual/fr/reference.pcre.pattern.syntax.php">l\'aide en ligne de PHP</a>.', + 'type_siren_siret' => 'SIREN ou SIRET', + 'type_siren_siret_description' => 'Vérifie que la valeur est un numéro valide du <a href="http://fr.wikipedia.org/wiki/SIREN">Système d’Identification du Répertoire des ENtreprises</a> français.', + 'type_taille' => 'Taille', + 'type_taille_description' => 'Vérifie que la taille de la valeur correspond au minimum et/ou au maximum demandé.', + 'type_telephone' => 'Numéro de téléphone', + 'type_telephone_description' => 'Vérifie que le numéro de téléphone correspond à un schéma reconnu.', + 'type_url' => 'URL', + 'type_url_description' => 'Vérifie que l\'url correspond à un schéma reconnu.' +); + +?> diff --git a/paquet.xml b/paquet.xml index 78ed76d2b9a44eb162eac3439708f43a3fa60944..2af287a00d92881bac7aa1e12cbf076c2783948d 100644 --- a/paquet.xml +++ b/paquet.xml @@ -1,23 +1,23 @@ -<paquet - prefix="verifier" - categorie="outil" - version="0.1.13" - etat="test" - compatibilite="[2.0.10;3.0.99]" - logo="images/verifier-128.png" - documentation="http://www.spip-contrib.net/Verifier,1505" -> - - <nom>API de vérification</nom> - <!-- Une API générique pour vérifier une valeur --> - - <auteur lien="http://www.ldd.fr">Les Développements Durables</auteur> - - <licence lien="http://www.gnu.org/licenses/gpl-3.0.html">GPL 3</licence> - - <traduire module="verifier" reference="fr" gestionnaire="salvatore" /> - - <pipeline nom="verifier" action="verifier_verifier" inclure="verifier_pipelines.php" /> - - <utilise nom="yaml" /> -</paquet> +<paquet + prefix="verifier" + categorie="outil" + version="0.1.14" + etat="test" + compatibilite="[2.0.10;3.0.99]" + logo="images/verifier-128.png" + documentation="http://www.spip-contrib.net/Verifier,1505" +> + + <nom>API de vérification</nom> + <!-- Une API générique pour vérifier une valeur --> + + <auteur lien="http://www.ldd.fr">Les Développements Durables</auteur> + + <licence lien="http://www.gnu.org/licenses/gpl-3.0.html">GPL 3</licence> + + <traduire module="verifier" reference="fr" gestionnaire="salvatore" /> + + <pipeline nom="verifier" action="verifier_verifier" inclure="verifier_pipelines.php" /> + + <utilise nom="yaml" /> +</paquet> diff --git a/plugin.xml b/plugin.xml index 0b3a5630753057dd875891d26dd04520a5823bf9..fb22e2703d2ebf8bcde91c9cabe83a2da21e3d7e 100644 --- a/plugin.xml +++ b/plugin.xml @@ -9,12 +9,12 @@ <auteur>[Les Développements Durables->http://www.ldd.fr]</auteur> <icon>images/verifier-128.png</icon> <licence>GPL v3</licence> - <version>0.1.13</version> + <version>0.1.14</version> <etat>test</etat> <description> <multi> - [fr]Fournit une fonction unique <code>verifier($valeur, $type, $options)</code> permettant de tester la validité d'une valeur. - [en]Provides a unique function <code>verifier($value, $type, $options)</code> to test the validity of a value. + [fr]Fournit une fonction unique <code>verifier($valeur, $type, $options, &$valeur_normalisee)</code> permettant de tester la validité d'une valeur. + [en]Provides a unique function <code>verifier($value, $type, $options, &$valeur_normalisee)</code> to test the validity of a value. </multi> </description> <prefix>verifier</prefix> diff --git a/verifier/couleur.php b/verifier/couleur.php new file mode 100644 index 0000000000000000000000000000000000000000..5a0a52720a326b7840bef14dbfc83e2a8a55cfc5 --- /dev/null +++ b/verifier/couleur.php @@ -0,0 +1,40 @@ +<?php + +// Sécurité +if (!defined("_ECRIRE_INC_VERSION")) return; + +/** + * Vérifie la validité d'un code couleur + * + * @param string $valeur + * La valeur à vérifier. + * @param array $options + * type => hexa,... + * normaliser => oui ou rien + * @param null $valeur_normalisee + * Si normalisation a faire, la variable sera rempli par la couleur normalisee. + * @return string + * Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur. + */ +function verifier_couleur_dist($valeur, $options=array(), &$valeur_normalisee=null){ + $erreur = _T('verifier:erreur_couleur'); + if (!is_string($valeur)) + return $erreur; + + $ok = ''; + switch ($options['type']){ + case 'hexa': + default: + if (!preg_match(",^#[a-f0-9]{6}$,i", $valeur)) + if ($options['normaliser'] and preg_match(",^[a-f0-9]{6}$,i", $valeur)) + $valeur_normalisee = "#".$valeur ; + else + return $erreur; + break; + } + spip_log("valeur $valeur valeur_normalisee $valeur_normalisee options ".print_r($options,true),"couleur"); + + return $ok; +} + +?> \ No newline at end of file diff --git a/verifier/couleur.yaml b/verifier/couleur.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f20e507d1470a5ed3ed4a681128de50f0a140229 --- /dev/null +++ b/verifier/couleur.yaml @@ -0,0 +1,18 @@ + +titre: '<:verifier:type_couleur:>' +description: '<:verifier:type_couleur_description:>' +options: + - + saisie: 'radio' + options: + nom: 'type' + label: '<:verifier:option_couleur_type_label:>' + datas: + hexa: '<:verifier:option_couleur_type_hexa:>' + defaut: 'hexa' + - + saisie: 'oui_non' + options: + nom: 'normaliser' + label: '<:verifier:option_couleur_normaliser_label:>' + defaut: ''