Changeset 93575 in spip-zone


Ignore:
Timestamp:
Dec 11, 2015, 8:27:08 PM (5 years ago)
Author:
teddy.spip@…
Message:

Revert de r93568 pour dissociation indentation et correctif (nicod_)

Location:
_plugins_/saisies/trunk
Files:
4 edited

Legend:

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

    r93568 r93575  
    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')) {
    11         return;
    12 }
     10if (!defined('_ECRIRE_INC_VERSION')) return;
    1311
    1412/**
     
    2422 *
    2523 * @param array $champ
    26  *                                 Tableau de description de la saisie
     24 *     Tableau de description de la saisie
    2725 * @param array $env
    28  *                                 Environnement transmis à la saisie, certainement l'environnement du formulaire
    29  * @param bool  $utiliser_editable
    30  *                                 - false pour juste tester le cas -1
     26 *     Environnement transmis à la saisie, certainement l'environnement du formulaire
     27 * @param bool $utiliser_editable
     28 *     - false pour juste tester le cas -1
    3129 *
    3230 * @return bool
    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
     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
    3634 */
    37 function saisie_editable($champ, $env, $utiliser_editable = true) {
     35function saisie_editable($champ, $env, $utiliser_editable=true) {
    3836        if ($utiliser_editable) {
    3937                // si le champ n'est pas éditable, on sort.
     
    5755                $nom = $champ['options']['nom'];
    5856                if (isset($env[$nom])) {
    59                         return $env[$nom] ? true : false;
     57                        return $env[$nom] ? true : false ;
    6058                }
    6159        }
    6260        // sinon, si on a des sous saisies
    6361        if (isset($champ['saisies']) and is_array($champ['saisies'])) {
    64                 foreach ($champ['saisies'] as $saisie) {
     62                foreach($champ['saisies'] as $saisie) {
    6563                        if (saisie_editable($saisie, $env, false)) {
    6664                                return true;
     
    7472
    7573/**
    76  * Génère une saisie à partir d'un tableau la décrivant et de l'environnement.
     74 * Génère une saisie à partir d'un tableau la décrivant et de l'environnement
    7775 *
    7876 * @param array $champ
    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  *                     )
     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 *     )
    9088 * @param array $env
    91  *                     Environnement du formulaire
    92  *                     Permet de savoir les valeurs actuelles des contenus des saisies,
    93  *                     les erreurs eventuelles présentes...
    94  *
     89 *     Environnement du formulaire
     90 *     Permet de savoir les valeurs actuelles des contenus des saisies,
     91 *     les erreurs eventuelles présentes...
    9592 * @return string
    96  *                Code HTML des saisies de formulaire
     93 *     Code HTML des saisies de formulaire
    9794 */
    98 function saisies_generer_html($champ, $env = array()) {
     95function saisies_generer_html($champ, $env=array()){
    9996        // Si le parametre n'est pas bon, on genere du vide
    100         if (!is_array($champ)) {
     97        if (!is_array($champ))
    10198                return '';
    102         }
    10399
    104100        // Si la saisie n'est pas editable, on sort aussi.
     
    117113
    118114        // Peut-être des transformations à faire sur les options textuelles
    119         $options = isset($champ['options']) ? $champ['options'] : array();
    120         foreach ($options as $option => $valeur) {
     115        $options = $champ['options'];
     116        foreach ($options as $option => $valeur){
    121117                if ($option == 'datas') {
    122118                        // exploser une chaine datas en tableau (applique _T_ou_typo sur chaque valeur)
     
    136132
    137133        // Si env est définie dans les options ou qu'il y a des enfants, on ajoute tout l'environnement
    138         if (isset($contexte['env']) or (isset($champ['saisies']) and is_array($champ['saisies']))) {
     134        if (isset($contexte['env']) or (isset($champ['saisies']) AND is_array($champ['saisies']))) {
    139135                unset($contexte['env']);
    140136
     
    150146                if (isset($saisies_disponibles[$contexte['type_saisie']]) and is_array($saisies_disponibles[$contexte['type_saisie']]['options'])) {
    151147                        $options_a_supprimer = saisies_lister_champs($saisies_disponibles[$contexte['type_saisie']]['options']);
    152                         foreach ($options_a_supprimer as $option_a_supprimer) {
     148                        foreach ($options_a_supprimer as $option_a_supprimer){
    153149                                unset($env[$option_a_supprimer]);
    154150                        }
     
    158154        }
    159155        // Sinon on ne sélectionne que quelques éléments importants
    160         else {
     156        else{
    161157                // On récupère la liste des erreurs
    162158                $contexte['erreurs'] = $env['erreurs'];
    163159                // On récupère la langue de l'objet si existante
    164                 if (isset($env['langue'])) {
     160                if(isset($env['langue']))
    165161                        $contexte['langue'] = $env['langue'];
    166                 }
    167162                // On ajoute toujours le bon self
    168163                $contexte['self'] = self();
     
    171166        // Dans tous les cas on récupère de l'environnement la valeur actuelle du champ
    172167        // Si le nom du champ est un tableau indexé, il faut parser !
    173         if (isset($contexte['nom']) and preg_match('/([\w]+)((\[[\w]+\])+)/', $contexte['nom'], $separe)) {
     168        if (preg_match('/([\w]+)((\[[\w]+\])+)/', $contexte['nom'], $separe)){
    174169                $contexte['valeur'] = $env[$separe[1]];
    175170                preg_match_all('/\[([\w]+)\]/', $separe[2], $index);
    176171                // On va chercher au fond du tableau
    177                 foreach ($index[1] as $cle) {
     172                foreach($index[1] as $cle){
    178173                        $contexte['valeur'] = isset($contexte['valeur'][$cle]) ? $contexte['valeur'][$cle] : null;
    179174                }
     
    181176        // Sinon la valeur est juste celle du nom
    182177        else {
    183                 $contexte['valeur'] = (isset($contexte['nom']) and isset($env[$contexte['nom']]) ? $env[$contexte['nom']] : null);
     178                $contexte['valeur'] = (isset($env[$contexte['nom']]) ? $env[$contexte['nom']] : null);
    184179        }
    185180
     
    197192
    198193/**
    199  * Génère une vue d'une saisie à partir d'un tableau la décrivant.
     194 * Génère une vue d'une saisie à partir d'un tableau la décrivant
    200195 *
    201196 * @see saisies_generer_html()
    202  *
    203197 * @param array $saisie
    204  *                               Tableau de description d'une saisie
     198 *     Tableau de description d'une saisie
    205199 * @param array $env
    206  *                               L'environnement, contenant normalement la réponse à la saisie
     200 *     L'environnement, contenant normalement la réponse à la saisie
    207201 * @param array $env_obligatoire
    208  *                               ???
    209  *
     202 *     ???
    210203 * @return string
    211  *                Code HTML de la vue de la saisie
     204 *     Code HTML de la vue de la saisie
    212205 */
    213 function saisies_generer_vue($saisie, $env = array(), $env_obligatoire = array()) {
     206function saisies_generer_vue($saisie, $env=array(), $env_obligatoire=array()){
    214207        // Si le paramètre n'est pas bon, on génère du vide
    215         if (!is_array($saisie)) {
     208        if (!is_array($saisie))
    216209                return '';
    217         }
    218210
    219211        $contexte = array();
     
    224216        // Peut-être des transformations à faire sur les options textuelles
    225217        $options = $saisie['options'];
    226         foreach ($options as $option => $valeur) {
     218        foreach ($options as $option => $valeur){
    227219                if ($option == 'datas') {
    228220                        // exploser une chaine datas en tableau (applique _T_ou_typo sur chaque valeur)
     
    237229
    238230        // Si env est définie dans les options ou qu'il y a des enfants, on ajoute tout l'environnement
    239         if (isset($contexte['env']) or (isset($saisie['saisies']) and is_array($saisie['saisies']))) {
     231        if (isset($contexte['env']) or (isset($saisie['saisies']) AND is_array($saisie['saisies']))){
    240232                unset($contexte['env']);
    241233
     
    250242
    251243                if (isset($saisies_disponibles[$contexte['type_saisie']]['options'])
    252                         and is_array($saisies_disponibles[$contexte['type_saisie']]['options'])) {
     244                        and is_array($saisies_disponibles[$contexte['type_saisie']]['options']))
     245                {
    253246                        $options_a_supprimer = saisies_lister_champs($saisies_disponibles[$contexte['type_saisie']]['options']);
    254247                        foreach ($options_a_supprimer as $option_a_supprimer) {
     
    263256
    264257        // On regarde en priorité s'il y a un tableau listant toutes les valeurs
    265         if ($env['valeurs'] and is_array($env['valeurs']) and isset($env['valeurs'][$contexte['nom']])) {
     258        if ($env['valeurs'] and is_array($env['valeurs']) and isset($env['valeurs'][$contexte['nom']])){
    266259                $contexte['valeur'] = $env['valeurs'][$contexte['nom']];
    267260        }
    268261        // Si le nom du champ est un tableau indexé, il faut parser !
    269         elseif (preg_match('/([\w]+)((\[[\w]+\])+)/', $contexte['nom'], $separe)) {
     262        elseif (preg_match('/([\w]+)((\[[\w]+\])+)/', $contexte['nom'], $separe)){
    270263                $contexte['valeur'] = $env[$separe[1]];
    271264                preg_match_all('/\[([\w]+)\]/', $separe[2], $index);
    272265                // On va chercher au fond du tableau
    273                 foreach ($index[1] as $cle) {
     266                foreach($index[1] as $cle){
    274267                        $contexte['valeur'] = $contexte['valeur'][$cle];
    275268                }
     
    282275
    283276        // Si ya des enfants on les remonte dans le contexte
    284         if (isset($saisie['saisies']) and is_array($saisie['saisies'])) {
     277        if (isset($saisie['saisies']) AND is_array($saisie['saisies']))
    285278                $contexte['saisies'] = $saisie['saisies'];
    286         }
    287279
    288280        if (is_array($env_obligatoire)) {
     
    301293 * pour produire un affichage conditionnel des saisies ayant une option afficher_si ou afficher_si_remplissage.
    302294 *
    303  * @param array  $saisies
    304  *                        Tableau de descriptions des saisies
     295 * @param array $saisies
     296 *     Tableau de descriptions des saisies
    305297 * @param string $id_form
    306  *                        Identifiant unique pour le formulaire
    307  *
     298 *     Identifiant unique pour le formulaire
    308299 * @return text
    309  *              Code javascript
     300 *     Code javascript
    310301 */
    311 function saisies_generer_js_afficher_si($saisies, $id_form) {
     302function saisies_generer_js_afficher_si($saisies,$id_form){
    312303        $i = 0;
    313         $saisies = saisies_lister_par_nom($saisies, true);
     304        $saisies = saisies_lister_par_nom($saisies,true);
    314305        $code = '';
    315306        $code .= '(function($){';
    316307        $code .= '$(document).ready(function(){chargement=true;';
    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
     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
    320311                                        // parce que conteneur_class = 'tableau[nom][option]' ne fonctionne evidement pas
    321312                                        // lorsque le name est un tableau
    322313                                        if (isset($saisie['options']['afficher_si']) or isset($saisie['options']['afficher_si_remplissage'])) {
    323                                                 ++$i;
     314                                                $i++;
    324315                                                // retrouver la classe css probable
    325316                                                switch ($saisie['saisie']) {
     
    335326                                                $afficher_si = isset($saisie['options']['afficher_si']) ? $saisie['options']['afficher_si'] : '';
    336327                                                $afficher_si_remplissage = isset($saisie['options']['afficher_si_remplissage']) ? $saisie['options']['afficher_si_remplissage'] : '';
    337                                                 $condition = implode("\n", array_filter(array($afficher_si, $afficher_si_remplissage)));
     328                                                $condition = join("\n", array_filter(array($afficher_si, $afficher_si_remplissage)));
    338329                                                // retrouver l'identifiant
    339330                                                $identifiant = '';
     
    344335                                                preg_match_all('#@plugin:(.+)@#U', $condition, $matches);
    345336                                                foreach ($matches[1] as $plug) {
    346                                                         if (defined('_DIR_PLUGIN_'.strtoupper($plug))) {
     337                                                        if (defined('_DIR_PLUGIN_'.strtoupper($plug)))
    347338                                                                $condition = preg_replace('#@plugin:'.$plug.'@#U', 'true', $condition);
    348                                                         } else {
     339                                                        else
    349340                                                                $condition = preg_replace('#@plugin:'.$plug.'@#U', 'false', $condition);
    350                                                         }
    351341                                                }
    352342                                                // On gère le cas @config:plugin:meta@ suivi d'un test
     
    359349                                                preg_match_all('#@(.+)@#U', $condition, $matches);
    360350                                                foreach ($matches[1] as $nom) {
    361                                                         switch ($saisies[$nom]['saisie']) {
     351                                                        switch($saisies[$nom]['saisie']) {
    362352                                                                case 'radio':
    363353                                                                case 'oui_non':
     
    372362                                                                        foreach ($matches2[2] as $value) {
    373363                                                                                $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);
    374                                                                         }
     364                                                                                }
    375365                                                                        break;
    376366                                                                default:
     
    386376                                                $code .= 'else {if (chargement==true) {$(form).find("'.$sel.'").hide(400).css("display","none");} else {$(form).find("'.$sel.'").hide(400);};} '."\n";
    387377                                        }
    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);});';
     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);});';
    392382        $code .= 'chargement=false;})';
    393383        $code .= '})(jQuery);';
    394 
    395         return $i > 0 ? $code : '';
     384        return $i>0 ? $code : '';
    396385}
    397386
     
    404393 * (on passe leur valeur à NULL).
    405394 *
    406  * @param array      $saisies
    407  *                            Tableau de descriptions de saisies
     395 * @param array $saisies
     396 *     Tableau de descriptions de saisies
    408397 * @param array|null $env
    409  *                            Tableau d'environnement transmis dans inclure/voi_saisies.html,
    410  *                            NULL si on doit rechercher dans _request (pour saisies_verifier()).
    411  *
     398 *     Tableau d'environnement transmis dans inclure/voi_saisies.html,
     399 *     NULL si on doit rechercher dans _request (pour saisies_verifier()).
    412400 * @return array
    413  *               Tableau de descriptions de saisies
     401 *     Tableau de descriptions de saisies
    414402 */
    415 function saisies_verifier_afficher_si($saisies, $env = null) {
     403function saisies_verifier_afficher_si($saisies, $env=NULL) {
    416404        // eviter une erreur par maladresse d'appel :)
    417405        if (!is_array($saisies)) {
     
    424412                        preg_match_all('#@plugin:(.+)@#U', $condition, $matches);
    425413                        foreach ($matches[1] as $plug) {
    426                                 if (defined('_DIR_PLUGIN_'.strtoupper($plug))) {
     414                                if (defined('_DIR_PLUGIN_'.strtoupper($plug)))
    427415                                        $condition = preg_replace('#@plugin:'.$plug.'@#U', 'true', $condition);
    428                                 } else {
     416                                else
    429417                                        $condition = preg_replace('#@plugin:'.$plug.'@#U', 'false', $condition);
    430                                 }
    431418                        }
    432419                        // On gère le cas @config:plugin:meta@ suivi d'un test
     
    437424                        }
    438425                        // On transforme en une condition valide
    439                         if (is_null($env)) {
     426                        if (is_null($env))
    440427                                $condition = preg_replace('#@(.+)@#U', '_request(\'$1\')', $condition);
    441                         } else {
     428                        else
    442429                                $condition = preg_replace('#@(.+)@#U', '$env["valeurs"][\'$1\']', $condition);
    443                         }
    444430                        eval('$ok = '.$condition.';');
    445431                        if (!$ok) {
    446432                                unset($saisies[$cle]);
    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
     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
    453437                        $saisies[$cle]['saisies'] = saisies_verifier_afficher_si($saisies[$cle]['saisies'], $env);
    454                 }
    455         }
    456 
     438        }
    457439        return $saisies;
    458440}
  • _plugins_/saisies/trunk/inc/saisies_lister.php

    r93568 r93575  
    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')) {
    11         return;
    12 }
     10if (!defined('_ECRIRE_INC_VERSION')) return;
    1311
    1412/**
     
    1614 * les saisies "à plat" classées par identifiant unique.
    1715 *
    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  *
     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
    2118 * @return array Un tableau avec uniquement les saisies
    2219 */
    23 function saisies_lister_par_identifiant($contenu, $avec_conteneur = true) {
     20function saisies_lister_par_identifiant($contenu, $avec_conteneur=true){
    2421        $saisies = array();
    2522
    26         if (is_array($contenu)) {
    27                 foreach ($contenu as $ligne) {
     23        if (is_array($contenu)){
     24                foreach ($contenu as $ligne){
    2825                        if (is_array($ligne)) {
    2926                                $enfants_presents = (isset($ligne['saisies']) and is_array($ligne['saisies']));
    30                                 if (array_key_exists('saisie', $ligne) and (!$enfants_presents or $avec_conteneur)) {
     27                                if (array_key_exists('saisie', $ligne) and (!$enfants_presents or $avec_conteneur)){
    3128                                        $saisies[$ligne['identifiant']] = $ligne;
    3229                                }
     
    3734                }
    3835        }
    39 
     36       
    4037        return $saisies;
    4138}
     
    4542 * les saisies "à plat" classées par nom.
    4643 *
    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  *
     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
    5046 * @return array Un tableau avec uniquement les saisies
    5147 */
    52 function saisies_lister_par_nom($contenu, $avec_conteneur = true) {
     48function saisies_lister_par_nom($contenu, $avec_conteneur=true){
    5349        $saisies = array();
    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'])) {
     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)){
    5955                                        $saisies[$ligne['options']['nom']] = $ligne;
    6056                                }
    61                                 if (isset($ligne['saisies']) and is_array($ligne['saisies'])) {
     57                                if (isset($ligne['saisies']) AND is_array($ligne['saisies'])){
    6258                                        $saisies = array_merge($saisies, saisies_lister_par_nom($ligne['saisies']));
    6359                                }
     
    6561                }
    6662        }
    67 
     63       
    6864        return $saisies;
    6965}
     
    7167/**
    7268 * Liste les saisies ayant une option X
    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  *
     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')
    8075 * @return liste de ces saisies triees par nom ayant une option X définie
    8176 */
     
    8580        $s = array_keys($saisies);
    8681        if (is_int(array_shift($s))) {
    87                 $trier = 'saisies_lister_par_'.$tri;
     82                $trier = 'saisies_lister_par_' . $tri;
    8883                $saisies = $trier($saisies);
    8984        }
     
    9893
    9994/**
    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  *
     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')
    10599 * @return liste de ces saisies triees par nom ayant une option sql définie
    106100 */
     
    112106 * Prend la description complète du contenu d'un formulaire et retourne
    113107 * les saisies "à plat" classées par type de saisie.
    114  * $saisie['input']['input_1'] = $saisie.
    115  *
    116  * @param array $contenu Le contenu d'un formulaire
    117  *
     108 * $saisie['input']['input_1'] = $saisie
     109 *
     110 * @param array $contenu Le contenu d'un formulaire
    118111 * @return array Un tableau avec uniquement les saisies
    119112 */
    120113function saisies_lister_par_type($contenu) {
    121114        $saisies = array();
    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']))) {
     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']))){
    127120                                        $saisies[ $ligne['saisie'] ][ $ligne['options']['nom'] ] = $ligne;
    128121                                }
    129                                 if (is_array($ligne['saisies'])) {
     122                                if (is_array($ligne['saisies'])){
    130123                                        $saisies = array_merge_recursive($saisies, saisies_lister_par_type($ligne['saisies']));
    131124                                }
     
    133126                }
    134127        }
    135 
     128       
    136129        return $saisies;
    137130}
     
    141134 * une liste des noms des champs du formulaire.
    142135 *
    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  *
     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
    146138 * @return array Un tableau listant les noms des champs
    147139 */
    148 function saisies_lister_champs($contenu, $avec_conteneur = true) {
     140function saisies_lister_champs($contenu, $avec_conteneur=true){
    149141        $saisies = saisies_lister_par_nom($contenu, $avec_conteneur);
    150 
    151142        return array_keys($saisies);
    152143}
     
    155146 * A utiliser dans une fonction charger d'un formulaire CVT,
    156147 * cette fonction renvoie le tableau de contexte correspondant
    157  * de la forme $contexte['nom_champ'] = ''.
     148 * de la forme $contexte['nom_champ'] = ''
    158149 *
    159150 * @param array $contenu Le contenu d'un formulaire (un tableau de saisies)
    160  *
    161151 * @return array Un tableau de contexte
    162152 */
     
    165155        // return array_fill_keys(saisies_lister_champs($contenu, false), '');
    166156        $champs = array();
    167         foreach (saisies_lister_champs($contenu, false) as $champ) {
     157        foreach (saisies_lister_champs($contenu, false) as $champ)
    168158                $champs[$champ] = '';
    169         }
    170 
    171159        return $champs;
    172160}
     
    177165 *
    178166 * @param array $contenu Le contenu d'un formulaire
    179  *
    180167 * @return array Un tableau renvoyant la valeur par défaut de chaque champs
    181168 */
    182 function saisies_lister_valeurs_defaut($contenu) {
     169function saisies_lister_valeurs_defaut($contenu){
    183170        $contenu = saisies_lister_par_nom($contenu, false);
    184171        $defauts = array();
    185         foreach ($contenu as $nom => $saisie) {
     172        foreach ($contenu as $nom => $saisie){
    186173                // Si le nom du champ est un tableau indexé, il faut parser !
    187                 if (preg_match('/([\w]+)((\[[\w]+\])+)/', $nom, $separe)) {
     174                if (preg_match('/([\w]+)((\[[\w]+\])+)/', $nom, $separe)){
    188175                        $nom = $separe[1];
    189176                        // Dans ce cas on ne récupère que le nom, la valeur par défaut du tableau devra être renseigné autre part
    190177                        $defauts[$nom] = array();
    191                 } else {
     178                }
     179                else{
    192180                        $defauts[$nom] = isset($saisie['options']['defaut']) ? $saisie['options']['defaut'] : '';
    193181                }
    194182        }
    195 
    196183        return $defauts;
    197184}
    198185
    199186/**
    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  *
     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'
    207192 * @return array Retourne le tableau des saisies supprimées, ajoutées et modifiées
    208193 */
    209 function saisies_comparer($saisies_anciennes, $saisies_nouvelles, $avec_conteneur = true, $tri = 'nom') {
     194function saisies_comparer($saisies_anciennes, $saisies_nouvelles, $avec_conteneur=true, $tri = 'nom') {
    210195        $trier = "saisies_lister_par_$tri";
    211196        $saisies_anciennes = $trier($saisies_anciennes, $avec_conteneur);
    212197        $saisies_nouvelles = $trier($saisies_nouvelles, $avec_conteneur);
    213 
     198       
    214199        // Les saisies supprimées sont celles qui restent dans les anciennes quand on a enlevé toutes les nouvelles
    215200        $saisies_supprimees = array_diff_key($saisies_anciennes, $saisies_nouvelles);
     
    223208        // Et enfin les saisies qui ont le même nom et la même valeur
    224209        $saisies_identiques = array_diff_key($saisies_restantes, $saisies_modifiees);
    225 
     210       
    226211        return array(
    227212                'supprimees' => $saisies_supprimees,
    228213                'ajoutees' => $saisies_ajoutees,
    229214                'modifiees' => $saisies_modifiees,
    230                 'identiques' => $saisies_identiques,
     215                'identiques' => $saisies_identiques
    231216        );
    232217}
    233218
    234219/**
    235  * Compare deux saisies et indique si elles sont égales ou pas.
     220 * Compare deux saisies et indique si elles sont égales ou pas
    236221 *
    237222 * @param array $a Une description de saisie
    238223 * @param array $b Une autre description de saisie
    239  *
    240224 * @return int Retourne 0 si les saisies sont identiques, 1 sinon.
    241225 */
    242 function saisies_comparer_rappel($a, $b) {
    243         if ($a === $b) {
    244                 return 0;
    245         } else {
    246                 return 1;
    247         }
     226function saisies_comparer_rappel($a, $b){
     227        if ($a === $b) return 0;
     228        else return 1;
    248229}
    249230
    250231/**
    251232 * Compare deux tableaux de saisies pour connaitre les différences
    252  * en s'appuyant sur les identifiants de saisies.
     233 * en s'appuyant sur les identifiants de saisies
    253234 *
    254235 * @see saisies_comparer()
    255  *
    256236 * @param array $saisies_anciennes Un tableau décrivant des saisies
    257237 * @param array $saisies_nouvelles Un autre tableau décrivant des saisies
    258  * @param bool  $avec_conteneur    Indique si on veut prendre en compte dans la comparaison les conteneurs comme les fieldsets
    259  *
     238 * @param bool $avec_conteneur Indique si on veut prendre en compte dans la comparaison les conteneurs comme les fieldsets
    260239 * @return array Retourne le tableau des saisies supprimées, ajoutées et modifiées
    261240 */
    262 function saisies_comparer_par_identifiant($saisies_anciennes, $saisies_nouvelles, $avec_conteneur = true) {
     241function saisies_comparer_par_identifiant($saisies_anciennes, $saisies_nouvelles, $avec_conteneur=true) {
    263242        return saisies_comparer($saisies_anciennes, $saisies_nouvelles, $avec_conteneur, $tri = 'identifiant');
    264243}
    265244
    266245/**
    267  * Liste toutes les saisies configurables (ayant une description).
     246 * Liste toutes les saisies configurables (ayant une description)
    268247 *
    269248 * @return array Un tableau listant des saisies et leurs options
    270249 */
    271 function saisies_lister_disponibles() {
     250function saisies_lister_disponibles(){
    272251        static $saisies = null;
    273 
    274         if (is_null($saisies)) {
     252       
     253        if (is_null($saisies)){
    275254                $saisies = array();
    276255                $liste = find_all_in_path('saisies/', '.+[.]yaml$');
    277 
    278                 if (count($liste)) {
    279                         foreach ($liste as $fichier => $chemin) {
     256               
     257                if (count($liste)){
     258                        foreach ($liste as $fichier=>$chemin){
    280259                                $type_saisie = preg_replace(',[.]yaml$,i', '', $fichier);
    281260                                $dossier = str_replace($fichier, '', $chemin);
     
    285264                                                is_array($saisie = saisies_charger_infos($type_saisie))
    286265                                        )
    287                                 ) {
     266                                ){
    288267                                        $saisies[$type_saisie] = $saisie;
    289268                                }
     
    291270                }
    292271        }
    293 
    294         return $saisies;
    295 }
    296 
    297 /**
    298  * Lister les saisies existantes ayant une définition SQL.
     272       
     273        return $saisies;
     274}
     275
     276/**
     277 * Lister les saisies existantes ayant une définition SQL 
    299278 *
    300279 * @return array Un tableau listant des saisies et leurs options
     
    303282        $saisies = array();
    304283        $saisies_disponibles = saisies_lister_disponibles();
    305         foreach ($saisies_disponibles as $type => $saisie) {
     284        foreach ($saisies_disponibles as $type=>$saisie) {
    306285                if (isset($saisie['defaut']['options']['sql']) and $saisie['defaut']['options']['sql']) {
    307286                        $saisies[$type] = $saisie;
    308287                }
    309288        }
    310 
    311         return $saisies;
    312 }
    313 
    314 /**
    315  * Charger les informations contenues dans le YAML d'une saisie.
     289        return $saisies;
     290}
     291
     292/**
     293 * Charger les informations contenues dans le YAML d'une saisie
    316294 *
    317295 * @param string $type_saisie Le type de la saisie
    318  *
    319296 * @return array Un tableau contenant le YAML décodé
    320297 */
    321 function saisies_charger_infos($type_saisie) {
    322         if (defined('_DIR_PLUGIN_YAML')) {
     298function saisies_charger_infos($type_saisie){
     299        if(defined('_DIR_PLUGIN_YAML')){
    323300                include_spip('inc/yaml');
    324301                $fichier = find_in_path("saisies/$type_saisie.yaml");
    325302                $saisie = yaml_decode_file($fichier);
    326                 if (is_array($saisie)) {
    327                         $saisie['titre'] = (isset($saisie['titre']) and $saisie['titre'])
     303                if (is_array($saisie)){
     304                        $saisie['titre'] = (isset($saisie['titre']) AND $saisie['titre'])
    328305                                ? _T_ou_typo($saisie['titre']) : $type_saisie;
    329                         $saisie['description'] = (isset($saisie['description']) and $saisie['description'])
     306                        $saisie['description'] = (isset($saisie['description']) AND $saisie['description'])
    330307                                ? _T_ou_typo($saisie['description']) : '';
    331                         $saisie['icone'] = (isset($saisie['icone']) and $saisie['icone'])
     308                        $saisie['icone'] = (isset($saisie['icone']) AND $saisie['icone'])
    332309                                ? find_in_path($saisie['icone']) : '';
    333310                }
    334         } else {
     311        }else
    335312                $saisie = array();
    336         }
    337 
    338313        return $saisie;
    339314}
    340315
    341316/**
    342  * Quelles sont les saisies qui se débrouillent toutes seules, sans le _base commun.
     317 * Quelles sont les saisies qui se débrouillent toutes seules, sans le _base commun
    343318 *
    344319 * @return array Retourne un tableau contenant les types de saisies qui ne doivent pas utiliser le _base.html commun
    345320 */
    346 function saisies_autonomes() {
     321function saisies_autonomes(){
    347322        $saisies_autonomes = pipeline(
    348323                'saisies_autonomes',
     
    350325                        'fieldset',
    351326                        'hidden',
    352                         'destinataires',
    353                         'explication',
     327                        'destinataires', 
     328                        'explication'
    354329                )
    355330        );
    356 
     331       
    357332        return $saisies_autonomes;
    358333}
     334
  • _plugins_/saisies/trunk/inc/saisies_manipuler.php

    r93568 r93575  
    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')) {
    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
     10if (!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
    1917 * @param string|array $id_ou_nom_ou_chemin
    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  *
     18 *     L'identifiant unique
     19 *     ou le nom de la saisie à supprimer
     20 *     ou son chemin sous forme d'une liste de clés
    2421 * @return array
    25  *               Tableau modifié décrivant les saisies
    26  */
    27 function saisies_supprimer($saisies, $id_ou_nom_ou_chemin) {
     22 *     Tableau modifié décrivant les saisies
     23 */
     24function saisies_supprimer($saisies, $id_ou_nom_ou_chemin){
    2825        // Si la saisie n'existe pas, on ne fait rien
    29         if ($chemin = saisies_chercher($saisies, $id_ou_nom_ou_chemin, true)) {
     26        if ($chemin = saisies_chercher($saisies, $id_ou_nom_ou_chemin, true)){
    3027                // La position finale de la saisie
    3128                $position = array_pop($chemin);
    32 
     29       
    3330                // On va chercher le parent par référence pour pouvoir le modifier
    34                 $parent = &$saisies;
    35                 foreach ($chemin as $cle) {
    36                         $parent = &$parent[$cle];
    37                 }
    38 
     31                $parent =& $saisies;
     32                foreach($chemin as $cle){
     33                        $parent =& $parent[$cle];
     34                }
     35               
    3936                // On supprime et réordonne
    4037                unset($parent[$position]);
    4138                $parent = array_values($parent);
    4239        }
    43 
    44         return $saisies;
    45 }
    46 
    47 /**
    48  * Insère une saisie à une position donnée.
     40       
     41        return $saisies;
     42}
     43
     44/**
     45 * Insère une saisie à une position donnée
    4946 *
    5047 * @param array $saisies
    51  *                       Tableau des descriptions de saisies
     48 *     Tableau des descriptions de saisies
    5249 * @param array $saisie
    53  *                       Description de la saisie à insérer
     50 *     Description de la saisie à insérer
    5451 * @param array $chemin
    55  *                       Position complète où insérer la saisie.
    56  *                       En absence, insère la saisie à la fin.
    57  *
     52 *     Position complète où insérer la saisie.
     53 *     En absence, insère la saisie à la fin.
    5854 * @return array
    59  *               Tableau des saisies complété de la saisie insérée
    60  */
    61 function saisies_inserer($saisies, $saisie, $chemin = array()) {
     55 *     Tableau des saisies complété de la saisie insérée
     56 */
     57function saisies_inserer($saisies, $saisie, $chemin=array()){
    6258        // On vérifie quand même que ce qu'on veut insérer est correct
    63         if ($saisie['saisie'] and $saisie['options']['nom']) {
     59        if ($saisie['saisie'] and $saisie['options']['nom']){
    6460                // ajouter un identifiant
    6561                $saisie = saisie_identifier($saisie);
    66 
     62               
    6763                // Par défaut le parent c'est la racine
    68                 $parent = &$saisies;
     64                $parent =& $saisies;
    6965                // S'il n'y a pas de position, on va insérer à la fin du formulaire
    70                 if (!$chemin) {
     66                if (!$chemin){
    7167                        $position = count($parent);
    72                 } elseif (is_array($chemin)) {
     68                }
     69                elseif (is_array($chemin)){
    7370                        $position = array_pop($chemin);
    74                         foreach ($chemin as $cle) {
     71                        foreach ($chemin as $cle){
    7572                                // Si la clé est un conteneur de saisies "saisies" et qu'elle n'existe pas encore, on la crée
    76                                 if ($cle == 'saisies' and !isset($parent[$cle])) {
     73                                if ($cle == 'saisies' and !isset($parent[$cle]))
    7774                                        $parent[$cle] = array();
    78                                 }
    79                                 $parent = &$parent[$cle];
     75                                $parent =& $parent[$cle];
    8076                        }
    8177                        // On vérifie maintenant que la position est cohérente avec le parent
    82                         if ($position < 0) {
    83                                 $position = 0;
    84                         } elseif ($position > count($parent)) {
    85                                 $position = count($parent);
    86                         }
     78                        if ($position < 0) $position = 0;
     79                        elseif ($position > count($parent)) $position = count($parent);
    8780                }
    8881                // Et enfin on insère
    8982                array_splice($parent, $position, 0, array($saisie));
    9083        }
    91 
     84       
    9285        return $saisies;
    9386}
     
    9689 * Duplique une saisie (ou groupe de saisies)
    9790 * en placant la copie à la suite de la saisie d'origine.
    98  * Modifie automatiquement les identifiants des saisies.
    99  *
    100  * @param array        $saisies            Un tableau décrivant les saisies
     91 * Modifie automatiquement les identifiants des saisies
     92 *
     93 * @param array $saisies Un tableau décrivant les saisies
    10194 * @param unknown_type $id_ou_nom_ou_chemin L'identifiant unique ou le nom ou le chemin de la saisie a dupliquer
    102  *
    10395 * @return array Retourne le tableau modifié des saisies
    10496 */
    105 function saisies_dupliquer($saisies, $id_ou_nom_ou_chemin) {
     97function saisies_dupliquer($saisies, $id_ou_nom_ou_chemin){
    10698        // On récupère le contenu de la saisie à déplacer
    10799        $saisie = saisies_chercher($saisies, $id_ou_nom_ou_chemin);
     
    111103                $chemin_validation = saisies_chercher($saisies, $id_ou_nom_ou_chemin, true);
    112104                // 1 de plus pour mettre APRES le champ trouve
    113                 ++$chemin_validation[count($chemin_validation) - 1];
     105                $chemin_validation[count($chemin_validation)-1]++;
    114106                // On ajoute "copie" après le label du champs
    115107                $clone['options']['label'] .= ' '._T('saisies:construire_action_dupliquer_copie');
     
    117109                // Création de nouveau identifiants pour le clone
    118110                $clone = saisie_identifier($clone, true);
    119 
     111               
    120112                $saisies = saisies_inserer($saisies, $clone, $chemin_validation);
    121113        }
     
    125117
    126118/**
    127  * Déplace une saisie existante autre part.
    128  *
    129  * @param array        $saisies            Un tableau décrivant les saisies
     119 * Déplace une saisie existante autre part
     120 *
     121 * @param array $saisies Un tableau décrivant les saisies
    130122 * @param unknown_type $id_ou_nom_ou_chemin L'identifiant unique ou le nom ou le chemin de la saisie à déplacer
    131  * @param string       $ou                  Le nom de la saisie devant laquelle on déplacera OU le nom d'un conteneur entre crochets [conteneur]
    132  *
     123 * @param string $ou Le nom de la saisie devant laquelle on déplacera OU le nom d'un conteneur entre crochets [conteneur]
    133124 * @return array Retourne le tableau modifié des saisies
    134125 */
    135 function saisies_deplacer($saisies, $id_ou_nom_ou_chemin, $ou) {
     126function saisies_deplacer($saisies, $id_ou_nom_ou_chemin, $ou){
    136127        // On récupère le contenu de la saisie à déplacer
    137128        $saisie = saisies_chercher($saisies, $id_ou_nom_ou_chemin);
    138129
    139130        // Si on l'a bien trouvé
    140         if ($saisie) {
     131        if ($saisie){
    141132                // On cherche l'endroit où la déplacer
    142133                // Si $ou est vide, c'est à la fin de la racine
    143                 if (!$ou) {
     134                if (!$ou){
    144135                        $saisies = saisies_supprimer($saisies, $id_ou_nom_ou_chemin);
    145136                        $chemin = array(count($saisies));
    146137                }
    147138                // Si l'endroit est entre crochet, c'est un conteneur
    148                 elseif (preg_match('/^\[(@?[\w]*)\]$/', $ou, $match)) {
     139                elseif (preg_match('/^\[(@?[\w]*)\]$/', $ou, $match)){
    149140                        $parent = $match[1];
    150141                        // Si dans les crochets il n'y a rien, on met à la fin du formulaire
    151                         if (!$parent) {
     142                        if (!$parent){
    152143                                $saisies = saisies_supprimer($saisies, $id_ou_nom_ou_chemin);
    153144                                $chemin = array(count($saisies));
    154145                        }
    155146                        // Sinon on vérifie que ce conteneur existe
    156                         elseif (saisies_chercher($saisies, $parent, true)) {
     147                        elseif (saisies_chercher($saisies, $parent, true)){
    157148                                // S'il existe on supprime la saisie et on recherche la nouvelle position
    158149                                $saisies = saisies_supprimer($saisies, $id_ou_nom_ou_chemin);
    159150                                $parent = saisies_chercher($saisies, $parent, true);
    160151                                $chemin = array_merge($parent, array('saisies', 1000000));
    161                         } else {
     152                        }
     153                        else
    162154                                $chemin = false;
    163                         }
    164155                }
    165156                // Sinon ça sera devant un champ
    166                 else {
     157                else{
    167158                        // On vérifie que le champ existe
    168                         if (saisies_chercher($saisies, $ou, true)) {
     159                        if (saisies_chercher($saisies, $ou, true)){
    169160                                // S'il existe on supprime la saisie
    170161                                $saisies = saisies_supprimer($saisies, $id_ou_nom_ou_chemin);
    171162                                // Et on recherche la nouvelle position qui n'est plus forcément la même maintenant qu'on a supprimé une saisie
    172163                                $chemin = saisies_chercher($saisies, $ou, true);
    173                         } else {
     164                        }
     165                        else
    174166                                $chemin = false;
    175                         }
    176                 }
    177 
     167                }
     168               
    178169                // Si seulement on a bien trouvé un nouvel endroit où la placer, alors on déplace
    179                 if ($chemin) {
     170                if ($chemin)
    180171                        $saisies = saisies_inserer($saisies, $saisie, $chemin);
    181                 }
    182         }
    183 
    184         return $saisies;
    185 }
    186 
    187 /**
    188  * Modifie une saisie.
    189  *
    190  * @param array        $saisies             Un tableau décrivant les saisies
     172        }
     173       
     174        return $saisies;
     175}
     176
     177/**
     178 * Modifie une saisie
     179 *
     180 * @param array $saisies Un tableau décrivant les saisies
    191181 * @param unknown_type $id_ou_nom_ou_chemin L'identifiant unique ou le nom ou le chemin de la saisie à modifier
    192  * @param array        $modifs              Le tableau des modifications à apporter à la saisie
    193  *
     182 * @param array $modifs Le tableau des modifications à apporter à la saisie
    194183 * @return Retourne le tableau décrivant les saisies, mais modifié
    195184 */
    196 function saisies_modifier($saisies, $id_ou_nom_ou_chemin, $modifs) {
     185function saisies_modifier($saisies, $id_ou_nom_ou_chemin, $modifs){
    197186        $chemin = saisies_chercher($saisies, $id_ou_nom_ou_chemin, true);
    198187        $position = array_pop($chemin);
    199         $parent = &$saisies;
    200         foreach ($chemin as $cle) {
    201                 $parent = &$parent[$cle];
    202         }
    203 
     188        $parent =& $saisies;
     189        foreach ($chemin as $cle){
     190                $parent =& $parent[$cle];
     191        }
     192       
    204193        // On récupère le type tel quel
    205194        $modifs['saisie'] = $parent[$position]['saisie'];
    206195        // On récupère le nom s'il n'y est pas
    207         if (!isset($modifs['options']['nom'])) {
     196        if (!isset($modifs['options']['nom'])){
    208197                $modifs['options']['nom'] = $parent[$position]['options']['nom'];
    209198        }
     
    213202                and isset($parent[$position]['saisies'])
    214203                and is_array($parent[$position]['saisies'])
    215         ) {
     204        ){
    216205                $modifs['saisies'] = $parent[$position]['saisies'];
    217206        }
     
    223212                unset($modifs['options']['nouveau_type_saisie']);
    224213        }
    225 
     214                       
    226215        // On remplace tout
    227216        $parent[$position] = $modifs;
    228 
     217       
    229218        // Cette méthode ne marche pas trop
    230219        //$parent[$position] = array_replace_recursive($parent[$position], $modifs);
    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
     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
    240229 * @param string $masque
    241  *                             Ce que l'on doit chercher dans le nom
     230 *     Ce que l'on doit chercher dans le nom
    242231 * @param string $remplacement
    243  *                             Ce par quoi on doit remplacer
    244  *
     232 *     Ce par quoi on doit remplacer
    245233 * @return array
    246  *               Retourne le tableau modifié des saisies
    247  */
    248 function 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                         }
     234 *     Retourne le tableau modifié des saisies
     235 */
     236function 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']);
    254240                        if (isset($saisie['saisies']) and is_array($saisie['saisies'])) {
    255241                                $saisies[$cle]['saisies'] = saisies_transformer_noms($saisie['saisies'], $masque, $remplacement);
     
    257243                }
    258244        }
    259 
     245       
    260246        return $saisies;
    261247}
     
    266252 *
    267253 * @param array $formulaire
    268  *                          Le formulaire à analyser
     254 *     Le formulaire à analyser
    269255 * @param array $saisies
    270  *                          Un tableau décrivant les saisies.
    271  *
     256 *     Un tableau décrivant les saisies.
    272257 * @return array
    273  *               Retourne le tableau modifié des saisies
    274  */
    275 function 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                         }
     258 *     Retourne le tableau modifié des saisies
     259 */
     260function 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']);
    281265                        // il faut prendre en compte dans $formulaire les saisies modifiees
    282266                        // sinon on aurait potentiellement 2 champs successifs avec le meme nom.
     
    285269                        unset($new['saisies']);
    286270                        $formulaire[] = $new;
    287 
    288                         if (is_array($saisie['saisies'])) {
     271                       
     272                        if (is_array($saisie['saisies']))
    289273                                $saisies[$cle]['saisies'] = saisies_transformer_noms_auto($formulaire, $saisie['saisies']);
    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
     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
    301284 * @param string $insertion Du code HTML à insérer dans la saisie
    302  * @param string $ou        L'endroit où insérer le HTML : "debut" ou "fin"
    303  *
     285 * @param string $ou L'endroit où insérer le HTML : "debut" ou "fin"
    304286 * @return array Retourne la description de la saisie modifiée
    305287 */
    306 function saisies_inserer_html($saisie, $insertion, $ou = 'fin') {
    307         if (!in_array($ou, array('debut', 'fin'))) {
     288function saisies_inserer_html($saisie, $insertion, $ou='fin'){
     289        if (!in_array($ou, array('debut', 'fin')))
    308290                $ou = 'fin';
    309         }
    310 
     291       
    311292        if ($ou == 'debut') {
    312293                $saisie['options']['inserer_debut'] =
    313                         $insertion.(isset($saisie['options']['inserer_debut']) ? $saisie['options']['inserer_debut'] : '');
     294                        $insertion . (isset($saisie['options']['inserer_debut']) ? $saisie['options']['inserer_debut'] : '');
    314295        } elseif ($ou == 'fin') {
    315296                $saisie['options']['inserer_fin'] =
    316                         (isset($saisie['options']['inserer_fin']) ? $saisie['options']['inserer_fin'] : '').$insertion;
    317         }
    318 
     297                        (isset($saisie['options']['inserer_fin']) ? $saisie['options']['inserer_fin'] : '') . $insertion;
     298        }
     299       
    319300        return $saisie;
    320301}
  • _plugins_/saisies/trunk/paquet.xml

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