Changeset 93568 in spip-zone


Ignore:
Timestamp:
Dec 11, 2015, 7:33:18 PM (5 years ago)
Author:
teddy.spip@…
Message:

Éviter des warnings PHP, notamment recontrés sur les formulaires du plugin formidable. Up de z

Location:
_plugins_/saisies/trunk
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/saisies/trunk/inc/saisies_afficher.php

    r93501 r93568  
    22
    33/**
    4  * Gestion de l'affichage des saisies
     4 * Gestion de l'affichage des saisies.
    55 *
    66 * @return SPIP\Saisies\Afficher
    7 **/
     7 **/
    88
    99// Sécurité
    10 if (!defined('_ECRIRE_INC_VERSION')) return;
     10if (!defined('_ECRIRE_INC_VERSION')) {
     11        return;
     12}
    1113
    1214/**
     
    2224 *
    2325 * @param array $champ
    24  *     Tableau de description de la saisie
     26 *                                 Tableau de description de la saisie
    2527 * @param array $env
    26  *     Environnement transmis à la saisie, certainement l'environnement du formulaire
    27  * @param bool $utiliser_editable
    28  *     - false pour juste tester le cas -1
     28 *                                 Environnement transmis à la saisie, certainement l'environnement du formulaire
     29 * @param bool  $utiliser_editable
     30 *                                 - false pour juste tester le cas -1
    2931 *
    3032 * @return bool
    31  *     Retourne un booléen indiquant l'état éditable ou pas :
    32  *     - true si la saisie est éditable (peut être affichée)
    33  *     - false sinon
     33 *              Retourne un booléen indiquant l'état éditable ou pas :
     34 *              - true si la saisie est éditable (peut être affichée)
     35 *              - false sinon
    3436 */
    35 function saisie_editable($champ, $env, $utiliser_editable=true) {
     37function saisie_editable($champ, $env, $utiliser_editable = true) {
    3638        if ($utiliser_editable) {
    3739                // si le champ n'est pas éditable, on sort.
     
    5557                $nom = $champ['options']['nom'];
    5658                if (isset($env[$nom])) {
    57                         return $env[$nom] ? true : false ;
     59                        return $env[$nom] ? true : false;
    5860                }
    5961        }
    6062        // sinon, si on a des sous saisies
    6163        if (isset($champ['saisies']) and is_array($champ['saisies'])) {
    62                 foreach($champ['saisies'] as $saisie) {
     64                foreach ($champ['saisies'] as $saisie) {
    6365                        if (saisie_editable($saisie, $env, false)) {
    6466                                return true;
     
    7274
    7375/**
    74  * Génère une saisie à partir d'un tableau la décrivant et de l'environnement
     76 * Génère une saisie à partir d'un tableau la décrivant et de l'environnement.
    7577 *
    7678 * @param array $champ
    77  *     Description de la saisie.
    78  *     Le tableau doit être de la forme suivante :
    79  *     array(
    80  *              'saisie' => 'input',
    81  *              'options' => array(
    82  *                      'nom' => 'le_name',
    83  *                      'label' => 'Un titre plus joli',
    84  *                      'obligatoire' => 'oui',
    85  *                      'explication' => 'Remplissez ce champ en utilisant votre clavier.'
    86  *              )
    87  *     )
     79 *                     Description de la saisie.
     80 *                     Le tableau doit être de la forme suivante :
     81 *                     array(
     82 *                     'saisie' => 'input',
     83 *                     'options' => array(
     84 *                     'nom' => 'le_name',
     85 *                     'label' => 'Un titre plus joli',
     86 *                     'obligatoire' => 'oui',
     87 *                     'explication' => 'Remplissez ce champ en utilisant votre clavier.'
     88 *                     )
     89 *                     )
    8890 * @param array $env
    89  *     Environnement du formulaire
    90  *     Permet de savoir les valeurs actuelles des contenus des saisies,
    91  *     les erreurs eventuelles présentes...
     91 *                     Environnement du formulaire
     92 *                     Permet de savoir les valeurs actuelles des contenus des saisies,
     93 *                     les erreurs eventuelles présentes...
     94 *
    9295 * @return string
    93  *     Code HTML des saisies de formulaire
     96 *                Code HTML des saisies de formulaire
    9497 */
    95 function saisies_generer_html($champ, $env=array()){
     98function saisies_generer_html($champ, $env = array()) {
    9699        // Si le parametre n'est pas bon, on genere du vide
    97         if (!is_array($champ))
     100        if (!is_array($champ)) {
    98101                return '';
     102        }
    99103
    100104        // Si la saisie n'est pas editable, on sort aussi.
     
    113117
    114118        // Peut-être des transformations à faire sur les options textuelles
    115         $options = $champ['options'];
    116         foreach ($options as $option => $valeur){
     119        $options = isset($champ['options']) ? $champ['options'] : array();
     120        foreach ($options as $option => $valeur) {
    117121                if ($option == 'datas') {
    118122                        // exploser une chaine datas en tableau (applique _T_ou_typo sur chaque valeur)
     
    132136
    133137        // Si env est définie dans les options ou qu'il y a des enfants, on ajoute tout l'environnement
    134         if (isset($contexte['env']) or (isset($champ['saisies']) AND is_array($champ['saisies']))) {
     138        if (isset($contexte['env']) or (isset($champ['saisies']) and is_array($champ['saisies']))) {
    135139                unset($contexte['env']);
    136140
     
    146150                if (isset($saisies_disponibles[$contexte['type_saisie']]) and is_array($saisies_disponibles[$contexte['type_saisie']]['options'])) {
    147151                        $options_a_supprimer = saisies_lister_champs($saisies_disponibles[$contexte['type_saisie']]['options']);
    148                         foreach ($options_a_supprimer as $option_a_supprimer){
     152                        foreach ($options_a_supprimer as $option_a_supprimer) {
    149153                                unset($env[$option_a_supprimer]);
    150154                        }
     
    154158        }
    155159        // Sinon on ne sélectionne que quelques éléments importants
    156         else{
     160        else {
    157161                // On récupère la liste des erreurs
    158162                $contexte['erreurs'] = $env['erreurs'];
    159163                // On récupère la langue de l'objet si existante
    160                 if(isset($env['langue']))
     164                if (isset($env['langue'])) {
    161165                        $contexte['langue'] = $env['langue'];
     166                }
    162167                // On ajoute toujours le bon self
    163168                $contexte['self'] = self();
     
    166171        // Dans tous les cas on récupère de l'environnement la valeur actuelle du champ
    167172        // Si le nom du champ est un tableau indexé, il faut parser !
    168         if (preg_match('/([\w]+)((\[[\w]+\])+)/', $contexte['nom'], $separe)){
     173        if (isset($contexte['nom']) and preg_match('/([\w]+)((\[[\w]+\])+)/', $contexte['nom'], $separe)) {
    169174                $contexte['valeur'] = $env[$separe[1]];
    170175                preg_match_all('/\[([\w]+)\]/', $separe[2], $index);
    171176                // On va chercher au fond du tableau
    172                 foreach($index[1] as $cle){
     177                foreach ($index[1] as $cle) {
    173178                        $contexte['valeur'] = isset($contexte['valeur'][$cle]) ? $contexte['valeur'][$cle] : null;
    174179                }
     
    176181        // Sinon la valeur est juste celle du nom
    177182        else {
    178                 $contexte['valeur'] = (isset($env[$contexte['nom']]) ? $env[$contexte['nom']] : null);
     183                $contexte['valeur'] = (isset($contexte['nom']) and isset($env[$contexte['nom']]) ? $env[$contexte['nom']] : null);
    179184        }
    180185
     
    192197
    193198/**
    194  * Génère une vue d'une saisie à partir d'un tableau la décrivant
     199 * Génère une vue d'une saisie à partir d'un tableau la décrivant.
    195200 *
    196201 * @see saisies_generer_html()
     202 *
    197203 * @param array $saisie
    198  *     Tableau de description d'une saisie
     204 *                               Tableau de description d'une saisie
    199205 * @param array $env
    200  *     L'environnement, contenant normalement la réponse à la saisie
     206 *                               L'environnement, contenant normalement la réponse à la saisie
    201207 * @param array $env_obligatoire
    202  *     ???
     208 *                               ???
     209 *
    203210 * @return string
    204  *     Code HTML de la vue de la saisie
     211 *                Code HTML de la vue de la saisie
    205212 */
    206 function saisies_generer_vue($saisie, $env=array(), $env_obligatoire=array()){
     213function saisies_generer_vue($saisie, $env = array(), $env_obligatoire = array()) {
    207214        // Si le paramètre n'est pas bon, on génère du vide
    208         if (!is_array($saisie))
     215        if (!is_array($saisie)) {
    209216                return '';
     217        }
    210218
    211219        $contexte = array();
     
    216224        // Peut-être des transformations à faire sur les options textuelles
    217225        $options = $saisie['options'];
    218         foreach ($options as $option => $valeur){
     226        foreach ($options as $option => $valeur) {
    219227                if ($option == 'datas') {
    220228                        // exploser une chaine datas en tableau (applique _T_ou_typo sur chaque valeur)
     
    229237
    230238        // Si env est définie dans les options ou qu'il y a des enfants, on ajoute tout l'environnement
    231         if (isset($contexte['env']) or (isset($saisie['saisies']) AND is_array($saisie['saisies']))){
     239        if (isset($contexte['env']) or (isset($saisie['saisies']) and is_array($saisie['saisies']))) {
    232240                unset($contexte['env']);
    233241
     
    242250
    243251                if (isset($saisies_disponibles[$contexte['type_saisie']]['options'])
    244                         and is_array($saisies_disponibles[$contexte['type_saisie']]['options']))
    245                 {
     252                        and is_array($saisies_disponibles[$contexte['type_saisie']]['options'])) {
    246253                        $options_a_supprimer = saisies_lister_champs($saisies_disponibles[$contexte['type_saisie']]['options']);
    247254                        foreach ($options_a_supprimer as $option_a_supprimer) {
     
    256263
    257264        // On regarde en priorité s'il y a un tableau listant toutes les valeurs
    258         if ($env['valeurs'] and is_array($env['valeurs']) and isset($env['valeurs'][$contexte['nom']])){
     265        if ($env['valeurs'] and is_array($env['valeurs']) and isset($env['valeurs'][$contexte['nom']])) {
    259266                $contexte['valeur'] = $env['valeurs'][$contexte['nom']];
    260267        }
    261268        // Si le nom du champ est un tableau indexé, il faut parser !
    262         elseif (preg_match('/([\w]+)((\[[\w]+\])+)/', $contexte['nom'], $separe)){
     269        elseif (preg_match('/([\w]+)((\[[\w]+\])+)/', $contexte['nom'], $separe)) {
    263270                $contexte['valeur'] = $env[$separe[1]];
    264271                preg_match_all('/\[([\w]+)\]/', $separe[2], $index);
    265272                // On va chercher au fond du tableau
    266                 foreach($index[1] as $cle){
     273                foreach ($index[1] as $cle) {
    267274                        $contexte['valeur'] = $contexte['valeur'][$cle];
    268275                }
     
    275282
    276283        // Si ya des enfants on les remonte dans le contexte
    277         if (isset($saisie['saisies']) AND is_array($saisie['saisies']))
     284        if (isset($saisie['saisies']) and is_array($saisie['saisies'])) {
    278285                $contexte['saisies'] = $saisie['saisies'];
     286        }
    279287
    280288        if (is_array($env_obligatoire)) {
     
    293301 * pour produire un affichage conditionnel des saisies ayant une option afficher_si ou afficher_si_remplissage.
    294302 *
    295  * @param array $saisies
    296  *     Tableau de descriptions des saisies
     303 * @param array  $saisies
     304 *                        Tableau de descriptions des saisies
    297305 * @param string $id_form
    298  *     Identifiant unique pour le formulaire
     306 *                        Identifiant unique pour le formulaire
     307 *
    299308 * @return text
    300  *     Code javascript
     309 *              Code javascript
    301310 */
    302 function saisies_generer_js_afficher_si($saisies,$id_form){
     311function saisies_generer_js_afficher_si($saisies, $id_form) {
    303312        $i = 0;
    304         $saisies = saisies_lister_par_nom($saisies,true);
     313        $saisies = saisies_lister_par_nom($saisies, true);
    305314        $code = '';
    306315        $code .= '(function($){';
    307316        $code .= '$(document).ready(function(){chargement=true;';
    308                 $code .= 'verifier_saisies_'.$id_form." = function(form){\n";
    309                                 foreach ($saisies as $saisie) {
    310                                         // on utilise comme selecteur l'identifiant de saisie en priorite s'il est connu
     317        $code .= 'verifier_saisies_'.$id_form." = function(form){\n";
     318        foreach ($saisies as $saisie) {
     319                // on utilise comme selecteur l'identifiant de saisie en priorite s'il est connu
    311320                                        // parce que conteneur_class = 'tableau[nom][option]' ne fonctionne evidement pas
    312321                                        // lorsque le name est un tableau
    313322                                        if (isset($saisie['options']['afficher_si']) or isset($saisie['options']['afficher_si_remplissage'])) {
    314                                                 $i++;
     323                                                ++$i;
    315324                                                // retrouver la classe css probable
    316325                                                switch ($saisie['saisie']) {
     
    326335                                                $afficher_si = isset($saisie['options']['afficher_si']) ? $saisie['options']['afficher_si'] : '';
    327336                                                $afficher_si_remplissage = isset($saisie['options']['afficher_si_remplissage']) ? $saisie['options']['afficher_si_remplissage'] : '';
    328                                                 $condition = join("\n", array_filter(array($afficher_si, $afficher_si_remplissage)));
     337                                                $condition = implode("\n", array_filter(array($afficher_si, $afficher_si_remplissage)));
    329338                                                // retrouver l'identifiant
    330339                                                $identifiant = '';
     
    335344                                                preg_match_all('#@plugin:(.+)@#U', $condition, $matches);
    336345                                                foreach ($matches[1] as $plug) {
    337                                                         if (defined('_DIR_PLUGIN_'.strtoupper($plug)))
     346                                                        if (defined('_DIR_PLUGIN_'.strtoupper($plug))) {
    338347                                                                $condition = preg_replace('#@plugin:'.$plug.'@#U', 'true', $condition);
    339                                                         else
     348                                                        } else {
    340349                                                                $condition = preg_replace('#@plugin:'.$plug.'@#U', 'false', $condition);
     350                                                        }
    341351                                                }
    342352                                                // On gère le cas @config:plugin:meta@ suivi d'un test
     
    349359                                                preg_match_all('#@(.+)@#U', $condition, $matches);
    350360                                                foreach ($matches[1] as $nom) {
    351                                                         switch($saisies[$nom]['saisie']) {
     361                                                        switch ($saisies[$nom]['saisie']) {
    352362                                                                case 'radio':
    353363                                                                case 'oui_non':
     
    362372                                                                        foreach ($matches2[2] as $value) {
    363373                                                                                $condition = preg_replace('#@'.preg_quote($nom).'@#U', '($(form).find(".checkbox[name=\''.$nom.'[]\'][value='.$value.']").is(":checked") ? $(form).find(".checkbox[name=\''.$nom.'[]\'][value='.$value.']").val() : "")', $condition);
    364                                                                                 }
     374                                                                        }
    365375                                                                        break;
    366376                                                                default:
     
    376386                                                $code .= 'else {if (chargement==true) {$(form).find("'.$sel.'").hide(400).css("display","none");} else {$(form).find("'.$sel.'").hide(400);};} '."\n";
    377387                                        }
    378                                 }
    379                 $code .= "};";
    380                 $code .= '$("#afficher_si_'.$id_form.'").parents("form").each(function(){verifier_saisies_'.$id_form.'(this);});';
    381                 $code .= '$("#afficher_si_'.$id_form.'").parents("form").change(function(){verifier_saisies_'.$id_form.'(this);});';
     388        }
     389        $code .= '};';
     390        $code .= '$("#afficher_si_'.$id_form.'").parents("form").each(function(){verifier_saisies_'.$id_form.'(this);});';
     391        $code .= '$("#afficher_si_'.$id_form.'").parents("form").change(function(){verifier_saisies_'.$id_form.'(this);});';
    382392        $code .= 'chargement=false;})';
    383393        $code .= '})(jQuery);';
    384         return $i>0 ? $code : '';
     394
     395        return $i > 0 ? $code : '';
    385396}
    386397
     
    393404 * (on passe leur valeur à NULL).
    394405 *
    395  * @param array $saisies
    396  *     Tableau de descriptions de saisies
     406 * @param array      $saisies
     407 *                            Tableau de descriptions de saisies
    397408 * @param array|null $env
    398  *     Tableau d'environnement transmis dans inclure/voi_saisies.html,
    399  *     NULL si on doit rechercher dans _request (pour saisies_verifier()).
     409 *                            Tableau d'environnement transmis dans inclure/voi_saisies.html,
     410 *                            NULL si on doit rechercher dans _request (pour saisies_verifier()).
     411 *
    400412 * @return array
    401  *     Tableau de descriptions de saisies
     413 *               Tableau de descriptions de saisies
    402414 */
    403 function saisies_verifier_afficher_si($saisies, $env=NULL) {
     415function saisies_verifier_afficher_si($saisies, $env = null) {
    404416        // eviter une erreur par maladresse d'appel :)
    405417        if (!is_array($saisies)) {
     
    412424                        preg_match_all('#@plugin:(.+)@#U', $condition, $matches);
    413425                        foreach ($matches[1] as $plug) {
    414                                 if (defined('_DIR_PLUGIN_'.strtoupper($plug)))
     426                                if (defined('_DIR_PLUGIN_'.strtoupper($plug))) {
    415427                                        $condition = preg_replace('#@plugin:'.$plug.'@#U', 'true', $condition);
    416                                 else
     428                                } else {
    417429                                        $condition = preg_replace('#@plugin:'.$plug.'@#U', 'false', $condition);
     430                                }
    418431                        }
    419432                        // On gère le cas @config:plugin:meta@ suivi d'un test
     
    424437                        }
    425438                        // On transforme en une condition valide
    426                         if (is_null($env))
     439                        if (is_null($env)) {
    427440                                $condition = preg_replace('#@(.+)@#U', '_request(\'$1\')', $condition);
    428                         else
     441                        } else {
    429442                                $condition = preg_replace('#@(.+)@#U', '$env["valeurs"][\'$1\']', $condition);
     443                        }
    430444                        eval('$ok = '.$condition.';');
    431445                        if (!$ok) {
    432446                                unset($saisies[$cle]);
    433                                 if (is_null($env)) set_request($saisie['options']['nom'],NULL);
    434                         }
    435                 }
    436                 if (isset($saisies[$cle]['saisies'])) // S'il s'agit d'un fieldset ou equivalent, verifier les sous-saisies
     447                                if (is_null($env)) {
     448                                        set_request($saisie['options']['nom'], null);
     449                                }
     450                        }
     451                }
     452                if (isset($saisies[$cle]['saisies'])) { // S'il s'agit d'un fieldset ou equivalent, verifier les sous-saisies
    437453                        $saisies[$cle]['saisies'] = saisies_verifier_afficher_si($saisies[$cle]['saisies'], $env);
    438         }
     454                }
     455        }
     456
    439457        return $saisies;
    440458}
  • _plugins_/saisies/trunk/inc/saisies_lister.php

    r87652 r93568  
    22
    33/**
    4  * Gestion de listes des saisies
     4 * Gestion de listes des saisies.
    55 *
    66 * @return SPIP\Saisies\Listes
    7 **/
     7 **/
    88
    99// Sécurité
    10 if (!defined('_ECRIRE_INC_VERSION')) return;
     10if (!defined('_ECRIRE_INC_VERSION')) {
     11        return;
     12}
    1113
    1214/**
     
    1416 * les saisies "à plat" classées par identifiant unique.
    1517 *
    16  * @param array $contenu Le contenu d'un formulaire
    17  * @param bool $avec_conteneur Indique si on renvoie aussi les saisies ayant des enfants, comme les fieldsets
     18 * @param array $contenu        Le contenu d'un formulaire
     19 * @param bool  $avec_conteneur Indique si on renvoie aussi les saisies ayant des enfants, comme les fieldsets
     20 *
    1821 * @return array Un tableau avec uniquement les saisies
    1922 */
    20 function saisies_lister_par_identifiant($contenu, $avec_conteneur=true){
     23function saisies_lister_par_identifiant($contenu, $avec_conteneur = true) {
    2124        $saisies = array();
    2225
    23         if (is_array($contenu)){
    24                 foreach ($contenu as $ligne){
     26        if (is_array($contenu)) {
     27                foreach ($contenu as $ligne) {
    2528                        if (is_array($ligne)) {
    2629                                $enfants_presents = (isset($ligne['saisies']) and is_array($ligne['saisies']));
    27                                 if (array_key_exists('saisie', $ligne) and (!$enfants_presents or $avec_conteneur)){
     30                                if (array_key_exists('saisie', $ligne) and (!$enfants_presents or $avec_conteneur)) {
    2831                                        $saisies[$ligne['identifiant']] = $ligne;
    2932                                }
     
    3437                }
    3538        }
    36        
     39
    3740        return $saisies;
    3841}
     
    4245 * les saisies "à plat" classées par nom.
    4346 *
    44  * @param array $contenu Le contenu d'un formulaire
    45  * @param bool $avec_conteneur Indique si on renvoie aussi les saisies ayant des enfants, comme les fieldset
     47 * @param array $contenu        Le contenu d'un formulaire
     48 * @param bool  $avec_conteneur Indique si on renvoie aussi les saisies ayant des enfants, comme les fieldset
     49 *
    4650 * @return array Un tableau avec uniquement les saisies
    4751 */
    48 function saisies_lister_par_nom($contenu, $avec_conteneur=true){
     52function saisies_lister_par_nom($contenu, $avec_conteneur = true) {
    4953        $saisies = array();
    50        
    51         if (is_array($contenu)){
    52                 foreach ($contenu as $ligne){
    53                         if (is_array($ligne)){
    54                                 if (array_key_exists('saisie', $ligne) and (!isset($ligne['saisies']) OR !is_array($ligne['saisies']) or $avec_conteneur)){
     54
     55        if (is_array($contenu)) {
     56                foreach ($contenu as $ligne) {
     57                        if (is_array($ligne)) {
     58                                if (array_key_exists('saisie', $ligne) and (!isset($ligne['saisies']) or !is_array($ligne['saisies']) or $avec_conteneur) and isset($ligne['options'])) {
    5559                                        $saisies[$ligne['options']['nom']] = $ligne;
    5660                                }
    57                                 if (isset($ligne['saisies']) AND is_array($ligne['saisies'])){
     61                                if (isset($ligne['saisies']) and is_array($ligne['saisies'])) {
    5862                                        $saisies = array_merge($saisies, saisies_lister_par_nom($ligne['saisies']));
    5963                                }
     
    6165                }
    6266        }
    63        
     67
    6468        return $saisies;
    6569}
     
    6771/**
    6872 * Liste les saisies ayant une option X
    69  * # saisies_lister_avec_option('sql', $saisies);
    70  * 
    71  *
    72  * @param String $option Nom de l'option cherchée
    73  * @param Array $saisies Liste de saisies
    74  * @param String $tri tri par défaut des résultats (s'ils ne sont pas deja triés) ('nom', 'identifiant')
     73 * # saisies_lister_avec_option('sql', $saisies);.
     74 *
     75 *
     76 * @param String $option  Nom de l'option cherchée
     77 * @param Array  $saisies Liste de saisies
     78 * @param String $tri     tri par défaut des résultats (s'ils ne sont pas deja triés) ('nom', 'identifiant')
     79 *
    7580 * @return liste de ces saisies triees par nom ayant une option X définie
    7681 */
     
    8085        $s = array_keys($saisies);
    8186        if (is_int(array_shift($s))) {
    82                 $trier = 'saisies_lister_par_' . $tri;
     87                $trier = 'saisies_lister_par_'.$tri;
    8388                $saisies = $trier($saisies);
    8489        }
     
    9398
    9499/**
    95  * Liste les saisies ayant une definition SQL
    96  *
    97  * @param Array $saisies liste de saisies
    98  * @param String $tri tri par défaut des résultats (s'ils ne sont pas deja triés) ('nom', 'identifiant')
     100 * Liste les saisies ayant une definition SQL.
     101 *
     102 * @param Array  $saisies liste de saisies
     103 * @param String $tri     tri par défaut des résultats (s'ils ne sont pas deja triés) ('nom', 'identifiant')
     104 *
    99105 * @return liste de ces saisies triees par nom ayant une option sql définie
    100106 */
     
    106112 * Prend la description complète du contenu d'un formulaire et retourne
    107113 * les saisies "à plat" classées par type de saisie.
    108  * $saisie['input']['input_1'] = $saisie
     114 * $saisie['input']['input_1'] = $saisie.
    109115 *
    110116 * @param array $contenu Le contenu d'un formulaire
     117 *
    111118 * @return array Un tableau avec uniquement les saisies
    112119 */
    113120function saisies_lister_par_type($contenu) {
    114121        $saisies = array();
    115        
    116         if (is_array($contenu)){
    117                 foreach ($contenu as $ligne){
    118                         if (is_array($ligne)){
    119                                 if (array_key_exists('saisie', $ligne) and (!is_array($ligne['saisies']))){
     122
     123        if (is_array($contenu)) {
     124                foreach ($contenu as $ligne) {
     125                        if (is_array($ligne)) {
     126                                if (array_key_exists('saisie', $ligne) and (!is_array($ligne['saisies']))) {
    120127                                        $saisies[ $ligne['saisie'] ][ $ligne['options']['nom'] ] = $ligne;
    121128                                }
    122                                 if (is_array($ligne['saisies'])){
     129                                if (is_array($ligne['saisies'])) {
    123130                                        $saisies = array_merge_recursive($saisies, saisies_lister_par_type($ligne['saisies']));
    124131                                }
     
    126133                }
    127134        }
    128        
     135
    129136        return $saisies;
    130137}
     
    134141 * une liste des noms des champs du formulaire.
    135142 *
    136  * @param array $contenu Le contenu d'un formulaire
    137  * @param bool $avec_conteneur Indique si on renvoie aussi les saisies ayant des enfants, comme les fieldset
     143 * @param array $contenu        Le contenu d'un formulaire
     144 * @param bool  $avec_conteneur Indique si on renvoie aussi les saisies ayant des enfants, comme les fieldset
     145 *
    138146 * @return array Un tableau listant les noms des champs
    139147 */
    140 function saisies_lister_champs($contenu, $avec_conteneur=true){
     148function saisies_lister_champs($contenu, $avec_conteneur = true) {
    141149        $saisies = saisies_lister_par_nom($contenu, $avec_conteneur);
     150
    142151        return array_keys($saisies);
    143152}
     
    146155 * A utiliser dans une fonction charger d'un formulaire CVT,
    147156 * cette fonction renvoie le tableau de contexte correspondant
    148  * de la forme $contexte['nom_champ'] = ''
     157 * de la forme $contexte['nom_champ'] = ''.
    149158 *
    150159 * @param array $contenu Le contenu d'un formulaire (un tableau de saisies)
     160 *
    151161 * @return array Un tableau de contexte
    152162 */
     
    155165        // return array_fill_keys(saisies_lister_champs($contenu, false), '');
    156166        $champs = array();
    157         foreach (saisies_lister_champs($contenu, false) as $champ)
     167        foreach (saisies_lister_champs($contenu, false) as $champ) {
    158168                $champs[$champ] = '';
     169        }
     170
    159171        return $champs;
    160172}
     
    165177 *
    166178 * @param array $contenu Le contenu d'un formulaire
     179 *
    167180 * @return array Un tableau renvoyant la valeur par défaut de chaque champs
    168181 */
    169 function saisies_lister_valeurs_defaut($contenu){
     182function saisies_lister_valeurs_defaut($contenu) {
    170183        $contenu = saisies_lister_par_nom($contenu, false);
    171184        $defauts = array();
    172         foreach ($contenu as $nom => $saisie){
     185        foreach ($contenu as $nom => $saisie) {
    173186                // Si le nom du champ est un tableau indexé, il faut parser !
    174                 if (preg_match('/([\w]+)((\[[\w]+\])+)/', $nom, $separe)){
     187                if (preg_match('/([\w]+)((\[[\w]+\])+)/', $nom, $separe)) {
    175188                        $nom = $separe[1];
    176189                        // Dans ce cas on ne récupère que le nom, la valeur par défaut du tableau devra être renseigné autre part
    177190                        $defauts[$nom] = array();
    178                 }
    179                 else{
     191                } else {
    180192                        $defauts[$nom] = isset($saisie['options']['defaut']) ? $saisie['options']['defaut'] : '';
    181193                }
    182194        }
     195
    183196        return $defauts;
    184197}
    185198
    186199/**
    187  * Compare deux tableaux de saisies pour connaitre les différences
    188  * @param array $saisies_anciennes Un tableau décrivant des saisies
    189  * @param array $saisies_nouvelles Un autre tableau décrivant des saisies
    190  * @param bool $avec_conteneur Indique si on veut prendre en compte dans la comparaison les conteneurs comme les fieldsets
    191  * @param string $tri Comparer selon quel tri ? 'nom' / 'identifiant'
     200 * Compare deux tableaux de saisies pour connaitre les différences.
     201 *
     202 * @param array  $saisies_anciennes Un tableau décrivant des saisies
     203 * @param array  $saisies_nouvelles Un autre tableau décrivant des saisies
     204 * @param bool   $avec_conteneur    Indique si on veut prendre en compte dans la comparaison les conteneurs comme les fieldsets
     205 * @param string $tri               Comparer selon quel tri ? 'nom' / 'identifiant'
     206 *
    192207 * @return array Retourne le tableau des saisies supprimées, ajoutées et modifiées
    193208 */
    194 function saisies_comparer($saisies_anciennes, $saisies_nouvelles, $avec_conteneur=true, $tri = 'nom') {
     209function saisies_comparer($saisies_anciennes, $saisies_nouvelles, $avec_conteneur = true, $tri = 'nom') {
    195210        $trier = "saisies_lister_par_$tri";
    196211        $saisies_anciennes = $trier($saisies_anciennes, $avec_conteneur);
    197212        $saisies_nouvelles = $trier($saisies_nouvelles, $avec_conteneur);
    198        
     213
    199214        // Les saisies supprimées sont celles qui restent dans les anciennes quand on a enlevé toutes les nouvelles
    200215        $saisies_supprimees = array_diff_key($saisies_anciennes, $saisies_nouvelles);
     
    208223        // Et enfin les saisies qui ont le même nom et la même valeur
    209224        $saisies_identiques = array_diff_key($saisies_restantes, $saisies_modifiees);
    210        
     225
    211226        return array(
    212227                'supprimees' => $saisies_supprimees,
    213228                'ajoutees' => $saisies_ajoutees,
    214229                'modifiees' => $saisies_modifiees,
    215                 'identiques' => $saisies_identiques
     230                'identiques' => $saisies_identiques,
    216231        );
    217232}
    218233
    219234/**
    220  * Compare deux saisies et indique si elles sont égales ou pas
     235 * Compare deux saisies et indique si elles sont égales ou pas.
    221236 *
    222237 * @param array $a Une description de saisie
    223238 * @param array $b Une autre description de saisie
     239 *
    224240 * @return int Retourne 0 si les saisies sont identiques, 1 sinon.
    225241 */
    226 function saisies_comparer_rappel($a, $b){
    227         if ($a === $b) return 0;
    228         else return 1;
     242function saisies_comparer_rappel($a, $b) {
     243        if ($a === $b) {
     244                return 0;
     245        } else {
     246                return 1;
     247        }
    229248}
    230249
    231250/**
    232251 * Compare deux tableaux de saisies pour connaitre les différences
    233  * en s'appuyant sur les identifiants de saisies
     252 * en s'appuyant sur les identifiants de saisies.
    234253 *
    235254 * @see saisies_comparer()
     255 *
    236256 * @param array $saisies_anciennes Un tableau décrivant des saisies
    237257 * @param array $saisies_nouvelles Un autre tableau décrivant des saisies
    238  * @param bool $avec_conteneur Indique si on veut prendre en compte dans la comparaison les conteneurs comme les fieldsets
     258 * @param bool  $avec_conteneur    Indique si on veut prendre en compte dans la comparaison les conteneurs comme les fieldsets
     259 *
    239260 * @return array Retourne le tableau des saisies supprimées, ajoutées et modifiées
    240261 */
    241 function saisies_comparer_par_identifiant($saisies_anciennes, $saisies_nouvelles, $avec_conteneur=true) {
     262function saisies_comparer_par_identifiant($saisies_anciennes, $saisies_nouvelles, $avec_conteneur = true) {
    242263        return saisies_comparer($saisies_anciennes, $saisies_nouvelles, $avec_conteneur, $tri = 'identifiant');
    243264}
    244265
    245266/**
    246  * Liste toutes les saisies configurables (ayant une description)
     267 * Liste toutes les saisies configurables (ayant une description).
    247268 *
    248269 * @return array Un tableau listant des saisies et leurs options
    249270 */
    250 function saisies_lister_disponibles(){
     271function saisies_lister_disponibles() {
    251272        static $saisies = null;
    252        
    253         if (is_null($saisies)){
     273
     274        if (is_null($saisies)) {
    254275                $saisies = array();
    255276                $liste = find_all_in_path('saisies/', '.+[.]yaml$');
    256                
    257                 if (count($liste)){
    258                         foreach ($liste as $fichier=>$chemin){
     277
     278                if (count($liste)) {
     279                        foreach ($liste as $fichier => $chemin) {
    259280                                $type_saisie = preg_replace(',[.]yaml$,i', '', $fichier);
    260281                                $dossier = str_replace($fichier, '', $chemin);
     
    264285                                                is_array($saisie = saisies_charger_infos($type_saisie))
    265286                                        )
    266                                 ){
     287                                ) {
    267288                                        $saisies[$type_saisie] = $saisie;
    268289                                }
     
    270291                }
    271292        }
    272        
    273         return $saisies;
    274 }
    275 
    276 /**
    277  * Lister les saisies existantes ayant une définition SQL 
     293
     294        return $saisies;
     295}
     296
     297/**
     298 * Lister les saisies existantes ayant une définition SQL.
    278299 *
    279300 * @return array Un tableau listant des saisies et leurs options
     
    282303        $saisies = array();
    283304        $saisies_disponibles = saisies_lister_disponibles();
    284         foreach ($saisies_disponibles as $type=>$saisie) {
     305        foreach ($saisies_disponibles as $type => $saisie) {
    285306                if (isset($saisie['defaut']['options']['sql']) and $saisie['defaut']['options']['sql']) {
    286307                        $saisies[$type] = $saisie;
    287308                }
    288309        }
    289         return $saisies;
    290 }
    291 
    292 /**
    293  * Charger les informations contenues dans le YAML d'une saisie
     310
     311        return $saisies;
     312}
     313
     314/**
     315 * Charger les informations contenues dans le YAML d'une saisie.
    294316 *
    295317 * @param string $type_saisie Le type de la saisie
     318 *
    296319 * @return array Un tableau contenant le YAML décodé
    297320 */
    298 function saisies_charger_infos($type_saisie){
    299         if(defined('_DIR_PLUGIN_YAML')){
     321function saisies_charger_infos($type_saisie) {
     322        if (defined('_DIR_PLUGIN_YAML')) {
    300323                include_spip('inc/yaml');
    301324                $fichier = find_in_path("saisies/$type_saisie.yaml");
    302325                $saisie = yaml_decode_file($fichier);
    303                 if (is_array($saisie)){
    304                         $saisie['titre'] = (isset($saisie['titre']) AND $saisie['titre'])
     326                if (is_array($saisie)) {
     327                        $saisie['titre'] = (isset($saisie['titre']) and $saisie['titre'])
    305328                                ? _T_ou_typo($saisie['titre']) : $type_saisie;
    306                         $saisie['description'] = (isset($saisie['description']) AND $saisie['description'])
     329                        $saisie['description'] = (isset($saisie['description']) and $saisie['description'])
    307330                                ? _T_ou_typo($saisie['description']) : '';
    308                         $saisie['icone'] = (isset($saisie['icone']) AND $saisie['icone'])
     331                        $saisie['icone'] = (isset($saisie['icone']) and $saisie['icone'])
    309332                                ? find_in_path($saisie['icone']) : '';
    310333                }
    311         }else
     334        } else {
    312335                $saisie = array();
     336        }
     337
    313338        return $saisie;
    314339}
    315340
    316341/**
    317  * Quelles sont les saisies qui se débrouillent toutes seules, sans le _base commun
     342 * Quelles sont les saisies qui se débrouillent toutes seules, sans le _base commun.
    318343 *
    319344 * @return array Retourne un tableau contenant les types de saisies qui ne doivent pas utiliser le _base.html commun
    320345 */
    321 function saisies_autonomes(){
     346function saisies_autonomes() {
    322347        $saisies_autonomes = pipeline(
    323348                'saisies_autonomes',
     
    325350                        'fieldset',
    326351                        'hidden',
    327                         'destinataires', 
    328                         'explication'
     352                        'destinataires',
     353                        'explication',
    329354                )
    330355        );
    331        
     356
    332357        return $saisies_autonomes;
    333358}
    334 
  • _plugins_/saisies/trunk/inc/saisies_manipuler.php

    r87651 r93568  
    22
    33/**
    4  * Gestion de l'affichage des saisies
     4 * Gestion de l'affichage des saisies.
    55 *
    66 * @return SPIP\Saisies\Manipuler
    7 **/
     7 **/
    88
    99// Sécurité
    10 if (!defined('_ECRIRE_INC_VERSION')) return;
    11 
    12 /**
    13  * Supprimer une saisie dont on donne l'identifiant, le nom ou le chemin
    14  *
    15  * @param array $saisies
    16  *     Tableau des descriptions de saisies
     10if (!defined('_ECRIRE_INC_VERSION')) {
     11        return;
     12}
     13
     14/**
     15 * Supprimer une saisie dont on donne l'identifiant, le nom ou le chemin.
     16 *
     17 * @param array        $saisies
     18 *                                          Tableau des descriptions de saisies
    1719 * @param string|array $id_ou_nom_ou_chemin
    18  *     L'identifiant unique
    19  *     ou le nom de la saisie à supprimer
    20  *     ou son chemin sous forme d'une liste de clés
     20 *                                          L'identifiant unique
     21 *                                          ou le nom de la saisie à supprimer
     22 *                                          ou son chemin sous forme d'une liste de clés
     23 *
    2124 * @return array
    22  *     Tableau modifié décrivant les saisies
    23  */
    24 function saisies_supprimer($saisies, $id_ou_nom_ou_chemin){
     25 *               Tableau modifié décrivant les saisies
     26 */
     27function saisies_supprimer($saisies, $id_ou_nom_ou_chemin) {
    2528        // Si la saisie n'existe pas, on ne fait rien
    26         if ($chemin = saisies_chercher($saisies, $id_ou_nom_ou_chemin, true)){
     29        if ($chemin = saisies_chercher($saisies, $id_ou_nom_ou_chemin, true)) {
    2730                // La position finale de la saisie
    2831                $position = array_pop($chemin);
    29        
     32
    3033                // On va chercher le parent par référence pour pouvoir le modifier
    31                 $parent =& $saisies;
    32                 foreach($chemin as $cle){
    33                         $parent =& $parent[$cle];
    34                 }
    35                
     34                $parent = &$saisies;
     35                foreach ($chemin as $cle) {
     36                        $parent = &$parent[$cle];
     37                }
     38
    3639                // On supprime et réordonne
    3740                unset($parent[$position]);
    3841                $parent = array_values($parent);
    3942        }
    40        
    41         return $saisies;
    42 }
    43 
    44 /**
    45  * Insère une saisie à une position donnée
     43
     44        return $saisies;
     45}
     46
     47/**
     48 * Insère une saisie à une position donnée.
    4649 *
    4750 * @param array $saisies
    48  *     Tableau des descriptions de saisies
     51 *                       Tableau des descriptions de saisies
    4952 * @param array $saisie
    50  *     Description de la saisie à insérer
     53 *                       Description de la saisie à insérer
    5154 * @param array $chemin
    52  *     Position complète où insérer la saisie.
    53  *     En absence, insère la saisie à la fin.
     55 *                       Position complète où insérer la saisie.
     56 *                       En absence, insère la saisie à la fin.
     57 *
    5458 * @return array
    55  *     Tableau des saisies complété de la saisie insérée
    56  */
    57 function saisies_inserer($saisies, $saisie, $chemin=array()){
     59 *               Tableau des saisies complété de la saisie insérée
     60 */
     61function saisies_inserer($saisies, $saisie, $chemin = array()) {
    5862        // On vérifie quand même que ce qu'on veut insérer est correct
    59         if ($saisie['saisie'] and $saisie['options']['nom']){
     63        if ($saisie['saisie'] and $saisie['options']['nom']) {
    6064                // ajouter un identifiant
    6165                $saisie = saisie_identifier($saisie);
    62                
     66
    6367                // Par défaut le parent c'est la racine
    64                 $parent =& $saisies;
     68                $parent = &$saisies;
    6569                // S'il n'y a pas de position, on va insérer à la fin du formulaire
    66                 if (!$chemin){
     70                if (!$chemin) {
    6771                        $position = count($parent);
    68                 }
    69                 elseif (is_array($chemin)){
     72                } elseif (is_array($chemin)) {
    7073                        $position = array_pop($chemin);
    71                         foreach ($chemin as $cle){
     74                        foreach ($chemin as $cle) {
    7275                                // Si la clé est un conteneur de saisies "saisies" et qu'elle n'existe pas encore, on la crée
    73                                 if ($cle == 'saisies' and !isset($parent[$cle]))
     76                                if ($cle == 'saisies' and !isset($parent[$cle])) {
    7477                                        $parent[$cle] = array();
    75                                 $parent =& $parent[$cle];
     78                                }
     79                                $parent = &$parent[$cle];
    7680                        }
    7781                        // On vérifie maintenant que la position est cohérente avec le parent
    78                         if ($position < 0) $position = 0;
    79                         elseif ($position > count($parent)) $position = count($parent);
     82                        if ($position < 0) {
     83                                $position = 0;
     84                        } elseif ($position > count($parent)) {
     85                                $position = count($parent);
     86                        }
    8087                }
    8188                // Et enfin on insère
    8289                array_splice($parent, $position, 0, array($saisie));
    8390        }
    84        
     91
    8592        return $saisies;
    8693}
     
    8996 * Duplique une saisie (ou groupe de saisies)
    9097 * en placant la copie à la suite de la saisie d'origine.
    91  * Modifie automatiquement les identifiants des saisies
    92  *
    93  * @param array $saisies Un tableau décrivant les saisies
     98 * Modifie automatiquement les identifiants des saisies.
     99 *
     100 * @param array        $saisies            Un tableau décrivant les saisies
    94101 * @param unknown_type $id_ou_nom_ou_chemin L'identifiant unique ou le nom ou le chemin de la saisie a dupliquer
     102 *
    95103 * @return array Retourne le tableau modifié des saisies
    96104 */
    97 function saisies_dupliquer($saisies, $id_ou_nom_ou_chemin){
     105function saisies_dupliquer($saisies, $id_ou_nom_ou_chemin) {
    98106        // On récupère le contenu de la saisie à déplacer
    99107        $saisie = saisies_chercher($saisies, $id_ou_nom_ou_chemin);
     
    103111                $chemin_validation = saisies_chercher($saisies, $id_ou_nom_ou_chemin, true);
    104112                // 1 de plus pour mettre APRES le champ trouve
    105                 $chemin_validation[count($chemin_validation)-1]++;
     113                ++$chemin_validation[count($chemin_validation) - 1];
    106114                // On ajoute "copie" après le label du champs
    107115                $clone['options']['label'] .= ' '._T('saisies:construire_action_dupliquer_copie');
     
    109117                // Création de nouveau identifiants pour le clone
    110118                $clone = saisie_identifier($clone, true);
    111                
     119
    112120                $saisies = saisies_inserer($saisies, $clone, $chemin_validation);
    113121        }
     
    117125
    118126/**
    119  * Déplace une saisie existante autre part
    120  *
    121  * @param array $saisies Un tableau décrivant les saisies
     127 * Déplace une saisie existante autre part.
     128 *
     129 * @param array        $saisies            Un tableau décrivant les saisies
    122130 * @param unknown_type $id_ou_nom_ou_chemin L'identifiant unique ou le nom ou le chemin de la saisie à déplacer
    123  * @param string $ou Le nom de la saisie devant laquelle on déplacera OU le nom d'un conteneur entre crochets [conteneur]
     131 * @param string       $ou                  Le nom de la saisie devant laquelle on déplacera OU le nom d'un conteneur entre crochets [conteneur]
     132 *
    124133 * @return array Retourne le tableau modifié des saisies
    125134 */
    126 function saisies_deplacer($saisies, $id_ou_nom_ou_chemin, $ou){
     135function saisies_deplacer($saisies, $id_ou_nom_ou_chemin, $ou) {
    127136        // On récupère le contenu de la saisie à déplacer
    128137        $saisie = saisies_chercher($saisies, $id_ou_nom_ou_chemin);
    129138
    130139        // Si on l'a bien trouvé
    131         if ($saisie){
     140        if ($saisie) {
    132141                // On cherche l'endroit où la déplacer
    133142                // Si $ou est vide, c'est à la fin de la racine
    134                 if (!$ou){
     143                if (!$ou) {
    135144                        $saisies = saisies_supprimer($saisies, $id_ou_nom_ou_chemin);
    136145                        $chemin = array(count($saisies));
    137146                }
    138147                // Si l'endroit est entre crochet, c'est un conteneur
    139                 elseif (preg_match('/^\[(@?[\w]*)\]$/', $ou, $match)){
     148                elseif (preg_match('/^\[(@?[\w]*)\]$/', $ou, $match)) {
    140149                        $parent = $match[1];
    141150                        // Si dans les crochets il n'y a rien, on met à la fin du formulaire
    142                         if (!$parent){
     151                        if (!$parent) {
    143152                                $saisies = saisies_supprimer($saisies, $id_ou_nom_ou_chemin);
    144153                                $chemin = array(count($saisies));
    145154                        }
    146155                        // Sinon on vérifie que ce conteneur existe
    147                         elseif (saisies_chercher($saisies, $parent, true)){
     156                        elseif (saisies_chercher($saisies, $parent, true)) {
    148157                                // S'il existe on supprime la saisie et on recherche la nouvelle position
    149158                                $saisies = saisies_supprimer($saisies, $id_ou_nom_ou_chemin);
    150159                                $parent = saisies_chercher($saisies, $parent, true);
    151160                                $chemin = array_merge($parent, array('saisies', 1000000));
    152                         }
    153                         else
     161                        } else {
    154162                                $chemin = false;
     163                        }
    155164                }
    156165                // Sinon ça sera devant un champ
    157                 else{
     166                else {
    158167                        // On vérifie que le champ existe
    159                         if (saisies_chercher($saisies, $ou, true)){
     168                        if (saisies_chercher($saisies, $ou, true)) {
    160169                                // S'il existe on supprime la saisie
    161170                                $saisies = saisies_supprimer($saisies, $id_ou_nom_ou_chemin);
    162171                                // Et on recherche la nouvelle position qui n'est plus forcément la même maintenant qu'on a supprimé une saisie
    163172                                $chemin = saisies_chercher($saisies, $ou, true);
    164                         }
    165                         else
     173                        } else {
    166174                                $chemin = false;
    167                 }
    168                
     175                        }
     176                }
     177
    169178                // Si seulement on a bien trouvé un nouvel endroit où la placer, alors on déplace
    170                 if ($chemin)
     179                if ($chemin) {
    171180                        $saisies = saisies_inserer($saisies, $saisie, $chemin);
    172         }
    173        
    174         return $saisies;
    175 }
    176 
    177 /**
    178  * Modifie une saisie
    179  *
    180  * @param array $saisies Un tableau décrivant les saisies
     181                }
     182        }
     183
     184        return $saisies;
     185}
     186
     187/**
     188 * Modifie une saisie.
     189 *
     190 * @param array        $saisies             Un tableau décrivant les saisies
    181191 * @param unknown_type $id_ou_nom_ou_chemin L'identifiant unique ou le nom ou le chemin de la saisie à modifier
    182  * @param array $modifs Le tableau des modifications à apporter à la saisie
     192 * @param array        $modifs              Le tableau des modifications à apporter à la saisie
     193 *
    183194 * @return Retourne le tableau décrivant les saisies, mais modifié
    184195 */
    185 function saisies_modifier($saisies, $id_ou_nom_ou_chemin, $modifs){
     196function saisies_modifier($saisies, $id_ou_nom_ou_chemin, $modifs) {
    186197        $chemin = saisies_chercher($saisies, $id_ou_nom_ou_chemin, true);
    187198        $position = array_pop($chemin);
    188         $parent =& $saisies;
    189         foreach ($chemin as $cle){
    190                 $parent =& $parent[$cle];
    191         }
    192        
     199        $parent = &$saisies;
     200        foreach ($chemin as $cle) {
     201                $parent = &$parent[$cle];
     202        }
     203
    193204        // On récupère le type tel quel
    194205        $modifs['saisie'] = $parent[$position]['saisie'];
    195206        // On récupère le nom s'il n'y est pas
    196         if (!isset($modifs['options']['nom'])){
     207        if (!isset($modifs['options']['nom'])) {
    197208                $modifs['options']['nom'] = $parent[$position]['options']['nom'];
    198209        }
     
    202213                and isset($parent[$position]['saisies'])
    203214                and is_array($parent[$position]['saisies'])
    204         ){
     215        ) {
    205216                $modifs['saisies'] = $parent[$position]['saisies'];
    206217        }
     
    212223                unset($modifs['options']['nouveau_type_saisie']);
    213224        }
    214                        
     225
    215226        // On remplace tout
    216227        $parent[$position] = $modifs;
    217        
     228
    218229        // Cette méthode ne marche pas trop
    219230        //$parent[$position] = array_replace_recursive($parent[$position], $modifs);
    220        
    221         return $saisies;
    222 }
    223 
    224 /**
    225  * Transforme tous les noms du formulaire avec un preg_replace
    226  *
    227  * @param array $saisies
    228  *     Un tableau décrivant les saisies
     231
     232        return $saisies;
     233}
     234
     235/**
     236 * Transforme tous les noms du formulaire avec un preg_replace.
     237 *
     238 * @param array  $saisies
     239 *                             Un tableau décrivant les saisies
    229240 * @param string $masque
    230  *     Ce que l'on doit chercher dans le nom
     241 *                             Ce que l'on doit chercher dans le nom
    231242 * @param string $remplacement
    232  *     Ce par quoi on doit remplacer
     243 *                             Ce par quoi on doit remplacer
     244 *
    233245 * @return array
    234  *     Retourne le tableau modifié des saisies
    235  */
    236 function saisies_transformer_noms($saisies, $masque, $remplacement){
    237         if (is_array($saisies)){
    238                 foreach ($saisies as $cle => $saisie){
    239                         $saisies[$cle]['options']['nom'] = preg_replace($masque, $remplacement, $saisie['options']['nom']);
     246 *               Retourne le tableau modifié des saisies
     247 */
     248function saisies_transformer_noms($saisies, $masque, $remplacement) {
     249        if (is_array($saisies)) {
     250                foreach ($saisies as $cle => $saisie) {
     251                        if (isset($saisies[$cle]['options']) and is_array($saisies[$cle]['options'])) {
     252                                $saisies[$cle]['options']['nom'] = preg_replace($masque, $remplacement, $saisie['options']['nom']);
     253                        }
    240254                        if (isset($saisie['saisies']) and is_array($saisie['saisies'])) {
    241255                                $saisies[$cle]['saisies'] = saisies_transformer_noms($saisie['saisies'], $masque, $remplacement);
     
    243257                }
    244258        }
    245        
     259
    246260        return $saisies;
    247261}
     
    252266 *
    253267 * @param array $formulaire
    254  *     Le formulaire à analyser
     268 *                          Le formulaire à analyser
    255269 * @param array $saisies
    256  *     Un tableau décrivant les saisies.
     270 *                          Un tableau décrivant les saisies.
     271 *
    257272 * @return array
    258  *     Retourne le tableau modifié des saisies
    259  */
    260 function saisies_transformer_noms_auto($formulaire, $saisies){
    261 
    262         if (is_array($saisies)){
    263                 foreach ($saisies as $cle => $saisie){
    264                         $saisies[$cle]['options']['nom'] = saisies_generer_nom($formulaire, $saisie['saisie']);
     273 *               Retourne le tableau modifié des saisies
     274 */
     275function saisies_transformer_noms_auto($formulaire, $saisies) {
     276        if (is_array($saisies)) {
     277                foreach ($saisies as $cle => $saisie) {
     278                        if (isset($saisies[$cle]['options']) and is_array($saisies[$cle]['options'])) {
     279                                $saisies[$cle]['options']['nom'] = saisies_generer_nom($formulaire, $saisie['saisie']);
     280                        }
    265281                        // il faut prendre en compte dans $formulaire les saisies modifiees
    266282                        // sinon on aurait potentiellement 2 champs successifs avec le meme nom.
     
    269285                        unset($new['saisies']);
    270286                        $formulaire[] = $new;
    271                        
    272                         if (is_array($saisie['saisies']))
     287
     288                        if (is_array($saisie['saisies'])) {
    273289                                $saisies[$cle]['saisies'] = saisies_transformer_noms_auto($formulaire, $saisie['saisies']);
    274                 }
    275         }
    276 
    277         return $saisies;
    278 }
    279 
    280 /**
    281  * Insère du HTML au début ou à la fin d'une saisie
    282  *
    283  * @param array $saisie La description d'une seule saisie
     290                        }
     291                }
     292        }
     293
     294        return $saisies;
     295}
     296
     297/**
     298 * Insère du HTML au début ou à la fin d'une saisie.
     299 *
     300 * @param array  $saisie    La description d'une seule saisie
    284301 * @param string $insertion Du code HTML à insérer dans la saisie
    285  * @param string $ou L'endroit où insérer le HTML : "debut" ou "fin"
     302 * @param string $ou        L'endroit où insérer le HTML : "debut" ou "fin"
     303 *
    286304 * @return array Retourne la description de la saisie modifiée
    287305 */
    288 function saisies_inserer_html($saisie, $insertion, $ou='fin'){
    289         if (!in_array($ou, array('debut', 'fin')))
     306function saisies_inserer_html($saisie, $insertion, $ou = 'fin') {
     307        if (!in_array($ou, array('debut', 'fin'))) {
    290308                $ou = 'fin';
    291        
     309        }
     310
    292311        if ($ou == 'debut') {
    293312                $saisie['options']['inserer_debut'] =
    294                         $insertion . (isset($saisie['options']['inserer_debut']) ? $saisie['options']['inserer_debut'] : '');
     313                        $insertion.(isset($saisie['options']['inserer_debut']) ? $saisie['options']['inserer_debut'] : '');
    295314        } elseif ($ou == 'fin') {
    296315                $saisie['options']['inserer_fin'] =
    297                         (isset($saisie['options']['inserer_fin']) ? $saisie['options']['inserer_fin'] : '') . $insertion;
    298         }
    299        
     316                        (isset($saisie['options']['inserer_fin']) ? $saisie['options']['inserer_fin'] : '').$insertion;
     317        }
     318
    300319        return $saisie;
    301320}
  • _plugins_/saisies/trunk/paquet.xml

    r92769 r93568  
    22        prefix="saisies"
    33        categorie="outil"
    4         version="2.5.19"
     4        version="2.5.20"
    55        etat="stable"
    66        compatibilite="[3.0.0;3.1.*]"
Note: See TracChangeset for help on using the changeset viewer.