Changeset 57473 in spip-zone


Ignore:
Timestamp:
Jan 21, 2012, 5:36:28 PM (8 years ago)
Author:
marcimat@…
Message:

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.

Location:
_plugins_/verifier
Files:
2 deleted
7 edited

Legend:

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

    r44928 r57473  
    99 * @param string $type Le type de verification a appliquer.
    1010 * @param array $options Un eventuel tableau d'options suivant le type.
     11 * @param array $valeur_normalisee
     12 *              Si des options de verification modifient la valeur entrante (normalisent),
     13 *              alors la valeur modifie sera stockee dans cette variable.
    1114 * @return string Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur.
    1215 */
    13 function inc_verifier_dist($valeur, $type, $options=null){
     16function inc_verifier_dist($valeur, $type, $options=null, &$valeur_normalisee=null){
    1417
    1518        // On vérifie que les options sont bien un tableau
     
    2225        // On cherche si une fonction correspondant au type existe
    2326        if ($verifier = charger_fonction($type, 'verifier',true)){
    24                 $erreur = $verifier($valeur, $options);
     27                $erreur = $verifier($valeur, $options, $valeur_normalisee);
    2528        }
    2629
     
    3235                                'valeur' => $valeur,
    3336                                'type' => $type,
    34                                 'options' => $options
     37                                'options' => $options,
    3538                        ),
    3639                        'data' => $erreur
     
    4346/**
    4447 * Liste toutes les vérifications possibles
    45  *
     48 *
     49 * @param string $repertoire
     50 *              Dans quel repertoire chercher les yaml.
     51 *
    4652 * @return Retourne un tableau listant les vérifications et leurs options
    4753 */
    48 function verifier_lister_disponibles(){
    49         static $verifications = null;
    50        
    51         if (is_null($verifications)){
    52                 $verifications = array();
    53                 $liste = find_all_in_path('verifier/', '.+[.]yaml$');
     54function verifier_lister_disponibles($repertoire='verifier'){
     55        static $verifications = array();
     56
     57        if (is_null($verifications[$repertoire])){
     58                $verifications[$repertoire] = array();
     59                $liste = find_all_in_path("$repertoire/", '.+[.]yaml$');
    5460               
    5561                if (count($liste)){
    5662                        foreach ($liste as $fichier=>$chemin){
    57                                 $type_verif = preg_replace(',[.]yaml$,i', '', $fichier);
     63                                $type = preg_replace(',[.]yaml$,i', '', $fichier);
    5864                                $dossier = str_replace($fichier, '', $chemin);
    5965                                // On ne garde que les vérifications qui ont bien la fonction !
    60                                 if (charger_fonction($type_verif, 'verifier', true)
     66                                if (charger_fonction($type, $repertoire, true)
    6167                                        and (
    62                                                 is_array($verif = verifier_charger_infos($type_verif))
     68                                                is_array($verif = verifier_charger_infos($type, $repertoire))
    6369                                        )
    6470                                ){
    65                                         $verifications[$type_verif] = $verif;
     71                                        $verifications[$repertoire][$type] = $verif;
    6672                                }
    6773                        }
     
    6975        }
    7076       
    71         return $verifications;
     77        return $verifications[$repertoire];
    7278}
     79
    7380
    7481/**
    7582 * Charger les informations contenues dans le yaml d'une vérification
    7683 *
    77  * @param string $type_verif Le type de la vérification
     84 * @param string $type_verif
     85 *              Le type de la vérification
     86 *
     87 * @param string $repertoire
     88 *              Dans quel repertoire chercher les yaml.
     89 *
    7890 * @return array Un tableau contenant le YAML décodé
    7991 */
    80 function verifier_charger_infos($type_verif){
     92function verifier_charger_infos($type_verif, $repertoire='verifier'){
    8193        include_spip('inc/yaml');
    82         $fichier = find_in_path("verifier/$type_verif.yaml");
     94        $fichier = find_in_path("$repertoire/$type_verif.yaml");
    8395        $verif = yaml_decode_file($fichier);
    8496        if (is_array($verif)){
  • _plugins_/verifier/lang/verifier_fr.php

    r55550 r57473  
    3939        'erreur_url_protocole_exact' => 'L\'adresse saisie <em>(@url@)</em> ne commence pas par un protocole valide (http:// par exemple)',
    4040
     41        // N
     42        'normaliser_option_date' => 'Normaliser la date&nbsp;?',
     43        'normaliser_option_date_aucune' => 'Non',
     44        'normaliser_option_date_en_datetime' => 'Au format «Datetime» (pour SQL)',
     45       
    4146        // O
    4247        'option_decimal_nb_decimales_label' => 'Nombre de décimales après la virgule',
  • _plugins_/verifier/paquet.xml

    r54497 r57473  
    22        prefix="verifier"
    33        categorie="outil"
    4         version="0.1.11"
     4        version="0.1.12"
    55        etat="test"
    66        compatibilite="[2.0.10;3.0.99]"
  • _plugins_/verifier/plugin.xml

    r54497 r57473  
    1010        <icon>images/verifier-128.png</icon>
    1111        <licence>GPL v3</licence>
    12         <version>0.1.11</version>
     12        <version>0.1.12</version>
    1313        <etat>test</etat>
    1414        <description>
  • _plugins_/verifier/verifier/date.php

    r51147 r57473  
    1515 *   La valeur à vérifier.
    1616 * @param array $options
    17  *   tableau d'options [NON UTILISE].
     17 *   tableau d'options.
     18 * @param null $valeur_normalisee
     19 *   Si normalisation a faire, la variable sera rempli par la date normalisee.
    1820 * @return string
    1921 *   Retourne une chaine vide si c'est valide, sinon une chaine expliquant l'erreur.
    2022 */
    21 function verifier_date_dist($valeur, $options=array()){
     23function verifier_date_dist($valeur, $options=array(), &$valeur_normalisee){
    2224        $erreur = _T('verifier:erreur_date_format');
    2325        if (!is_string($valeur))
     
    4648        $erreur = _T('verifier:erreur_date');
    4749        if (!checkdate($mois, $jour, $annee)) return $erreur;
     50
     51        // normaliser si demandé
     52        if ($options['normaliser'] and $options['normaliser'] == 'datetime') {
     53                $valeur_normalisee = normaliser_date_datetime_dist($valeur, $options, $ok);
     54        }
    4855       
    4956        return $ok;
    5057}
     58
     59
     60
     61
     62/**
     63 * Convertir une date en datetime
     64 *
     65**/
     66function normaliser_date_datetime_dist($valeur, $options, &$erreur) {
     67        $defaut = '0000-00-00 00:00:00';
     68
     69        if (!$valeur) {
     70                return $defaut;
     71        }
     72
     73        $date = str_replace('-', '/', $valeur); // formater en jj/mm/aaaa
     74
     75        if (isset($options['heure'])) {
     76                $date .= (' ' . $options['heure'] . ':00');
     77        } else {
     78                $date .= ' 00:00:00';
     79        }
     80
     81        include_spip('inc/filtres');
     82        if (!$date = recup_date($date)) {
     83                $erreur = "Impossible d'extraire la date de $date";
     84                return false;
     85        }
     86
     87        if (!($date = mktime($date[3], $date[4], 0, (int)$date[1], (int)$date[2], (int)$date[0]))) {
     88                // mauvais format de date
     89                $erreur = "Impossible de normaliser la date...";
     90                return false;
     91        }
     92
     93        $date = date("Y-m-d H:i:s", $date);
     94        $date = vider_date($date); // enlever les valeurs considerees comme nulles (1 1 1970, etc...)
     95
     96        if (!$date) {
     97                $date = $defaut;
     98        }
     99
     100        return $date;
     101}
     102
  • _plugins_/verifier/verifier/date.yaml

    r36086 r57473  
    22titre: '<:verifier:type_date:>'
    33description: '<:verifier:type_date_description:>'
     4options:
     5  -
     6    saisie: 'radio'
     7    options:
     8      nom: 'normaliser'
     9      label: '<:verifier:normaliser_option_date:>'
     10      datas:
     11        aucune: '<:verifier:normaliser_option_date_aucune:>'
     12        datetime: '<:verifier:normaliser_option_date_en_datetime:>'
     13      defaut: 'datetime'
  • _plugins_/verifier/verifier/email.yaml

    r37799 r57473  
    1111        normal: '<:verifier:option_email_mode_normal:>'
    1212        strict: '<:verifier:option_email_mode_strict:>'
    13         rfc5322: '<:verifier:option_email_mode_rfc5322:>'
     13        rfc5322: '<:verifier:option_email_mode_5322:>'
    1414      defaut: 'normal'
    1515  -
Note: See TracChangeset for help on using the changeset viewer.