Skip to content
Extraits de code Groupes Projets
Valider e4caa42f rédigé par marcimat@rezo.net's avatar marcimat@rezo.net
Parcourir les fichiers

On tente une option de normalisation sur verifier(), plutôt que d'avoir une...

On tente une option de normalisation sur verifier(), plutôt que d'avoir une fonction normaliser() séparer, puisque Rastapopoulos préfère comme ça.
parent 68ec581e
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -4,7 +4,6 @@ aide/verifier_fonctions.php -text ...@@ -4,7 +4,6 @@ aide/verifier_fonctions.php -text
images/icones-infos.txt -text images/icones-infos.txt -text
images/verifier-128.png -text images/verifier-128.png -text
inc/is_email.php -text inc/is_email.php -text
inc/normaliser.php -text
inc/verifier.php -text inc/verifier.php -text
lang/paquet-verifier_en.php -text lang/paquet-verifier_en.php -text
lang/paquet-verifier_fr.php -text lang/paquet-verifier_fr.php -text
...@@ -19,7 +18,6 @@ lang/verifier_fr_tu.php -text ...@@ -19,7 +18,6 @@ lang/verifier_fr_tu.php -text
lang/verifier_it.php -text lang/verifier_it.php -text
lang/verifier_pt_br.php -text lang/verifier_pt_br.php -text
lang/verifier_sk.php -text lang/verifier_sk.php -text
normaliser/datepicker.php -text
/paquet.xml -text /paquet.xml -text
/plugin.xml -text /plugin.xml -text
test/verifier.html -text test/verifier.html -text
......
<?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)
);
}
?>
...@@ -8,9 +8,12 @@ if (!defined("_ECRIRE_INC_VERSION")) return; ...@@ -8,9 +8,12 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
* @param mixed $valeur La valeur a verifier. * @param mixed $valeur La valeur a verifier.
* @param string $type Le type de verification a appliquer. * @param string $type Le type de verification a appliquer.
* @param array $options Un eventuel tableau d'options suivant le type. * @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. * @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 // On vérifie que les options sont bien un tableau
if (!is_array($options)) if (!is_array($options))
...@@ -21,7 +24,7 @@ function inc_verifier_dist($valeur, $type, $options=null){ ...@@ -21,7 +24,7 @@ function inc_verifier_dist($valeur, $type, $options=null){
// On cherche si une fonction correspondant au type existe // On cherche si une fonction correspondant au type existe
if ($verifier = charger_fonction($type, 'verifier',true)){ 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 // On passe le tout dans le pipeline du meme nom
...@@ -31,7 +34,7 @@ function inc_verifier_dist($valeur, $type, $options=null){ ...@@ -31,7 +34,7 @@ function inc_verifier_dist($valeur, $type, $options=null){
'args' => array( 'args' => array(
'valeur' => $valeur, 'valeur' => $valeur,
'type' => $type, 'type' => $type,
'options' => $options 'options' => $options,
), ),
'data' => $erreur 'data' => $erreur
) )
...@@ -42,44 +45,53 @@ function inc_verifier_dist($valeur, $type, $options=null){ ...@@ -42,44 +45,53 @@ function inc_verifier_dist($valeur, $type, $options=null){
/** /**
* Liste toutes les vérifications possibles * 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 * @return Retourne un tableau listant les vérifications et leurs options
*/ */
function verifier_lister_disponibles(){ function verifier_lister_disponibles($repertoire='verifier'){
static $verifications = null; static $verifications = array();
if (is_null($verifications)){ if (is_null($verifications[$repertoire])){
$verifications = array(); $verifications[$repertoire] = array();
$liste = find_all_in_path('verifier/', '.+[.]yaml$'); $liste = find_all_in_path("$repertoire/", '.+[.]yaml$');
if (count($liste)){ if (count($liste)){
foreach ($liste as $fichier=>$chemin){ foreach ($liste as $fichier=>$chemin){
$type_verif = preg_replace(',[.]yaml$,i', '', $fichier); $type = preg_replace(',[.]yaml$,i', '', $fichier);
$dossier = str_replace($fichier, '', $chemin); $dossier = str_replace($fichier, '', $chemin);
// On ne garde que les vérifications qui ont bien la fonction ! // 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 ( 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 * 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é * @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'); 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); $verif = yaml_decode_file($fichier);
if (is_array($verif)){ if (is_array($verif)){
$verif['titre'] = $verif['titre'] ? _T_ou_typo($verif['titre']) : $type_verif; $verif['titre'] = $verif['titre'] ? _T_ou_typo($verif['titre']) : $type_verif;
......
...@@ -38,6 +38,11 @@ $GLOBALS[$GLOBALS['idx_lang']] = array( ...@@ -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' => '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)', '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&nbsp;?',
'normaliser_option_date_aucune' => 'Non',
'normaliser_option_date_en_datetime' => 'Au format «Datetime» (pour SQL)',
// O // O
'option_decimal_nb_decimales_label' => 'Nombre de décimales après la virgule', 'option_decimal_nb_decimales_label' => 'Nombre de décimales après la virgule',
'option_email_disponible_label' => 'Adresse disponible', 'option_email_disponible_label' => 'Adresse disponible',
......
<?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;
}
<paquet <paquet
prefix="verifier" prefix="verifier"
categorie="outil" categorie="outil"
version="0.1.11" version="0.1.12"
etat="test" etat="test"
compatibilite="[2.0.10;3.0.99]" compatibilite="[2.0.10;3.0.99]"
logo="images/verifier-128.png" logo="images/verifier-128.png"
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
<auteur>[Les Développements Durables->http://www.ldd.fr]</auteur> <auteur>[Les Développements Durables->http://www.ldd.fr]</auteur>
<icon>images/verifier-128.png</icon> <icon>images/verifier-128.png</icon>
<licence>GPL v3</licence> <licence>GPL v3</licence>
<version>0.1.11</version> <version>0.1.12</version>
<etat>test</etat> <etat>test</etat>
<description> <description>
<multi> <multi>
......
...@@ -14,11 +14,13 @@ if (!defined("_ECRIRE_INC_VERSION")) return; ...@@ -14,11 +14,13 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
* @param string $valeur * @param string $valeur
* La valeur à vérifier. * La valeur à vérifier.
* @param array $options * @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 * @return string
* Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur. * 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'); $erreur = _T('verifier:erreur_date_format');
if (!is_string($valeur)) if (!is_string($valeur))
return $erreur; return $erreur;
...@@ -45,6 +47,56 @@ function verifier_date_dist($valeur, $options=array()){ ...@@ -45,6 +47,56 @@ function verifier_date_dist($valeur, $options=array()){
// validité de la date // validité de la date
$erreur = _T('verifier:erreur_date'); $erreur = _T('verifier:erreur_date');
if (!checkdate($mois, $jour, $annee)) return $erreur; 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; 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;
}
titre: '<:verifier:type_date:>' titre: '<:verifier:type_date:>'
description: '<:verifier:type_date_description:>' 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'
...@@ -10,7 +10,7 @@ options: ...@@ -10,7 +10,7 @@ options:
datas: datas:
normal: '<:verifier:option_email_mode_normal:>' normal: '<:verifier:option_email_mode_normal:>'
strict: '<:verifier:option_email_mode_strict:>' strict: '<:verifier:option_email_mode_strict:>'
rfc5322: '<:verifier:option_email_mode_rfc5322:>' rfc5322: '<:verifier:option_email_mode_5322:>'
defaut: 'normal' defaut: 'normal'
- -
saisie: 'case' saisie: 'case'
......
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