Changeset 109093 in spip-zone for _plugins_/couteau_suisse


Ignore:
Timestamp:
Feb 22, 2018, 6:50:31 PM (6 months ago)
Author:
patfr@…
Message:

Mise en forme

Location:
_plugins_/couteau_suisse
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/couteau_suisse/config_outils.php

    r107348 r109093  
    66#  Infos : https://contrib.spip.net/?article2166      #
    77#-----------------------------------------------------#
    8 if(!defined("_ECRIRE_INC_VERSION")) return;
     8if (!defined("_ECRIRE_INC_VERSION"))
     9        return;
    910
    1011// Noter :
     
    2021// typographie sur les #TITRE et #NOM d'objets
    2122// cet outil est place en tete car il modifie le pivot de #TITRE et #NOM
    22 add_outil( array(
     23add_outil(array(
    2324        'id' => 'titres_typographies',
    24         'categorie'   => 'typo-corr',
     25        'categorie' => 'typo-corr',
    2526        // constante generique pour SPIP 3.0 :
    2627        'code:spip_options' => 'define(\'_TRAITEMENT_TYPO_SANS_NUMERO\', \'PtoBR(propre(supprimer_numero(%s), $connect, $Pile[0]))\');',
    2728        // pour etre compatible avec les autres outils, on provoque un changement de pivot (propre a la place de typo) :
    2829        /* inserer :
    29                 $table_des_traitements['TITRE'][]= 'PtoBR(propre(%s))';
    30                 $table_des_traitements['TITRE']['mots']= 'PtoBR(propre(%s))';
    31                 etc...
    32                 note : $table_des_traitements['TITRE']['forums'] est protege plus tard */
     30        $table_des_traitements['TITRE'][]= 'PtoBR(propre(%s))';
     31        $table_des_traitements['TITRE']['mots']= 'PtoBR(propre(%s))';
     32        etc...
     33        note : $table_des_traitements['TITRE']['forums'] est protege plus tard */
    3334        'traitement:TITRE:post_propre,
    3435         traitement:TITRE/mots:post_propre,
    3536         traitement:TITRE/forums:post_propre,
    3637         traitement:NOM:post_propre' => 'PtoBR',
    37         'auteur' => 'Maïeul Rouquette',
    38 ));
    39 
    40 add_variables( array(
     38        'auteur' => 'Maïeul Rouquette'
     39));
     40
     41add_variables(array(
    4142        'nom' => 'alinea',
    4243        'check' => 'couteauprive:autobr_oui',
    4344        'defaut' => 1,
    44         'code:%s' => "define('_CS_AUTOBR_TRAIT', 1);",
    45 ) ,array(
     45        'code:%s' => "define('_CS_AUTOBR_TRAIT', 1);"
     46), array(
    4647        'nom' => 'alinea2',
    4748        'check' => 'couteauprive:autobr_non',
    4849        'defaut' => 0,
    49         'code:%s' => "define('_CS_AUTOBR_RACC', 1);",
    50 ) ,array(
     50        'code:%s' => "define('_CS_AUTOBR_RACC', 1);"
     51), array(
    5152        'nom' => 'alinea3',
    52         'radio' => array(1 => 'item_oui', 0 => 'item_non'), //'couteauprive:par_defaut'),
     53        'radio' => array(
     54                1 => 'item_oui',
     55                0 => 'item_non'
     56        ), //'couteauprive:par_defaut'),
    5357        'defaut' => 0,
    5458        'code:%s' => "define('_AUTOBR', '');",
    55         'code:!%s' => "// (desactive alinea2) ",
    56 ));
    57 add_outil( array(
     59        'code:!%s' => "// (desactive alinea2) "
     60));
     61add_outil(array(
    5862        'id' => 'autobr',
    59         'code:options' => defined('_SPIP30000')?"%%alinea3%%%%alinea2%%\n":'%%alinea%%%%alinea2%%',
     63        'code:options' => defined('_SPIP30000') ? "%%alinea3%%%%alinea2%%\n" : '%%alinea%%%%alinea2%%',
    6064        'categorie' => 'typo-corr',
    61         'description' => defined('_SPIP30000')?'<:autobr:1:>[[%alinea3%]]<alinea3 valeur="1">[[%alinea2%<br /><q3><:autobr:2:></q3>]]</alinea3>'
    62                 :'<:autobr::>[[%alinea%]][[->%alinea2%<br /><q3><:autobr:2:></q3>]]',
     65        'description' => defined('_SPIP30000')
     66                ? '<:autobr:1:>[[%alinea3%]]<alinea3 valeur="1">[[%alinea2%<br /><q3><:autobr:2:></q3>]]</alinea3>'
     67                : '<:autobr::>[[%alinea%]][[->%alinea2%<br /><q3><:autobr:2:></q3>]]',
    6368        // traitement automatique des TEXTE/articles, et TEXTE/forums (standard pour SPIP>=2.1)
    64         'traitement:TEXTE/articles:pre_propre'
    65          .(!defined('_SPIP20100')?',traitement:TEXTE/forums:pre_propre':'') => 'autobr_pre_propre',
     69        'traitement:TEXTE/articles:pre_propre' . (!defined('_SPIP20100') ? ',traitement:TEXTE/forums:pre_propre' : '') => 'autobr_pre_propre',
    6670        'pipelinecode:pre_typo' => 'if(%%alinea2%%) { include_spip(\'outils/autobr\'); $flux = autobr_alinea($flux); }',
    6771        'pipeline:nettoyer_raccourcis_typo' => 'autobr_nettoyer_raccourcis',
     
    7579                $texte=str_replace(array("@ARTICLES@","@RUBRIQUES@","@FORUMS@"),
    7680                        array(cs_raccourcis_presents(array("article/texte", "article/descriptif", "article/chapo"),"%<alinea>%"), cs_raccourcis_presents(array("rubrique/texte"),"%<alinea>%"), cs_raccourcis_presents(array("forum/texte"),"%<alinea>%")), $texte);
    77 }',
    78 )); 
     81}'
     82));
    7983
    8084// ici on a besoin d'une case input. La variable est : dossier_squelettes
    8185// a la toute premiere activation de l'outil, la valeur sera : $GLOBALS['dossier_squelettes']
    82 add_variable( array(
     86add_variable(array(
    8387        'nom' => 'dossier_squelettes',
    8488        'format' => _format_CHAINE,
    8589        'defaut' => "\$GLOBALS['dossier_squelettes']",
    86         'code' => "\$GLOBALS['dossier_squelettes']=%s;",
    87 ));
    88 add_outil( array(
     90        'code' => "\$GLOBALS['dossier_squelettes']=%s;"
     91));
     92add_outil(array(
    8993        'id' => 'dossier_squelettes',
    9094        'code:spip_options' => '%%dossier_squelettes%%',
    91         'categorie' => 'admin',
    92 ));
    93 
    94 add_outil( array(
     95        'categorie' => 'admin'
     96));
     97
     98add_outil(array(
    9599        'id' => 'supprimer_numero',
    96100        /* inserer :
    97                 $table_des_traitements['TITRE'][]= 'typo(supprimer_numero(%s))';
    98                 $table_des_traitements['TITRE']['mots']= 'typo(supprimer_numero(%s))';
    99                 etc... */
     101        $table_des_traitements['TITRE'][]= 'typo(supprimer_numero(%s))';
     102        $table_des_traitements['TITRE']['mots']= 'typo(supprimer_numero(%s))';
     103        etc... */
    100104        'traitement:TITRE:pre_typo,
    101105         traitement:TITRE/mots:pre_typo,
     
    104108         traitement:TYPE/mots:pre_typo' => 'supprimer_numero',
    105109        'categorie' => 'public',
    106         'version-max' => '17743', // SPIP 3.0 : plus la peine
    107 ));
    108 
    109 add_variable( array(
     110        'version-max' => '17743' // SPIP 3.0 : plus la peine
     111));
     112
     113add_variable(array(
    110114        'nom' => 'paragrapher',
    111115        'format' => _format_NOMBRE,
    112         'radio' => array(1 => 'item_oui', 0 => 'item_non', -1 => 'couteauprive:par_defaut'),
     116        'radio' => array(
     117                1 => 'item_oui',
     118                0 => 'item_non',
     119                -1 => 'couteauprive:par_defaut'
     120        ),
    113121        'defaut' => "-1",
    114         'code:%s>=0' => "\$GLOBALS['toujours_paragrapher']=%s;",
    115 ));
    116 add_outil( array(
     122        'code:%s>=0' => "\$GLOBALS['toujours_paragrapher']=%s;"
     123));
     124add_outil(array(
    117125        'id' => 'paragrapher2',
    118126        'code:spip_options' => '%%paragrapher%%',
    119         'categorie' => 'admin',
    120 ));
    121 
    122 add_outil( array(
     127        'categorie' => 'admin'
     128));
     129
     130add_outil(array(
    123131        'id' => 'forcer_langue',
    124132        'code:spip_options' => "\$GLOBALS['forcer_lang']=true;",
    125         'categorie' => 'public',
    126 ));
    127 
    128 add_variable( array(
     133        'categorie' => 'public'
     134));
     135
     136add_variable(array(
    129137        'nom' => 'webmestres',
    130138        'format' => _format_CHAINE,
    131139        'defaut' => '"1"',
    132140        'code:strlen(%s)' => "define('_ID_WEBMESTRES', %s);",
    133         'code:!strlen(%s)' => "define('_ID_WEBMESTRES', 1);",
    134 ));
    135 add_outil( array(
     141        'code:!strlen(%s)' => "define('_ID_WEBMESTRES', 1);"
     142));
     143add_outil(array(
    136144        'id' => 'webmestres',
    137145        'code:spip_options' => '%%webmestres%%',
     
    141149        'autoriser' => "autoriser('webmestre')",
    142150        'pipelinecode:pre_description_outil' => 'if($id=="webmestres")
    143                 $texte=str_replace(array("@_CS_LISTE_WEBMESTRES@","@_CS_LISTE_ADMINS@"),get_liste_administrateurs(),$texte);',
    144 ));
    145 
    146 add_outil( array(
     151                $texte=str_replace(array("@_CS_LISTE_WEBMESTRES@","@_CS_LISTE_ADMINS@"),get_liste_administrateurs(),$texte);'
     152));
     153
     154add_outil(array(
    147155        'id' => 'insert_head',
    148156        'code:options' => "\$GLOBALS['spip_pipeline']['affichage_final'] .= '|f_insert_head';",
    149         'categorie' => 'spip',
     157        'categorie' => 'spip'
    150158));
    151159
    152160// ici on a besoin d'une case input. La variable est : suite_introduction
    153161// a la toute premiere activation de l'outil, la valeur sera : '&nbsp;(...)'
    154 add_variables( array(
     162add_variables(array(
    155163        'nom' => 'suite_introduction',
    156164        'format' => _format_CHAINE,
    157165        'defaut' => '"&nbsp;(...)"',
    158         'code' => "define('_INTRODUCTION_SUITE', %s);\n",
     166        'code' => "define('_INTRODUCTION_SUITE', %s);\n"
    159167), array(
    160168        'nom' => 'lgr_introduction',
    161169        'format' => _format_NOMBRE,
    162170        'defaut' => 100,
    163         'code:%s && %s!=100' => "define('_INTRODUCTION_LGR', %s);\n",
     171        'code:%s && %s!=100' => "define('_INTRODUCTION_LGR', %s);\n"
    164172), array(
    165173        'nom' => 'coupe_descriptif',
    166174        'check' => 'couteauprive:introduction_coupe_descriptif',
    167175        'defaut' => 0,
    168         'code:%s' => "define('_INTRODUCTION_DESCRIPTIF_ENTIER', 1);\n",
     176        'code:%s' => "define('_INTRODUCTION_DESCRIPTIF_ENTIER', 1);\n"
    169177), array(
    170178        'nom' => 'lien_introduction',
    171179        'format' => _format_NOMBRE,
    172         'radio' => array(1 => 'item_oui', 0 => 'item_non'),
    173         'defaut' => 0,
    174         'code:%s' => "define('_INTRODUCTION_LIEN', 1);",
     180        'radio' => array(
     181                1 => 'item_oui',
     182                0 => 'item_non'
     183        ),
     184        'defaut' => 0,
     185        'code:%s' => "define('_INTRODUCTION_LIEN', 1);"
    175186), array(
    176187        'nom' => 'lien_systematique',
    177188        'check' => 'couteauprive:introduction_lien_systematique',
    178189        'defaut' => 0,
    179         'code:%s' => "define('_INTRODUCTION_SUITE_SYSTEMATIQUE', 1);\n",
    180 ));
    181 add_outil( array(
     190        'code:%s' => "define('_INTRODUCTION_SUITE_SYSTEMATIQUE', 1);\n"
     191));
     192add_outil(array(
    182193        'id' => 'introduction',
    183194        'code:options' => "%%lgr_introduction%%%%suite_introduction%%%%lien_introduction%%",
    184         'categorie' => 'spip',
     195        'categorie' => 'spip'
    185196));
    186197
    187198// ici on a besoin de deux boutons radio : _T('icone_interface_simple') et _T('icone_interface_complet')
    188 add_variable( array(
     199add_variable(array(
    189200        'nom' => 'radio_set_options4',
    190201        'format' => _format_CHAINE,
    191         'radio' => array('basiques' => 'icone_interface_simple', 'avancees' => 'icone_interface_complet'),
     202        'radio' => array(
     203                'basiques' => 'icone_interface_simple',
     204                'avancees' => 'icone_interface_complet'
     205        ),
    192206        'defaut' => '"avancees"',
    193207        'label' => '@_CS_CHOIX@',
    194         'code' => "\$_GET['set_options']=\$GLOBALS['set_options']=%s;",
    195 ));
    196 add_outil( array(
     208        'code' => "\$_GET['set_options']=\$GLOBALS['set_options']=%s;"
     209));
     210add_outil(array(
    197211        'id' => 'set_options',
    198         'auteur'         => 'Vincent Ramos',
     212        'auteur' => 'Vincent Ramos',
    199213        'code:options' => "%%radio_set_options4%%",
    200214        'categorie' => 'interface',
     
    202216        'pipeline:header_prive' => 'set_options_header_prive',
    203217        // non supporte a partir de la version 1.93
    204         'version-max' => '1.9299',
     218        'version-max' => '1.9299'
    205219));
    206220
    207221// ici on a besoin de trois boutons radio : _T('couteauprive:js_jamais'), _T('couteauprive:js_defaut') et _T('couteauprive:js_toujours')
    208 add_variable( array(
     222add_variable(array(
    209223        'nom' => 'radio_filtrer_javascript3',
    210224        'format' => _format_NOMBRE,
    211         'radio' => array(-1 => 'couteauprive:js_jamais', 0 => 'couteauprive:js_defaut', 1 => 'couteauprive:js_toujours'),
     225        'radio' => array(
     226                -1 => 'couteauprive:js_jamais',
     227                0 => 'couteauprive:js_defaut',
     228                1 => 'couteauprive:js_toujours'
     229        ),
    212230        'defaut' => 0,
    213231        'label' => '@_CS_CHOIX@',
    214232        // si la variable est non nulle, on code...
    215         'code:%s' => "\$GLOBALS['filtrer_javascript']=%s;",
    216 ));
    217 add_outil( array(
     233        'code:%s' => "\$GLOBALS['filtrer_javascript']=%s;"
     234));
     235add_outil(array(
    218236        'id' => 'filtrer_javascript',
    219237        'code:options' => "%%radio_filtrer_javascript3%%",
    220238        'categorie' => 'securite',
    221         'version-min' => '1.9200',
     239        'version-min' => '1.9200'
    222240));
    223241
    224242// ici on a besoin d'une case input. La variable est : forum_lgrmaxi
    225243// a la toute premiere activation de l'outil, la valeur sera : 0 (aucune limite)
    226 add_variables( array(
     244add_variables(array(
    227245        'nom' => 'forum_lgrmaxi',
    228246        'format' => _format_NOMBRE,
    229247        'defaut' => 0,
    230         'code:%s' => "define('_FORUM_LONGUEUR_MAXI', %s);",
     248        'code:%s' => "define('_FORUM_LONGUEUR_MAXI', %s);"
    231249), array(
    232250        'nom' => 'forum_lgrmini',
     
    234252        'label' => '@_CS_CHOIX@',
    235253        'defaut' => 10,
    236         'code:%s!=10 && defined("_SPIP30000")' => "define('_FORUM_LONGUEUR_MINI', %s);",
    237 ));
    238 add_outil( array(
     254        'code:%s!=10 && defined("_SPIP30000")' => "define('_FORUM_LONGUEUR_MINI', %s);"
     255));
     256add_outil(array(
    239257        'id' => 'forum_lgrmaxi',
    240258        'code:spip_options' => "%%forum_lgrmaxi%%%%forum_lgrmini%%",
     
    248266//              $maxi=defined("_FORUM_LONGUEUR_MAXI")?_FORUM_LONGUEUR_MAXI:0;
    249267//              $texte.="\n\n".couteauprive_T("forum_lgrmaxi_actu", array("mini"=>$mini, "maxi"=>$maxi?$maxi:"&infin;"));
    250 }',
     268}'
    251269));
    252270
     
    255273## attention il est tres mal vu de prendre une periode < 20 minutes
    256274if (!defined('_PERIODE_SYNDICATION'))
    257         define('_PERIODE_SYNDICATION', 2*60);
     275define('_PERIODE_SYNDICATION', 2*60);
    258276if (!defined('_PERIODE_SYNDICATION_SUSPENDUE'))
    259         define('_PERIODE_SYNDICATION_SUSPENDUE', 24*60);
    260 */     
    261 
    262 add_variables( array(
     277define('_PERIODE_SYNDICATION_SUSPENDUE', 24*60);
     278*/
     279
     280add_variables(array(
    263281        'nom' => 'logo_Hmax',
    264282        'format' => _format_NOMBRE,
    265283        'defaut' => 0,
    266         'code:%s' => "@define('_LOGO_MAX_HEIGHT', %s);\n",
     284        'code:%s' => "@define('_LOGO_MAX_HEIGHT', %s);\n"
    267285), array(
    268286        'nom' => 'logo_Wmax',
    269287        'format' => _format_NOMBRE,
    270288        'defaut' => 0,
    271         'code:%s' => "@define('_LOGO_MAX_WIDTH', %s);\n",
     289        'code:%s' => "@define('_LOGO_MAX_WIDTH', %s);\n"
    272290), array(
    273291        'nom' => 'logo_Smax',
    274292        'format' => _format_NOMBRE,
    275293        'defaut' => 0,
    276         'code:%s' => "@define('_LOGO_MAX_SIZE', %s);\n",
     294        'code:%s' => "@define('_LOGO_MAX_SIZE', %s);\n"
    277295), array(
    278296        'nom' => 'img_Hmax',
    279297        'format' => _format_NOMBRE,
    280298        'defaut' => 0,
    281         'code:%s' => "@define('_IMG_MAX_HEIGHT', %s);\n",
     299        'code:%s' => "@define('_IMG_MAX_HEIGHT', %s);\n"
    282300), array(
    283301        'nom' => 'img_Wmax',
    284302        'format' => _format_NOMBRE,
    285303        'defaut' => 0,
    286         'code:%s' => "@define('_IMG_MAX_WIDTH', %s);\n",
     304        'code:%s' => "@define('_IMG_MAX_WIDTH', %s);\n"
    287305), array(
    288306        'nom' => 'img_Smax',
    289307        'format' => _format_NOMBRE,
    290308        'defaut' => 0,
    291         'code:%s' => "@define('_IMG_MAX_SIZE', %s);\n",
     309        'code:%s' => "@define('_IMG_MAX_SIZE', %s);\n"
    292310), array(
    293311        'nom' => 'doc_Smax',
    294312        'format' => _format_NOMBRE,
    295313        'defaut' => 0,
    296         'code:%s' => "@define('_DOC_MAX_SIZE', %s);\n",
     314        'code:%s' => "@define('_DOC_MAX_SIZE', %s);\n"
    297315), array(
    298316        'nom' => 'img_GDmax',
    299317        'format' => _format_NOMBRE,
    300318        'defaut' => 0,
    301         'code:%s' => "@define('_IMG_GD_MAX_PIXELS', %s);\n",
     319        'code:%s' => "@define('_IMG_GD_MAX_PIXELS', %s);\n"
    302320), array(
    303321        'nom' => 'img_GDqual',
     
    305323        'defaut' => 85,
    306324        'code:%s' => "@define('_IMG_GD_QUALITE', %s);\n",
    307         'label' => '@_CS_CHOIX@',
     325        'label' => '@_CS_CHOIX@'
    308326), array(
    309327        'nom' => 'copie_Smax',
    310328        'format' => _format_NOMBRE,
    311329        'defaut' => 16,
    312         'code' => "@define('_COPIE_LOCALE_MAX_SIZE', %s*1048576);",
    313 ));
    314 add_outil( array(
     330        'code' => "@define('_COPIE_LOCALE_MAX_SIZE', %s*1048576);"
     331));
     332add_outil(array(
    315333        'id' => 'SPIP_tailles',
    316334        'code:spip_options' => "%%logo_Hmax%%%%logo_Wmax%%%%logo_Smax%%%%img_Hmax%%%%img_Wmax%%%%img_Smax%%%%doc_Smax%%%%img_GDmax%%%%img_GDqual%%%%copie_Smax%%",
    317         'categorie' => 'securite',
    318 ));
    319 
    320 add_outil( array(
     335        'categorie' => 'securite'
     336));
     337
     338add_outil(array(
    321339        'id' => 'previsualisation',
    322340        'categorie' => 'interface',
     
    327345        'distant_pipelines' => 'https://zone.spip.org/trac/spip-zone/export/53447/_plugins_/previsu_redaction/previsu_redac_pipelines.php',
    328346        'version-min' => '1.9300', // SPIP 2.0 : oui
    329         'version-max' => '17743', // SPIP 3.0 : non
    330 ));
    331 
    332 add_variable( array(
     347        'version-max' => '17743' // SPIP 3.0 : non
     348));
     349
     350add_variable(array(
    333351        'nom' => 'mot_masquer',
    334352        'format' => _format_CHAINE,
    335353        'defaut' => "'masquer'",
    336354        'code' => "define('_MOT_MASQUER', %s);",
    337         'commentaire' => '!sql_countsel("spip_mots", "titre="._q(%s))?"<spanred>"._T("couteauprive:erreur_mot", array("mot"=>%s))."</span>":""',
    338 ));
    339 add_outil( array(
     355        'commentaire' => '!sql_countsel("spip_mots", "titre="._q(%s))?"<spanred>"._T("couteauprive:erreur_mot", array("mot"=>%s))."</span>":""'
     356));
     357add_outil(array(
    340358        'id' => 'masquer',
    341359        'categorie' => 'spip',
     
    357375                array((function_exists("masquer_liste_rubriques") && $x=masquer_liste_rubriques(true))?"[->rub".join("], [->rub", $x)."]":couteauprive_T("variable_vide"),
    358376                        (function_exists("masquer_liste_articles") && $x=masquer_liste_articles(true))?"[->art".join("], [->art", $x)."]":couteauprive_T("variable_vide"))
    359         ,$texte); }',
    360 ));
    361 
    362 add_variables( array(
     377        ,$texte); }'
     378));
     379
     380add_variables(array(
    363381        'nom' => 'auteur_forum_nom',
    364382        'check' => 'couteauprive:auteur_forum_nom',
    365         'defaut' => 1,
     383        'defaut' => 1
    366384), array(
    367385        'nom' => 'auteur_forum_email',
    368386        'check' => 'couteauprive:auteur_forum_email',
    369         'defaut' => 0,
     387        'defaut' => 0
    370388), array(
    371389        'nom' => 'auteur_forum_deux',
    372390        'check' => 'couteauprive:auteur_forum_deux',
    373         'defaut' => 0,
     391        'defaut' => 0
    374392));
    375393// chaine de langue en extension sous SPIP>=3.0
    376 $cs_temp = defined('_SPIP30000')?'forum:':'';
    377 add_outil( array(
     394$cs_temp = defined('_SPIP30000') ? 'forum:' : '';
     395add_outil(array(
    378396        'id' => 'auteur_forum',
    379         'categorie'      => 'securite',
     397        'categorie' => 'securite',
    380398        'code:jq_init_public' => 'cs_auteur_forum.apply(this);',
    381399        'code:js_public' => "var cs_verif_email = %%auteur_forum_email%%;\nvar cs_verif_nom = %%auteur_forum_nom%%;\nvar cs_verif_deux = %%auteur_forum_deux%%;",
    382400        'pipelinecode:pre_description_outil' => 'if($id=="auteur_forum") $texte=str_replace(array("@_CS_FORUM_NOM@","@_CS_FORUM_EMAIL@"),
    383         array(preg_replace(\',:$,\',"",_T("'.$cs_temp.'forum_votre_nom")),preg_replace(\',:$,\',"",_T("'.$cs_temp.'forum_votre_email"))),$texte);',
     401        array(preg_replace(\',:$,\',"",_T("' . $cs_temp . 'forum_votre_nom")),preg_replace(\',:$,\',"",_T("' . $cs_temp . 'forum_votre_email"))),$texte);',
    384402        'pipelinecode:formulaire_verifier' => 'if($flux["args"]["form"]=="forum"){
    385403        $verif_email = %%auteur_forum_email%%; $verif_nom = %%auteur_forum_nom%%;
     
    397415                if($mail) $flux["data"]["session_email"] = _T("info_obligatoire");
    398416        }
    399 }',
     417}'
    400418));
    401419
    402420// ici on a besoin de trois boutons radio : _T('couteauprive:par_defaut'), _T('couteauprive:sf_amont') et _T('couteauprive:sf_tous')
    403 add_variable( array(
     421add_variable(array(
    404422        'nom' => 'radio_suivi_forums3',
    405423        'format' => _format_CHAINE,
    406         'radio' => array('defaut' => 'couteauprive:par_defaut', '_SUIVI_FORUMS_REPONSES' => 'couteauprive:sf_amont', '_SUIVI_FORUM_THREAD' => 'couteauprive:sf_tous'),
     424        'radio' => array(
     425                'defaut' => 'couteauprive:par_defaut',
     426                '_SUIVI_FORUMS_REPONSES' => 'couteauprive:sf_amont',
     427                '_SUIVI_FORUM_THREAD' => 'couteauprive:sf_tous'
     428        ),
    407429        'defaut' => '"defaut"',
    408430        'label' => '@_CS_CHOIX@',
    409431        // si la variable est differente de 'defaut' alors on codera le define
    410         'code:%s!=="defaut"' => "define(%s, true);",
    411 ));
    412 add_outil( array(
     432        'code:%s!=="defaut"' => "define(%s, true);"
     433));
     434add_outil(array(
    413435        'id' => 'suivi_forums',
    414436        'code:options' => "%%radio_suivi_forums3%%",
     
    416438        // effectif que dans la version 1.92 (cf : plugin notifications)
    417439        'version-min' => '1.9200',
    418         'version-max' => '1.9299',
    419 ));
    420 
    421 add_variables( array(
     440        'version-max' => '1.9299'
     441));
     442
     443add_variables(array(
    422444        'nom' => 'spam_mots',
    423445        'format' => _format_CHAINE,
    424446        'lignes' => 8,
    425447        'defaut' => '"sucking blowjob superbabe ejakulation fucking (asses)"',
    426         'code' => "define('_spam_MOTS', %s);",
     448        'code' => "define('_spam_MOTS', %s);"
    427449), array(
    428450        'nom' => 'spam_ips',
     
    430452        'lignes' => 6,
    431453        'defaut' => '""',
    432         'code' => "define('_spam_IPS', %s);",
    433 ));
    434 add_outil( array(
     454        'code' => "define('_spam_IPS', %s);"
     455));
     456add_outil(array(
    435457        'id' => 'spam',
    436458        'code:options' => "%%spam_mots%%\n%%spam_ips%%",
    437459        // sauvegarde de l'IP pour tests
    438460        'code:spip_options' => '$ip_=isset($ip)?$ip:"";',
    439         'categorie' => 'securite',
     461        'categorie' => 'securite'
    440462));
    441463
    442464// a placer apres l'outil 'spam' pour compatibilite IP
    443 add_outil( array(
     465add_outil(array(
    444466        'id' => 'no_IP',
    445467        'code:spip_options' => '$ip = substr(md5($ip),0,16);',
    446         'categorie' => 'securite',
    447 ));
    448 
    449 add_outil( array(
     468        'categorie' => 'securite'
     469));
     470
     471add_outil(array(
    450472        'id' => 'flock',
    451473        'code:spip_options' => "define('_SPIP_FLOCK',false);",
    452474        'categorie' => 'admin',
    453         'version-min' => '1.9300',
    454 ));
    455 
    456 add_variables( array(
     475        'version-min' => '1.9300'
     476));
     477
     478add_variables(array(
    457479        'nom' => 'cron_direct_force',
    458480        'label' => '@_CS_CHOIX@',
    459481        'check' => 'couteauprive:cron_direct_force',
    460 //      'defaut' => 1,
     482        //      'defaut' => 1,
    461483        // code d'appel en realpath() pour config/mes_options.php (SPIP < 2.1)
    462         'code:%s' => "define('_DIRECT_CRON_FORCE', 1);",
     484        'code:%s' => "define('_DIRECT_CRON_FORCE', 1);"
    463485), array(
    464486        'nom' => 'cron_html_bg_force',
    465487        'label' => '@_CS_CHOIX@',
    466 //      'format' => _format_NOMBRE,
     488        //      'format' => _format_NOMBRE,
    467489        'check' => 'couteauprive:cron_html_bg_force',
    468 //      'defaut' => 4,
    469         'code:%s' => "define('_HTML_BG_CRON_FORCE', 1);",
    470 ));
    471 add_outil( array(
     490        //      'defaut' => 4,
     491        'code:%s' => "define('_HTML_BG_CRON_FORCE', 1);"
     492));
     493add_outil(array(
    472494        'id' => 'taches_cron',
    473495        'code:spip_options' => '%%cron_direct_force%%%%cron_html_bg_force%%',
     
    476498        'version-min' => '1.9300', // SPIP 2.0 mini
    477499        'pipelinecode:pre_description_outil' => 'if($id=="taches_cron")
    478                 $texte=str_replace("@_CS_CRON@","\n@puce@ ".trim(recuperer_fond("fonds/taches_cron")) ,$texte);',
    479 ));
    480 
    481 add_variables( array(
     500                $texte=str_replace("@_CS_CRON@","\n@puce@ ".trim(recuperer_fond("fonds/taches_cron")) ,$texte);'
     501));
     502
     503add_variables(array(
    482504        'nom' => 'ecran_actif',
    483505        'label' => '@_CS_CHOIX@',
     
    487509        'code:%s' => "// bug SPIP 1.92, 2.0 et 2.1
    488510if(isset(\$_REQUEST['exec']) && strncmp('admin_couteau_suisse',\$_REQUEST['exec'],20)==0) \$_REQUEST['exec']='admin_couteau_suisse';
    489 ".((!defined('_SPIP20100'))?"if(!defined('_ECRAN_SECURITE') && @file_exists(\$f=\"".str_replace('\\','/',realpath(dirname(__FILE__)))."/lib/ecran_securite/distant_ecran_securite.php\")) include \$f;":''),
     511" . ((!defined('_SPIP20100')) ? "if(!defined('_ECRAN_SECURITE') && @file_exists(\$f=\"" . str_replace('\\', '/', realpath(dirname(__FILE__))) . "/lib/ecran_securite/distant_ecran_securite.php\")) include \$f;" : '')
    490512), array(
    491513        'nom' => 'ecran_load',
    492514        'format' => _format_NOMBRE,
    493515        'defaut' => 4,
    494         'code:%s' => "define('_ECRAN_SECURITE_LOAD',%s);\n",
    495 ));
    496 add_outil( array(
     516        'code:%s' => "define('_ECRAN_SECURITE_LOAD',%s);\n"
     517));
     518add_outil(array(
    497519        'id' => 'ecran_securite',
    498520        'code:spip_options' => '%%ecran_load%%%%ecran_actif%%',
    499521        'categorie' => 'securite',
    500522        'distant' => 'https://zone.spip.org/trac/spip-zone/browser/_core_/securite/ecran_securite.php?format=txt',
    501         'pipeline:fichier_distant' => defined('_SPIP20100')?'ecran_securite_fichier_distant':'',
     523        'pipeline:fichier_distant' => defined('_SPIP20100') ? 'ecran_securite_fichier_distant' : '',
    502524        'pipelinecode:pre_description_outil' => 'if($id=="ecran_securite") $flux["non"] = !%%ecran_actif%% || !$flux["actif"];',
    503525        'pipeline:pre_description_outil' => 'ecran_securite_pre_description_outil',
    504         'description' => "<:ecran_securite::>{{@_ECRAN_SECURITE@}}@_ECRAN_SUITE@",
    505 ));
    506 
    507 add_variables( array(
     526        'description' => "<:ecran_securite::>{{@_ECRAN_SECURITE@}}@_ECRAN_SUITE@"
     527));
     528
     529add_variables(array(
    508530        'nom' => 'log_couteau_suisse',
    509531        'check' => 'couteauprive:cs_log_couteau_suisse',
    510532        'defaut' => 0,
    511533        'commentaire' => '(!defined("_SPIP30000") || _LOG_FILTRE_GRAVITE>=_LOG_INFO)?""
    512                         :_T("couteauprive:cs_comportement_ko", array("gr1"=>"{{"._LOG_FILTRE_GRAVITE."}}","gr2"=>"{{"._LOG_INFO." (INFO)}}"))',
     534                        :_T("couteauprive:cs_comportement_ko", array("gr1"=>"{{"._LOG_FILTRE_GRAVITE."}}","gr2"=>"{{"._LOG_INFO." (INFO)}}"))'
    513535), array(
    514536        'nom' => 'spip_options_on',
    515537        'check' => 'couteauprive:cs_spip_options_on',
    516538        'defaut' => 0,
    517         'commentaire' => 'cs_outils_concernes("code:spip_options");',
     539        'commentaire' => 'cs_outils_concernes("code:spip_options");'
    518540), array(
    519541        'nom' => 'distant_off',
    520542        'check' => 'couteauprive:cs_distant_off',
    521543        'defaut' => 0,
    522         'code:%s' => "define('_CS_PAS_DE_DISTANT','oui');",
     544        'code:%s' => "define('_CS_PAS_DE_DISTANT','oui');"
    523545), array(
    524546        'nom' => 'distant_outils_off',
     
    526548        'defaut' => 0,
    527549        'code:%s' => "define('_CS_PAS_D_OUTIL_DISTANT','oui');",
    528         'commentaire' => 'cs_outils_concernes("fichiers_distants",%s);',
    529 ));
    530 add_outil( array(
     550        'commentaire' => 'cs_outils_concernes("fichiers_distants",%s);'
     551));
     552add_outil(array(
    531553        'id' => 'cs_comportement',
    532554        'code:spip_options' => "%%distant_off%% %%distant_outils_off%%",
     
    537559        array($tmp,cs_root_canonicalize(_DIR_TMP),cs_root_canonicalize(defined("_DIR_LOG")?_DIR_LOG:_DIR_TMP),show_file_options()),
    538560        $texte);
    539 }',
    540 ));
    541 
    542 add_variables( array(
     561}'
     562));
     563
     564add_variables(array(
    543565        'nom' => 'log_non',
    544566        'check' => 'couteauprive:log_non',
    545567        'defaut' => 0,
    546         'code:%s' => "function inc_log(){}",
     568        'code:%s' => "function inc_log(){}"
    547569), array(
    548570        'nom' => 'filtre_gravite',
    549571        'format' => _format_NOMBRE,
    550         'radio' => array(0 => '_EMERGENCY (0)', 1 => '_ALERT (1)', 2 => '_CRITICAL (2)', 3 => '_ERROR (3)', 4 => '_WARNING (4)', 5 => '_NOTICE (5)', 6 => '_INFO (6)', 7 => '_DEBUG (7)', 8 => '_TRACE :'),
     572        'radio' => array(
     573                0 => '_EMERGENCY (0)',
     574                1 => '_ALERT (1)',
     575                2 => '_CRITICAL (2)',
     576                3 => '_ERROR (3)',
     577                4 => '_WARNING (4)',
     578                5 => '_NOTICE (5)',
     579                6 => '_INFO (6)',
     580                7 => '_DEBUG (7)',
     581                8 => '_TRACE :'
     582        ),
    551583        'radio/ligne' => 3,
    552584        'defaut' => 5,
    553585        'code:%s<8' => "defined('_LOG_FILTRE_GRAVITE') || define('_LOG_FILTRE_GRAVITE',%s);",
    554         'code:%s==8' => "defined('_LOG_FILTRE_GRAVITE') || define('_LOG_FILTRE_GRAVITE',_LOG_FILTRE_GRAVITE_TRACE);",
     586        'code:%s==8' => "defined('_LOG_FILTRE_GRAVITE') || define('_LOG_FILTRE_GRAVITE',_LOG_FILTRE_GRAVITE_TRACE);"
    555587), array(
    556588        'nom' => 'filtre_gravite_trace',
    557589        'format' => _format_NOMBRE,
    558590        'defaut' => 8,
    559         'code:%s>=0' => "define('_LOG_FILTRE_GRAVITE_TRACE',%s);",
     591        'code:%s>=0' => "define('_LOG_FILTRE_GRAVITE_TRACE',%s);"
    560592), array(
    561593        'nom' => 'log_brut',
    562594        'check' => 'couteauprive:log_brut',
    563595        'defaut' => 0,
    564         'code:%s' => "defined('_LOG_BRUT') || define('_LOG_BRUT',%s);",
     596        'code:%s' => "defined('_LOG_BRUT') || define('_LOG_BRUT',%s);"
    565597), array(
    566598        'nom' => 'dir_log',
     
    568600        'defaut' => '',
    569601        'code:strlen(%s)' => "defined('_DIR_LOG') || define('_DIR_LOG', _ROOT_RACINE.%s);",
    570         'action' => '%s = strlen(%s=trim(%s))?cs_root_canonicalize(%s."/", _DIR_RACINE):"";',
     602        'action' => '%s = strlen(%s=trim(%s))?cs_root_canonicalize(%s."/", _DIR_RACINE):"";'
    571603), array(
    572604        'nom' => 'file_log',
     
    574606        'taille' => 10,
    575607        'defaut' => "'spip'",
    576         'code:%s' => "defined('_FILE_LOG') || define('_FILE_LOG',%s);",
     608        'code:%s' => "defined('_FILE_LOG') || define('_FILE_LOG',%s);"
    577609), array(
    578610        'nom' => 'file_log_suffix',
     
    580612        'taille' => 10,
    581613        'defaut' => "'.log'",
    582         'code:%s' => "defined('_FILE_LOG_SUFFIX') || define('_FILE_LOG_SUFFIX',%s);",
     614        'code:%s' => "defined('_FILE_LOG_SUFFIX') || define('_FILE_LOG_SUFFIX',%s);"
    583615), array(
    584616        'nom' => 'max_log',
    585617        'format' => _format_NOMBRE,
    586618        'defaut' => 100, // lignes
    587         'code:%s>0 && %s<>100' => "defined('_MAX_LOG') || define('_MAX_LOG',%s);",
     619        'code:%s>0 && %s<>100' => "defined('_MAX_LOG') || define('_MAX_LOG',%s);"
    588620), array(
    589621        'nom' => 'log_fileline',
    590622        'check' => 'couteauprive:log_fileline',
    591623        'defaut' => 0,
    592         'code:%s>0 && %s<>100' => "defined('_LOG_FILELINE') || define('_LOG_FILELINE',%s);",
     624        'code:%s>0 && %s<>100' => "defined('_LOG_FILELINE') || define('_LOG_FILELINE',%s);"
    593625), array(
    594626        'nom' => 'taille_des_logs',
    595627        'format' => _format_NOMBRE,
    596628        'defaut' => 100, // Ko (0 : pas de log)
    597         'code:%s>=0 && %s<>100' => "\$GLOBALS['taille_des_logs']=%s;",
     629        'code:%s>=0 && %s<>100' => "\$GLOBALS['taille_des_logs']=%s;"
    598630), array(
    599631        'nom' => 'nombre_de_logs',
    600632        'format' => _format_NOMBRE,
    601633        'defaut' => 4, // (0 : pas de log)
    602         'code:%s>=0 && %s<>4' => "\$GLOBALS['nombre_de_logs']=%s;",
    603 ));
    604 add_outil( array(
     634        'code:%s>=0 && %s<>4' => "\$GLOBALS['nombre_de_logs']=%s;"
     635));
     636add_outil(array(
    605637        'id' => 'spip_log',
    606         'description' => '<:spip_log::>' . (defined('_SPIP30000')?'[[->@puce@ %log_fileline%]][[->@puce@ %log_brut%]]<:spip_log:2:>[[%filtre_gravite%]][[radio->%filtre_gravite_trace%]][[->%log_non%]]':(defined('_SPIP20100')?'[[->%log_non%]]':'')) . "<:spip_log:4:>\n_ <:spip_log:3:>",
    607         'code:spip_options' => (defined('_SPIP30000')?'%%filtre_gravite_trace%%%%filtre_gravite%%%%log_brut%%%%log_fileline%%':'')
     638        'description' => '<:spip_log::>' . (defined('_SPIP30000')
     639                ? '[[->@puce@ %log_fileline%]][[->@puce@ %log_brut%]]<:spip_log:2:>[[%filtre_gravite%]][[radio->%filtre_gravite_trace%]][[->%log_non%]]'
     640                : (defined('_SPIP20100') ? '[[->%log_non%]]' : '')) . "<:spip_log:4:>\n_ <:spip_log:3:>",
     641        'code:spip_options' => (defined('_SPIP30000') ? '%%filtre_gravite_trace%%%%filtre_gravite%%%%log_brut%%%%log_fileline%%' : '')
    608642                . '%%dir_log%%%%file_log%%%%file_log_suffix%%%%max_log%%%%taille_des_logs%%%%nombre_de_logs%%%%log_non%%',
    609         'categorie' =>'devel',
    610         'contrib'=>4569,
     643        'categorie' => 'devel',
     644        'contrib' => 4569,
    611645        'pipelinecode:pre_description_outil' => 'if($id=="spip_log")
    612646        $texte=str_replace(array("@DIR_LOG@","@SPIP_OPTIONS@"),
    613         array("<code>".cs_root_canonicalize(_DIR_LOG)."</code>",!defined("_CS_SPIP_OPTIONS_OK")?"<br/>"._T("couteauprive:detail_spip_options2"):""),$texte);',
    614 ));
    615 
    616 add_variables( array(
     647        array("<code>".cs_root_canonicalize(_DIR_LOG)."</code>",!defined("_CS_SPIP_OPTIONS_OK")?"<br/>"._T("couteauprive:detail_spip_options2"):""),$texte);'
     648));
     649
     650add_variables(array(
    617651        'nom' => 'req_lentes',
    618652        'check' => 'couteauprive:req_lentes',
    619653        'defaut' => 0,
    620         'code:%s' => "defined('_DEBUG_SLOW_QUERIES') || define('_DEBUG_SLOW_QUERIES',true);",
     654        'code:%s' => "defined('_DEBUG_SLOW_QUERIES') || define('_DEBUG_SLOW_QUERIES',true);"
    621655), array(
    622656        'nom' => 'boucles_lentes',
    623657        'format' => _format_NOMBRE,
    624658        'defaut' => 0, // Secondes (0 : pas de profiling)
    625         'code:%s>0 && %s<=30' => "defined('_BOUCLE_PROFILER') || define('_BOUCLE_PROFILER',%s*1000);",
    626 ));
    627 add_outil( array(
     659        'code:%s>0 && %s<=30' => "defined('_BOUCLE_PROFILER') || define('_BOUCLE_PROFILER',%s*1000);"
     660));
     661add_outil(array(
    628662        'id' => 'profiling',
    629663        'code:spip_options' => '%%req_lentes%%%%boucles_lentes%%',
    630         'categorie' =>'devel',
    631         'contrib'=>4569,
    632 ));
    633 
    634 add_outil( array(
     664        'categorie' => 'devel',
     665        'contrib' => 4569
     666));
     667
     668add_outil(array(
    635669        'id' => 'test_i18n',
    636670        'code:spip_options' => '$GLOBALS["test_i18n"] = true ;',
    637671        'categorie' => 'devel',
    638         'pipelinecode:pre_description_outil' => 'if($id=="test_i18n") $texte.=_T("Lorem_ipsum_dolor");',
    639 ));
    640 
    641 add_outil( array(
     672        'pipelinecode:pre_description_outil' => 'if($id=="test_i18n") $texte.=_T("Lorem_ipsum_dolor");'
     673));
     674
     675add_outil(array(
    642676        'id' => 'xml',
    643677        'code:options' => "\$GLOBALS['xhtml']='sax';",
    644678        'auteur' => 'Ma&iuml;eul Rouquette',
    645         'categorie' =>'devel',
    646         'version-min' => '1.9200',
    647 ));
    648 
    649 add_outil( array(
     679        'categorie' => 'devel',
     680        'version-min' => '1.9200'
     681));
     682
     683add_outil(array(
    650684        'id' => 'f_jQuery',
    651685        'code:spip_options' => "\$GLOBALS['spip_pipeline']['insert_head'] = str_replace('|f_jQuery', '', \$GLOBALS['spip_pipeline']['insert_head']);",
    652686        'auteur' => 'Fil',
    653         'categorie' =>'public',
    654         'version-min' => '1.9200',
    655 ));
    656 
    657 add_variables( array(
     687        'categorie' => 'public',
     688        'version-min' => '1.9200'
     689));
     690
     691add_variables(array(
    658692        'nom' => 'prive_travaux',
    659693        'format' => _format_NOMBRE,
    660         'radio' => array(0 => 'couteauprive:tous', 1 => 'couteauprive:admins_seuls'),
    661         'defaut' => 0,
    662         'code:%s' => "define('_en_travaux_PRIVE', %s);\n",
     694        'radio' => array(
     695                0 => 'couteauprive:tous',
     696                1 => 'couteauprive:admins_seuls'
     697        ),
     698        'defaut' => 0,
     699        'code:%s' => "define('_en_travaux_PRIVE', %s);\n"
    663700), array(
    664701        'nom' => 'admin_travaux',
    665702        'format' => _format_NOMBRE,
    666         'radio' => array(0 => 'couteauprive:tous', 1 => 'couteauprive:sauf_admin', 2 => 'couteauprive:sauf_admin_redac', 3 => 'couteauprive:sauf_identifies'),
     703        'radio' => array(
     704                0 => 'couteauprive:tous',
     705                1 => 'couteauprive:sauf_admin',
     706                2 => 'couteauprive:sauf_admin_redac',
     707                3 => 'couteauprive:sauf_identifies'
     708        ),
    667709        'radio/ligne' => 1,
    668710        'defaut' => 0,
    669         'code' => "define('_en_travaux_PUBLIC', %s);\n",
     711        'code' => "define('_en_travaux_PUBLIC', %s);\n"
    670712), array(
    671713        'nom' => 'avertir_travaux',
    672714        'check' => 'couteauprive:travaux_masquer_avert',
    673715        'defaut' => 0,
    674         'code:%s' => "define('_en_travaux_SANSMSG', %s);\n",
     716        'code:%s' => "define('_en_travaux_SANSMSG', %s);\n"
    675717), array(
    676718        'nom' => 'message_travaux',
     
    678720        'defaut' => "_T('couteauprive:travaux_prochainement')",
    679721        'lignes' => 3,
    680         'code' => "\$tr_message=%s;\n",
     722        'code' => "\$tr_message=%s;\n"
    681723), array(
    682724        'nom' => 'titre_travaux',
    683725        'format' => _format_NOMBRE,
    684         'radio' => array(1 => 'couteauprive:travaux_titre', 0 => 'couteauprive:travaux_nom_site'),
    685         'defaut' => 1,
    686         'code:%s' => "define('_en_travaux_TITRE', %s);",
     726        'radio' => array(
     727                1 => 'couteauprive:travaux_titre',
     728                0 => 'couteauprive:travaux_nom_site'
     729        ),
     730        'defaut' => 1,
     731        'code:%s' => "define('_en_travaux_TITRE', %s);"
    687732), array(
    688733        'nom' => 'cache_travaux',
     
    690735        'check' => 'couteauprive:travaux_nocache',
    691736        'defaut' => 1,
    692         'code:%s' => "define('_NO_CACHE',1);", // SPIP >=2.0
    693 ));
    694 add_outil( array(
     737        'code:%s' => "define('_NO_CACHE',1);" // SPIP >=2.0
     738));
     739add_outil(array(
    695740        'id' => 'en_travaux',
    696741        'code:options' => "%%message_travaux%%%%prive_travaux%%%%admin_travaux%%%%avertir_travaux%%%%titre_travaux%%",
     
    700745        'pipelinecode:pre_description_outil' => 'if($id=="en_travaux") $texte=str_replace(array("@_CS_TRAVAUX_TITRE@","@_CS_NOM_SITE@"),
    701746        array("["._T("info_travaux_titre")."]","[".$GLOBALS["meta"]["nom_site"]."]"),$texte);',
    702         'description' => '<:en_travaux::>[[%message_travaux%]][[%titre_travaux%]][[%admin_travaux%]][[-><admin_travaux valeur="1/2/3">%avertir_travaux%</admin_travaux>]][[->%cache_travaux%]][[%prive_travaux%]]',
    703 ));
    704 
    705 add_variables( array(
     747        'description' => '<:en_travaux::>[[%message_travaux%]][[%titre_travaux%]][[%admin_travaux%]][[-><admin_travaux valeur="1/2/3">%avertir_travaux%</admin_travaux>]][[->%cache_travaux%]][[%prive_travaux%]]'
     748));
     749
     750add_variables(array(
    706751        'nom' => 'bp_tri_auteurs',
    707752        'check' => 'couteauprive:bp_tri_auteurs',
    708753        'defaut' => 1,
    709         'code:%s' => "define('boites_privees_TRI_AUTEURS', %s);\n",
     754        'code:%s' => "define('boites_privees_TRI_AUTEURS', %s);\n"
    710755), array(
    711756        'nom' => 'bp_urls_propres',
    712757        'check' => 'couteauprive:bp_urls_propres',
    713758        'defaut' => 1,
    714         'code:%s' => "define('boites_privees_URLS_PROPRES', %s);\n",
     759        'code:%s' => "define('boites_privees_URLS_PROPRES', %s);\n"
    715760), array(
    716761        'nom' => 'cs_rss',
    717762        'check' => 'couteauprive:rss_var',
    718763        'defaut' => 1,
    719         'code:%s' => "define('boites_privees_CS', %s);\n",
     764        'code:%s' => "define('boites_privees_CS', %s);\n"
    720765), array(
    721766        'nom' => 'format_spip',
    722767        'check' => 'couteauprive:format_spip',
    723768        'defaut' => 1,
    724         'code:%s' => "define('boites_privees_ARTICLES', %s);\n",
     769        'code:%s' => "define('boites_privees_ARTICLES', %s);\n"
    725770), array(
    726771        'nom' => 'stat_auteurs',
    727772        'check' => 'couteauprive:stat_auteurs',
    728773        'defaut' => 1,
    729         'code:%s' => "define('boites_privees_AUTEURS', %s);\n",
     774        'code:%s' => "define('boites_privees_AUTEURS', %s);\n"
    730775), array(
    731776        'nom' => 'qui_webmasters',
    732777        'check' => 'couteauprive:qui_webmestres',
    733778        'defaut' => 1,
    734         'code:%s' => "define('boites_privees_WEBMASTERS', %s);\n",
    735 ));
    736 add_outil( array(
     779        'code:%s' => "define('boites_privees_WEBMASTERS', %s);\n"
     780));
     781add_outil(array(
    737782        'id' => 'boites_privees',
    738         'auteur'=>'Pat, Joseph LARMARANGE (format SPIP)',
     783        'auteur' => 'Pat, Joseph LARMARANGE (format SPIP)',
    739784        'contrib' => 2564,
    740         'code:options' => "%%cs_rss%%%%format_spip%%%%stat_auteurs%%%%qui_webmasters%%%%bp_urls_propres%%%%bp_tri_auteurs%%"
    741                 .(!defined('_SPIP30000')?'function action_auteur_poubelle_dist() {
     785        'code:options' => "%%cs_rss%%%%format_spip%%%%stat_auteurs%%%%qui_webmasters%%%%bp_urls_propres%%%%bp_tri_auteurs%%" . (!defined('_SPIP30000') ? 'function action_auteur_poubelle_dist() {
    742786        $securiser_action = charger_fonction("securiser_action", "inc");
    743787        include_spip("action/editer_auteur");
    744788        instituer_auteur(intval($securiser_action()), array("statut"=>"5poubelle"));
    745 }':''),
     789}' : ''),
    746790        'categorie' => 'interface',
    747791        'pipeline:affiche_milieu' => 'boites_privees_affiche_milieu',
     
    749793        'pipeline:affiche_gauche' => 'boites_privees_affiche_gauche',
    750794        // controle de la boucle AUTEURS afin de respecter l'ordre des auteurs stockes en base
    751         'pipeline:pre_boucle' => defined('_SPIP20100')?'boites_privees_pre_boucle':'',
    752         'code:fonctions' => 'include_spip("outils/boites_privees");',
     795        'pipeline:pre_boucle' => defined('_SPIP20100') ? 'boites_privees_pre_boucle' : '',
     796        'code:fonctions' => 'include_spip("outils/boites_privees");'
    753797        // Pour la constante _CS_RSS_SOURCE
    754 #       'pipelinecode:pre_description_outil' => 'if($id=="boites_privees") include_spip("cout_define");',
     798        #       'pipelinecode:pre_description_outil' => 'if($id=="boites_privees") include_spip("cout_define");',
    755799));
    756800
    757801// TODO : compat SPIP 3.0 ?
    758 add_variables( array(
     802add_variables(array(
    759803        'nom' => 'max_auteurs_page',
    760804        'format' => _format_NOMBRE,
    761805        'defaut' => 30,
    762         'code:%s' => "@define('MAX_AUTEURS_PAR_PAGE', %s);\n",
    763 ), array(
    764         'nom' => 'auteurs_0',   'check' => 'info_administrateurs',      'defaut' => 1,  'code:%s' => "'0minirezo',",
    765 ), array(
    766         'nom' => 'auteurs_1',   'check' => 'info_redacteurs',   'defaut' => 1,  'code:%s' => "'1comite',",
    767 ), array(
    768         'nom' => 'auteurs_5',   'check' => defined('_SPIP30000')?'texte_statut_poubelle':'info_statut_site_4',  'defaut' => 1,  'code:%s' => "'5poubelle',",
    769 ), array(
    770         'nom' => 'auteurs_6',   'check' => 'info_visiteurs',    'defaut' => 0,  'code:%s' => "'6forum',",
    771 ), array(
    772         'nom' => 'auteurs_n',   'check' => 'couteauprive:nouveaux',     'defaut' => 0,  'code:%s' => "'nouveau',",
     806        'code:%s' => "@define('MAX_AUTEURS_PAR_PAGE', %s);\n"
     807), array(
     808        'nom' => 'auteurs_0',
     809        'check' => 'info_administrateurs',
     810        'defaut' => 1,
     811        'code:%s' => "'0minirezo',"
     812), array(
     813        'nom' => 'auteurs_1',
     814        'check' => 'info_redacteurs',
     815        'defaut' => 1,
     816        'code:%s' => "'1comite',"
     817), array(
     818        'nom' => 'auteurs_5',
     819        'check' => defined('_SPIP30000') ? 'texte_statut_poubelle' : 'info_statut_site_4',
     820        'defaut' => 1,
     821        'code:%s' => "'5poubelle',"
     822), array(
     823        'nom' => 'auteurs_6',
     824        'check' => 'info_visiteurs',
     825        'defaut' => 0,
     826        'code:%s' => "'6forum',"
     827), array(
     828        'nom' => 'auteurs_n',
     829        'check' => 'couteauprive:nouveaux',
     830        'defaut' => 0,
     831        'code:%s' => "'nouveau',"
    773832), array(
    774833        'nom' => 'auteurs_tout_voir',
    775834        'format' => _format_NOMBRE,
    776         'radio' => array(1 => 'couteauprive:statuts_tous', 0 => 'couteauprive:statuts_spip'),
     835        'radio' => array(
     836                1 => 'couteauprive:statuts_tous',
     837                0 => 'couteauprive:statuts_spip'
     838        ),
    777839        'radio/ligne' => 1,
    778840        'defaut' => 0,
    779841        'label' => '@_CS_CHOIX@',
    780 //      'code:!%s' => "@define('AUTEURS_DEFAUT', join(\$temp_auteurs,','));",
     842        //      'code:!%s' => "@define('AUTEURS_DEFAUT', join(\$temp_auteurs,','));",
    781843        'code:!%s' => "if(_request('exec')=='auteurs' && !_request('statut')) \$_GET['statut'] = join(\$temp_auteurs,',');",
    782         'code:%s' => "if(_request('exec')=='auteurs' && !_request('statut')) \$_GET['statut'] = '!foo';",
    783 ));
    784 add_outil( array(
     844        'code:%s' => "if(_request('exec')=='auteurs' && !_request('statut')) \$_GET['statut'] = '!foo';"
     845));
     846add_outil(array(
    785847        'id' => 'auteurs',
    786848        'code:options' => "%%max_auteurs_page%%\$temp_auteurs=array(%%auteurs_0%%%%auteurs_1%%%%auteurs_5%%%%auteurs_6%%%%auteurs_n%%); %%auteurs_tout_voir%% unset(\$temp_auteurs);",
    787849        'categorie' => 'interface',
    788         'version-min' => '1.9300',
    789 //      'pipeline:affiche_milieu' => 'auteurs_affiche_milieu',
     850        'version-min' => '1.9300'
     851        //      'pipeline:affiche_milieu' => 'auteurs_affiche_milieu',
    790852));
    791853
     
    794856//-----------------------------------------------------------------------------//
    795857
    796 add_outil( array(
     858add_outil(array(
    797859        'id' => 'verstexte',
    798860        'auteur' => 'C&eacute;dric MORIN',
    799         'categorie' => 'spip',
    800 ));
    801 
    802 add_outil( array(
     861        'categorie' => 'spip'
     862));
     863
     864add_outil(array(
    803865        'id' => 'orientation',
    804         'auteur'         => 'Pierre Andrews (Mortimer) &amp; IZO',
    805         'categorie' => 'spip',
     866        'auteur' => 'Pierre Andrews (Mortimer) &amp; IZO',
     867        'categorie' => 'spip'
    806868));
    807869
    808870// intertitres typo, outil compatible avec 'sommaire', mais a placer avant... :
    809 add_variables( array(
     871add_variables(array(
    810872        'nom' => 'i_align',
    811         'radio' => array('left' => '_left', 'right' => '_right', 'center' => '_center'),
    812         'defaut' => "'left'",
     873        'radio' => array(
     874                'left' => '_left',
     875                'right' => '_right',
     876                'center' => '_center'
     877        ),
     878        'defaut' => "'left'"
    813879), array(
    814880        'nom' => 'i_padding',
    815881        'format' => _format_NOMBRE,
    816         'defaut' => 0,
     882        'defaut' => 0
    817883), array(
    818884        'nom' => 'i_hauteur',
    819885        'format' => _format_NOMBRE,
    820         'defaut' => 0,
     886        'defaut' => 0
    821887), array(
    822888        'nom' => 'i_largeur',
    823889        'format' => _format_NOMBRE,
    824         'defaut' => 600,
     890        'defaut' => 600
    825891), array(
    826892        'nom' => 'i_taille',
    827893        'format' => _format_NOMBRE,
    828         'defaut' => 16,
     894        'defaut' => 16
    829895), array(
    830896        'nom' => 'i_couleur',
    831897        'format' => _format_CHAINE,
    832         'defaut' => "'black'",
     898        'defaut' => "'black'"
    833899), array(
    834900        'nom' => 'i_police',
    835901        'format' => _format_CHAINE,
    836         'defaut' => "'dustismo.ttf'",
    837 ));
    838 add_outil( array(
     902        'defaut' => "'dustismo.ttf'"
     903));
     904add_outil(array(
    839905        'id' => 'titres_typo',
    840         'categorie'   => 'typo-corr',
     906        'categorie' => 'typo-corr',
    841907        'code:options' => 'define("_titres_typo_ARG", "couleur=%%i_couleur%%,taille=%%i_taille%%,police=%%i_police%%,largeur=%%i_largeur%%,hauteur_ligne=%%i_hauteur%%,padding=%%i_padding%%,align=%%i_align%%");',
    842         defined('_SPIP19300')?'pipeline:pre_propre':'pipeline:pre_typo'  => 'titres_typo_pre_typo',
     908        defined('_SPIP19300') ? 'pipeline:pre_propre' : 'pipeline:pre_typo' => 'titres_typo_pre_typo',
    843909        'pipelinecode:pre_description_outil' => 'if($id=="titres_typo")
    844                 $texte=str_replace("@_CS_FONTS@",join(" - ",get_liste_fonts()),$texte);',       
    845 ));
    846 
    847 add_variable( array(
     910                $texte=str_replace("@_CS_FONTS@",join(" - ",get_liste_fonts()),$texte);'
     911));
     912
     913add_variable(array(
    848914        'nom' => 'balise_decoupe',
    849915        'format' => _format_NOMBRE,
    850         'radio' => array(1 => 'item_oui', 0 => 'item_non'),
    851         'defaut' => 0,
    852         'code:%s' => "define('_decoupe_BALISE', %s);\n",
    853 ));
    854 add_outil( array(
     916        'radio' => array(
     917                1 => 'item_oui',
     918                0 => 'item_non'
     919        ),
     920        'defaut' => 0,
     921        'code:%s' => "define('_decoupe_BALISE', %s);\n"
     922));
     923add_outil(array(
    855924        'id' => 'decoupe',
    856         'contrib'       => 2135,
     925        'contrib' => 2135,
    857926        // Le separateur <span class="csfoo xxxx"></span> est supprime en fin de calcul de page
    858927        'code:options' => "%%balise_decoupe%%define('_onglets_FIN', '<span class=\"csfoo ongl\"></span>');\n@define('_decoupe_SEPARATEUR', '++++');
     
    862931}",
    863932        // construction des onglets
    864         'code:jq_init' => "onglets_init.apply(this);",// decoupe_init.apply(this);",
     933        'code:jq_init' => "onglets_init.apply(this);", // decoupe_init.apply(this);",
    865934        'code:js' => "var onglets_balise = 'h2';",
    866935        // pour les balises #TEXTE : $table_des_traitements['TEXTE'] = 'cs_decoupe(propre(%s))';
     
    881950        'pipeline:nettoyer_raccourcis_typo' => 'decoupe_nettoyer_raccourcis',
    882951        'pipeline:porte_plume_cs_pre_charger' => 'decoupe_CS_pre_charger',
    883         'pipeline:porte_plume_lien_classe_vers_icone' => 'decoupe_PP_icones',
     952        'pipeline:porte_plume_lien_classe_vers_icone' => 'decoupe_PP_icones'
    884953));
    885954
    886955// couplage avec l'outil 'decoupe', donc 'sommaire' doit etre place juste apres :
    887956// il faut inserer le sommaire dans l'article et ensuite seulement choisir la page
    888 add_variables( array(
     957add_variables(array(
    889958        'nom' => 'prof_sommaire',
    890959        'format' => _format_NOMBRE,
    891960        'defaut' => 1,
    892         'code:%s>=2 && %s<=4' => "define('_sommaire_PROFONDEUR', %s);\n",
     961        'code:%s>=2 && %s<=4' => "define('_sommaire_PROFONDEUR', %s);\n"
    893962), array(
    894963        'nom' => 'lgr_sommaire',
    895964        'format' => _format_NOMBRE,
    896965        'defaut' => 30,
    897         'code:%s>=9 && %s<=99' => "define('_sommaire_NB_CARACTERES', %s);\n",
     966        'code:%s>=9 && %s<=99' => "define('_sommaire_NB_CARACTERES', %s);\n"
    898967), array(
    899968        'nom' => 'auto_sommaire',
    900969        'format' => _format_NOMBRE,
    901         'radio' => array(1 => 'item_oui', 0 => 'item_non'),
    902         'defaut' => 1,
    903         'code:%s' => "define('_sommaire_AUTOMATIQUE', %s);\n",
     970        'radio' => array(
     971                1 => 'item_oui',
     972                0 => 'item_non'
     973        ),
     974        'defaut' => 1,
     975        'code:%s' => "define('_sommaire_AUTOMATIQUE', %s);\n"
    904976), array(
    905977        'nom' => 'jolies_ancres',
    906978        'format' => _format_NOMBRE,
    907         'radio' => array(1 => 'item_oui', 0 => 'item_non'),
    908         'defaut' => 0,
    909         'code:%s' => "define('_sommaire_JOLIES_ANCRES', %s);\n",
     979        'radio' => array(
     980                1 => 'item_oui',
     981                0 => 'item_non'
     982        ),
     983        'defaut' => 0,
     984        'code:%s' => "define('_sommaire_JOLIES_ANCRES', %s);\n"
    910985), array(
    911986        'nom' => 'balise_sommaire',
    912987        'format' => _format_NOMBRE,
    913         'radio' => array(1 => 'item_oui', 0 => 'item_non'),
    914         'defaut' => 0,
    915         'code:%s' => "define('_sommaire_BALISE', %s);",
     988        'radio' => array(
     989                1 => 'item_oui',
     990                0 => 'item_non'
     991        ),
     992        'defaut' => 0,
     993        'code:%s' => "define('_sommaire_BALISE', %s);"
    916994));
    917995include_spip('inc/filtres');
    918 add_outil( array(
     996add_outil(array(
    919997        'id' => 'sommaire',
    920         'contrib'       => 2378,
     998        'contrib' => 2378,
    921999        // Le separateur <span class="csfoo xxxx"></span> est supprime en fin de calcul de page
    9221000        'code:options' => "define('_sommaire_REM', '<span class=\"csfoo somm\"></span>');\ndefine('_CS_SANS_SOMMAIRE', '[!sommaire]');\ndefine('_CS_AVEC_SOMMAIRE', '[sommaire]');\n%%prof_sommaire%%%%lgr_sommaire%%%%auto_sommaire%%%%jolies_ancres%%%%balise_sommaire%%",
     
    9371015        'pipeline:nettoyer_raccourcis_typo' => 'sommaire_nettoyer_raccourcis',
    9381016        'pipeline:pre_description_outil' => 'sommaire_description_outil',
    939         'pipeline:pre_propre' => 'sommaire_intertitres',
     1017        'pipeline:pre_propre' => 'sommaire_intertitres'
    9401018));
    9411019
     
    9451023
    9461024// TODO : gestion du jQuery dans la fonction a revoir ?
    947 add_outil( array(
     1025add_outil(array(
    9481026        'id' => 'desactiver_flash',
    949         'auteur'         => 'C&eacute;dric MORIN',
    950         'categorie'      => 'public',
     1027        'auteur' => 'C&eacute;dric MORIN',
     1028        'categorie' => 'public',
    9511029        // fonction InhibeFlash_init() codee dans desactiver_flash.js : executee lors du chargement de la page et a chaque hit ajax
    952         'code:jq_init_public' => 'InhibeFlash_init.apply(this);',
    953 ));
    954 
    955 add_variables( array(
     1030        'code:jq_init_public' => 'InhibeFlash_init.apply(this);'
     1031));
     1032
     1033add_variables(array(
    9561034        'nom' => 'radio_target_blank3',
    9571035        'format' => _format_NOMBRE,
    958         'radio' => array(1 => 'item_oui', 0 => 'item_non'),
    959         'defaut' => 0,
    960         'code' => '$GLOBALS["tweak_target_blank"]=%s;',
     1036        'radio' => array(
     1037                1 => 'item_oui',
     1038                0 => 'item_non'
     1039        ),
     1040        'defaut' => 0,
     1041        'code' => '$GLOBALS["tweak_target_blank"]=%s;'
    9611042), array(
    9621043        'nom' => 'url_glossaire_externe2',
    9631044        'format' => _format_CHAINE,
    9641045        'defaut' => '""',
    965         'code:strlen(%s)' => '$GLOBALS["url_glossaire_externe"]=%s;',
     1046        'code:strlen(%s)' => '$GLOBALS["url_glossaire_externe"]=%s;'
    9661047), array(
    9671048        'nom' => 'enveloppe_mails',
    9681049        'format' => _format_NOMBRE,
    969         'radio' => array(1 => 'item_oui', 0 => 'item_non', -1 => 'couteauprive:par_defaut'),
     1050        'radio' => array(
     1051                1 => 'item_oui',
     1052                0 => 'item_non',
     1053                -1 => 'couteauprive:par_defaut'
     1054        ),
    9701055        'defaut' => -1,
    9711056        // Code pour le CSS
    9721057        'code:%s>0' => 'a.spip_mail:before{content:"\002709" !important;}',
    973         'code:%s===0' => 'a.spip_mail:before{content:"" !important;}',
    974 ));
    975 add_outil( array(
     1058        'code:%s===0' => 'a.spip_mail:before{content:"" !important;}'
     1059));
     1060add_outil(array(
    9761061        'id' => 'SPIP_liens',
    9771062        'categorie' => 'public',
    978         'contrib'       => 2443,
    979         'description' => '<:SPIP_liens::>'.(defined('_SPIP19300')?'<:SPIP_liens:1:>':''),
     1063        'contrib' => 2443,
     1064        'description' => '<:SPIP_liens::>' . (defined('_SPIP19300') ? '<:SPIP_liens:1:>' : ''),
    9801065        'code:options' => "%%radio_target_blank3%%\n%%url_glossaire_externe2%%",
    9811066        'code:jq_init' => 'if(%%radio_target_blank3%%) { if(!cs_prive) jQuery("a.spip_out,a.spip_url,a.spip_glossaire",this).attr("target", "_blank"); }',
    982         'code:css' => defined('_SPIP19300')?'[[%enveloppe_mails%]]':NULL,
    983 ));
    984 
    985 add_variables( array(
     1067        'code:css' => defined('_SPIP19300') ? '[[%enveloppe_mails%]]' : NULL
     1068));
     1069
     1070add_variables(array(
    9861071        'nom' => 'tout_rub',
    9871072        'check' => 'icone_rubriques',
    988         'defaut' => 0,
     1073        'defaut' => 0
    9891074), array(
    9901075        'nom' => 'tout_aut',
    9911076        'check' => 'icone_auteurs',
    992         'defaut' => 0,
    993 ));
    994 add_outil( array(
     1077        'defaut' => 0
     1078));
     1079add_outil(array(
    9951080        'id' => 'aff_tout',
    9961081        'categorie' => 'public',
    9971082        'auteur' => 'b_b',
    9981083        'description' => '<:aff_tout::>[[%tout_rub%]][[->%tout_aut%]]',
    999         'pipelinecode:pre_boucle' =>
    1000 'if(%%tout_rub%%) {if($flux->type_requete == \'rubriques\' && !isset($flux->modificateur[\'criteres\'][\'statut\']))
     1084        'pipelinecode:pre_boucle' => 'if(%%tout_rub%%) {if($flux->type_requete == \'rubriques\' && !isset($flux->modificateur[\'criteres\'][\'statut\']))
    10011085        $flux->modificateur[\'criteres\'][\'statut\'] = true;}
    10021086if(%%tout_aut%%) {if($flux->type_requete == \'auteurs\' && !isset($flux->modificateur[\'criteres\'][\'statut\']))
    1003         $flux->modificateur[\'criteres\'][\'statut\'] = true;}',
     1087        $flux->modificateur[\'criteres\'][\'statut\'] = true;}'
    10041088));
    10051089
     
    10081092//-----------------------------------------------------------------------------//
    10091093
    1010 add_outil( array(
     1094add_outil(array(
    10111095        'id' => 'visiteurs_connectes',
    10121096        'auteur' => "Phil d'apr&egrave;s contrib.spip",
    10131097        'categorie' => 'public',
    1014         'contrib'       => 3412,
     1098        'contrib' => 3412,
    10151099        'code:options' => "
    10161100function cs_compter_visiteurs(){ return count(preg_files(_DIR_TMP.'visites/','.')); }
     
    10181102        'version-min' => '1.9200', // pour la balise #ARRAY
    10191103        'pipelinecode:pre_description_outil' => 'if($id=="visiteurs_connectes") if($GLOBALS["meta"]["activer_statistiques"]!="oui")
    1020                 $texte.="\n\n<spanred>"._T("couteauprive:visiteurs_connectes:inactif")."</span>";',
    1021 
     1104                $texte.="\n\n<spanred>"._T("couteauprive:visiteurs_connectes:inactif")."</span>";'
     1105       
    10221106        //      une mise a jour toutes les 120 sec ?
    1023 /*      'code:js' => 'function Timer_visiteurs_connectes(){
    1024                 jQuery("span.cs_nb_visiteurs").load("spip.php?action=visiteurs_connectes");
    1025                 setTimeout("Timer_visiteurs_connectes()",120000);                                       
    1026 }',
     1107        /*      'code:js' => 'function Timer_visiteurs_connectes(){
     1108        jQuery("span.cs_nb_visiteurs").load("spip.php?action=visiteurs_connectes");
     1109        setTimeout("Timer_visiteurs_connectes()",120000);                                       
     1110        }',
    10271111        'code:jq' => ' if(jQuery("span.cs_nb_visiteurs").length) Timer_visiteurs_connectes(); ',
    1028 */
     1112        */
    10291113));
    10301114
     
    10331117//-----------------------------------------------------------------------------//
    10341118
    1035 add_outil( array(
     1119add_outil(array(
    10361120        'id' => 'toutmulti',
    1037         'categorie'      => 'typo-racc',
    1038         'pipeline:pre_typo' => 'ToutMulti_pre_typo',
    1039 ));
    1040 
    1041 add_variable( array(    // variable utilisee par 'pipelinecode:insert_head'
     1121        'categorie' => 'typo-racc',
     1122        'pipeline:pre_typo' => 'ToutMulti_pre_typo'
     1123));
     1124
     1125add_variable(array( // variable utilisee par 'pipelinecode:insert_head'
    10421126        'nom' => 'puceSPIP',
    10431127        'check' => 'couteauprive:puceSPIP',
    10441128        'defaut' => 0,
    1045         'label' => '@_CS_CHOIX@',
    1046 ));
    1047 add_outil( array(
     1129        'label' => '@_CS_CHOIX@'
     1130));
     1131add_outil(array(
    10481132        'id' => 'pucesli',
    1049         'auteur'         => "J&eacute;r&ocirc;me Combaz pour l'id&eacute;e originale",
    1050         'categorie'      => 'typo-corr',
     1133        'auteur' => "J&eacute;r&ocirc;me Combaz pour l'id&eacute;e originale",
     1134        'categorie' => 'typo-corr',
    10511135        'pipelinecode:pre_typo' => 'if(strpos($flux, "-")!==false OR strpos($flux, "*")!==false) $flux = cs_echappe_balises("html|code|cadre|frame|script|cite|jeux", "pucesli_remplace", $flux);',
    10521136        'code:options' => 'function pucesli_remplace($texte) {
     
    10541138        return preg_replace(\'/^-\s*(?![-*#])/m\', \'-* \', $texte);
    10551139}
    1056 if(%%puceSPIP%%) {function pucesli_raccourcis() {return _T(\'couteauprive:puceSPIP_aide\');}}',
    1057 ));
    1058 
    1059 add_outil( array(
    1060     'id' => 'citations_bb',
    1061     'auteur'    => 'Bertrand Marne, Romy T&ecirc;tue',
    1062     'categorie' => 'typo-corr',
    1063         'code:css'      => '/* Specifie des paires de guillemets sur plusieurs niveaux pour chaque langue */
     1140if(%%puceSPIP%%) {function pucesli_raccourcis() {return _T(\'couteauprive:puceSPIP_aide\');}}'
     1141));
     1142
     1143add_outil(array(
     1144        'id' => 'citations_bb',
     1145        'auteur' => 'Bertrand Marne, Romy T&ecirc;tue',
     1146        'categorie' => 'typo-corr',
     1147        'code:css' => '/* Specifie des paires de guillemets sur plusieurs niveaux pour chaque langue */
    10641148/* Cf.: http://www.yoyodesign.org/doc/w3c/css2/generate.html#quotes-specify */
    10651149q { quotes: \'"\' \'"\' "\'" "\'" }
     
    10761160/* IE */
    10771161* html q { font-style: italic; }
    1078 *+html q { font-style: italic; }', 
    1079     'pipelinecode:pre_propre' => 'if(strpos($flux, "<qu")!==false) $flux=cs_echappe_balises("", "citations_bb_rempl", $flux);',
     1162*+html q { font-style: italic; }',
     1163        'pipelinecode:pre_propre' => 'if(strpos($flux, "<qu")!==false) $flux=cs_echappe_balises("", "citations_bb_rempl", $flux);',
    10801164        // Remplacer <quote> par <q> quand il n'y a pas de retour a la ligne (3 niveaux, preg sans l'option s)
    1081     'code:options' => 'function citations_bb_rempl($texte){
     1165        'code:options' => 'function citations_bb_rempl($texte){
    10821166        $texte = preg_replace($a="/<quote>(.*?)<\/quote>/", $b="<q>\$1</q>", $texte);
    10831167        if(strpos($texte, "<qu")!==false) {
     
    10861170        }
    10871171        return $texte;
    1088 }',
    1089 )); 
    1090 
    1091 add_variable( array(
     1172}'
     1173));
     1174
     1175add_variable(array(
    10921176        'nom' => 'decoration_styles',
    10931177        'format' => _format_CHAINE,
     
    11011185span.surgris = background-color:#EAEAEC; padding:0px 2px;
    11021186fluo = surfluo"',
    1103         'code:trim(%s)' => 'function _decoration_BALISES() { return trim(%s); }',
    1104 ));
    1105 add_outil( array(
     1187        'code:trim(%s)' => 'function _decoration_BALISES() { return trim(%s); }'
     1188));
     1189add_outil(array(
    11061190        'id' => 'decoration',
    1107         'auteur'         => 'izo@aucuneid.net, Pat',
    1108         'contrib'       => 2427,
    1109         'categorie'      => 'typo-racc',
     1191        'auteur' => 'izo@aucuneid.net, Pat',
     1192        'contrib' => 2427,
     1193        'categorie' => 'typo-racc',
    11101194        'code:options' => "%%decoration_styles%%",
    11111195        'pipeline:pre_typo' => 'decoration_pre_typo',
    11121196        'pipeline:bt_toolbox' => 'decoration_BarreTypo',
    11131197        'pipeline:porte_plume_barre_pre_charger' => 'decoration_PP_pre_charger',
    1114         'pipeline:porte_plume_lien_classe_vers_icone' => 'decoration_PP_icones',
    1115 ));
    1116 
    1117 add_variables( array(
     1198        'pipeline:porte_plume_lien_classe_vers_icone' => 'decoration_PP_icones'
     1199));
     1200
     1201add_variables(array(
    11181202        'nom' => 'couleurs_fonds',
    11191203        'format' => _format_NOMBRE,
    1120         'radio' => array(1 => 'item_oui', 0 => 'item_non' ),
    1121         'defaut' => 1,
    1122         'code' => "define('_COULEURS_FONDS', %s);\n",
     1204        'radio' => array(
     1205                1 => 'item_oui',
     1206                0 => 'item_non'
     1207        ),
     1208        'defaut' => 1,
     1209        'code' => "define('_COULEURS_FONDS', %s);\n"
    11231210), array(
    11241211        'nom' => 'set_couleurs',
    11251212        'format' => _format_NOMBRE,
    1126         'radio' => array(0 => 'couteauprive:toutes_couleurs', 1 => 'couteauprive:certaines_couleurs'),
     1213        'radio' => array(
     1214                0 => 'couteauprive:toutes_couleurs',
     1215                1 => 'couteauprive:certaines_couleurs'
     1216        ),
    11271217        'radio/ligne' => 1,
    11281218        'defaut' => 0,
    1129         'code' => "define('_COULEURS_SET', %s);\n",
     1219        'code' => "define('_COULEURS_SET', %s);\n"
    11301220), array(
    11311221        'nom' => 'couleurs_perso',
     
    11331223        'lignes' => 3,
    11341224        'defaut' => '"gris, rouge"',
    1135         'code' => "define('_COULEURS_PERSO', %s);",
    1136 ));
    1137 add_outil( array(
     1225        'code' => "define('_COULEURS_PERSO', %s);"
     1226));
     1227add_outil(array(
    11381228        'id' => 'couleurs',
    1139         'auteur'         => 'Aur&eacute;lien PIERARD (id&eacute;e originale), Pat',
    1140         'categorie'      => 'typo-racc',
    1141         'contrib'       => 2427,
     1229        'auteur' => 'Aur&eacute;lien PIERARD (id&eacute;e originale), Pat',
     1230        'categorie' => 'typo-racc',
     1231        'contrib' => 2427,
    11421232        'pipeline:pre_typo' => 'couleurs_pre_typo',
    11431233        'pipeline:nettoyer_raccourcis_typo' => 'couleurs_nettoyer_raccourcis',
     
    11501240include_spip('outils/couleurs');
    11511241\$GLOBALS['cs_introduire'][] = 'couleurs_nettoyer_raccourcis';
    1152 ",
     1242"
    11531243));
    11541244
    11551245// outil essentiellement français. D'autres langues peuvent etre ajoutees dans outils/typo_exposants.php
    1156 add_variable( array(
     1246add_variable(array(
    11571247        'nom' => 'expo_bofbof',
    11581248        'format' => _format_NOMBRE,
    1159         'radio' => array(1 => 'item_oui', 0 => 'item_non' ),
    1160         'defaut' => 0,
    1161         'code:%s' => "define('_CS_EXPO_BOFBOF', %s);",
    1162 ));
    1163 add_outil( array(
     1249        'radio' => array(
     1250                1 => 'item_oui',
     1251                0 => 'item_non'
     1252        ),
     1253        'defaut' => 0,
     1254        'code:%s' => "define('_CS_EXPO_BOFBOF', %s);"
     1255));
     1256add_outil(array(
    11641257        'id' => 'typo_exposants',
    1165         'auteur'         => 'Vincent Ramos, Pat',
    1166         'categorie'      => 'typo-corr',
    1167         'contrib'       => 1564,
     1258        'auteur' => 'Vincent Ramos, Pat',
     1259        'categorie' => 'typo-corr',
     1260        'contrib' => 1564,
    11681261        'code:options' => '%%expo_bofbof%%',
    11691262        'pipeline:post_typo' => 'typo_exposants',
    1170         'code:css' => 'sup, sup.typo_exposants { font-size:78%; font-variant:inherit; line-height:inherit; vertical-align:23%; }',
    1171 ));
    1172 
    1173 add_outil( array(
     1263        'code:css' => 'sup, sup.typo_exposants { font-size:78%; font-variant:inherit; line-height:inherit; vertical-align:23%; }'
     1264));
     1265
     1266add_outil(array(
    11741267        'id' => 'guillemets',
    1175         'auteur'         => 'Vincent Ramos',
    1176         'categorie'      => 'typo-corr',
    1177         'pipeline:post_typo' => 'typo_guillemets',
    1178 ));
    1179 
    1180 add_variables( array(
     1268        'auteur' => 'Vincent Ramos',
     1269        'categorie' => 'typo-corr',
     1270        'pipeline:post_typo' => 'typo_guillemets'
     1271));
     1272
     1273add_variables(array(
    11811274        'nom' => 'liens_interrogation',
    11821275        'format' => _format_NOMBRE,
    1183         'radio' => array(1 => 'item_oui', 0 => 'item_non'),
    1184         'defaut' => 1,
    1185         'code:%s' => "\$GLOBALS['liens_interrogation']=true;\n",
     1276        'radio' => array(
     1277                1 => 'item_oui',
     1278                0 => 'item_non'
     1279        ),
     1280        'defaut' => 1,
     1281        'code:%s' => "\$GLOBALS['liens_interrogation']=true;\n"
    11861282), array(
    11871283        'nom' => 'liens_orphelins',
    11881284        'format' => _format_NOMBRE,
    1189         'radio' => array(-1 => 'item_non', 0 => 'couteauprive:basique', 1 => 'couteauprive:etendu', -2 => 'couteauprive:par_defaut'),
     1285        'radio' => array(
     1286                -1 => 'item_non',
     1287                0 => 'couteauprive:basique',
     1288                1 => 'couteauprive:etendu',
     1289                -2 => 'couteauprive:par_defaut'
     1290        ),
    11901291        'defaut' => 0,
    11911292        'code' => '$GLOBALS["liens_orphelins"]=%s;',
    1192                 // empeche SPIP de convertir les URLs orphelines (URLs brutes)
    1193         'code:%s<>-2' => defined('_SPIP19300')?"\n// Pas de traitement automatique des liens orphelins :\nif(isset(\$GLOBALS['spip_pipeline']['pre_liens'])) \$GLOBALS['spip_pipeline']['pre_liens']=str_replace('|traiter_raccourci_liens','',\$GLOBALS['spip_pipeline']['pre_liens']);
    1194 @define('_EXTRAIRE_LIENS',',^\$,');":'',
     1293        // empeche SPIP de convertir les URLs orphelines (URLs brutes)
     1294        'code:%s<>-2' => defined('_SPIP19300') ? "\n// Pas de traitement automatique des liens orphelins :\nif(isset(\$GLOBALS['spip_pipeline']['pre_liens'])) \$GLOBALS['spip_pipeline']['pre_liens']=str_replace('|traiter_raccourci_liens','',\$GLOBALS['spip_pipeline']['pre_liens']);
     1295@define('_EXTRAIRE_LIENS',',^\$,');" : ''
    11951296), array(
    11961297        'nom' => 'long_url',
    11971298        'format' => _format_NOMBRE,
    11981299        'defaut' => 40,
    1199         'code:%s' => "define('_MAX_LONG_URL', %s);",
     1300        'code:%s' => "define('_MAX_LONG_URL', %s);"
    12001301), array(
    12011302        'nom' => 'coupe_url',
    12021303        'format' => _format_NOMBRE,
    12031304        'defaut' => 35,
    1204         'code:%s' => "define('_MAX_COUPE_URL', %s);",
     1305        'code:%s' => "define('_MAX_COUPE_URL', %s);"
    12051306));
    12061307// attention : liens_orphelins doit etre place avant mailcrypt ou liens_en_clair
    1207 add_outil( array(
     1308add_outil(array(
    12081309        'id' => 'liens_orphelins',
    1209         'categorie'      => 'typo-corr',
    1210         'contrib'       => 2443,
     1310        'categorie' => 'typo-corr',
     1311        'contrib' => 2443,
    12111312        'code:options' => '%%liens_interrogation%%',
    12121313        'code:spip_options' => '%%liens_orphelins%%%%long_url%%%%coupe_url%%',
     
    12141315        'traitement:EMAIL' => 'liens_orphelins_email',
    12151316        'pipeline:recuperer_fond' => 'liens_orphelins_recuperer_fond',
    1216         'pipeline:pre_typo'  => 'interro_pre_typo',
    1217         'pipeline:post_propre'  => 'interro_post_propre',
    1218         'description' => defined('_SPIP19300')?'<:liens_orphelins::><liens_orphelins valeur="0/1/-2"><:liens_orphelins:1:></liens_orphelins>':'<:liens_orphelins::>',
    1219 ));
    1220 
    1221 add_outil( array(
     1317        'pipeline:pre_typo' => 'interro_pre_typo',
     1318        'pipeline:post_propre' => 'interro_post_propre',
     1319        'description' => defined('_SPIP19300') ? '<:liens_orphelins::><liens_orphelins valeur="0/1/-2"><:liens_orphelins:1:></liens_orphelins>' : '<:liens_orphelins::>'
     1320));
     1321
     1322add_outil(array(
    12221323        'id' => 'filets_sep',
    1223         'auteur'         => 'FredoMkb',
    1224         'categorie'      => 'typo-racc',
    1225         'contrib'       => 1563,
     1324        'auteur' => 'FredoMkb',
     1325        'categorie' => 'typo-racc',
     1326        'contrib' => 1563,
    12261327        'pipeline:pre_typo' => 'filets_sep',
    12271328        'pipeline:bt_toolbox' => 'filets_sep_BarreTypo',
    12281329        'pipeline:porte_plume_barre_pre_charger' => 'filets_PP_pre_charger',
    1229         'pipeline:porte_plume_lien_classe_vers_icone' => 'filets_PP_icones',
    1230 ));
    1231 
    1232 add_outil( array(
     1330        'pipeline:porte_plume_lien_classe_vers_icone' => 'filets_PP_icones'
     1331));
     1332
     1333add_outil(array(
    12331334        'id' => 'smileys',
    1234         'auteur'         => "Sylvain, Pat",
    1235         'categorie'      => 'typo-corr',
    1236         'contrib'       => 1561,
     1335        'auteur' => "Sylvain, Pat",
     1336        'categorie' => 'typo-corr',
     1337        'contrib' => 1561,
    12371338        'code:css' => "table.cs_smileys td {text-align:center; font-size:90%; font-weight:bold;}",
    12381339        'pipeline:pre_typo' => 'cs_smileys_pre_typo',
    12391340        'pipeline:bt_toolbox' => 'cs_smileys_BarreTypo',
    12401341        'pipeline:porte_plume_barre_pre_charger' => 'cs_smileys_PP_pre_charger',
    1241         'pipeline:porte_plume_lien_classe_vers_icone' => 'cs_smileys_PP_icones',
    1242 ));
    1243 
    1244 add_outil( array(
     1342        'pipeline:porte_plume_lien_classe_vers_icone' => 'cs_smileys_PP_icones'
     1343));
     1344
     1345add_outil(array(
    12451346        'id' => 'chatons',
    1246         'auteur'         => "BoOz, Pat",
    1247         'categorie'      => 'typo-racc',
     1347        'auteur' => "BoOz, Pat",
     1348        'categorie' => 'typo-racc',
    12481349        'pipeline:pre_typo' => 'chatons_pre_typo',
    12491350        'pipeline:bt_toolbox' => 'chatons_BarreTypo',
    12501351        'pipeline:porte_plume_barre_pre_charger' => 'chatons_PP_pre_charger',
    1251         'pipeline:porte_plume_lien_classe_vers_icone' => 'chatons_PP_icones',
    1252 ));
    1253 
    1254 add_variables( array(
     1352        'pipeline:porte_plume_lien_classe_vers_icone' => 'chatons_PP_icones'
     1353));
     1354
     1355add_variables(array(
    12551356        'nom' => 'glossaire_groupes',
    12561357        'format' => _format_CHAINE,
    12571358        'defaut' => "'Glossaire'",
    12581359        'code' => "\$GLOBALS['glossaire_groupes']=%s;\n",
    1259         'commentaire' => defined('_SPIP19300')?'fct_glossaire_groupes(%s);
     1360        'commentaire' => defined('_SPIP19300') ? 'fct_glossaire_groupes(%s);
    12601361function fct_glossaire_groupes($gr){
    12611362        $s="";
     
    12631364                if(!sql_countsel("spip_groupes_mots", "titre="._q($g))) $s.=($s?"<br />":"")._T("couteauprive:erreur_groupe", array("groupe"=>$g));
    12641365        return $s?"<p style=\"color:red\">$s</p>":"";
    1265 }':NULL,
     1366}' : NULL
    12661367), array(
    12671368        'nom' => 'glossaire_limite',
    12681369        'format' => _format_NOMBRE,
    12691370        'defaut' => 0,
    1270         'code:%s>0' => "define('_GLOSSAIRE_LIMITE', %s);\n",
     1371        'code:%s>0' => "define('_GLOSSAIRE_LIMITE', %s);\n"
    12711372), array(
    12721373        'nom' => 'glossaire_js',
    1273         'radio' => array(0 => 'couteauprive:glossaire_css', 1 => 'couteauprive:glossaire_js'),
    1274         'format' => _format_NOMBRE,
    1275         'defaut' => 1,
    1276         'code:%s' => "define('_GLOSSAIRE_JS', %s);",
     1374        'radio' => array(
     1375                0 => 'couteauprive:glossaire_css',
     1376                1 => 'couteauprive:glossaire_js'
     1377        ),
     1378        'format' => _format_NOMBRE,
     1379        'defaut' => 1,
     1380        'code:%s' => "define('_GLOSSAIRE_JS', %s);"
    12771381), array(
    12781382        'nom' => 'glossaire_abbr',
     
    12801384        'defaut' => 1,
    12811385        'format' => _format_NOMBRE,
    1282         'code:!%s' => "@define('_GLOSSAIRE_ECHAPPER', 'html|code|cadre|frame|script|cite|a');",
    1283 ));
    1284 add_outil( array(
     1386        'code:!%s' => "@define('_GLOSSAIRE_ECHAPPER', 'html|code|cadre|frame|script|cite|a');"
     1387));
     1388add_outil(array(
    12851389        'id' => 'glossaire',
    1286         'categorie'     => 'typo-corr',
    1287         'contrib'       => 2206,
     1390        'categorie' => 'typo-corr',
     1391        'contrib' => 2206,
    12881392        'code:options' => "@define('_CS_SANS_GLOSSAIRE', '[!glossaire]');\n%%glossaire_limite%%%%glossaire_groupes%%%%glossaire_js%%%%glossaire_abbr%%",
    1289 //      'traitement:LIEU:post_propre' => 'cs_glossaire',
     1393        //      'traitement:LIEU:post_propre' => 'cs_glossaire',
    12901394        // sans oublier les articles, les breves, les forums et les rubriques !
    12911395        // SPIP ne considere pas que la premiere definition est un tronc commun...
     
    12981402         traitement:CHAPO:post_propre' => 'cs_glossaire',
    12991403        // Precaution pour les articles virtuels (SPIP < 3.0)
    1300         defined('_SPIP30000')?'foo':'traitement:CHAPO:pre_propre' => 'nettoyer_chapo',
     1404        defined('_SPIP30000') ? 'foo' : 'traitement:CHAPO:pre_propre' => 'nettoyer_chapo',
    13011405        // Mise en forme des titres
    13021406        'traitement:TITRE/mots:post_typo' => 'cs_glossaire_titres',
    1303         'code:css' =>  'a.cs_glossaire:after {display:none;}',
     1407        'code:css' => 'a.cs_glossaire:after {display:none;}',
    13041408        // fonction glossaire_init() codee dans glossaire.js : executee lors du chargement de la page et a chaque hit ajax
    13051409        'code:jq_init' => 'glossaire_init.apply(this);',
    13061410        'pipelinecode:nettoyer_raccourcis_typo' => '$flux=str_replace(_CS_SANS_GLOSSAIRE, "", $flux);',
    1307         'pipeline:affiche_milieu' => defined('_SPIP30000')?'glossaire_affiche_milieu':'', // pas teste sous SPIP<3 ...
     1411        'pipeline:affiche_milieu' => defined('_SPIP30000') ? 'glossaire_affiche_milieu' : '' // pas teste sous SPIP<3 ...
    13081412));
    13091413
    13101414// attention : mailcrypt doit etre place apres liens_orphelins
    1311 add_variables( array(
     1415add_variables(array(
    13121416        'nom' => 'balise_email',
    13131417        'check' => 'couteauprive:mailcrypt_balise_email',
    13141418        'defaut' => 1,
    13151419        'label' => '@_CS_CHOIX@',
    1316         'code:%s' => "define('_MAILCRYPT_TRAITE_EMAIL', '1');\n",
     1420        'code:%s' => "define('_MAILCRYPT_TRAITE_EMAIL', '1');\n"
    13171421), array(
    13181422        'nom' => 'fonds_demailcrypt',
    13191423        'check' => 'couteauprive:mailcrypt_fonds',
    13201424        'defaut' => 0,
    1321         'label' => '@_CS_CHOIX@',
     1425        'label' => '@_CS_CHOIX@'
    13221426), array(
    13231427        'nom' => 'fonds_demailcrypt2',
     
    13251429        'lignes' => 4,
    13261430        'defaut' => '"saisies-vues/_base:\nnotifications/formulaire_email:\nnotifications/formulaire_accuse"',
    1327         'code' => "if(%%fonds_demailcrypt%%) define('_MAILCRYPT_FONDS_DEMAILCRYPT', %s);",
    1328 ));
    1329 add_outil( array(
     1431        'code' => "if(%%fonds_demailcrypt%%) define('_MAILCRYPT_FONDS_DEMAILCRYPT', %s);"
     1432));
     1433add_outil(array(
    13301434        'id' => 'mailcrypt',
    1331         'categorie'     => 'securite',
    1332         'auteur'        => "Alexis Roussel, Paolo, Pat",
    1333         'contrib'       => 2443,
     1435        'categorie' => 'securite',
     1436        'auteur' => "Alexis Roussel, Paolo, Pat",
     1437        'contrib' => 2443,
    13341438        'code:options' => '%%balise_email%%%%fonds_demailcrypt2%%',
    13351439        'description' => '<:mailcrypt::>[[%balise_email%]][[->%fonds_demailcrypt%]][[->%fonds_demailcrypt2%]]',
     
    13441448        'code:css' => '<cs_html>span.mcrypt {background:transparent url([(#CHEMIN{img/mailcrypt/leure.gif}|url_absolue)]) no-repeat scroll 0.1em center; padding-left:12px; text-decoration:none; float:none; margin:0; display:inline;}</cs_html>',
    13451449        'traitement:EMAIL' => 'mailcrypt_email_dist',
    1346                 'pipeline:recuperer_fond'  => 'mailcrypt_recuperer_fond',
     1450        'pipeline:recuperer_fond' => 'mailcrypt_recuperer_fond',
    13471451        // compatibilite avec le plugin facteur
    1348         'pipelinecode:facteur_pre_envoi'  => 'include_spip("public/parametrer"); // charger mes_fonctions
     1452        'pipelinecode:facteur_pre_envoi' => 'include_spip("public/parametrer"); // charger mes_fonctions
    13491453$flux->Body = maildecrypt($flux->Body);
    1350 $flux->AltBody = maildecrypt($flux->AltBody);',
    1351 )); 
     1454$flux->AltBody = maildecrypt($flux->AltBody);'
     1455));
    13521456
    13531457
    13541458// attention : liens_en_clair doit etre place apres tous les outils traitant des liens
    1355 add_outil( array(
     1459add_outil(array(
    13561460        'id' => 'liens_en_clair',
    1357         'categorie'      => 'spip',
    1358         'contrib'       => 2443,
     1461        'categorie' => 'spip',
     1462        'contrib' => 2443,
    13591463        'pipeline:post_propre' => 'liens_en_clair_post_propre',
    1360         'code:css' => 'a.spip_out:after {display:none;}',
    1361 )); 
    1362 
    1363 add_variables( array(   // variable utilisee par 'pipelinecode:insert_head'
     1464        'code:css' => 'a.spip_out:after {display:none;}'
     1465));
     1466
     1467add_variables(array( // variable utilisee par 'pipelinecode:insert_head'
    13641468        'nom' => 'scrollTo',
    13651469        'check' => 'couteauprive:jq_scrollTo',
    13661470        'defaut' => 1,
    1367         'format' => _format_NOMBRE,
    1368 ), array(       // variable utilisee par 'pipelinecode:insert_head'
     1471        'format' => _format_NOMBRE
     1472), array( // variable utilisee par 'pipelinecode:insert_head'
    13691473        'nom' => 'LocalScroll',
    13701474        'check' => 'couteauprive:jq_localScroll',
    13711475        'defaut' => 1,
    1372         'format' => _format_NOMBRE,
    1373 ));
    1374 add_outil( array(
     1476        'format' => _format_NOMBRE
     1477));
     1478add_outil(array(
    13751479        'id' => 'soft_scroller',
    1376         'categorie'     => 'public',
     1480        'categorie' => 'public',
    13771481        'pipelinecode:insert_head' => 'if(%%scrollTo%%) {$flux.=\'<script src="\'.find_in_path("outils/jquery.scrollto.js").\'" type="text/javascript"></script>\'."\n";}
    13781482if(%%LocalScroll%%) {$flux.=\'<script src="\'.find_in_path("outils/jquery.localscroll.js").\'" type="text/javascript"></script>\'."\n";}',
     
    13801484        jQuery.localScroll({hash: true, onAfter:function(anchor,settings){jQuery(anchor).focus();}});
    13811485}',
    1382         'code:jq_init_public' => 'soft_scroller_init.apply(this);',
     1486        'code:jq_init_public' => 'soft_scroller_init.apply(this);'
    13831487));
    13841488
    13851489// http://www.malsup.com/jquery/corner/
    1386 add_variables( array(
     1490add_variables(array(
    13871491        'nom' => 'jcorner_classes',
    13881492        'format' => _format_CHAINE,
    13891493        'lignes' => 10,
    1390         'defaut' => defined('_SPIP19300')?'"// coins ronds aux formulaires
     1494        'defaut' => defined('_SPIP19300')
     1495                ? '"// coins ronds aux formulaires
    13911496.formulaire_inscription, .formulaire_forum, .formulaire_ecrire_auteur
    13921497
     
    13961501
    13971502// coins ronds aux parents !
    1398 .jc_parent"'
    1399                 :'" // coins ronds pour les menus de navigation
     1503.jc_parent"' 
     1504                : '" // coins ronds pour les menus de navigation
    14001505.rubriques, .breves, .syndic, .forums, .divers
    14011506
     
    14081513// coins ronds aux parents !
    14091514.jc_parent"',
    1410         'code:trim(%s)' => 'function _jcorner_CLASSES() { return trim(%s); }',
    1411 ), array(       // variable utilisee par 'pipelinecode:insert_head'
     1515        'code:trim(%s)' => 'function _jcorner_CLASSES() { return trim(%s); }'
     1516), array( // variable utilisee par 'pipelinecode:insert_head'
    14121517        'nom' => 'jcorner_plugin',
    14131518        'check' => 'couteauprive:jcorner_plugin',
    14141519        'defaut' => 1,
    1415         'format' => _format_NOMBRE,
    1416 ));
    1417 add_outil( array(
     1520        'format' => _format_NOMBRE
     1521));
     1522add_outil(array(
    14181523        'id' => 'jcorner',
    1419         'categorie'     => 'public',
    1420         'contrib'       => 2987,
     1524        'categorie' => 'public',
     1525        'contrib' => 2987,
    14211526        'code:options' => "%%jcorner_classes%%",
    14221527        // fichier distant pour le plugin jQuery : http://github.com/malsup/corner/commits/
    14231528        'distant' => defined('_SPIP20100')
    1424                 // version 2.13 (19-FEB-2013), jQuery v1.3.2 mini
    1425                 ?'http://raw.github.com/malsup/corner/82114d5699feea4c66bf093a9a615387857eca02/jquery.corner.js'
    1426                 // version 2.03 (05-DEC-2009)
    1427                 :'http://github.com/malsup/corner/raw/46bbbc8706853c879c9224b7ebf5f284f726314d/jquery.corner.js',
     1529        // version 2.13 (19-FEB-2013), jQuery v1.3.2 mini
     1530                ? 'http://raw.github.com/malsup/corner/82114d5699feea4c66bf093a9a615387857eca02/jquery.corner.js'
     1531        // version 2.03 (05-DEC-2009)
     1532                : 'http://github.com/malsup/corner/raw/46bbbc8706853c879c9224b7ebf5f284f726314d/jquery.corner.js',
    14281533        'pipelinecode:insert_head' => 'if(%%jcorner_plugin%%) {$flux.=\'<script src="\'.find_in_path("lib/jcorner/distant_jquery.corner.js").\'" type="text/javascript"></script>\'."\n";}',
    14291534        'pipeline:insert_head' => 'jcorner_insert_head',
    14301535        // jcorner_init() n'est disponible qu'en partie publique
    1431         'code:jq_init_public' => 'if(typeof jcorner_init=="function") jcorner_init.apply(this);',
    1432 ));
    1433 
    1434 add_variables( array(
     1536        'code:jq_init_public' => 'if(typeof jcorner_init=="function") jcorner_init.apply(this);'
     1537));
     1538
     1539add_variables(array(
    14351540        'nom' => 'insertions',
    14361541        'format' => _format_CHAINE,
     
    14451550/\b([cC]|[mM].c|[rR]ec)on+ais+a((?:n(?:ce|te?)|ble)s?)\b/ = $1onnaissa$2
    14461551"',
    1447         'code' => 'function _insertions_LISTE() { return trim(%s); }',
    1448 ));
    1449 add_outil( array(
     1552        'code' => 'function _insertions_LISTE() { return trim(%s); }'
     1553));
     1554add_outil(array(
    14501555        'id' => 'insertions',
    1451         'categorie'      => 'typo-corr',
     1556        'categorie' => 'typo-corr',
    14521557        'code:options' => "%%insertions%%",
    14531558        // sans oublier les articles, les breves, les forums et les rubriques !
     
    14591564         traitement:TEXTE/breves:pre_propre,
    14601565         traitement:TEXTE/forums:post_propre,
    1461          traitement:TEXTE/rubriques:pre_propre' => 'insertions_pre_propre',
     1566         traitement:TEXTE/rubriques:pre_propre' => 'insertions_pre_propre'
    14621567));
    14631568
    14641569// le plugin moderation moderee dans le couteau suisse
    14651570include_spip('inc/charsets');
    1466 add_outil( array(
     1571add_outil(array(
    14671572        'id' => 'moderation_moderee',
    14681573        'auteur' => 'Yohann(potter64)',
     
    14711576        'code:options' => '%%moderation_admin%%%%moderation_redac%%%%moderation_visit%%',
    14721577        'code:jq_init_public' => 'if(window.location.search.match(/page=forum/)!=null) jQuery("legend:contains(\''
    1473                 .addslashes(unicode2charset(html2unicode(_T((defined('_SPIP30000')?'forum:':'').'bouton_radio_modere_priori')))).'\')", this).next().html(\''
    1474                 .addslashes(_T('couteauprive:moderation_message')).'\');',
    1475         'pipeline:pre_edition' => 'moderation_vip',
    1476 ));
    1477 add_variables( array(
     1578                . addslashes(unicode2charset(html2unicode(_T((defined('_SPIP30000') ? 'forum:' : '') . 'bouton_radio_modere_priori')))) . '\')", this).next().html(\''
     1579                . addslashes(_T('couteauprive:moderation_message')) . '\');',
     1580        'pipeline:pre_edition' => 'moderation_vip'
     1581));
     1582add_variables(array(
    14781583        'nom' => 'moderation_admin',
    14791584        'check' => 'couteauprive:moderation_admins',
    14801585        'defaut' => 1,
    1481         'code:%s' => "define('_MOD_MOD_0minirezo',%s);",
     1586        'code:%s' => "define('_MOD_MOD_0minirezo',%s);"
    14821587), array(
    14831588        'nom' => 'moderation_redac',
    14841589        'check' => 'couteauprive:moderation_redacs',
    14851590        'defaut' => 0,
    1486         'code:%s' => "define('_MOD_MOD_1comite',%s);",
     1591        'code:%s' => "define('_MOD_MOD_1comite',%s);"
    14871592), array(
    14881593        'nom' => 'moderation_visit',
    14891594        'check' => 'couteauprive:moderation_visits',
    14901595        'defaut' => 0,
    1491         'code:%s' => "define('_MOD_MOD_6forum',%s);",
    1492 ));
    1493 
    1494 add_outil( array(
     1596        'code:%s' => "define('_MOD_MOD_6forum',%s);"
     1597));
     1598
     1599add_outil(array(
    14951600        'id' => 'titre_parent',
    14961601        'categorie' => 'spip',
    14971602        'contrib' => 2900,
    1498         'code:options' => '%%titres_etendus%%',
    1499 ));
    1500 add_variable( array(
     1603        'code:options' => '%%titres_etendus%%'
     1604));
     1605add_variable(array(
    15011606        'nom' => 'titres_etendus',
    15021607        'check' => 'couteauprive:titres_etendus',
    15031608        'format' => _format_NOMBRE,
    1504         'radio' => array(1 => 'item_oui', 0 => 'item_non'),
    1505         'defaut' => 0,
    1506         'code:%s' => "define('_PARENTS_ETENDUS',%s);",
    1507 ));
    1508 
    1509 add_outil( array(
     1609        'radio' => array(
     1610                1 => 'item_oui',
     1611                0 => 'item_non'
     1612        ),
     1613        'defaut' => 0,
     1614        'code:%s' => "define('_PARENTS_ETENDUS',%s);"
     1615));
     1616
     1617add_outil(array(
    15101618        'id' => 'balise_set',
    15111619        'categorie' => 'spip',
    1512         'contrib' => 4336,     
    1513 ));
    1514 
    1515 add_outil( array(
     1620        'contrib' => 4336
     1621));
     1622
     1623add_outil(array(
    15161624        'id' => 'corbeille',
    15171625        'categorie' => 'admin',
    15181626        'version-min' => '1.9300',
    1519         'code:options' => "%%arret_optimisation%%",
    1520 ));
    1521 add_variable( array(
     1627        'code:options' => "%%arret_optimisation%%"
     1628));
     1629add_variable(array(
    15221630        'nom' => 'arret_optimisation',
    15231631        'format' => _format_NOMBRE,
    1524         'radio' => array(1 => 'item_oui', 0 => 'item_non'),
     1632        'radio' => array(
     1633                1 => 'item_oui',
     1634                0 => 'item_non'
     1635        ),
    15251636        'defaut' => 0,
    15261637        'code:%s' => "define('_CORBEILLE_SANS_OPTIM', 1);
    15271638if(!function_exists('genie_optimiser')) {
    15281639        // surcharge de la fonction d'optimisation de SPIP (inc/optimiser.php)
    1529         function genie_optimiser(\$t='foo'){ if(include_spip('optimiser','genie')) optimiser_base_une_table(); return -(mktime(2,0,0) + rand(0, 3600*4)); }\n}",
    1530 ));
    1531 
    1532 add_outil( array(
     1640        function genie_optimiser(\$t='foo'){ if(include_spip('optimiser','genie')) optimiser_base_une_table(); return -(mktime(2,0,0) + rand(0, 3600*4)); }\n}"
     1641));
     1642
     1643add_outil(array(
    15331644        'id' => 'trousse_balises',
    15341645        'categorie' => 'spip',
    1535         'contrib' => 3005,
    1536 ));
    1537 
    1538 add_outil( array(
     1646        'contrib' => 3005
     1647));
     1648
     1649add_outil(array(
    15391650        'id' => 'horloge',
    15401651        'categorie' => 'spip',
     
    15431654         pipelinecode:header_prive' => '$flux.=\'<script type="text/javascript" src="\'.generer_url_public(\'cout_dates.js\',\'lang=\'.$GLOBALS[\'spip_lang\']).\'"></script>
    15441655<script type="text/javascript" src="\'.find_in_path("outils/jquery.jclock.js").\'"></script>\'."\n";',
    1545         'code:jq_init' => 'jclock_init.apply(this);',
    1546 ));
    1547 
    1548 add_variable( array(
     1656        'code:jq_init' => 'jclock_init.apply(this);'
     1657));
     1658
     1659add_variable(array(
    15491660        'nom' => 'timezone',
    15501661        'format' => _format_CHAINE,
    15511662        'defaut' => "function_exists('date_default_timezone_get') && date_default_timezone_get()?date_default_timezone_get():'Europe/Paris'",
    15521663        'code:%s' => "if(function_exists('date_default_timezone_set')) date_default_timezone_set(%s);",
    1553         'label' => '@_CS_CHOIX@',
    1554 ));
    1555 add_outil( array(
     1664        'label' => '@_CS_CHOIX@'
     1665));
     1666add_outil(array(
    15561667        'id' => 'timezone',
    15571668        'categorie' => 'devel',
    15581669        'code:spip_options' => '%%timezone%%',
    1559 #       'autoriser' => "function_exists('date_default_timezone_get')", // Outil pour php 5.1 mini
     1670        #       'autoriser' => "function_exists('date_default_timezone_get')", // Outil pour php 5.1 mini
    15601671        'pipelinecode:pre_description_outil' => 'if($id=="timezone")
    1561                 $texte=str_replace("@_CS_TZ@","<b>".(!(function_exists("date_default_timezone_get") && date_default_timezone_get())?"<span style=\\"color: red;\\">??</span>":@date_default_timezone_get())."</b> (PHP ".phpversion().")",$texte);',
    1562 ));
    1563 
    1564 $cs_temp = defined('_SPIP30000')?array(
     1672                $texte=str_replace("@_CS_TZ@","<b>".(!(function_exists("date_default_timezone_get") && date_default_timezone_get())?"<span style=\\"color: red;\\">??</span>":@date_default_timezone_get())."</b> (PHP ".phpversion().")",$texte);'
     1673));
     1674
     1675$cs_temp = defined('_SPIP30000') ? array(
    15651676        'distant_action' => 'https://core.spip.net/projects/spip/repository/raw/branches/spip-2.1/ecrire/action/charger_plugin.php',
    1566         'distant_inc' => 'https://core.spip.net/projects/spip/repository/raw/branches/spip-2.1/ecrire/inc/charger_plugin.php',
    1567 ):(defined('_SPIP20100')?array():array(
     1677        'distant_inc' => 'https://core.spip.net/projects/spip/repository/raw/branches/spip-2.1/ecrire/inc/charger_plugin.php'
     1678) : (defined('_SPIP20100') ? array() : array(
    15681679        'version-min' => '1.9300',
    1569         'distant' => 'https://core.spip.net/projects/spip/repository/raw/branches/spip-2.1/ecrire/genie/mise_a_jour.php',
     1680        'distant' => 'https://core.spip.net/projects/spip/repository/raw/branches/spip-2.1/ecrire/genie/mise_a_jour.php'
    15701681));
    15711682add_outil(array_merge(array(
     
    15741685        'contrib' => 3223,
    15751686        'pipelinecode:fichier_distant' => defined('_SPIP30000')
    1576                 ?'// rajeunissement pour SPIP3 (2e appel du pipeline)
     1687                ? '// rajeunissement pour SPIP3 (2e appel du pipeline)
    15771688if($flux["outil"]=="maj_auto" && isset($flux["texte"]) && strpos($flux["fichier_distant"],"action/charger_plugin.php")!==false)
    1578         $flux["texte"] = str_replace(array("\'icon\'","include_spip(\'inc/install\');"), array("\'logo\'", "if(_request(\'cs_retour\')) return array(\'nom\'=>\$retour, \'suite\'=>\$suite, \'fichier\'=>\$fichier, \'tmp\'=>\$status[\'tmpname\']);\n\tinclude_spip(\'inc/install\');"), $flux["texte"]);':'',
     1689        $flux["texte"] = str_replace(array("\'icon\'","include_spip(\'inc/install\');"), array("\'logo\'", "if(_request(\'cs_retour\')) return array(\'nom\'=>\$retour, \'suite\'=>\$suite, \'fichier\'=>\$fichier, \'tmp\'=>\$status[\'tmpname\']);\n\tinclude_spip(\'inc/install\');"), $flux["texte"]);'
     1690                : ''
    15791691), $cs_temp));
    15801692
    15811693// reglage des differents selecteurs en partie privee
    1582 add_outil( array(
     1694add_outil(array(
    15831695        'id' => 'brouteur',
    15841696        'categorie' => 'interface',
    15851697        'code:spip_options' => "%%rubrique_brouteur%%%%select_mots_clefs%%%%select_min_auteurs%%%%select_max_auteurs%%"
    15861698));
    1587 add_variable( array(
     1699add_variable(array(
    15881700        'nom' => 'rubrique_brouteur',
    15891701        'format' => _format_NOMBRE,
     
    15911703        'code:%s' => "define('_SPIP_SELECT_RUBRIQUES', %s);"
    15921704));
    1593 add_variable( array(
     1705add_variable(array(
    15941706        'nom' => 'select_mots_clefs',
    15951707        'format' => _format_NOMBRE,
     
    15971709        'code:%s<>50' => "define('_MAX_MOTS_LISTE', %s);"
    15981710));
    1599 add_variable( array(
     1711add_variable(array(
    16001712        'nom' => 'select_min_auteurs',
    16011713        'format' => _format_NOMBRE,
     
    16031715        'code:%s<>30' => "define('_SPIP_SELECT_MIN_AUTEURS', %s);"
    16041716));
    1605 add_variable( array(
     1717add_variable(array(
    16061718        'nom' => 'select_max_auteurs',
    16071719        'format' => _format_NOMBRE,
     
    16111723
    16121724// largeur d'ecran de la partie privee
    1613 add_variables( array(
     1725add_variables(array(
    16141726        'nom' => 'spip_ecran',
    16151727        'format' => _format_CHAINE,
    1616         'radio' => array('defaut' => 'couteauprive:par_defaut', 'large' => 'spip:info_grand_ecran', 'etroit' => 'spip:info_petit_ecran'),
     1728        'radio' => array(
     1729                'defaut' => 'couteauprive:par_defaut',
     1730                'large' => 'spip:info_grand_ecran',
     1731                'etroit' => 'spip:info_petit_ecran'
     1732        ),
    16171733        'defaut' => 'defaut',
    16181734        'label' => '@_CS_CHOIX@',
    1619         "code:%s!='defaut'" => "\$GLOBALS['spip_ecran']=\$_COOKIE['spip_ecran']=%s;",
     1735        "code:%s!='defaut'" => "\$GLOBALS['spip_ecran']=\$_COOKIE['spip_ecran']=%s;"
    16201736), array(
    16211737        'nom' => 'tres_large',
     
    16341750#bando_outils ul.deroulant li ul{width:[(#VAL{770}|plus{%s})]px;}
    16351751.large #bando_outils ul.deroulant li ul{width:[(#VAL{970}|plus{%s})]px;}
    1636 </cs_html>',
    1637 ));
    1638 add_outil( array(
     1752</cs_html>'
     1753));
     1754add_outil(array(
    16391755        'id' => 'spip_ecran',
    16401756        'categorie' => 'interface',
     
    16461762if(typeof onAjaxLoad=="function") onAjaxLoad(disable_spip_ecran);
    16471763if(window.jQuery) jQuery(document).ready(disable_spip_ecran);
    1648 //--></script>\'; }',
    1649 ));
    1650 
    1651 add_variables( array(
     1764//--></script>\'; }'
     1765));
     1766
     1767add_variables(array(
    16521768        'nom' => 'alerte_message',
    16531769        'format' => _format_CHAINE,
     
    16571773        'code' => "define('_alerte_MESSAGE', %s);"
    16581774));
    1659 add_outil( array(
     1775add_outil(array(
    16601776        'id' => 'alerte_urgence',
    16611777        'categorie' => 'public',
     
    16651781                include_spip(\'public/assembler\');
    16661782                $flux = substr_replace($flux, recuperer_fond(\'fonds/alerte_urgence\'), $p, 0);
    1667 }',
    1668 ));
    1669 
    1670 add_outil( array(
     1783}'
     1784));
     1785
     1786add_outil(array(
    16711787        'id' => 'sessions_anonymes',
    16721788        'categorie' => 'securite',
     
    16751791        'code:options' => 'function cron_nettoyer_sessions_anonymes() { genie_nettoyer_sessions_anonymes(); } // Pour SPIP 1.92
    16761792function genie_nettoyer_sessions_anonymes() { include_spip(\'outils/sessions_anonymes\'); cs_nettoyer_sessions_anonymes(); }',
    1677         'version-max' => '17743', // SPIP 3.0 : c'est dans le core !
    1678 ));
    1679 
    1680 add_variables( array(
     1793        'version-max' => '17743' // SPIP 3.0 : c'est dans le core !
     1794));
     1795
     1796add_variables(array(
    16811797        'nom' => 'multidomaines',
    16821798        'format' => _format_CHAINE,
     
    16861802        'code:strlen(%s)' => "define('CORRECTION_LIENS_INTERNES_AUTRES_DOMAINES', %s);"
    16871803));
    1688 add_outil( array(
     1804add_outil(array(
    16891805        'id' => 'liens_internes',
    16901806        'categorie' => 'typo-corr',
     
    16951811        'distant_pipelines' => 'https://zone.spip.org/trac/spip-zone/export/79119/_plugins_/correction_liens_internes/trunk/correction_liens_internes_pipelines.php',
    16961812        'version-min' => '17743', // SPIP 3.0 mini
    1697         'pipelinecode:pre_description_outil' => 'if($id=="liens_internes") $texte=str_replace("@_DOMAINE@",url_de_base(),$texte);',
     1813        'pipelinecode:pre_description_outil' => 'if($id=="liens_internes") $texte=str_replace("@_DOMAINE@",url_de_base(),$texte);'
    16981814));
    16991815
     
    17061822// y compris les lames perso dont on met le nom en italiques
    17071823global $outils;
    1708 foreach (find_all_in_path('outils/', '\w+_config\.php$') as $f)
    1709 if(preg_match(',^([^.]*)_config$,', basename($f, '.php'),$regs)){
    1710         if($outil = charger_fonction($regs[0], 'outils')) $outil();
    1711         /*else {
    1712                 // compatibilite ...   
    1713                 include $f;
    1714                 if(function_exists($cs_temp=$regs[1].'_add_outil')) {
    1715                         $cs_temp = $cs_temp();
    1716                         $cs_temp['id'] = $regs[1];
    1717                         add_outil($cs_temp);
    1718                 }
    1719         }*/
    1720         if(isset($outils[$regs[1]]) && strncmp($f, _DIR_PLUGIN_COUTEAU_SUISSE, strlen(_DIR_PLUGIN_COUTEAU_SUISSE))!=0)
    1721                 $outils[$regs[1]]['perso'] = 1;
    1722 }
     1824foreach (find_all_in_path('outils/', '\w+_config\.php$') as $f)
     1825        if (preg_match(',^([^.]*)_config$,', basename($f, '.php'), $regs)) {
     1826                if ($outil = charger_fonction($regs[0], 'outils'))
     1827                        $outil();
     1828                /*else {
     1829                        // compatibilite ...   
     1830                        include $f;
     1831                        if (function_exists($cs_temp=$regs[1] . '_add_outil')) {
     1832                                $cs_temp = $cs_temp();
     1833                                $cs_temp['id'] = $regs[1];
     1834                                add_outil($cs_temp);
     1835                        }
     1836                }*/
     1837                if (isset($outils[$regs[1]]) && strncmp($f, _DIR_PLUGIN_COUTEAU_SUISSE, strlen(_DIR_PLUGIN_COUTEAU_SUISSE)) != 0)
     1838                        $outils[$regs[1]]['perso'] = 1;
     1839        }
    17231840
    17241841// Nettoyage
     
    17261843
    17271844// Ajout des outils personnalises sous forme globale
    1728 if(isset($GLOBALS['mes_outils'])) {
    1729         foreach($GLOBALS['mes_outils'] as $id=>$outil) {
    1730                 $outil['id'] = $id;
     1845if (isset($GLOBALS['mes_outils'])) {
     1846        foreach ($GLOBALS['mes_outils'] as $id => $outil) {
     1847                $outil['id']    = $id;
    17311848                $outil['perso'] = 1;
    17321849                add_outil($outil);
  • _plugins_/couteau_suisse/cout_define.php

    r107348 r109093  
    66#  Infos : https://contrib.spip.net/?article2166      #
    77#-----------------------------------------------------#
    8 if(!defined("_ECRIRE_INC_VERSION")) return;
     8if (!defined("_ECRIRE_INC_VERSION"))
     9        return;
    910
    1011// Ici se definissent les constantes du Couteau Suisse
     
    1718@define('_URL_CS_PLUGIN_XML', 'https://zone.spip.org/trac/spip-zone/browser/_plugins_/couteau_suisse/plugin.xml?format=txt');
    1819// On met a jour le flux rss toutes les 2 heures
    19 define('_CS_RSS_UPDATE', 2*3600);
     20define('_CS_RSS_UPDATE', 2 * 3600);
    2021define('_CS_RSS_COUNT', 15);
    2122// Fichier
    22 define('_CS_TMP_RSS', _DIR_TMP.'rss_couteau_suisse.html');
     23define('_CS_TMP_RSS', _DIR_TMP . 'rss_couteau_suisse.html');
    2324// Traductions des modules
    2425define('_CS_TRAD_ACCUEIL', 'https://trad.spip.net/');
    25 define('_CS_TRAD_MODULE', _CS_TRAD_ACCUEIL.'tradlang_module/');
     26define('_CS_TRAD_MODULE', _CS_TRAD_ACCUEIL . 'tradlang_module/');
    2627
    2728
     
    3132        include_spip('inc/texte');
    3233        $admins = $webmestres = array();
    33         $s = spip_query("SELECT * FROM spip_auteurs WHERE statut='0minirezo'");
    34         $fetch = function_exists('sql_fetch')?'sql_fetch':'spip_fetch_array'; // compatibilite SPIP 1.92
     34        $s      = spip_query("SELECT * FROM spip_auteurs WHERE statut='0minirezo'");
     35        $fetch  = function_exists('sql_fetch') ? 'sql_fetch' : 'spip_fetch_array'; // compatibilite SPIP 1.92
    3536        while ($qui = $fetch($s)) {
    36                 $nom = '<a href="'
    37                         . generer_url_ecrire(defined('_SPIP30000')?'auteur':'auteur_infos',"id_auteur=$qui[id_auteur]")
    38                         . '">' . typo($qui['nom'])."</a> (id_auteur=$qui[id_auteur])";
    39                 if(autoriser('webmestre','','',$qui)) $webmestres[$qui['id_auteur']] = $nom;
    40                 else if(autoriser('configurer','plugins','',$qui)) $admins[$qui['id_auteur']] = $nom;
     37                $nom = '<a href="' . generer_url_ecrire(defined('_SPIP30000') ? 'auteur' : 'auteur_infos', "id_auteur=$qui[id_auteur]") . '">' . typo($qui['nom']) . "</a> (id_auteur=$qui[id_auteur])";
     38                if (autoriser('webmestre', '', '', $qui))
     39                        $webmestres[$qui['id_auteur']] = $nom;
     40                elseif (autoriser('configurer', 'plugins', '', $qui))
     41                        $admins[$qui['id_auteur']] = $nom;
    4142        }
    4243        return array(
    43                 count($webmestres)?join(', ', $webmestres):_T('couteauprive:variable_vide'),
    44                 count($admins)?join(', ', $admins):_T('couteauprive:variable_vide'));
     44                count($webmestres) ? join(', ', $webmestres) : _T('couteauprive:variable_vide'),
     45                count($admins) ? join(', ', $admins) : _T('couteauprive:variable_vide')
     46        );
    4547}
    4648
  • _plugins_/couteau_suisse/cout_lancement.php

    r108690 r109093  
    1111#  cout_utils.php et compiler les outils.             #
    1212#-----------------------------------------------------#
    13 if (!defined("_ECRIRE_INC_VERSION")) return;
     13if (!defined("_ECRIRE_INC_VERSION"))
     14        return;
    1415
    1516cs_log("inclusion des fonctions de cout_lancement.php pour initialisation");
    1617
    1718// compatibilite avec les plugins de version anterieure a 1.7.0.0
    18 function tweak_choix($s) { if ($p = strpos($s, '(')) return substr($s, 0, $p); return ''; }
     19function tweak_choix($s) {
     20        if ($p = strpos($s, '('))
     21                return substr($s, 0, $p);
     22        return '';
     23}
    1924// Compatibilite : stripos() n'existe pas en php4 (SPIP < 3)
    2025if (!function_exists('stripos')) {
     
    3035// une $source differente ; optimisation du code spip !
    3136// echappe_retour() permet de revenir en arriere
    32 function cs_code_echappement($rempl, $source='', $mode='span') {
     37function cs_code_echappement($rempl, $source = '', $mode = 'span') {
    3338        // Convertir en base64
    3439        $base64 = base64_encode($rempl);
     
    4348// lit ecrit les metas et initialise $cs_metas_pipelines
    4449// cette fonction est appellee par couteau_suisse_options a chaque hit de la page
    45 function cs_initialisation($forcer=false, $init_includes=true) {
     50function cs_initialisation($forcer = false, $init_includes = true) {
    4651        global $cs_metas_pipelines, $metas_outils;
    4752        static $deja_passe_ici = 0;
    48         if($log=defined('_LOG_CS'))     {
     53        if ($log = defined('_LOG_CS')) {
    4954                $rand = sprintf('[#%04x] ', rand());
    50                 if(!$deja_passe_ici) {
    51                         $mysql = function_exists('mysql_get_client_info')?' - MYSQL v'.mysql_get_client_info():'';
    52                         cs_log("#### 1er PASSAGE $rand################################# - \$forcer = ".intval($forcer)
    53                         . "\n{$rand}PHP v".phpversion()."$mysql - base SPIP v$GLOBALS[spip_version_base] - code SPIP v$GLOBALS[spip_version_code]");
     55                if (!$deja_passe_ici) {
     56                        $mysql = function_exists('mysql_get_client_info') ? ' - MYSQL v' . mysql_get_client_info() : '';
     57                        cs_log("#### 1er PASSAGE $rand################################# - \$forcer = " . intval($forcer) . "\n{$rand}PHP v" . phpversion() . "$mysql - base SPIP v$GLOBALS[spip_version_base] - code SPIP v$GLOBALS[spip_version_code]");
    5458                }
    5559        }
    5660        $deja_passe_ici++;
    57 if($log) cs_log("{$rand}cs_initialisation($forcer) : Passage #$deja_passe_ici");
     61        if ($log)
     62                cs_log("{$rand}cs_initialisation($forcer) : Passage #$deja_passe_ici");
    5863        // si les metas ne sont pas lus, on les lit
    5964        if (isset($GLOBALS['meta']['tweaks_pipelines'])) {
    6065                $cs_metas_pipelines = unserialize($GLOBALS['meta']['tweaks_pipelines']);
    61 if($log) cs_log("$rand -- cs_metas_pipelines = ".(is_array($cs_metas_pipelines)?join(', ',array_keys($cs_metas_pipelines)):''));
    62 
     66                if ($log)
     67                        cs_log("$rand -- cs_metas_pipelines = " . (is_array($cs_metas_pipelines) ? join(', ', array_keys($cs_metas_pipelines)) : ''));
     68               
    6369                // liste des actifs & definition des constantes attestant qu'un outil est bien actif : define('_CS_monoutil', 'oui');
    6470                $liste = array();
    65                 foreach($metas_outils as $nom=>$o) if(isset($o['actif']) && $o['actif']) { $liste[]=$nom; @define('_CS_'.$nom, 'oui'); }
     71                foreach ($metas_outils as $nom => $o)
     72                        if (isset($o['actif']) && $o['actif']) {
     73                                $liste[] = $nom;
     74                                @define('_CS_' . $nom, 'oui');
     75                        }
    6676                $liste2 = join(', ', $liste);
    67 if($log) cs_log("$rand -- ".count($liste).' outil(s) actif(s)'.(strlen($liste2)?" = ".$liste2:''));
     77                if ($log)
     78                        cs_log("$rand -- " . count($liste) . ' outil(s) actif(s)' . (strlen($liste2) ? " = " . $liste2 : ''));
    6879                // Vanter notre art de la compilation...
    6980                // La globale $spip_header_silencieux permet de rendre le header absent pour raisons de securite
    7081                if (!headers_sent() && (!isset($GLOBALS['spip_header_silencieux']) OR !$GLOBALS['spip_header_silencieux']))
    71                                 @header('X-Outils-CS: '.$liste2);
    72 if($log) cs_log($rand.($forcer?"\$forcer = true":"cs_initialisation($forcer) : Sortie car les metas sont presents"));
     82                        @header('X-Outils-CS: ' . $liste2);
     83                if ($log)
     84                        cs_log($rand . ($forcer ? "\$forcer = true" : "cs_initialisation($forcer) : Sortie car les metas sont presents"));
    7385                // Les pipelines sont en meta, tout va bien on peut partir d'ici.
    74                 if (!$forcer) return;
     86                if (!$forcer)
     87                        return;
    7588        }
    7689        // ici on commence l'initialisation de tous les outils
     
    8295        include_spip('config_outils');
    8396        // verifier que tous les outils actives sont bien presents
    84         foreach($metas_outils as $nom=>$o)
    85                 if(isset($o['actif']) && $o['actif'] && !isset($outils[$nom]))
     97        foreach ($metas_outils as $nom => $o)
     98                if (isset($o['actif']) && $o['actif'] && !isset($outils[$nom]))
    8699                        unset($metas_outils[$nom]);
    87100        ecrire_meta('tweaks_actifs', serialize($metas_outils));
     
    92105        $metas_vars['_nombres'] = $cs_variables['_nombres'];
    93106        // au cas ou un outil manipule des variables
    94         $description_outil = charger_fonction('description_outil', 'inc');
     107        $description_outil      = charger_fonction('description_outil', 'inc');
    95108        // completer les variables manquantes et incorporer l'activite lue dans les metas
    96 if($log) cs_log("$rand -- foreach(\$outils) : cs_initialisation_d_un_outil()");
    97 
     109        if ($log)
     110                cs_log("$rand -- foreach(\$outils) : cs_initialisation_d_un_outil()");
     111       
    98112        // initialiser chaque outil
    99113        include_spip('inc/cs_outils');
    100         foreach($outils as $outil)
     114        foreach ($outils as $outil)
    101115                cs_initialisation_d_un_outil($id = $outil['id'], $description_outil, false);
    102116        // installer $cs_metas_pipelines
    103117        $cs_metas_pipelines = array();
    104 if($log) cs_log("$rand -- cs_initialise_includes()... couteau_suisse_fonctions.php sera peut-etre inclus.");
     118        if ($log)
     119                cs_log("$rand -- cs_initialise_includes()... couteau_suisse_fonctions.php sera peut-etre inclus.");
    105120        // creer les includes (config/mes_options, mes_options et mes_fonctions) et le fichier de controle pipelines.php
    106         if($init_includes) cs_initialise_includes(count($metas_outils));
     121        if ($init_includes)
     122                cs_initialise_includes(count($metas_outils));
    107123        // verifier le fichier d'options _FILE_OPTIONS (ecrire/mes_options.php ou config/mes_options.php)
    108124        // De'sactive' par de'faut. Activer l'outil "Comportements du Couteau Suisse" pour ge'rer cette option.
     
    110126        // sauver la configuration
    111127        cs_sauve_configuration();
    112 if($log) cs_log("$rand -- ecriture metas");
     128        if ($log)
     129                cs_log("$rand -- ecriture metas");
    113130        // en metas : outils actifs
    114131        ecrire_meta('tweaks_actifs', serialize($metas_outils));
     
    119136        // maj forcee des fichiers distants ?
    120137        $test = 0;
    121         foreach($metas_outils as $nom=>$o)
    122                 if(isset($o['actif']) && $o['actif'] && isset($o['maj_distant']) && $o['maj_distant']) {
     138        foreach ($metas_outils as $nom => $o)
     139                if (isset($o['actif']) && $o['actif'] && isset($o['maj_distant']) && $o['maj_distant']) {
    123140                        cs_action_fichiers_distants($outils[$nom], true, true);
    124                         if(!isset($outils[$nom]['erreurs']['fichiers_distants'])) {
     141                        if (!isset($outils[$nom]['erreurs']['fichiers_distants'])) {
    125142                                $metas_outils[$nom]['maj_distant'] = 0;
    126                                 $test = 1;
    127                         } else 
     143                                $test                              = 1;
     144                        } else
    128145                                spip_log("Erreur - cs_action_fichiers_distants() : l'outil \"$nom\" ne peut mettre a jour ses fichiers distants !");
    129146                }
    130         if($test) ecrire_meta('tweaks_actifs', serialize($metas_outils));
     147        if ($test)
     148                ecrire_meta('tweaks_actifs', serialize($metas_outils));
    131149        ecrire_metas(); # Pour SPIP 1.92
    132150        $GLOBALS['cs_init'] = 0;
    133 if($log) cs_log("{$rand}cs_initialisation($forcer) : Sortie");
     151        if ($log)
     152                cs_log("{$rand}cs_initialisation($forcer) : Sortie");
    134153}
    135154
     
    144163*/
    145164function cs_block($texte) {
    146         return preg_match(',(\n\n|\r\n\r\n|\r\r),', $texte)
    147                 || preg_match(',(\n|^)-[*]* a|</?(p|'._BALISES_BLOCS.')[>[:space:]],iS', $texte);
     165        return preg_match(',(\n\n|\r\n\r\n|\r\r),', $texte) || preg_match(',(\n|^)-[*]* a|</?(p|' . _BALISES_BLOCS . ')[>[:space:]],iS', $texte);
    148166}
    149167
    150168// fonction callback pour cs_echappe_balises
    151169function cs_echappe_html_callback($matches) {
    152  return _CS_HTMLA.cs_code_echappement($matches[1], 'CS');
     170        return _CS_HTMLA . cs_code_echappement($matches[1], 'CS');
    153171}
    154172
     
    160178// si $balises = '' alors la protection par defaut est : html|code|cadre|frame|script
    161179// si $balises = false alors le texte est utilise tel quel
    162 function cs_echappe_balises($balises, $fonction, $texte, $arg=NULL){
    163         if(!strlen($texte)) return '';
    164         if (($fonction!==false) && !function_exists($fonction)) {
     180function cs_echappe_balises($balises, $fonction, $texte, $arg = NULL) {
     181        if (!strlen($texte))
     182                return '';
     183        if (($fonction !== false) && !function_exists($fonction)) {
    165184                // chargement des fonctions
    166185                include_spip('couteau_suisse_fonctions');
    167186                if (!function_exists($fonction)) {
    168                         spip_log("Erreur - cs_echappe_balises() : $fonction() non definie dans : ".$_SERVER['REQUEST_URI']);
     187                        spip_log("Erreur - cs_echappe_balises() : $fonction() non definie dans : " . $_SERVER['REQUEST_URI']);
    169188                        return $texte;
    170189                }
    171190        }
    172191        // trace d'anciennes balises <html></html> ou autre echappement SPIP ?
    173         if(strpos($texte, _CS_HTMLA)!==false) {
    174                 $texte = preg_replace(',<p[^>]*>(\s*'._CS_HTMLX.')</p>,', '$1', $texte);
    175                 $texte = preg_replace_callback(','._CS_HTMLA.'(.*?)(?='._CS_HTMLB.'),s', 'cs_echappe_html_callback', $texte);
     192        if (strpos($texte, _CS_HTMLA) !== false) {
     193                $texte = preg_replace(',<p[^>]*>(\s*' . _CS_HTMLX . ')</p>,', '$1', $texte);
     194                $texte = preg_replace_callback(',' . _CS_HTMLA . '(.*?)(?=' . _CS_HTMLB . '),s', 'cs_echappe_html_callback', $texte);
    176195        }
    177196        // protection du texte
    178         if($balises!==false) {
    179                 if(!strlen($balises)) $balises = 'html|code|cadre|frame|script';
    180                 $balises = ',<('.$balises.')(\s[^>]*)?>(.*)</\1>,UimsS';
     197        if ($balises !== false) {
     198                if (!strlen($balises))
     199                        $balises = 'html|code|cadre|frame|script';
     200                $balises = ',<(' . $balises . ')(\s[^>]*)?>(.*)</\1>,UimsS';
    181201                include_spip('inc/texte');
    182202                $texte = echappe_html($texte, 'CS', true, $balises);
    183203        }
    184204        // retour du texte simplement protege
    185         if ($fonction===false) return $texte;
     205        if ($fonction === false)
     206                return $texte;
    186207        // transformation par $fonction
    187         $texte = $arg==NULL?$fonction($texte):$fonction($texte, $arg);
     208        $texte = $arg == NULL ? $fonction($texte) : $fonction($texte, $arg);
    188209        // deprotection en abime, notamment des modeles...
    189         if(strpos($texte, 'base64CS')!==false) $texte = echappe_retour($texte, 'CS');
    190         if(strpos($texte, 'base64CS')!==false) return echappe_retour($texte, 'CS');
     210        if (strpos($texte, 'base64CS') !== false)
     211                $texte = echappe_retour($texte, 'CS');
     212        if (strpos($texte, 'base64CS') !== false)
     213                return echappe_retour($texte, 'CS');
    191214        return $texte;
    192215}
     
    197220        $file = explode('/', $file);
    198221        $keys = array_keys($file, '..');
    199         foreach($keys as $keypos => $key) if($key) array_splice($file, $key - ($keypos * 2 + 1), 2);
     222        foreach ($keys as $keypos => $key)
     223                if ($key)
     224                        array_splice($file, $key - ($keypos * 2 + 1), 2);
    200225        $file = implode('/', $file);
    201226        return preg_replace(',([^.])\./,', '\1', $file);
     
    204229// retourne un chemin canonique base sur la racine du site
    205230// $relatif est le chemin relatif dans lequel on veut situer $file
    206 function cs_root_canonicalize($file, $relatif='') {
     231function cs_root_canonicalize($file, $relatif = '') {
    207232        static $root, $lenroot;
    208 //echo " ($file => ";
     233        //echo " ($file => ";
    209234        $file = cs_canonicalize($file);
    210 //echo "$file) ";
    211         if(!isset($root)) $lenroot = strlen($root = cs_canonicalize(_ROOT_RACINE));
     235        //echo "$file) ";
     236        if (!isset($root))
     237                $lenroot = strlen($root = cs_canonicalize(_ROOT_RACINE));
    212238        // complet sur la racine du serveur
    213         if(strncmp($file, $root, $lenroot)===0) return substr($file, $lenroot);
     239        if (strncmp($file, $root, $lenroot) === 0)
     240                return substr($file, $lenroot);
    214241        // complet sur la racine du site
    215         if(strncmp($file, '/', 1)===0) return substr($file, 1);
     242        if (strncmp($file, '/', 1) === 0)
     243                return substr($file, 1);
    216244        // relatif
    217         $file = cs_canonicalize(getcwd().'/'.$relatif.'/'.$file);
    218         if(strncmp($file, $root, $lenroot)===0) return substr($file, $lenroot);
     245        $file = cs_canonicalize(getcwd() . '/' . $relatif . '/' . $file);
     246        if (strncmp($file, $root, $lenroot) === 0)
     247                return substr($file, $lenroot);
    219248        return $file;
    220249}
    221250
    222251// manipule le fichier config/mes_options.php
    223 function cs_ecrire_config($regexpr, $replace, $ajout_sinon='') {
     252function cs_ecrire_config($regexpr, $replace, $ajout_sinon = '') {
    224253        $fo = cs_spip_file_options(1);
    225         $t = '';
    226         if ($fo && ((is_array($regexpr) && count($regexpr)) || strlen($regexpr))
    227           && ((is_array($replace) && count($replace)) || strlen($replace))) {
     254        $t  = '';
     255        if ($fo && ((is_array($regexpr) && count($regexpr)) || strlen($regexpr)) && ((is_array($replace) && count($replace)) || strlen($replace))) {
    228256                if (lire_fichier($fo, $t) && strlen($t)) {
    229257                        $t = preg_replace($regexpr, $replace, $t, 1);
    230                         if(ecrire_fichier($fo, $t)) return;
    231                         else if(defined('_LOG_CS')) cs_log("ERREUR : l'ecriture du fichier $fo a echoue !");
    232                 } else if(defined('_LOG_CS')) cs_log(" -- fichier $fo illisible. Inclusion non permise");
    233                 if(strlen($t)) return;
     258                        if (ecrire_fichier($fo, $t))
     259                                return;
     260                        else if (defined('_LOG_CS'))
     261                                cs_log("ERREUR : l'ecriture du fichier $fo a echoue !");
     262                } else if (defined('_LOG_CS'))
     263                        cs_log(" -- fichier $fo illisible. Inclusion non permise");
     264                if (strlen($t))
     265                        return;
    234266        }
    235267        // creation
    236         if(!strlen($ajout_sinon)) return;
     268        if (!strlen($ajout_sinon))
     269                return;
    237270        $fo = cs_spip_file_options(2);
    238         $ok = ecrire_fichier($fo, '<?'."php\n".$ajout_sinon."\n?".'>');
    239 if(defined('_LOG_CS')) cs_log(" -- fichier $fo absent ".($ok?'mais cree avec l\'inclusion':' et impossible a creer'));
     271        $ok = ecrire_fichier($fo, '<?' . "php\n" . $ajout_sinon . "\n?" . '>');
     272        if (defined('_LOG_CS'))
     273                cs_log(" -- fichier $fo absent " . ($ok ? 'mais cree avec l\'inclusion' : ' et impossible a creer'));
    240274}
    241275
    242276// liste des barres typo disponibles
    243 function cs_pp_liste_barres($outil=false) {
     277function cs_pp_liste_barres($outil = false) {
    244278        global $metas_vars;
    245279        // pour barre_outils_liste() qu'on trouve maintenant dans l'extension porte_plume
    246         if(defined('_SPIP30000')) include_spip('public/parametrer');
    247                 else include_spip('inc/barre_outils');
    248         if (!$sets = barre_outils_liste()) return array();
    249         if($outil) foreach($sets as $f=>$b) {
    250                 $v = 'pp_'.$b.'_'.$outil;
    251                 // par defaut le bouton est present dans toutes les barres
    252                 if(isset($metas_vars[$v]) && !$metas_vars[$v]) unset($sets[$f]);
    253         }
     280        if (defined('_SPIP30000'))
     281                include_spip('public/parametrer');
     282        else
     283                include_spip('inc/barre_outils');
     284        if (!$sets = barre_outils_liste())
     285                return array();
     286        if ($outil)
     287                foreach ($sets as $f => $b) {
     288                        $v = 'pp_' . $b . '_' . $outil;
     289                        // par defaut le bouton est present dans toutes les barres
     290                        if (isset($metas_vars[$v]) && !$metas_vars[$v])
     291                                unset($sets[$f]);
     292                }
    254293        return $sets;
    255294}
    256295
    257296// renvoie la meta d'un outil (fonction obsolete)
    258 function cs_lire_meta_outil($outil, $meta='', $unserialize=true) {
    259         if(!$meta) $meta = 'cs_'.$outil;
    260         if (!isset($GLOBALS['meta'][$meta])) { $f = $outil.'_installe'; $f(); }
    261         return $unserialize?unserialize($GLOBALS['meta'][$meta]):$GLOBALS['meta'][$meta];
     297function cs_lire_meta_outil($outil, $meta = '', $unserialize = true) {
     298        if (!$meta)
     299                $meta = 'cs_' . $outil;
     300        if (!isset($GLOBALS['meta'][$meta])) {
     301                $f = $outil . '_installe';
     302                $f();
     303        }
     304        return $unserialize ? unserialize($GLOBALS['meta'][$meta]) : $GLOBALS['meta'][$meta];
    262305}
    263306
    264307// renvoie les donnees precompilees d'un outil
    265 function cs_lire_data_outil($outil, $casier_=false) {
     308function cs_lire_data_outil($outil, $casier_ = false) {
    266309        static $datas = array();
    267         $casier = ($casier_ && $casier_!==$outil)?$outil.'_'.$casier_:$outil;
    268         if(isset($datas[$casier]))
     310        $casier = ($casier_ && $casier_ !== $outil) ? $outil . '_' . $casier_ : $outil;
     311        if (isset($datas[$casier]))
    269312                return $datas[$casier];
    270313        // recherche dans le fichier cache
    271         if(!(isset($GLOBALS['cs_outils']) && $GLOBALS['cs_outils']) && @is_readable($f = _DIR_CS_TMP.'mes_outils.php'))
     314        if (!(isset($GLOBALS['cs_outils']) && $GLOBALS['cs_outils']) && @is_readable($f = _DIR_CS_TMP . 'mes_outils.php'))
    272315                include_once($f);
    273         if(function_exists($f = 'cs_data_'.$casier))
     316        if (function_exists($f = 'cs_data_' . $casier))
    274317                return $datas[$casier] = $f();
    275318        // installation de l'outil
    276         include_spip('outils/'.$outil);
    277         if( (function_exists($f = $outil.'_installe') || function_exists($f = $f.'_dist'))
    278                 && ($tmp=$f())
    279                 && (isset($tmp[$ok=$casier]) || (!$casier_ && (isset($tmp[$ok=0]) || isset($tmp[$ok=$outil])))))
    280                         return $datas[$ok] = $tmp[$ok];
     319        include_spip('outils/' . $outil);
     320        if ((function_exists($f = $outil . '_installe') || function_exists($f = $f . '_dist')) && ($tmp = $f()) && (isset($tmp[$ok = $casier]) || (!$casier_ && (isset($tmp[$ok = 0]) || isset($tmp[$ok = $outil])))))
     321                return $datas[$ok] = $tmp[$ok];
    281322        return NULL;
    282323}
    283324
    284325function rep_icones_barre(&$icones_barre) {
    285         if(defined('_SPIP20100')) include_spip('images_fonctions');
    286         if(!isset($icones_barre))
     326        if (defined('_SPIP20100'))
     327                include_spip('images_fonctions');
     328        if (!isset($icones_barre))
    287329                $icones_barre = sous_repertoire(sous_repertoire(_DIR_VAR, 'couteau-suisse'), 'icones_barre');
    288330}
     
    290332// au stade mes_options, cette constante n'est pas encore definie...
    291333function define_IMG_GD_MAX_PIXELS() {
    292         if(!defined('_IMG_GD_MAX_PIXELS'))
    293                 define('_IMG_GD_MAX_PIXELS', (isset($GLOBALS['meta']['max_taille_vignettes'])&&$GLOBALS['meta']['max_taille_vignettes']<5500000)?$GLOBALS['meta']['max_taille_vignettes']:0);
     334        if (!defined('_IMG_GD_MAX_PIXELS'))
     335                define('_IMG_GD_MAX_PIXELS', (isset($GLOBALS['meta']['max_taille_vignettes']) && $GLOBALS['meta']['max_taille_vignettes'] < 5500000) ? $GLOBALS['meta']['max_taille_vignettes'] : 0);
    294336}
    295337
    296338// renvoie _T('couteauprive:'.$texte) puis detruit la chaine du module concerne
    297 if(defined('_SPIP30100')) {
     339if (defined('_SPIP30100')) {
    298340        function couteauprive_T($texte, $args = array()) {
    299                 $res = _T('couteauprive:'.$texte, $args, array('sanitize' => FALSE));
    300                 if(isset($GLOBALS[$tmp='i18n_couteauprive_'.$GLOBALS['spip_lang']][$texte]))
    301                                 unset($GLOBALS[$tmp][$texte]);
     341                $res = _T('couteauprive:' . $texte, $args, array(
     342                        'sanitize' => FALSE
     343                ));
     344                if (isset($GLOBALS[$tmp = 'i18n_couteauprive_' . $GLOBALS['spip_lang']][$texte]))
     345                        unset($GLOBALS[$tmp][$texte]);
    302346                return $res;
    303347        }
    304348} else {
    305349        function couteauprive_T($texte, $args = array()) {
    306                 $res = _T('couteauprive:'.$texte, $args);
    307                 if(defined('_SPIP19300') && isset($GLOBALS[$tmp='i18n_couteauprive_'.$GLOBALS['spip_lang']][$texte]))
    308                                 unset($GLOBALS[$tmp][$texte]);
     350                $res = _T('couteauprive:' . $texte, $args);
     351                if (defined('_SPIP19300') && isset($GLOBALS[$tmp = 'i18n_couteauprive_' . $GLOBALS['spip_lang']][$texte]))
     352                        unset($GLOBALS[$tmp][$texte]);
    309353                return $res;
    310354        }
  • _plugins_/couteau_suisse/cout_pipelines.php

    r107348 r109093  
    99#  pipelines appeles par SPIP.                        #
    1010#-----------------------------------------------------#
    11 if(!defined("_ECRIRE_INC_VERSION")) return;
     11if (!defined("_ECRIRE_INC_VERSION"))
     12        return;
    1213
    1314// attention, ici il se peut que le plugin ne soit pas initialise (cas des .js/.css par exemple)
    14 if(defined('_LOG_CS')) cs_log("inclusion de cout_pipelines.php");
     15if (defined('_LOG_CS'))
     16        cs_log("inclusion de cout_pipelines.php");
    1517
    1618// fonction d'erreur indispensable a tous les pipelines
     
    2426
    2527// ajout d'un onglet sur la page de configuration de SPIP<3
    26 function couteau_suisse_ajouter_onglets($flux){
     28function couteau_suisse_ajouter_onglets($flux) {
    2729        include_spip('inc/autoriser');
    28         $arg = $flux['args']=='configuration' || $flux['args']=='plugins';
     30        $arg = $flux['args'] == 'configuration' || $flux['args'] == 'plugins';
    2931        // si on est admin...
    30         if($arg && autoriser('configurer', 'cs'))
    31                 $flux['data']['couteau_suisse']= new Bouton(cs_icone(24), 'couteau:titre', generer_url_ecrire('admin_couteau_suisse'));
    32         return $flux;
    33 }
    34 
    35 function eval_metas_pipelines(&$flux, $pipe){
    36         global $cs_metas_pipelines;
    37         if(isset($cs_metas_pipelines[$pipe])) eval($cs_metas_pipelines[$pipe]);
    38         return $flux;
    39 }
    40 function couteau_suisse_affiche_gauche($flux){
     32        if ($arg && autoriser('configurer', 'cs'))
     33                $flux['data']['couteau_suisse'] = new Bouton(cs_icone(24), 'couteau:titre', generer_url_ecrire('admin_couteau_suisse'));
     34        return $flux;
     35}
     36
     37function eval_metas_pipelines(&$flux, $pipe) {
     38        global $cs_metas_pipelines;
     39        if (isset($cs_metas_pipelines[$pipe]))
     40                eval($cs_metas_pipelines[$pipe]);
     41        return $flux;
     42}
     43function couteau_suisse_affiche_gauche($flux) {
    4144        return eval_metas_pipelines($flux, 'affiche_gauche');
    4245}
    43 function couteau_suisse_affiche_droite($flux){
     46function couteau_suisse_affiche_droite($flux) {
    4447        return eval_metas_pipelines($flux, 'affiche_droite');
    4548}
    46 function couteau_suisse_affiche_milieu($flux){
     49function couteau_suisse_affiche_milieu($flux) {
    4750        return eval_metas_pipelines($flux, 'affiche_milieu');
    4851}
    49 function couteau_suisse_boite_infos($flux){
     52function couteau_suisse_boite_infos($flux) {
    5053        return eval_metas_pipelines($flux, 'boite_infos');
    5154}
    52 function couteau_suisse_pre_boucle($flux){
     55function couteau_suisse_pre_boucle($flux) {
    5356        return eval_metas_pipelines($flux, 'pre_boucle');
    5457}
    5558
    56 function couteau_suisse_header_prive($flux_){
     59function couteau_suisse_header_prive($flux_) {
    5760        global $cs_metas_pipelines;
    5861        $flux = '';
    59         if(isset($cs_metas_pipelines['header_prive'])) eval($cs_metas_pipelines['header_prive']);
    60         cs_compile_header($flux,'css', '_prive', false); cs_compile_header($flux, 'js', '_prive');
     62        if (isset($cs_metas_pipelines['header_prive']))
     63                eval($cs_metas_pipelines['header_prive']);
     64        cs_compile_header($flux, 'css', '_prive', false);
     65        cs_compile_header($flux, 'js', '_prive');
    6166        return $flux_ . $flux;
    6267}
     
    6772 **********/
    6873
    69 function couteau_suisse_insert_head_css($flux_ = '', $prive = false){
     74function couteau_suisse_insert_head_css($flux_ = '', $prive = false) {
    7075        static $done = false;
    71         if($done) return $flux_;
     76        if ($done)
     77                return $flux_;
    7278        $done = true;
    7379        global $cs_metas_pipelines;
    7480        $flux = '';
    75         if(isset($cs_metas_pipelines['insert_head_css'])) eval($cs_metas_pipelines['insert_head_css']);
     81        if (isset($cs_metas_pipelines['insert_head_css']))
     82                eval($cs_metas_pipelines['insert_head_css']);
    7683        cs_compile_header($flux, 'css');
    7784        return $flux_ . $flux;
    7885}
    7986
    80 function couteau_suisse_insert_head($flux_){
     87function couteau_suisse_insert_head($flux_) {
    8188        global $cs_metas_pipelines;
    8289        $flux = '';
    83         if(isset($cs_metas_pipelines['insert_head'])) eval($cs_metas_pipelines['insert_head']);
     90        if (isset($cs_metas_pipelines['insert_head']))
     91                eval($cs_metas_pipelines['insert_head']);
    8492        cs_compile_header($flux, 'js');
    85         return $flux_
    86                 . couteau_suisse_insert_head_css() // en cas d'absence de balise #INSERT_HEAD_CSS
     93        return $flux_ . couteau_suisse_insert_head_css() // en cas d'absence de balise #INSERT_HEAD_CSS
    8794                . $flux;
    8895}
    8996
    90 function couteau_suisse_affichage_final($flux){
     97function couteau_suisse_affichage_final($flux) {
    9198        eval_metas_pipelines($flux, 'affichage_final');
    9299        return cs_nettoie($flux);
    93100}
    94101
    95 function couteau_suisse_recuperer_fond($flux){
    96         $fond = &$flux['args']['fond']; $texte = &$flux['data']['texte'];
     102function couteau_suisse_recuperer_fond($flux) {
     103        $fond = &$flux['args']['fond'];
     104        $texte = &$flux['data']['texte'];
    97105        eval_metas_pipelines($flux, 'recuperer_fond');
    98106        $texte = cs_nettoie($texte);
     
    104112 ********/
    105113
    106 function couteau_suisse_nettoyer_raccourcis_typo($flux){
     114function couteau_suisse_nettoyer_raccourcis_typo($flux) {
    107115        return eval_metas_pipelines($flux, 'nettoyer_raccourcis_typo');
    108116}
    109 function couteau_suisse_pre_propre($flux){
     117function couteau_suisse_pre_propre($flux) {
    110118        return eval_metas_pipelines($flux, 'pre_propre');
    111119}
    112 function couteau_suisse_pre_typo($flux){
     120function couteau_suisse_pre_typo($flux) {
    113121        return eval_metas_pipelines($flux, 'pre_typo');
    114122}
    115 function couteau_suisse_post_propre($flux){
     123function couteau_suisse_post_propre($flux) {
    116124        eval_metas_pipelines($flux, 'post_propre');
    117125        // tracage des echappements SPIP (<html/><code/><cadre/> etc.) pour les traitements (s'il y en a) venant apres propre()
    118126        // Note : SPIP echappe egalement les modeles
    119         if($GLOBALS['cs_post_propre']) {
    120                 if(strpos($flux, '<span class="base64"')!==false)
    121                         $flux = preg_replace(',<span class="base64"[^>]+></span>,', _CS_HTMLA.'$0'._CS_HTMLB, $flux);
    122                 if(strpos($flux, '<div class="base64"')!==false)
    123                         $flux = preg_replace(',<div class="base64"[^>]+></div>,', _CS_HTMLA.'$0'._CS_HTMLB, $flux);
    124         }
    125         return $flux;
    126 }
    127 
    128 function couteau_suisse_post_typo($flux){
     127        if ($GLOBALS['cs_post_propre']) {
     128                if (strpos($flux, '<span class="base64"') !== false)
     129                        $flux = preg_replace(',<span class="base64"[^>]+></span>,', _CS_HTMLA . '$0' . _CS_HTMLB, $flux);
     130                if (strpos($flux, '<div class="base64"') !== false)
     131                        $flux = preg_replace(',<div class="base64"[^>]+></div>,', _CS_HTMLA . '$0' . _CS_HTMLB, $flux);
     132        }
     133        return $flux;
     134}
     135
     136function couteau_suisse_post_typo($flux) {
    129137        return eval_metas_pipelines($flux, 'post_typo');
    130138}
     
    134142 *******/
    135143
    136 function couteau_suisse_pre_edition($flux){
     144function couteau_suisse_pre_edition($flux) {
    137145        return eval_metas_pipelines($flux, 'pre_edition');
    138146}
    139 function couteau_suisse_post_edition($flux){
     147function couteau_suisse_post_edition($flux) {
    140148        return eval_metas_pipelines($flux, 'post_edition');
    141149}
     
    145153 *********/
    146154
    147 function couteau_suisse_formulaire_verifier($flux){
     155function couteau_suisse_formulaire_verifier($flux) {
    148156        return eval_metas_pipelines($flux, 'formulaire_verifier');
    149157}
    150158
    151 function couteau_suisse_taches_generales_cron($flux){
     159function couteau_suisse_taches_generales_cron($flux) {
    152160        return eval_metas_pipelines($flux, 'taches_generales_cron');
    153161}
    154162
    155163// pipeline SPIP<2.1
    156 function couteau_suisse_creer_chaine_url($flux){
     164function couteau_suisse_creer_chaine_url($flux) {
    157165        return eval_metas_pipelines($flux, 'creer_chaine_url');
    158166}
    159167// pipelines SPIP>=2.0
    160 function couteau_suisse_declarer_tables_interfaces($flux){
    161         if(function_exists('cs_table_des_traitements')) cs_table_des_traitements($flux['table_des_traitements']);
     168function couteau_suisse_declarer_tables_interfaces($flux) {
     169        if (function_exists('cs_table_des_traitements'))
     170                cs_table_des_traitements($flux['table_des_traitements']);
    162171        return eval_metas_pipelines($flux, 'declarer_tables_interfaces');
    163172}
    164173// pipelines SPIP>=2.1
    165 function couteau_suisse_arbo_creer_chaine_url($flux){
     174function couteau_suisse_arbo_creer_chaine_url($flux) {
    166175        return eval_metas_pipelines($flux, 'arbo_creer_chaine_url');
    167176}
    168 function couteau_suisse_propres_creer_chaine_url($flux){
     177function couteau_suisse_propres_creer_chaine_url($flux) {
    169178        return eval_metas_pipelines($flux, 'propres_creer_chaine_url');
    170179}
    171180// pipelines SPIP>=3.0
    172 function couteau_suisse_ajouter_menus($flux){
     181function couteau_suisse_ajouter_menus($flux) {
    173182        return eval_metas_pipelines($flux, 'ajouter_menus');
    174183}
     
    178187function couteau_suisse_bt_toolbox($params) {
    179188        global $cs_metas_pipelines;
    180         if(!isset($cs_metas_pipelines['bt_toolbox'])) return $params;
     189        if (!isset($cs_metas_pipelines['bt_toolbox']))
     190                return $params;
    181191        $flux = '';
    182192        eval($cs_metas_pipelines['bt_toolbox']);
    183193        $tableau_formulaire = '
    184  <table class="spip_barre" style="width: auto; padding: 1px!important; border-top: 0px;" summary="">'
    185         . str_replace(array('@@champ@@','@@span@@'), array($params['champ'], 'span style="vertical-align:75%;"'), $flux) . '
     194 <table class="spip_barre" style="width: auto; padding: 1px!important; border-top: 0px;" summary="">' . str_replace(array(
     195                '@@champ@@',
     196                '@@span@@'
     197        ), array(
     198                $params['champ'],
     199                'span style="vertical-align:75%;"'
     200        ), $flux) . '
    186201 </table>';
    187202        $params['flux'] .= produceWharf('couteau_suisse', '', $tableau_formulaire);
     
    191206function couteau_suisse_bt_gadgets($params) {
    192207        global $cs_metas_pipelines;
    193         if(!isset($cs_metas_pipelines['bt_toolbox'])) return $params;
    194         $params['flux'] .= bouton_barre_racc("swap_couche('".$GLOBALS['numero_block']['couteau_suisse']."','');", cs_icone(24), _T('couteauprive:raccourcis_barre'), $params['help']);
     208        if (!isset($cs_metas_pipelines['bt_toolbox']))
     209                return $params;
     210        $params['flux'] .= bouton_barre_racc("swap_couche('" . $GLOBALS['numero_block']['couteau_suisse'] . "','');", cs_icone(24), _T('couteauprive:raccourcis_barre'), $params['help']);
    195211        return $params;
    196212}
    197213
    198 function couteau_suisse_porte_plume_barre_pre_charger($flux){
     214function couteau_suisse_porte_plume_barre_pre_charger($flux) {
    199215        eval_metas_pipelines($flux, 'porte_plume_barre_pre_charger');
    200216        $barres = pipeline('porte_plume_cs_pre_charger', array());
    201         $r = array(
     217        $r      = array(
    202218                "id" => 'couteau_suisse_drop',
    203219                "name" => _T('couteau:pp_couteau_suisse_drop'),
    204220                "className" => 'couteau_suisse_drop',
    205221                "replaceWith" => '',
    206                 "display" => true,
     222                "display" => true
    207223        );
    208         foreach($barres as $barre=>$menu) {
     224        foreach ($barres as $barre => $menu) {
    209225                $r["dropMenu"] = $menu;
    210226                $flux[$barre]->ajouterApres('grpCaracteres', $r);
     
    213229}
    214230
    215 function couteau_suisse_porte_plume_lien_classe_vers_icone($flux){
     231function couteau_suisse_porte_plume_lien_classe_vers_icone($flux) {
    216232        global $cs_metas_pipelines;
    217233        if (isset($cs_metas_pipelines['porte_plume_lien_classe_vers_icone'])) {
     
    225241
    226242// pipeline maison : bouton sous un drop Couteau Suisse
    227 function couteau_suisse_porte_plume_cs_pre_charger($flux){
     243function couteau_suisse_porte_plume_cs_pre_charger($flux) {
    228244        return eval_metas_pipelines($flux, 'porte_plume_cs_pre_charger');
    229245}
     
    231247
    232248// compatibilite avec le plugin Facteur
    233 function couteau_suisse_facteur_pre_envoi($flux){
     249function couteau_suisse_facteur_pre_envoi($flux) {
    234250        return eval_metas_pipelines($flux, 'facteur_pre_envoi');
    235251}
     
    239255function couteau_suisse_pre_description_outil($flux) {
    240256        global $cs_metas_pipelines;
    241         $id = &$flux['outil']; $texte = &$flux['texte'];
    242         if(isset($cs_metas_pipelines['pre_description_outil']))
     257        $id = &$flux['outil'];
     258        $texte = &$flux['texte'];
     259        if (isset($cs_metas_pipelines['pre_description_outil']))
    243260                eval($cs_metas_pipelines['pre_description_outil']);
    244261        return $flux;
     
    247264function couteau_suisse_fichier_distant($flux) {
    248265        global $cs_metas_pipelines;
    249         if(isset($cs_metas_pipelines['fichier_distant']))
     266        if (isset($cs_metas_pipelines['fichier_distant']))
    250267                eval($cs_metas_pipelines['fichier_distant']);
    251268        return $flux;
     
    254271// callback pour la fonction cs_compile_pipe()
    255272function cs_compile_header_callback($matches) {
    256 if(defined('_LOG_CS')) cs_log(" -- compilation d'un header. Code CSS : ".couper($matches[1], 150));
     273        if (defined('_LOG_CS'))
     274                cs_log(" -- compilation d'un header. Code CSS : " . couper($matches[1], 150));
    257275        return cs_recuperer_code($matches[1]);
    258276}
     
    260278// recherche et compilation par SPIP du contenu d'un fichier .html : <cs_html>contenu</cs_html>
    261279// $type = 'css' ou 'js'
    262 function cs_compile_header(&$flux, $type_, $suffixe='', $rem=true) {
    263 //if(defined('_LOG_CS')) cs_log(" -- recherche de compilations necessaires du header.");
    264         global $cs_metas_pipelines;
    265         if(isset($cs_metas_pipelines[$type = 'header_'.$type_.$suffixe])) {
     280function cs_compile_header(&$flux, $type_, $suffixe = '', $rem = true) {
     281        //if(defined('_LOG_CS')) cs_log(" -- recherche de compilations necessaires du header.");
     282        global $cs_metas_pipelines;
     283        if (isset($cs_metas_pipelines[$type = 'header_' . $type_ . $suffixe])) {
    266284                $header = &$cs_metas_pipelines[$type];
    267                 if(strpos($header, '<cs_html>')!==false) {
     285                if (strpos($header, '<cs_html>') !== false) {
    268286                        $header = preg_replace_callback(',<cs_html>(.*)</cs_html>,Ums', 'cs_compile_header_callback', $header);
    269287                        // sauvegarde en metas
    270288                        ecrire_meta('tweaks_pipelines', serialize($cs_metas_pipelines));
    271289                        ecrire_metas();
    272                         ecrire_fichier(_DIR_CS_TMP.$type.'.html', "<!-- Fichier de controle $type_ pour le plugin 'Couteau Suisse' -->\n\n$header");
     290                        ecrire_fichier(_DIR_CS_TMP . $type . '.html', "<!-- Fichier de controle $type_ pour le plugin 'Couteau Suisse' -->\n\n$header");
    273291                }
    274292                $flux .= $header;
    275293        }
    276         if($rem)
    277                 $flux = strlen(trim($flux))?"\n<!-- Debut CS -->\n$flux\n<!-- Fin CS -->\n\n":"\n<!-- CS vide -->\n\n";
     294        if ($rem)
     295                $flux = strlen(trim($flux)) ? "\n<!-- Debut CS -->\n$flux\n<!-- Fin CS -->\n\n" : "\n<!-- CS vide -->\n\n";
    278296}
    279297
     
    281299// (recherche et compilation par SPIP du contenu d'un fichier .html : <cs_html>contenu</cs_html>)
    282300// $type = 'css' ou 'js'
    283 function cs_header_hit(&$flux, $type, $suffixe='') {
    284         $f = "header$suffixe.$type";
    285         $nom = sous_repertoire(_DIR_VAR,'couteau-suisse') . $f;
     301function cs_header_hit(&$flux, $type, $suffixe = '') {
     302        $f   = "header$suffixe.$type";
     303        $nom = sous_repertoire(_DIR_VAR, 'couteau-suisse') . $f;
    286304        $tmp = _DIR_CS_TMP . $f;
    287         if(!file_exists($tmp) || !file_exists($nom) || (defined('_VAR_MODE') && _VAR_MODE=='recalcul') || _request('var_mode')=='recalcul') {
    288                 if (lire_fichier(_DIR_CS_TMP."header.$type.html", $t) && strlen($t)) {
    289                         if(strpos($t, '<cs_html>')!==false)
     305        if (!file_exists($tmp) || !file_exists($nom) || (defined('_VAR_MODE') && _VAR_MODE == 'recalcul') || _request('var_mode') == 'recalcul') {
     306                if (lire_fichier(_DIR_CS_TMP . "header.$type.html", $t) && strlen($t)) {
     307                        if (strpos($t, '<cs_html>') !== false)
    290308                                $t = preg_replace_callback(',<cs_html>(.*)</cs_html>,Ums', 'cs_compile_header_callback', $t);
    291309                        ecrire_fichier($nom, $t, true);
    292310                        ecrire_fichier($tmp, $t, true);
    293311                } else {
    294                         if(defined('_LOG_CS')) cs_log(" -- fichier $fo illisible. hit non construit");
     312                        if (defined('_LOG_CS'))
     313                                cs_log(" -- fichier $fo illisible. hit non construit");
    295314                        return;
    296315                }
    297316        }
    298         switch($type) {
    299                 case 'js': $flux .= '<script src="'.$nom.'" type="text/javascript"></script>'; break;
    300                 case 'css': include_spip('inc/filtres');
    301                         $flux .= '<link rel="stylesheet" href="'.direction_css($nom).'" type="text/css" media="all" />'; break;
     317        switch ($type) {
     318                case 'js':
     319                        $flux .= '<script src="' . $nom . '" type="text/javascript"></script>';
     320                        break;
     321                case 'css':
     322                        include_spip('inc/filtres');
     323                        $flux .= '<link rel="stylesheet" href="' . direction_css($nom) . '" type="text/css" media="all" />';
     324                        break;
    302325        }
    303326}
     
    307330 * $coucou = $this->recuperer_code('[(#AUTORISER{ok}|oui)coucou]');
    308331 */
    309 function cs_recuperer_code(&$code) {//, $contexte=array(), $options = array(), $connect=''){
     332function cs_recuperer_code(&$code) { //, $contexte=array(), $options = array(), $connect=''){
    310333        $fond = _DIR_CS_TMP . md5($code);
    311334        $base = $fond . '.html';
    312         if(!file_exists($base) || (defined('_VAR_MODE') && _VAR_MODE=='recalcul') || _request('var_mode')=='recalcul')
     335        if (!file_exists($base) || (defined('_VAR_MODE') && _VAR_MODE == 'recalcul') || _request('var_mode') == 'recalcul')
    313336                ecrire_fichier($base, $code);
    314337        include_spip('public/assembler');
    315338        $fond = str_replace('../', '', $fond);
    316 //      return recuperer_fond($fond, array('fond'=>$fond));
    317         $f = inclure_page($fond, array('fond'=>$fond));
     339        //      return recuperer_fond($fond, array('fond'=>$fond));
     340        $f    = inclure_page($fond, array(
     341                'fond' => $fond
     342        ));
    318343        return $f['texte'];
    319344}
  • _plugins_/couteau_suisse/couteau_suisse_administrations.php

    r72059 r109093  
    33# $GLOBALS['meta']['couteau_suisse_base_version']='1.8';
    44
    5 if(!defined('_SPIP20100')) {
     5if (!defined('_SPIP20100')) {
    66        // Versions SPIP anterieures a 2.1
    7         function couteau_suisse_install($action){
     7        function couteau_suisse_install($action) {
    88                static $ok = 0;
    9                 if(defined('_LOG_CS')) cs_log("couteau_suisse_install($action)");
     9                if (defined('_LOG_CS'))
     10                        cs_log("couteau_suisse_install($action)");
    1011                include_spip('inc/meta');
    1112                include_spip('inc/plugin');
    12                 if(isset($GLOBALS['meta']['plugin'])) {
     13                if (isset($GLOBALS['meta']['plugin'])) {
    1314                        $t = unserialize($GLOBALS['meta']['plugin']);
    1415                        $t = $t['COUTEAU_SUISSE']['dir'];
    1516                }
    16                 $t = plugin_get_infos(strlen($t)?$t:'couteau_suisse');
    17                 switch ($action){
     17                $t = plugin_get_infos(strlen($t) ? $t : 'couteau_suisse');
     18                switch ($action) {
    1819                        case 'test':
    1920                                // affichage d'un lien ici, puisque le pipeline 'affiche_gauche' n'est pas pris en compte dans 'admin_plugin'...
    20                                 if(!$ok && _request('exec') == 'admin_plugin') {
    21                                         if(!defined('_SPIP19300')) echo '<br />';
     21                                if (!$ok && _request('exec') == 'admin_plugin') {
     22                                        if (!defined('_SPIP19300'))
     23                                                echo '<br />';
    2224                                        include_spip('inc/presentation');
    23                                         echo debut_cadre_enfonce('', true),
    24                                                 icone_horizontale(_T('couteau:titre'), generer_url_ecrire('admin_couteau_suisse'), cs_icone(24), '', false),
    25                                                 fin_cadre_enfonce(true);
     25                                        echo debut_cadre_enfonce('', true), icone_horizontale(_T('couteau:titre'), generer_url_ecrire('admin_couteau_suisse'), cs_icone(24), '', false), fin_cadre_enfonce(true);
    2626                                        $ok++;
    2727                                }
    28                                 return isset($GLOBALS['meta']['couteau_suisse_base_version'])
    29                                         AND ($GLOBALS['meta']['couteau_suisse_base_version']>=$t['version_base'])
    30                                         AND isset($GLOBALS['meta']['tweaks_actifs']);
     28                                return isset($GLOBALS['meta']['couteau_suisse_base_version']) AND ($GLOBALS['meta']['couteau_suisse_base_version'] >= $t['version_base']) AND isset($GLOBALS['meta']['tweaks_actifs']);
    3129                                break;
    3230                        case 'install':
    33                                 couteau_suisse_upgrade('couteau_suisse_base_version',$t['version_base']);
     31                                couteau_suisse_upgrade('couteau_suisse_base_version', $t['version_base']);
    3432                                break;
    3533                        case 'uninstall':
     
    4442        effacer_meta($nom_meta_base_version);
    4543        // effacement de toutes les metas du Couteau Suisse
    46         foreach(array_keys($GLOBALS['meta']) as $meta) {
    47                 if(strpos($meta, 'tweaks_') === 0) effacer_meta($meta);
    48                 if(strpos($meta, 'cs_') === 0) effacer_meta($meta);
     44        foreach (array_keys($GLOBALS['meta']) as $meta) {
     45                if (strpos($meta, 'tweaks_') === 0)
     46                        effacer_meta($meta);
     47                if (strpos($meta, 'cs_') === 0)
     48                        effacer_meta($meta);
    4949        }
    5050        ecrire_metas(); # Pour SPIP 1.92
    5151        // effacement des repertoires temporaires
    5252        include_spip('inc/getdocument');
    53         foreach(array(_DIR_CS_TMP, _DIR_VAR.'couteau-suisse') as $dir)
    54                 if(@file_exists($dir)) effacer_repertoire_temporaire($dir);
     53        foreach (array(
     54                _DIR_CS_TMP,
     55                _DIR_VAR . 'couteau-suisse'
     56        ) as $dir)
     57                if (@file_exists($dir))
     58                        effacer_repertoire_temporaire($dir);
    5559        // fichier RSS temporaire
    5660        include_spip('cout_define');
     
    6266
    6367// installation des tables du plugin et mises a jour
    64 function couteau_suisse_upgrade($nom_meta_base_version, $version_cible){
    65 if(defined('_LOG_CS')) cs_log("cout_upgrade : $nom_meta_base_version => $version_cible");
     68function couteau_suisse_upgrade($nom_meta_base_version, $version_cible) {
     69        if (defined('_LOG_CS'))
     70                cs_log("cout_upgrade : $nom_meta_base_version => $version_cible");
    6671        $current_version = '0.0';
    67         if(     isset($GLOBALS['meta'][$nom_meta_base_version])
    68                 && !version_compare($current_version = $GLOBALS['meta'][$nom_meta_base_version], $version_cible) )
    69                         return;
    70         if($current_version=='0.0') {
    71                 include_spip('base/create');
     72        if (isset($GLOBALS['meta'][$nom_meta_base_version]) && !version_compare($current_version = $GLOBALS['meta'][$nom_meta_base_version], $version_cible))
     73                return;
     74        if ($current_version == '0.0') {
     75                include_spip('base/create');
    7276                creer_base();
    7377        }
    74         if(cs_le_test($current_version, $tmp, '1.0')) {
     78        if (cs_le_test($current_version, $tmp, '1.0')) {
    7579                cs_suppr_metas_var('set_options');
    7680                cs_suppr_metas_var('radio_set_options3');
     
    8690                cs_suppr_metas_var('url_glossaire_externe', 'url_glossaire_externe2');
    8791                cs_suppr_metas_var('');
    88                 if(defined('_SPIP19300')) {
    89                         if(@$metas_vars['radio_desactive_cache3']==1) $metas_vars['radio_desactive_cache4']=-1;
     92                if (defined('_SPIP19300')) {
     93                        if (@$metas_vars['radio_desactive_cache3'] == 1)
     94                                $metas_vars['radio_desactive_cache4'] = -1;
    9095                        cs_suppr_metas_var('radio_desactive_cache3');
    9196                }
    92                 foreach(array('cs_decoupe', 'cs_decoration', 'cs_decoration_racc', 'cs_smileys', 'cs_smileys_racc',
    93                                 'cs_chatons', 'cs_chatons_racc', 'cs_jcorner', 'cs_couleurs', 'cs_couleurs_racc',
    94                                 'cs_filets_sep', 'cs_filets_sep_racc', 'cs_insertions') as $meta)
    95                         effacer_meta($meta);
    96                 ecrire_meta($nom_meta_base_version, $current_version=$tmp);
    97         }
    98         if(cs_le_test($current_version, $tmp, '1.5')) {
     97                foreach (array(
     98                        'cs_decoupe',
     99                        'cs_decoration',
     100                        'cs_decoration_racc',
     101                        'cs_smileys',
     102                        'cs_smileys_racc',
     103                        'cs_chatons',
     104                        'cs_chatons_racc',
     105                        'cs_jcorner',
     106                        'cs_couleurs',
     107                        'cs_couleurs_racc',
     108                        'cs_filets_sep',
     109                        'cs_filets_sep_racc',
     110                        'cs_insertions'
     111                ) as $meta)
     112                        effacer_meta($meta);
     113                ecrire_meta($nom_meta_base_version, $current_version = $tmp);
     114        }
     115        if (cs_le_test($current_version, $tmp, '1.5')) {
    99116                // nouveau champ 'ordre'
    100117                include_spip('outils/boites_privees');
    101118                tri_auteurs_verifie_table(true);
    102                 ecrire_meta($nom_meta_base_version, $current_version=$tmp);
    103         }
    104         if(cs_le_test($current_version, $tmp, '1.7')) {
     119                ecrire_meta($nom_meta_base_version, $current_version = $tmp);
     120        }
     121        if (cs_le_test($current_version, $tmp, '1.7')) {
    105122                effacer_meta('tweaks_contribs');
    106123                // MAJ forcee de tous les fichiers distants
    107                 cs_maj_forcee(array('ecran_securite', 'previsualisation'));
    108                 ecrire_meta($nom_meta_base_version, $current_version=$tmp);
    109         }
    110         if(cs_le_test($current_version, $tmp, '1.10')) {
     124                cs_maj_forcee(array(
     125                        'ecran_securite',
     126                        'previsualisation'
     127                ));
     128                ecrire_meta($nom_meta_base_version, $current_version = $tmp);
     129        }
     130        if (cs_le_test($current_version, $tmp, '1.10')) {
    111131                // MAJ pour rajeunissement
    112                 cs_maj_forcee(array('maj_auto', 'masquer', 'jcorner'));
    113                 ecrire_meta($nom_meta_base_version, $current_version=$tmp);
    114         }
    115         if(cs_le_test($current_version, $tmp, '1.11')) {
     132                cs_maj_forcee(array(
     133                        'maj_auto',
     134                        'masquer',
     135                        'jcorner'
     136                ));
     137                ecrire_meta($nom_meta_base_version, $current_version = $tmp);
     138        }
     139        if (cs_le_test($current_version, $tmp, '1.11')) {
    116140                // anciens metas inusites
    117                 foreach(array('tweaks_smileys', 'tweaks_chatons', 'cs_spam_mots') as $meta)
    118                         effacer_meta($meta);
    119                 ecrire_meta($nom_meta_base_version, $current_version=$tmp);
     141                foreach (array(
     142                        'tweaks_smileys',
     143                        'tweaks_chatons',
     144                        'cs_spam_mots'
     145                ) as $meta)
     146                        effacer_meta($meta);
     147                ecrire_meta($nom_meta_base_version, $current_version = $tmp);
    120148        }
    121149        ecrire_metas(); # Pour SPIP 1.92
     
    123151
    124152function cs_le_test($current_version, &$tmp, $new) {
    125         if($test = version_compare($current_version, $tmp=$new, '<')) {
    126                 echo '<h4>',_T('couteau:titre'),' - Upgrade ',$tmp,'</h4>';
    127                 $GLOBALS['cs_base_update'] .= $tmp.' > ';
     153        if ($test = version_compare($current_version, $tmp = $new, '<')) {
     154                echo '<h4>', _T('couteau:titre'), ' - Upgrade ', $tmp, '</h4>';
     155                $GLOBALS['cs_base_update'] .= $tmp . ' > ';
    128156        }
    129157        return $test;
     
    131159
    132160function cs_maj_forcee($liste) {
    133         $outils = isset($GLOBALS['meta']['tweaks_actifs'])?unserialize($GLOBALS['meta']['tweaks_actifs']):array();
    134         foreach($liste as $l) $outils[$l]['maj_distant'] = 1;
     161        $outils = isset($GLOBALS['meta']['tweaks_actifs']) ? unserialize($GLOBALS['meta']['tweaks_actifs']) : array();
     162        foreach ($liste as $l)
     163                $outils[$l]['maj_distant'] = 1;
    135164        ecrire_meta('tweaks_actifs', serialize($outils));
    136165}
    137166
    138167function cs_suppr_metas_var($meta, $new = false) {
    139  global $metas_vars;
    140  if(!isset($metas_vars[$meta])) return;
    141  if($new) {
    142         if(preg_match(',([0-9A-Za-z_-]*)\(('.'[0-9A-Za-z_-]*=[A-Za-z_:-]+\|[0-9A-Za-z_:=>|-]+'.')\),', $metas_vars[$meta], $reg))
    143                 $metas_vars[$new] = $reg[1];
    144         else $metas_vars[$new] = $metas_vars[$meta];
    145  }
    146  unset($metas_vars[$meta]);
     168        global $metas_vars;
     169        if (!isset($metas_vars[$meta]))
     170                return;
     171        if ($new) {
     172                if (preg_match(',([0-9A-Za-z_-]*)\((' . '[0-9A-Za-z_-]*=[A-Za-z_:-]+\|[0-9A-Za-z_:=>|-]+' . ')\),', $metas_vars[$meta], $reg))
     173                        $metas_vars[$new] = $reg[1];
     174                else
     175                        $metas_vars[$new] = $metas_vars[$meta];
     176        }
     177        unset($metas_vars[$meta]);
    147178}
    148179
     
    151182/*******************/
    152183
    153 function cout_install_pack($pack, $redirige=false) {
     184function cout_install_pack($pack, $redirige = false) {
    154185        global $metas_vars, $metas_outils;
    155186        $pack = &$GLOBALS['cs_installer'][$pack];
    156         if(is_string($pack) && function_exists($pack)) $pack = $pack();
     187        if (is_string($pack) && function_exists($pack))
     188                $pack = $pack();
    157189        effacer_meta('tweaks_actifs');
    158190        $metas_vars = $metas_outils = array();
    159         foreach(preg_split('%\s*[,|]\s*%', $pack['outils']) as $o) $metas_outils[trim($o)]['actif'] = 1;
    160         if(is_array($pack['variables'])) foreach($pack['variables'] as $i=>$v) $metas_vars[$i] = $v;
     191        foreach (preg_split('%\s*[,|]\s*%', $pack['outils']) as $o)
     192                $metas_outils[trim($o)]['actif'] = 1;
     193        if (is_array($pack['variables']))
     194                foreach ($pack['variables'] as $i => $v)
     195                        $metas_vars[$i] = $v;
    161196        ecrire_meta('tweaks_actifs', serialize($metas_outils));
    162197        ecrire_meta('tweaks_variables', serialize($metas_vars));
    163198        // tout recompiler
    164         if($redirige) cout_exec_redirige('cmd=pack#cs_infos');
     199        if ($redirige)
     200                cout_exec_redirige('cmd=pack#cs_infos');
    165201}
    166202
    167203// redirige vers la page exec en cours en vue une reinitialisation du Couteau Suisse
    168204// si $arg==false alors la redirection ne se fera pas (procedure d'installation par exemple)
    169 function cout_exec_redirige($arg='', $recompiler=true) {
    170         if($recompiler) {
     205function cout_exec_redirige($arg = '', $recompiler = true) {
     206        if ($recompiler) {
    171207                ecrire_metas();
    172208                cs_initialisation(true);
     
    176212                purger_repertoire(_DIR_CACHE);
    177213        }
    178         if($arg!==false) {
     214        if ($arg !== false) {
    179215                include_spip('inc/headers');
    180216                redirige_par_entete(generer_url_ecrire(_request('exec'), $arg, true));
  • _plugins_/couteau_suisse/couteau_suisse_fonctions.php

    r107164 r109093  
    22// Ce fichier est charge a chaque recalcul
    33// Attention, ici il se peut que le plugin ne soit pas initialise (cas des .js/.css par exemple)
    4 if (!defined("_ECRIRE_INC_VERSION")) return;
     4if (!defined("_ECRIRE_INC_VERSION"))
     5        return;
    56
    67// pour voir les erreurs ?
    7 if (defined('_CS_REPORT')) error_reporting(E_ALL ^ E_NOTICE);
    8 elseif (defined('_CS_REPORTALL')) error_reporting(E_ALL);
     8if (defined('_CS_REPORT'))
     9        error_reporting(E_ALL ^ E_NOTICE);
     10elseif (defined('_CS_REPORTALL'))
     11        error_reporting(E_ALL);
    912
    1013$GLOBALS['cs_fonctions_essai'] = 1;
    11 //if(defined('_LOG_CS')) cs_log("INIT : couteau_suisse_fonctions ($GLOBALS[cs_spip_options]/$GLOBALS[cs_options]/$GLOBALS[cs_fonctions]/$GLOBALS[cs_init])");
     14//if (defined('_LOG_CS')) cs_log("INIT : couteau_suisse_fonctions ($GLOBALS[cs_spip_options]/$GLOBALS[cs_options]/$GLOBALS[cs_fonctions]/$GLOBALS[cs_init])");
    1215cs_charge_fonctions();
    1316
    1417function cs_charge_fonctions() {
    1518        // initialisation si couteau_suisse_options est OK (fin de compilation par exemple)
    16         if(!isset($GLOBALS['cs_init']) || !$GLOBALS['cs_init']) {
    17                 if(isset($GLOBALS['cs_options']) && $GLOBALS['cs_options']) {
    18                         if(!isset($GLOBALS['cs_fonctions']) || !$GLOBALS['cs_fonctions']) {
     19        if (!isset($GLOBALS['cs_init']) || !$GLOBALS['cs_init']) {
     20                if (isset($GLOBALS['cs_options']) && $GLOBALS['cs_options']) {
     21                        if (!isset($GLOBALS['cs_fonctions']) || !$GLOBALS['cs_fonctions']) {
    1922                                // inclusion des fonctions pre-compilees
    20                                 if(defined('_LOG_CS')) cs_log("INCL : "._DIR_CS_TMP.'mes_fonctions.php');
    21                                 @include(_DIR_CS_TMP.'mes_fonctions.php');
    22                                 //if(defined('_LOG_CS')) cs_log("FIN INCL : "._DIR_CS_TMP.'mes_fonctions.php');
     23                                if (defined('_LOG_CS'))
     24                                        cs_log("INCL : " . _DIR_CS_TMP . 'mes_fonctions.php');
     25                                @include(_DIR_CS_TMP . 'mes_fonctions.php');
     26                                //if (defined('_LOG_CS')) cs_log("FIN INCL : "._DIR_CS_TMP.'mes_fonctions.php');
    2327                        } // else cs_log(' FIN : couteau_suisse_fonctions deja inclus');
    2428                } else {
     
    3438
    3539// raccourci pour le JavaScript
    36 function cs_javascript($chaine) { return unicode_to_javascript(addslashes(html2unicode($chaine))); }
     40function cs_javascript($chaine) {
     41        return unicode_to_javascript(addslashes(html2unicode($chaine)));
     42}
    3743
    3844// Fonction propre() sans echapper_html_suspect() (SPIP >= 3.1)
    3945function cs_propre_sain($texte) {
    40         if(!$texte or !defined('_SPIP30100')
    41                 or strpos($texte, '<') === false or strpos($texte, '=') === false) {
     46        if (!$texte || !defined('_SPIP30100') || strpos($texte, '<') === false || strpos($texte, '=') === false)
    4247                return propre($texte);
    43         }
    4448        $texte = propre(str_replace('=', '@CSEGAL@', $texte));
    4549        return str_replace('@CSEGAL@', '=', $texte);
     
    4852// Fonction _T() sans echapper_html_suspect() (SPIP >= 3.1)
    4953function _T_sain($texte, $args = array(), $options = array()) {
    50         if(defined('_SPIP30100')) $options['sanitize'] = FALSE;
    51         if(defined('_SPIP20100')) return _T($texte, $args, $options);
     54        if (defined('_SPIP30100'))
     55                $options['sanitize'] = false;
     56        if (defined('_SPIP20100'))
     57                return _T($texte, $args, $options);
    5258        return _T($texte, $args);
    5359}
  • _plugins_/couteau_suisse/couteau_suisse_options.php

    r107154 r109093  
    44
    55// Ce fichier est charge a chaque hit //
    6 if (!defined('_ECRIRE_INC_VERSION')) return;
     6if (!defined('_ECRIRE_INC_VERSION'))
     7        return;
    78
    89// Pour forcer les logs du plugin, outil actif ou non :
     
    1516// pre_description_outil : 1er pipeline de pre_affichage, indispensable d'y mettre par exemple certaines constantes
    1617if (!isset($GLOBALS['spip_pipeline']['pre_description_outil']))
    17         $GLOBALS['spip_pipeline']['pre_description_outil']='';
     18        $GLOBALS['spip_pipeline']['pre_description_outil'] = '';
    1819// post_description_outil : 2e pipeline de pre_affichage, ici le texte est quasi definitif
    19 #$GLOBALS['spip_pipeline']['post_description_outil']='';
     20#$GLOBALS['spip_pipeline']['post_description_outil'] = '';
    2021// a l'issue du telechargement d'un fichier distant
    21 $GLOBALS['spip_pipeline']['fichier_distant']='';
     22$GLOBALS['spip_pipeline']['fichier_distant'] = '';
    2223
    2324// Declaration d'un pipeline servant a inserer un bouton sous la baniere du Couteau Suisse
    2425if (!isset($GLOBALS['spip_pipeline']['porte_plume_cs_pre_charger']))
    25         $GLOBALS['spip_pipeline']['porte_plume_cs_pre_charger']='';
     26        $GLOBALS['spip_pipeline']['porte_plume_cs_pre_charger'] = '';
    2627
    2728// pour les serveurs qui aiment les virgules...
    28 $GLOBALS['spip_version_code'] = str_replace(',','.',$GLOBALS['spip_version_code']);
     29$GLOBALS['spip_version_code'] = str_replace(',', '.', $GLOBALS['spip_version_code']);
     30
    2931// constantes de compatibilite
    3032// (pour info : SPIP 2.0 => 12691, SPIP 2.1 => 15133, SPIP 2.2 => ??, , SPIP 3.0 => 17743, SPIP 3.1 => 22159, SPIP 3.2 => 22653)
    31 if ($GLOBALS['spip_version_code']>=22653)
    32         { @define('_SPIP30200', 1); @define('_SPIP30100', 1); @define('_SPIP30000', 1); @define('_SPIP20200', 1); @define('_SPIP20100', 1); @define('_SPIP19300', 1); @define('_SPIP19200', 1); }
    33 elseif ($GLOBALS['spip_version_code']>=22159)
    34         { @define('_SPIP30100', 1); @define('_SPIP30000', 1); @define('_SPIP20200', 1); @define('_SPIP20100', 1); @define('_SPIP19300', 1); @define('_SPIP19200', 1); }
    35 elseif ($GLOBALS['spip_version_code']>=17743)
    36         { @define('_SPIP30000', 1); @define('_SPIP20200', 1); @define('_SPIP20100', 1); @define('_SPIP19300', 1); @define('_SPIP19200', 1); }
    37 elseif (!strncmp($GLOBALS['spip_version_affichee'],'2.2',3))
    38         { @define('_SPIP20200', 1); @define('_SPIP20100', 1); @define('_SPIP19300', 1); @define('_SPIP19200', 1); }
    39 elseif ($GLOBALS['spip_version_code']>=15133)
    40         { @define('_SPIP20100', 1); @define('_SPIP19300', 1); @define('_SPIP19200', 1); }
    41 elseif (version_compare($GLOBALS['spip_version_code'],'1.9300','>='))
    42         { @define('_SPIP19300', 1); @define('_SPIP19200', 1); }
    43 elseif (version_compare($GLOBALS['spip_version_code'],'1.9200','>=')) {
    44         @define('_SPIP19200', 1);
    45         if(!function_exists('test_espace_prive')) {
    46                 function test_espace_prive() { return defined('_DIR_RESTREINT') ? !_DIR_RESTREINT : false; }
    47         }
    48 } else @define('_SPIP19100', 1);
     33if ($GLOBALS['spip_version_code'] >= 22653) {
     34        @define('_SPIP30200', 1);
     35        @define('_SPIP30100', 1);
     36        @define('_SPIP30000', 1);
     37        @define('_SPIP20200', 1);
     38        @define('_SPIP20100', 1);
     39        @define('_SPIP19300', 1);
     40        @define('_SPIP19200', 1);
     41} elseif ($GLOBALS['spip_version_code'] >= 22159) {
     42        @define('_SPIP30100', 1);
     43        @define('_SPIP30000', 1);
     44        @define('_SPIP20200', 1);
     45        @define('_SPIP20100', 1);
     46        @define('_SPIP19300', 1);
     47        @define('_SPIP19200', 1);
     48} elseif ($GLOBALS['spip_version_code'] >= 17743) {
     49        @define('_SPIP30000', 1);
     50        @define('_SPIP20200', 1);
     51        @define('_SPIP20100', 1);
     52        @define('_SPIP19300', 1);
     53        @define('_SPIP19200', 1);
     54} elseif (!strncmp($GLOBALS['spip_version_affichee'], '2.2', 3)) {
     55        @define('_SPIP20200', 1);
     56        @define('_SPIP20100', 1);
     57        @define('_SPIP19300', 1);
     58        @define('_SPIP19200', 1);
     59} elseif ($GLOBALS['spip_version_code'] >= 15133) {
     60        @define('_SPIP20100', 1);
     61        @define('_SPIP19300', 1);
     62        @define('_SPIP19200', 1);
     63} elseif (version_compare($GLOBALS['spip_version_code'], '1.9300', '>=')) {
     64        @define('_SPIP19300', 1);
     65        @define('_SPIP19200', 1);
     66} elseif (version_compare($GLOBALS['spip_version_code'], '1.9200', '>=')) {
     67        @define('_SPIP19200', 1);
     68        if (!function_exists('test_espace_prive')) {
     69                function test_espace_prive() {
     70                        return defined('_DIR_RESTREINT') ? !_DIR_RESTREINT : false;
     71                }
     72        }
     73} else
     74        @define('_SPIP19100', 1);
    4975
    5076// globales de controles de passes
    51 $GLOBALS['cs_options'] /*= $GLOBALS['cs_fonctions'] = $GLOBALS['cs_fonctions_essai'] */
    52         = $GLOBALS['cs_init'] = $GLOBALS['cs_utils'] = $GLOBALS['cs_verif'] = $GLOBALS['cs_outils'] = 0;
     77$GLOBALS['cs_options'] /*= $GLOBALS['cs_fonctions'] = $GLOBALS['cs_fonctions_essai'] */ = $GLOBALS['cs_init'] = $GLOBALS['cs_utils'] = $GLOBALS['cs_verif'] = $GLOBALS['cs_outils'] = 0;
    5378// parametres d'url concernant le plugin ?
    54 $GLOBALS['cs_params'] = isset($_GET['cs'])?explode(',', urldecode($_GET['cs'])):array();
     79$GLOBALS['cs_params']  = isset($_GET['cs']) ? explode(',', urldecode($_GET['cs'])) : array();
    5580// fichiers/dossiers temporaires pour le Couteau Suisse
    5681define('_DIR_CS_TMP', sous_repertoire(_DIR_TMP, 'couteau-suisse'));
    5782
    5883// pour voir les erreurs ?
    59 if (in_array('report', $GLOBALS['cs_params']))
    60         { define('_CS_REPORT', 1); error_reporting(E_ALL ^ E_NOTICE); }
    61 elseif (in_array('reportall', $GLOBALS['cs_params']) && isset($auteur_session['statut']) && $auteur_session['statut']=='0minirezo')
    62         { define('_CS_REPORTALL', 1); @define('_LOG_CS', 1); error_reporting(E_ALL); }
     84if (in_array('report', $GLOBALS['cs_params'])) {
     85        define('_CS_REPORT', 1);
     86        error_reporting(E_ALL ^ E_NOTICE);
     87} elseif (in_array('reportall', $GLOBALS['cs_params']) && isset($auteur_session['statut']) && $auteur_session['statut'] == '0minirezo') {
     88        define('_CS_REPORTALL', 1);
     89        @define('_LOG_CS', 1);
     90        error_reporting(E_ALL);
     91}
    6392
    6493// liste des outils et des variables
    6594global $metas_vars, $metas_outils;
    6695if (!isset($GLOBALS['meta']['tweaks_actifs'])) {
    67 cs_log("  -- lecture metas");
     96        cs_log("  -- lecture metas");
    6897        include_spip('inc/meta');
    6998        lire_metas();
    7099}
    71 $metas_outils = isset($GLOBALS['meta']['tweaks_actifs'])?unserialize($GLOBALS['meta']['tweaks_actifs']):array();
    72 $metas_vars = isset($GLOBALS['meta']['tweaks_variables'])?unserialize($GLOBALS['meta']['tweaks_variables']):array();
     100$metas_outils = isset($GLOBALS['meta']['tweaks_actifs']) ? unserialize($GLOBALS['meta']['tweaks_actifs']) : array();
     101$metas_vars   = isset($GLOBALS['meta']['tweaks_variables']) ? unserialize($GLOBALS['meta']['tweaks_variables']) : array();
    73102
    74103// on active tout de suite les logs, si l'outil est actif.
    75104if ((isset($metas_outils['cs_comportement']['actif']) && $metas_outils['cs_comportement']['actif'] && $metas_vars['log_couteau_suisse'])
    76  || defined('_LOG_CS_FORCE') || in_array('log', $GLOBALS['cs_params'])) @define('_LOG_CS', 1);
    77 if(defined('_LOG_CS')) {
     105                || defined('_LOG_CS_FORCE') || in_array('log', $GLOBALS['cs_params']))
     106        @define('_LOG_CS', 1);
     107if (defined('_LOG_CS')) {
    78108        cs_log(str_repeat('-', 80), '', sprintf('COUTEAU-SUISSE. [#%04X]. ', rand()));
    79         cs_log('INIT : couteau_suisse_options, '.$_SERVER['REQUEST_URI']);
     109        cs_log('INIT : couteau_suisse_options, ' . $_SERVER['REQUEST_URI']);
    80110}
    81111
    82112// on passe son chemin si un reset general est demande
    83 $zap = _request('cmd')=='resetall';
     113$zap = _request('cmd') == 'resetall';
    84114
    85115// cas ou les options seraient appelees en dehors de tmp/charger_plugins_options.php
    86116if (!defined('_DIR_PLUGIN_COUTEAU_SUISSE')) {
    87117        spip_log('## ERREUR : constante "_DIR_PLUGIN_COUTEAU_SUISSE" non definie !');
    88         spip_log(' URI : '.$_SERVER['REQUEST_URI'].'. POST : '.var_export($POST, true));
     118        spip_log(' URI : ' . $_SERVER['REQUEST_URI'] . '. POST : ' . var_export($POST, true));
    89119        $zap = true;
    90120}
    91121
    92122// lancer maintenant les options du Couteau Suisse
    93 if($zap)
     123if ($zap)
    94124        cs_log(' FIN : couteau_suisse_options sans initialisation du plugin');
    95125else {
     
    99129        global $cs_metas_pipelines;
    100130        $cs_metas_pipelines = array();
    101 
     131       
    102132        // alias pour passer en mode impression
    103         if ( in_array('print', $GLOBALS['cs_params']) ||
    104                 (isset($_GET['page']) && in_array($_GET['page'], array('print','imprimer','imprimir_articulo','imprimir_breve','article_pdf')))
    105            ) define('_CS_PRINT', 1);
    106 
     133        if (in_array('print', $GLOBALS['cs_params']) || (isset($_GET['page']) && in_array($_GET['page'], array(
     134                'print',
     135                'imprimer',
     136                'imprimir_articulo',
     137                'imprimir_breve',
     138                'article_pdf'
     139        ))))
     140                define('_CS_PRINT', 1);
     141       
    107142        // recherche des fichiers a inclure : si les fichiers sont absents, on recompilera le plugin
    108143        // fichiers testes : tmp/couteau-suisse/mes_options.php et tmp/couteau-suisse/mes_spip_options.php
    109         $cs_exists = file_exists($f_mo = _DIR_CS_TMP.'mes_options.php');
    110         $f_mso = _DIR_CS_TMP.'mes_spip_options.php';
    111         if(!(isset($GLOBALS['cs_spip_options']) && $GLOBALS['cs_spip_options'])) $cs_exists &= file_exists($f_mso);
    112         if(!$cs_exists) cs_log(" -- '$f_mo' ou '$f_mso' introuvable !");
    113 
     144        $cs_exists = file_exists($f_mo = _DIR_CS_TMP . 'mes_options.php');
     145        $f_mso     = _DIR_CS_TMP . 'mes_spip_options.php';
     146        if (!(isset($GLOBALS['cs_spip_options']) && $GLOBALS['cs_spip_options']))
     147                $cs_exists &= file_exists($f_mso);
     148        if (!$cs_exists)
     149                cs_log(" -- '$f_mo' ou '$f_mso' introuvable !");
     150       
    114151        // lancer l'initialisation du plugin. on force la compilation si cs=calcul
    115         include_once(_DIR_PLUGIN_COUTEAU_SUISSE.'cout_lancement.php');
     152        include_once(_DIR_PLUGIN_COUTEAU_SUISSE . 'cout_lancement.php');
    116153        cs_initialisation(!$cs_exists || in_array('calcul', $GLOBALS['cs_params']));
    117         if(defined('_LOG_CS')) cs_log("PUIS : couteau_suisse_options, initialisation terminee");
    118 
     154        if (defined('_LOG_CS'))
     155                cs_log("PUIS : couteau_suisse_options, initialisation terminee");
     156       
    119157        // inclusion des options hautes de SPIP, si ce n'est pas deja fait par config/mes_options.php
    120         if(!(isset($GLOBALS['cs_spip_options']) && $GLOBALS['cs_spip_options'])) {
    121                 if(file_exists($f_mso)) {
    122                         if(defined('_LOG_CS')) cs_log(" -- inclusion de '$f_mso'");
     158        if (!(isset($GLOBALS['cs_spip_options']) && $GLOBALS['cs_spip_options'])) {
     159                if (file_exists($f_mso)) {
     160                        if (defined('_LOG_CS'))
     161                                cs_log(" -- inclusion de '$f_mso'");
    123162                        include_once($f_mso);
    124163                } else
     
    126165        } else
    127166                cs_log(" -- fichier '$f_mso' deja inclu par config/mes_options.php");
    128 
     167       
    129168        // inclusion des options pre-compilees du Couteau Suisse, si ce n'est pas deja fait...
    130169        if (!$GLOBALS['cs_options']) {
    131                 if(file_exists($f_mo)) {
    132                         if(defined('_LOG_CS')) cs_log(" -- inclusion de '$f_mo'");
     170                if (file_exists($f_mo)) {
     171                        if (defined('_LOG_CS'))
     172                                cs_log(" -- inclusion de '$f_mo'");
    133173                        include_once($f_mo);
    134174                        // verification cardinale des metas : reinitialisation si une erreur est detectee
    135                         if (count($metas_outils)<>$GLOBALS['cs_verif']) {
     175                        if (count($metas_outils) <> $GLOBALS['cs_verif']) {
    136176                                cs_log("ERREUR : metas incorrects - verif = $GLOBALS[cs_verif]");
    137177                                cs_initialisation(true);
    138                                 if (!$GLOBALS['cs_verif']) {
    139                                         if(file_exists($f_mso)) include_once($f_mso);
    140                                         if(file_exists($f_mo)) include_once($f_mo);
     178                                if (!$GLOBALS['cs_verif']) {
     179                                        if (file_exists($f_mso))
     180                                                include_once($f_mso);
     181                                        if (file_exists($f_mo))
     182                                                include_once($f_mo);
    141183                                }
    142184                        }
    143185                } else
    144186                        cs_log(" -- fichier '$f_mo' toujours introuvable !!");
    145         } else cs_log(" -- pas d'inclusion de '$f_mo' ; on est deja passe par ici !?");
    146 
     187        } else
     188                cs_log(" -- pas d'inclusion de '$f_mo' ; on est deja passe par ici !?");
     189       
    147190        // si une recompilation a eu lieu...
    148191        if ($GLOBALS['cs_utils']) {
    149192                // lancer la procedure d'installation pour chaque outil
    150                 if(defined('_LOG_CS')) cs_log(' -- cs_installe_outils...');
     193                if (defined('_LOG_CS'))
     194                        cs_log(' -- cs_installe_outils...');
    151195                cs_installe_outils();
    152                 if(in_array('calcul', $GLOBALS['cs_params'])) {
     196                if (in_array('calcul', $GLOBALS['cs_params'])) {
    153197                        include_spip('inc/headers');
    154                         redirige_par_entete(parametre_url($GLOBALS['REQUEST_URI'],'cs',str_replace('calcul','ok',join(',',$GLOBALS['cs_params'])),'&'));
     198                        redirige_par_entete(parametre_url($GLOBALS['REQUEST_URI'], 'cs', str_replace('calcul', 'ok', join(',', $GLOBALS['cs_params'])), '&'));
    155199                }
    156200        }
    157 
     201       
    158202        // a-t-on voulu inclure couteau_suisse_fonctions.php ?
    159203        if (isset($GLOBALS['cs_fonctions_essai']) && $GLOBALS['cs_fonctions_essai']) {
    160                 if(defined('_LOG_CS')) cs_log(" -- lancement de cs_charge_fonctions()");
     204                if (defined('_LOG_CS'))
     205                        cs_log(" -- lancement de cs_charge_fonctions()");
    161206                cs_charge_fonctions();
    162207        }
    163 
    164         if(defined('_LOG_CS')) cs_log(" FIN : couteau_suisse_options, cs_spip_options = $GLOBALS[cs_spip_options], cs_options = $GLOBALS[cs_options], cs_fonctions_essai = ".((isset($GLOBALS['cs_fonctions_essai']) && $GLOBALS['cs_fonctions_essai'])?1:0));
     208       
     209        if (defined('_LOG_CS'))
     210                cs_log(" FIN : couteau_suisse_options, cs_spip_options = $GLOBALS[cs_spip_options], cs_options = $GLOBALS[cs_options], cs_fonctions_essai = " . ((isset($GLOBALS['cs_fonctions_essai']) && $GLOBALS['cs_fonctions_essai']) ? 1 : 0));
    165211}
    166212
     
    173219// Droits pour afficher le bouton du Couteau Suisse dans le bandeau de SPIP
    174220function autoriser_csconfig_bouton_dist($faire, $type, $id, $qui, $opt) {
    175     return autoriser('configurer', 'cs', $id, $qui, $opt); // SPIP < 3.0
     221        return autoriser('configurer', 'cs', $id, $qui, $opt); // SPIP < 3.0
    176222}
    177223function autoriser_csconfig_menu_dist($faire, $type, $id, $qui, $opt) {
    178     return autoriser('configurer', 'cs', $id, $qui, $opt); // SPIP >= 3.0
     224        return autoriser('configurer', 'cs', $id, $qui, $opt); // SPIP >= 3.0
    179225}
    180226
     
    183229// Si $opt['autoriser'] (code PHP) n'est pas renseigne, ces droits natifs sont toujours accordes
    184230function autoriser_outil_configurer_dist($faire, $type, $id, $qui, $opt) {
    185         if(!is_array($opt)) return autoriser('configurer', 'cs', $id, $qui, $opt);
     231        if (!is_array($opt))
     232                return autoriser('configurer', 'cs', $id, $qui, $opt);
    186233        // test sur la version de SPIP
    187234        $test = !cs_version_erreur($opt)
    188                 // autorisation d'un outil en particulier
    189                 && autoriser('configurer', 'outil_'.$opt['id'], $id, $qui, $opt)
    190                 // autorisation de la categorie de l'outil
    191                 && autoriser('configurer', 'categorie_'.$opt['categorie'], $id, $qui, $opt);
    192         if($test && isset($opt['autoriser']))
    193                 eval('$test &= '.$opt['autoriser'].';');
     235        // autorisation d'un outil en particulier
     236                && autoriser('configurer', 'outil_' . $opt['id'], $id, $qui, $opt)
     237        // autorisation de la categorie de l'outil
     238                && autoriser('configurer', 'categorie_' . $opt['categorie'], $id, $qui, $opt);
     239        if ($test && isset($opt['autoriser']))
     240                eval('$test &= ' . $opt['autoriser'] . ';');
    194241        return $test;
    195242}
     
    199246function autoriser_variable_configurer_dist($faire, $type, $id, $qui, $opt) {
    200247        return autoriser('configurer', 'cs', $id, $qui, $opt)
    201                 && autoriser('configurer', 'outil_'.$opt['outil']['id'], $id, $qui, $opt['outil'])
    202                 && autoriser('configurer', 'variable_'.$opt['nom'], $id, $qui, $opt['outil']);
    203 }
    204 
    205 if(!defined('_SPIP20100')) {
     248                && autoriser('configurer', 'outil_' . $opt['outil']['id'], $id, $qui, $opt['outil'])
     249                && autoriser('configurer', 'variable_' . $opt['nom'], $id, $qui, $opt['outil']);
     250}
     251
     252if (!defined('_SPIP20100')) {
    206253        // Bug SPIP 2.0.x
    207254        function autoriser_cs_configurer($faire, $type, $id, $qui, $opt) {
    208                 return autoriser_cs_configurer_dist($faire, $type, $id, $qui, $opt); }
     255                return autoriser_cs_configurer_dist($faire, $type, $id, $qui, $opt);
     256        }
    209257        function autoriser_outil_configurer($faire, $type, $id, $qui, $opt) {
    210                 return autoriser_outil_configurer_dist($faire, $type, $id, $qui, $opt); }
     258                return autoriser_outil_configurer_dist($faire, $type, $id, $qui, $opt);
     259        }
    211260        function autoriser_variable_configurer($faire, $type, $id, $qui, $opt) {
    212                 return autoriser_variable_configurer_dist($faire, $type, $id, $qui, $opt); }
     261                return autoriser_variable_configurer_dist($faire, $type, $id, $qui, $opt);
     262        }
    213263}
    214264
    215265// TODO : revoir eventuellement tout ca avec la syntaxe de <necessite>
    216266function cs_version_erreur(&$outil) {
    217         return (isset($outil['version-min']) && version_compare($GLOBALS['spip_version_code'], $outil['version-min'], '<'))
     267        return (isset($outil['version-min']) && version_compare($GLOBALS['spip_version_code'], $outil['version-min'], '<')) 
    218268                || (isset($outil['version-max']) && version_compare($GLOBALS['spip_version_code'], $outil['version-max'], '>'));
    219269}
    220270
    221271// Logs de tmp/spip.log
    222 function cs_log($variable, $prefixe='', $stat='') {
     272function cs_log($variable, $prefixe = '', $stat = '') {
    223273        static $rand;
    224         if($stat) $rand = $stat;
    225         if (!is_string($variable)) $variable = var_export($variable, true);
    226         if(!defined('_LOG_CS') /*|| !defined('_CS_REPORTALL')*/ || !strlen($variable)) return;
    227         spip_log($variable = $rand.$prefixe.$variable);
    228         if (defined('_CS_REPORTALL')) echo '<br />',htmlentities($variable);
     274        if ($stat)
     275                $rand = $stat;
     276        if (!is_string($variable))
     277                $variable = var_export($variable, true);
     278        if (!defined('_LOG_CS') /*|| !defined('_CS_REPORTALL')*/ || !strlen($variable))
     279                return;
     280        spip_log($variable = $rand . $prefixe . $variable);
     281        if (defined('_CS_REPORTALL'))
     282                echo '<br />', htmlentities($variable);
    229283}
    230284
    231285// Message de sortie si la zone est non autorisee
    232 function cs_minipres($exit=-1) {
    233         if($exit===-1) {
     286function cs_minipres($exit = -1) {
     287        if ($exit === -1) {
    234288                include_spip('inc/autoriser');
    235289                $exit = !autoriser('configurer', 'cs');
    236290        }
    237         if($exit) {
     291        if ($exit) {
    238292                include_spip('inc/minipres');
    239293                echo minipres();
     
    244298// Dates
    245299function cs_date() {
    246         return date(_T('couteau:date_court', array('jour'=>'d', 'mois'=>'m', 'annee'=>'y')));
     300        return date(_T('couteau:date_court', array(
     301                'jour' => 'd',
     302                'mois' => 'm',
     303                'annee' => 'y'
     304        )));
    247305}
    248306function cs_date_long($numdate) {
    249307        $date_array = recup_date($numdate);
    250         if (!$date_array) return '?';
     308        if (!$date_array)
     309                return '?';
    251310        list($annee, $mois, $jour, $heures, $minutes, $sec) = $date_array;
    252         if(!defined('_SPIP19300')) list($heures, $minutes) =array(heures($numdate), minutes($numdate));
    253         return _T('couteau:stats_date', array('jour'=>$jour, 'mois'=>$mois, 'annee'=>substr($annee,2), 'h'=>$heures, 'm'=>$minutes, 's'=>$sec));
     311        if (!defined('_SPIP19300'))
     312                list($heures, $minutes) = array(
     313                        heures($numdate),
     314                        minutes($numdate)
     315                );
     316        return _T('couteau:stats_date', array(
     317                'jour' => $jour,
     318                'mois' => $mois,
     319                'annee' => substr($annee, 2),
     320                'h' => $heures,
     321                'm' => $minutes,
     322                's' => $sec
     323        ));
    254324}
    255325function cs_date_court($numdate) {
    256326        $date_array = recup_date($numdate);
    257         if (!$date_array) return '?';
     327        if (!$date_array)
     328                return '?';
    258329        list($annee, $mois, $jour) = $date_array;
    259         return _T('couteau:date_court', array('jour'=>$jour, 'mois'=>$mois, 'annee'=>substr($annee,2)));
     330        return _T('couteau:date_court', array(
     331                'jour' => $jour,
     332                'mois' => $mois,
     333                'annee' => substr($annee, 2)
     334        ));
    260335}
    261336
     
    263338function cs_spip_file_options($code) {
    264339        // Config generale
    265         $glo = _DIR_RACINE._NOM_PERMANENTS_INACCESSIBLES._NOM_CONFIG.'.php';
     340        $glo = _DIR_RACINE . _NOM_PERMANENTS_INACCESSIBLES . _NOM_CONFIG . '.php';
    266341        // Attention a la mutualisation
    267         if(defined('_DIR_SITE')) {
     342        if (defined('_DIR_SITE')) {
    268343                // Config locale uniquement
    269                 $nfo = $fo = _DIR_SITE._NOM_PERMANENTS_INACCESSIBLES._NOM_CONFIG.'.php';
     344                $nfo = $fo = _DIR_SITE . _NOM_PERMANENTS_INACCESSIBLES . _NOM_CONFIG . '.php';
    270345        } else {
    271346                // Fichier de config, s'il est present
    272                 $fo = (defined('_FILE_OPTIONS') && strlen(_FILE_OPTIONS))?_FILE_OPTIONS:false;
     347                $fo  = (defined('_FILE_OPTIONS') && strlen(_FILE_OPTIONS)) ? _FILE_OPTIONS : false;
    273348                // Nom du fichier a creer en cas d'absence
    274349                $nfo = $glo;
    275350        }
    276         switch($code) {
    277                 case 1: return $fo;
    278                 case 2: return $nfo;
    279                 case 3: return $fo?$fo:$nfo;
    280                 case 4: return $glo;
     351        switch ($code) {
     352                case 1:
     353                        return $fo;
     354                case 2:
     355                        return $nfo;
     356                case 3:
     357                        return $fo ? $fo : $nfo;
     358                case 4:
     359                        return $glo;
    281360        }
    282361}
    283362
    284363// icones du CS
    285 function cs_icone($size, $f='couteau') {
    286         $f = $f.'-'.$size.'.png';
    287         if(defined('_SPIP30000')) return $f;
    288         return _DIR_PLUGIN_COUTEAU_SUISSE.'prive/themes/spip/images/'.$f;
     364function cs_icone($size, $f = 'couteau') {
     365        $f = $f . '-' . $size . '.png';
     366        if (defined('_SPIP30000'))
     367                return $f;
     368        return _DIR_PLUGIN_COUTEAU_SUISSE . 'prive/themes/spip/images/' . $f;
    289369}
    290370
     
    299379// nettoyage des separateurs
    300380function cs_nettoie($flux) {
    301         if(strpos($flux, '"csfoo ')===false) return $flux;
    302         return preg_replace(','.(strpos($flux, '<p><br')===false?_CS_HTMLX:_CS_HTMLX2).',', '', $flux);
    303 }
    304 
    305 if(defined('_SPIP30000')) {
     381        if (strpos($flux, '"csfoo ') === false)
     382                return $flux;
     383        return preg_replace(',' . (strpos($flux, '<p><br') === false ? _CS_HTMLX : _CS_HTMLX2) . ',', '', $flux);
     384}
     385
     386// fonction de mise a jour
     387if (defined('_SPIP30000')) {
    306388        // Utilise par maj_auto et le CS lui-meme pour mettre a jour les plugins (ou les paquets de SVP)
    307389        function action_charger_plugin() {
    308         #       include_spip('inc/minipres'); die(minipres('Partie en d&eacute;veloppement.<br/>Mettre &agrave; jour votre plugin prochainement.'));
    309                 if(is_array($ids_paquet = _request('ids_paquet'))) {
     390                #       include_spip('inc/minipres'); die(minipres('Partie en d&eacute;veloppement.<br/>Mettre &agrave; jour votre plugin prochainement.'));
     391                if (is_array($ids_paquet = _request('ids_paquet'))) {
    310392                        // il s'agit d'une liste de paquets, on donne la main a SVP (SPIP >= 3.0)
    311393                        include_spip('outils/maj_auto_action_rapide');
    312394                        maj_auto_svp_maj_plugin($ids_paquet);
    313                 }
    314                 elseif(intval($id_paquet = _request('url_zip_plugin2'))) {
     395                } elseif (intval($id_paquet = _request('url_zip_plugin2'))) {
    315396                        // il s'agit d'un paquet, on donne la main a SVP (SPIP >= 3.0)
    316397                        include_spip('outils/maj_auto_action_rapide');
    317                         maj_auto_svp_maj_plugin(array($id_paquet));
     398                        maj_auto_svp_maj_plugin(array(
     399                                $id_paquet
     400                        ));
    318401                }
    319402                // methode traditionnelle SPIP2, fonctionne egalement sous SPIP3 grace aux 2 lib distantes
    320403                // lancement de la maj (prise en compte de fichiers fantomes restes apres mise a jour vers SPIP 3)
    321                 if((include_spip('action/charger_plugin') OR include_spip('lib/maj_auto/distant_action_charger_plugin'))
    322                         && (include_spip('inc/charger_plugin') OR include_spip('lib/maj_auto/distant_inc_charger_plugin')))
     404                if ((include_spip('action/charger_plugin') || include_spip('lib/maj_auto/distant_action_charger_plugin'))
     405                                && (include_spip('inc/charger_plugin') || include_spip('lib/maj_auto/distant_inc_charger_plugin')))
    323406                        action_charger_plugin_dist();
    324407        }
  • _plugins_/couteau_suisse/inc/actions_compat.php

    r107153 r109093  
    44// a bientot remplacer par CVT
    55
    6 function cs_ajax_outil_greffe($idom, $corps)    {
     6function cs_ajax_outil_greffe($idom, $corps) {
    77        // en fait, ajax uniquement si une modif est demandee...
    88        return _request('modif') == 'oui'
    9                 ?'<div class="cs_modif_ok">&gt;&nbsp;'._T('couteauprive:vars_modifiees')."&nbsp;&lt;</div>$corps"
    10                 :"\n<div id='$idom'>$corps\n</div>\n";
     9                ? '<div class="cs_modif_ok">&gt;&nbsp;' . _T('couteauprive:vars_modifiees') . "&nbsp;&lt;</div>$corps"
     10                : "\n<div id='$idom'>$corps\n</div>\n";
    1111}
    1212
    1313include_spip('inc/actions');
    14 if(!function_exists('ajax_action_auteur')) {
    15 
     14if (!function_exists('ajax_action_auteur')) {
     15       
    1616        // Retourne un formulaire d'execution de $action sur $id,
    1717        // revenant a l'envoyeur $script d'arguments $args.
    1818        // Utilise Ajax si dispo, en ecrivant le resultat dans le innerHTML du noeud
    1919        // d'attribut  id = $action-$id (cf. AjaxSqueeze dans layer.js)
    20         function ajax_action_auteur($action, $id, $script, $args='', $corps=false, $args_ajax='', $fct_ajax='') {
     20        function ajax_action_auteur($action, $id, $script, $args = '', $corps = false, $args_ajax = '', $fct_ajax = '') {
    2121                if (strpos($args, '#') === FALSE)
    2222                        $ancre = $action . '-' . intval($id);
     
    2828                        // Methode traditionnelle
    2929                        if (_SPIP_AJAX !== 1)
    30                                 return redirige_action_post($action, $id, $script, $args.'#'.$ancre, $corps);
     30                                return redirige_action_post($action, $id, $script, $args . '#' . $ancre, $corps);
    3131                        // Methode Ajax
    3232                        else {
    33                                 if ($args AND !$args_ajax) $args_ajax = '&'.$args;
    34                                 if (isset($_GET['var_profile'])) $args_ajax .= '&var_profile=1';
     33                                if ($args AND !$args_ajax)
     34                                        $args_ajax = '&' . $args;
     35                                if (isset($_GET['var_profile']))
     36                                        $args_ajax .= '&var_profile=1';
    3537                                return redirige_action_post($action, $id, $action, "script=$script$args_ajax",
    3638                                        $corps, (" onsubmit=" . ajax_action_declencheur('this', $ancre, $fct_ajax)));
    37        
     39                               
    3840                        }
    3941                }
    4042                // Lien (GET)
    4143                else {
    42                         $href = redirige_action_auteur($action, $id, $script, "$args#$ancre", false);
    43                         if ($args AND !$args_ajax) $args_ajax = "&$args";
    44                         if (isset($_GET['var_profile'])) $args_ajax .= '&var_profile=1';
     44                        $href = redirige_action_auteur($action, $id, $script, "$args#$ancre", false);
     45                        if ($args AND !$args_ajax)
     46                                $args_ajax = "&$args";
     47                        if (isset($_GET['var_profile']))
     48                                $args_ajax .= '&var_profile=1';
    4549                        $ajax = redirige_action_auteur($action, $id, $action, "script=$script$args_ajax");
    46                         $cli = array_shift($corps);
    47                         return "<a href='$href'\nonclick=" .  ajax_action_declencheur($ajax, $ancre, $fct_ajax)
    48                                 . ">" . (!$corps ?  $cli : ("\n<span" . $corps[0] . ">$cli</span>")) . "</a>";
     50                        $cli  = array_shift($corps);
     51                        return "<a href='$href'\nonclick=" . ajax_action_declencheur($ajax, $ancre, $fct_ajax)
     52                                . ">" . (!$corps ? $cli : ("\n<span" . $corps[0] . ">$cli</span>")) . "</a>";
    4953                }
    5054        }
    5155       
    52         function ajax_action_declencheur($request, $noeud, $fct_ajax='') {
     56        function ajax_action_declencheur($request, $noeud, $fct_ajax = '') {
    5357                if (strpos($request, 'this') !== 0)
    54                         $request = "'".$request."'";
     58                        $request = "'" . $request . "'";
    5559                return '"return AjaxSqueeze2(' . $request . ",'" . $noeud . "'," . ($fct_ajax ? $fct_ajax : "''") . ',event)"';
    5660        }
    57 
     61       
    5862}
    5963?>
  • _plugins_/couteau_suisse/inc/cs_outils.php

    r107348 r109093  
    99#  description des outils.                            #
    1010#-----------------------------------------------------#
    11 if(!defined("_ECRIRE_INC_VERSION")) return;
     11if (!defined("_ECRIRE_INC_VERSION"))
     12        return;
    1213
    1314include_spip('inc/autoriser');
     
    1718// initialiser les plugins, les pipelines, etc.
    1819function cs_init_plugins() {
    19         @unlink(_DIR_TMP."couteau-suisse.plat");
    20         include_spip('inc/plugin');
    21         defined('_SPIP20100')?actualise_plugins_actifs():verif_plugin();
    22         if(defined('_LOG_CS')) cs_log(" -- actualise_plugins_actifs() effectue");
     20        @unlink(_DIR_TMP . "couteau-suisse.plat");
     21        include_spip('inc/plugin');
     22        defined('_SPIP20100') ? actualise_plugins_actifs() : verif_plugin();
     23        if (defined('_LOG_CS'))
     24                cs_log(" -- actualise_plugins_actifs() effectue");
    2325}
    2426
     
    2729        global $outils, $metas_outils;
    2830        $outil = &$outils[$outil_];
    29         if(!isset($outil['init_ok'])) {
     31        if (!isset($outil['init_ok'])) {
    3032                $outil['init_ok'] = 1;
    31                 if(!isset($outil['categorie'])) $outil['categorie'] = 'divers';
     33                if (!isset($outil['categorie']))
     34                        $outil['categorie'] = 'divers';
    3235                $outil['pas_de_nom'] = !isset($outil['nom']);
    33                 $outil['nom'] = cs_nom_outil($outil);
     36                $outil['nom']        = cs_nom_outil($outil);
    3437                // $outil['surcharge'] n'est pas encore renseigne si la fonction d'installation est surchargee
    35                 if(isset($outil['surcharge']) || (function_exists($outil_.'_installe') && $outil['surcharge']=1))
    36                         $outil['nom'] = $outil['nom'].' *';
    37                 if(isset($outil['perso'])) $outil['nom'] = '<i>'.$outil['nom'].'</i>';
    38                 $outil['actif'] = isset($metas_outils[$outil['id']])?@$metas_outils[$outil['id']]['actif']:0;
    39                 if(isset($outil['contrib']) && $outil['contrib'])
     38                if (isset($outil['surcharge']) || (function_exists($outil_ . '_installe') && $outil['surcharge'] = 1))
     39                        $outil['nom'] = $outil['nom'] . ' *';
     40                if (isset($outil['perso']))
     41                        $outil['nom'] = '<i>' . $outil['nom'] . '</i>';
     42                $outil['actif'] = isset($metas_outils[$outil['id']]) ? @$metas_outils[$outil['id']]['actif'] : 0;
     43                if (isset($outil['contrib']) && $outil['contrib'])
    4044                        $metas_outils[$outil['id']]['contrib'] = $outil['contrib'];
    4145                // si SPIP est trop ancien ou trop recent...
    42                 if(cs_version_erreur($outil)) { $metas_outils[$outil['id']]['actif'] = $outil['actif'] = 0; }
     46                if (cs_version_erreur($outil)) {
     47                        $metas_outils[$outil['id']]['actif'] = $outil['actif'] = 0;
     48                }
    4349                // au cas ou des variables sont presentes dans le code
    44                 $outil['variables'] = array(); $outil['nb_variables'] = 0;
     50                $outil['variables']    = array();
     51                $outil['nb_variables'] = 0;
    4552                // ces 2 lignes peuvent initialiser des variables dans $metas_vars ou $metas_vars_code
    46                 if(isset($outil['code:spip_options'])) $outil['code:spip_options'] = cs_parse_code_php($outil['code:spip_options']);
    47                 if(isset($outil['code:options'])) $outil['code:options'] = cs_parse_code_php($outil['code:options']);
    48                 if(isset($outil['code:fonctions'])) $outil['code:fonctions'] = cs_parse_code_php($outil['code:fonctions']);
     53                if (isset($outil['code:spip_options']))
     54                        $outil['code:spip_options'] = cs_parse_code_php($outil['code:spip_options']);
     55                if (isset($outil['code:options']))
     56                        $outil['code:options'] = cs_parse_code_php($outil['code:options']);
     57                if (isset($outil['code:fonctions']))
     58                        $outil['code:fonctions'] = cs_parse_code_php($outil['code:fonctions']);
    4959        }
    5060        // cette ligne peut utiliser des variables dans $metas_vars ou $metas_vars_code
     
    5464// renvoie la configuration du pack actuel
    5565function cs_description_pack() {
    56         if(!isset($GLOBALS['cs_pack_actuel'])) return '';
     66        if (!isset($GLOBALS['cs_pack_actuel']))
     67                return '';
    5768        include_spip('inc/presentation');
    58         return debut_cadre_relief('', true)
    59                 . "<h3 class='titrem'><img src='"._DIR_IMG_PACK."puce-verte.gif' width='9' height='9' alt='-' />&nbsp;" . couteauprive_T('pack_titre') . '</h3>'
    60                 . ((strlen($temp = cs_action_rapide('pack')))?"<div class='cs_action_rapide' id='cs_action_rapide'>$temp</div>":'')
    61                 . propre(couteauprive_T('pack_descrip', array('pack'=> couteauprive_T('pack_actuel', array('date'=>cs_date()))))
    62                 . "\n\n" . couteauprive_T('contrib', array('url'=>'[->'._URL_CONTRIB.'2552]')))
     69        return debut_cadre_relief('', true)
     70                . "<h3 class='titrem'><img src='" . _DIR_IMG_PACK . "puce-verte.gif' width='9' height='9' alt='-' />&nbsp;" . couteauprive_T('pack_titre') . '</h3>'
     71                . ((strlen($temp = cs_action_rapide('pack'))) ? "<div class='cs_action_rapide' id='cs_action_rapide'>$temp</div>" : '')
     72                . propre(
     73                        couteauprive_T('pack_descrip', array(
     74                                'pack' => couteauprive_T('pack_actuel', array(
     75                                        'date' => cs_date()
     76                                ))
     77                        )) . "\n\n" . couteauprive_T('contrib', array(
     78                                'url' => '[->' . _URL_CONTRIB . '2552]'
     79                        ))
     80                )
    6381                . '<br/><textarea rows=40 cols=500 style="width:100%; font-size:90%;">'
    6482                . htmlentities($GLOBALS[cs_pack_actuel], ENT_QUOTES, $GLOBALS['meta']['charset']) . '</textarea>'
     
    6987
    7088function cs_liste_langues($module) {
    71         $reg = '/' . preg_quote($module) . '_([^./]+)\.php$';
    72         $files = preg_files(_DIR_PLUGIN_COUTEAU_SUISSE.'lang/', $reg);
    73         $f = create_function('$a', 'return preg_match(",'.$reg.',",$a,$r)?($r[1]=="fr"?"[fr]":"[[$r[1]->'._CS_TRAD_MODULE.$module.'?lang_orig=fr&lang_cible=$r[1]]]"):"";');
     89        $reg   = '/' . preg_quote($module) . '_([^./]+)\.php$';
     90        $files = preg_files(_DIR_PLUGIN_COUTEAU_SUISSE . 'lang/', $reg);
     91        $f     = create_function('$a', 'return preg_match(",' . $reg . ',",$a,$r)?($r[1]=="fr"?"[fr]":"[[$r[1]->' . _CS_TRAD_MODULE . $module . '?lang_orig=fr&lang_cible=$r[1]]]"):"";');
    7492        $files = array_map($f, $files);
    7593        return join(" ", $files);
     
    7896function cs_liste_traducteurs($modules) {
    7997        $modules = array_map('preg_quote', $modules);
    80         $reg = '/('.join('|',$modules).')\.xml$';
    81         $files = preg_files(_DIR_PLUGIN_COUTEAU_SUISSE.'lang/', $reg);
    82         $res = array();
    83         foreach($files as $f) {
     98        $reg     = '/(' . join('|', $modules) . ')\.xml$';
     99        $files   = preg_files(_DIR_PLUGIN_COUTEAU_SUISSE . 'lang/', $reg);
     100        $res     = array();
     101        foreach ($files as $f) {
    84102                lire_fichier($f, $desc);
    85                 if(preg_match_all(',<traducteur .*? />,', $desc, $reg))
    86                         foreach($reg[0] as $r) $res[] = '['.extraire_attribut($r, 'nom').'->'.extraire_attribut($r, 'lien').']';
     103                if (preg_match_all(',<traducteur .*? />,', $desc, $reg))
     104                        foreach ($reg[0] as $r)
     105                                $res[] = '[' . extraire_attribut($r, 'nom') . '->' . extraire_attribut($r, 'lien') . ']';
    87106        }
    88107        sort($res);
     
    92111// renvoie qq infos pour la traduction
    93112function cs_description_trad() {
    94         $modules = array('couteau', 'couteauprive', 'paquet-couteau_suisse');
    95         $res = array();
    96         foreach($modules as $m) $res[] = "\n-* " . couteauprive_T('trad_mod', array('mod'=>$m)) . cs_liste_langues($m);
     113        $modules = array(
     114                'couteau',
     115                'couteauprive',
     116                'paquet-couteau_suisse'
     117        );
     118        $res     = array();
     119        foreach ($modules as $m)
     120                $res[] = "\n-* " . couteauprive_T('trad_mod', array(
     121                        'mod' => $m
     122                )) . cs_liste_langues($m);
    97123        include_spip('inc/presentation');
    98124        return debut_cadre_relief('', true)
    99                 . "<h3 class='titrem'><img src='"._DIR_IMG_PACK."puce-verte.gif' width='9' height='9' alt='-' />&nbsp;"
    100                 . (defined('_SPIP30000')?_T('info_traductions'):ucfirst(_T('afficher_trad'))) . '</h3>'
    101                 . propre(couteauprive_T('trad_help', array('url'=>_CS_TRAD_ACCUEIL, 'trad'=>join('', $res), 'contrib'=>cs_liste_traducteurs($modules)))
    102                 ) . fin_cadre_relief(true);
     125                . "<h3 class='titrem'><img src='" . _DIR_IMG_PACK . "puce-verte.gif' width='9' height='9' alt='-' />&nbsp;"
     126                . (defined('_SPIP30000') ? _T('info_traductions') : ucfirst(_T('afficher_trad'))) . '</h3>'
     127                . propre(couteauprive_T('trad_help', array(
     128                        'url' => _CS_TRAD_ACCUEIL,
     129                        'trad' => join('', $res),
     130                        'contrib' => cs_liste_traducteurs($modules)
     131                )))
     132                . fin_cadre_relief(true);
    103133}
    104134
    105135// renvoie (pour la nouvelle interface) la description d'un outil
    106136function description_outil2($outil_id) {
    107         if(!strlen($outil_id)) return couteauprive_T('outils_cliquez');
     137        if (!strlen($outil_id))
     138                return couteauprive_T('outils_cliquez');
    108139        global $outils, $metas_vars, $metas_outils;
    109140        include_spip('cout_utils');
    110141        // remplir $outils (et aussi $cs_variables qu'on n'utilise pas ici);
    111142        include_spip('config_outils');
    112 cs_log(" -- description_outil2($outil_id) - Appel de config_outils.php : nb_outils = ".count($outils));
    113 
    114 cs_log(" -- appel de charger_fonction('description_outil', 'inc') et de description_outil($outil_id) :");
     143        cs_log(" -- description_outil2($outil_id) - Appel de config_outils.php : nb_outils = " . count($outils));
     144       
     145        cs_log(" -- appel de charger_fonction('description_outil', 'inc') et de description_outil($outil_id) :");
    115146        $description_outil = charger_fonction('description_outil', 'inc');
    116147        $descrip = cs_initialisation_d_un_outil($outil_id, $description_outil, true);
    117 
     148       
    118149        include_spip('inc/presentation');
    119150        include_spip('inc/texte');
    120151        include_spip('public/parametrer'); // fonctions pour les pipelines
    121 
     152       
    122153        $s = '<div class="cs-cadre">';
    123 
    124         $outil = $outils[$outil_id]; unset($outils);
    125         $actif = $outil['actif'];
    126         $puce = $actif?'puce-verte.gif':'puce-rouge.gif';
    127         $titre_etat = couteauprive_T('outil_'.($actif?'actif':'inactif'));
    128         $nb_var = intval($outil['nb_variables']);
    129 
     154       
     155        $outil = $outils[$outil_id];
     156        unset($outils);
     157        $actif      = $outil['actif'];
     158        $puce       = $actif ? 'puce-verte.gif' : 'puce-rouge.gif';
     159        $titre_etat = couteauprive_T('outil_' . ($actif ? 'actif' : 'inactif'));
     160        $nb_var     = intval($outil['nb_variables']);
     161       
    130162        // cette valeur par defaut n'est pas definie sous SPIP 1.92
    131163        // constante abandonnee sous SPIP 3.0
    132         if(!defined('_SPIP30000') && !autoriser('webmestre')) @define('_ID_WEBMESTRES', 1);
    133         if(!strlen($outil['id']) || !autoriser('configurer', 'outil', 0, NULL, $outil))
     164        if (!defined('_SPIP30000') && !autoriser('webmestre'))
     165                @define('_ID_WEBMESTRES', 1);
     166        if (!strlen($outil['id']) || !autoriser('configurer', 'outil', 0, NULL, $outil))
    134167                return $s . _T('info_acces_interdit') . '</div>';
    135 
    136         $s .= "<h3 class='titrem'><img src='" . _DIR_IMG_PACK."$puce' width='9' height='9' alt=\"$titre_etat\" title=\"$titre_etat\" />&nbsp;"
    137                 . $outil['nom'] . '</h3>';
     168       
     169        $s .= "<h3 class='titrem'><img src='" . _DIR_IMG_PACK . "$puce' width='9' height='9' alt=\"$titre_etat\" title=\"$titre_etat\" />&nbsp;" . $outil['nom'] . '</h3>';
    138170        $s .= '<div class="cs_menu_outil">';
    139         if($nb_var)
    140                 $s .= '<a href="'.generer_url_ecrire(_request('source'),'cmd=reset&outil='.$outil_id).'" title="'
     171        if ($nb_var)
     172                $s .= '<a href="' . generer_url_ecrire(_request('source'), 'cmd=reset&outil=' . $outil_id) . '" title="'
    141173                        . couteauprive_T('par_defaut') . '">' . couteauprive_T('par_defaut') . '</a>&nbsp;|&nbsp;';
    142         if(!$actif)
    143                 $s .= '<a href="'.generer_url_ecrire(_request('source'),'cmd=hide&outil='.$outil_id).'" title="'
    144                         . couteauprive_T('outil_cacher') . '">' . couteauprive_T('outil_cacher') . '</a>&nbsp;|&nbsp;';
    145         $act = $actif?'des':'';
    146         $s .= '<a href="'.generer_url_ecrire(_request('source'),'cmd=switch&outil='.$outil_id).'" title="'
    147                 . _T("couteauprive:outil_{$act}activer_le").'">'._T("couteauprive:outil_{$act}activer")."</a></div>";
    148         if(strlen($temp = cs_action_fichiers_distants($outil) . cs_action_rapide($outil_id, $actif)))
     174        if (!$actif)
     175                $s .= '<a href="' . generer_url_ecrire(_request('source'), 'cmd=hide&outil=' . $outil_id) . '" title="' . couteauprive_T('outil_cacher') . '">'
     176                        . couteauprive_T('outil_cacher') . '</a>&nbsp;|&nbsp;';
     177        $act = $actif ? 'des' : '';
     178        $s .= '<a href="' . generer_url_ecrire(_request('source'), 'cmd=switch&outil=' . $outil_id) . '" title="'
     179                . _T("couteauprive:outil_{$act}activer_le") . '">' . _T("couteauprive:outil_{$act}activer") . "</a></div>";
     180        if (strlen($temp = cs_action_fichiers_distants($outil) . cs_action_rapide($outil_id, $actif)))
    149181                $s .= "<div class='cs_action_rapide' id='cs_action_rapide'>$temp</div>";
    150182        $s .= cs_nettoie(cs_propre_sain($descrip));
    151183        $p = '';
    152         if($b = cs_balises_traitees($outil_id, '*, #'))
    153                 $p .=  '<p>' . couteauprive_T('detail_balise_etoilee', array('bal' => $b.'*')) . '</p>';
    154         if($actif && isset($outil['code:spip_options']) && strlen($outil['code:spip_options']) && ($outil_id<>'cs_comportement'))
    155                 $p .= '<p>' . couteauprive_T('detail_spip_options'
    156                         . (defined('_CS_SPIP_OPTIONS_OK')?'_ok':''), array('lien'=>description_outil_liens_callback(array(1=>'cs_comportement')))) . '</p>';
    157         if((isset($outil['jquery']) && $outil['jquery']=='oui') || strpos(':'.join(':',array_keys($outil)), ':code:jq')!==false)
     184        if ($b = cs_balises_traitees($outil_id, '*, #'))
     185                $p .= '<p>' . couteauprive_T('detail_balise_etoilee', array(
     186                        'bal' => $b . '*'
     187                )) . '</p>';
     188        if ($actif && isset($outil['code:spip_options']) && strlen($outil['code:spip_options']) && ($outil_id <> 'cs_comportement'))
     189                $p .= '<p>' . couteauprive_T('detail_spip_options' . (defined('_CS_SPIP_OPTIONS_OK') ? '_ok' : ''), array(
     190                        'lien' => description_outil_liens_callback(array(
     191                                1 => 'cs_comportement'
     192                        ))
     193                )) . '</p>';
     194        if ((isset($outil['jquery']) && $outil['jquery'] == 'oui') || strpos(':' . join(':', array_keys($outil)), ':code:jq') !== false)
    158195                $p .= '<p>' . couteauprive_T('detail_jquery2') . '</p>';
    159         if(isset($outil['auteur']) && strlen($outil['auteur']))
    160                 $p .= '<p>' . _T('auteur') .' '. ($outil['auteur']) . '</p>';
    161         if(isset($outil['contrib']) && strlen($outil['contrib']))
    162                 $p .= '<p>' . couteauprive_T('contrib', array('url'=>'[->'._URL_CONTRIB.$outil['contrib'].']')) . '</p>';
    163 
     196        if (isset($outil['auteur']) && strlen($outil['auteur']))
     197                $p .= '<p>' . _T('auteur') . ' ' . ($outil['auteur']) . '</p>';
     198        if (isset($outil['contrib']) && strlen($outil['contrib']))
     199                $p .= '<p>' . couteauprive_T('contrib', array(
     200                        'url' => '[->' . _URL_CONTRIB . $outil['contrib'] . ']'
     201                )) . '</p>';
     202       
    164203        $p = $s . cs_propre_sain($p) . detail_outil($outil_id) . '</div>';
    165204        // Grrr les retours simples de SPIP 3 ...
    166         return (defined('_AUTOBR') && strlen(_AUTOBR))?str_replace(_AUTOBR, ' ', $p):$p;
    167 
     205        return (defined('_AUTOBR') && strlen(_AUTOBR)) ? str_replace(_AUTOBR, ' ', $p) : $p;
     206       
    168207}
    169208
     
    171210function liste_outils() {
    172211        global $outils;
    173         $id = $nb_actifs = 0;
    174         $categ = array();
    175         $metas_caches = isset($GLOBALS['meta']['tweaks_caches'])?unserialize($GLOBALS['meta']['tweaks_caches']):array();
    176         foreach($outils as $outil) {
     212        $id           = $nb_actifs = 0;
     213        $categ        = array();
     214        $metas_caches = isset($GLOBALS['meta']['tweaks_caches']) ? unserialize($GLOBALS['meta']['tweaks_caches']) : array();
     215        foreach ($outils as $outil) {
    177216                // liste des categories
    178                 if(!isset($categ[$cat=&$outil['categorie']])) {
    179                         $tmp = couteauprive_T('categ:'.$cat);
    180                         if($tmp{1}=='.') $tmp='0'.$tmp; // classement sur deux chiffres
    181                         $categ[$cat] = strncmp($tmp, 'categ', 5)==0?$cat:$tmp;
     217                if (!isset($categ[$cat = &$outil['categorie']])) {
     218                        $tmp = couteauprive_T('categ:' . $cat);
     219                        if ($tmp{1} == '.')
     220                                $tmp = '0' . $tmp; // classement sur deux chiffres
     221                        $categ[$cat] = strncmp($tmp, 'categ', 5) == 0 ? $cat : $tmp;
    182222                }
    183223                // ressensement des autorisations
    184                 if(!autoriser('configurer', 'outil', 0, NULL, $outil))
     224                if (!autoriser('configurer', 'outil', 0, NULL, $outil))
    185225                        $outils[$outil['id']]['interdit'] = $metas_caches[$outil['id']]['cache'] = 1;
    186226        }
    187227        // une constante : facon rapide d'interdire des lames a la manipulation
    188         if(defined('_CS_OUTILS_CACHES'))
    189                 foreach (explode(':',_CS_OUTILS_CACHES) as $o) $outils[$o]['interdit'] = $metas_caches[$o]['cache'] = 1;
     228        if (defined('_CS_OUTILS_CACHES'))
     229                foreach (explode(':', _CS_OUTILS_CACHES) as $o)
     230                        $outils[$o]['interdit'] = $metas_caches[$o]['cache'] = 1;
    190231        asort($categ);
    191232        $results_actifs = $results_inactifs = '';
    192         foreach($categ as $i=>$c) {
     233        foreach ($categ as $i => $c) {
    193234                $s_actifs = $s_inactifs = array();
    194                 foreach($outils as $outil) if($outil['categorie']==$i) {
    195                         $test = $outil['actif']?'s_actifs':'s_inactifs';
    196                         $hide = !$outil['actif'] && isset($metas_caches[$outil['id']]['cache']);
    197                         if(!$hide)
    198                                 ${$test}[] .= $outil['nom'] . '|' . $outil['index'] . '|' . $outil['id'];
    199                 }
     235                foreach ($outils as $outil)
     236                        if ($outil['categorie'] == $i) {
     237                                $test = $outil['actif'] ? 's_actifs' : 's_inactifs';
     238                                $hide = !$outil['actif'] && isset($metas_caches[$outil['id']]['cache']);
     239                                if (!$hide)
     240                                        ${$test}[] .= $outil['nom'] . '|' . $outil['index'] . '|' . $outil['id'];
     241                        }
    200242                $nb_actifs += count($s_actifs);
    201                 foreach(array('s_actifs', 's_inactifs') as $temp) if(count(${$temp})) {
    202                         sort(${$temp});
    203                         $reset=_request('cmd')=='resetjs'?"\ncs_EffaceCookie('sous_liste_$id');":'';
    204                         $titre = "<span class='light cs_hidden'> (".count(${$temp}).")</span>";
    205                         preg_match(',[0-9. ]*(.*)$,', $c, $reg);
    206                         $titre = "<div class='titrem categorie'>$reg[1]$titre</div>";
    207                         $href = generer_url_ecrire(_request('exec'),"cmd=descrip&outil=");
    208                         foreach(${$temp} as $j=>$v)
    209                                 ${$temp}[$j] = preg_replace(',^(.*)\|(.*)\|(.*)$,', '<a class="cs_href" id="$3" href="'.$href.'$3">$1</a>', $v);
    210                         ${$temp} = '<ul><li>'.join("</li><li>\n", ${$temp}).'</li></ul>';
    211                         if(strlen(${$temp})) ${'result'.$temp} .= $titre
    212                                 . "<div id='sous_liste_$id' class='sous_liste'>" . ${$temp} . '</div>';
    213                         $id++;
    214                 }
    215         }
    216 
     243                foreach (array(
     244                        's_actifs',
     245                        's_inactifs'
     246                ) as $temp)
     247                        if (count(${$temp})) {
     248                                sort(${$temp});
     249                                $reset = _request('cmd') == 'resetjs' ? "\ncs_EffaceCookie('sous_liste_$id');" : '';
     250                                $titre = "<span class='light cs_hidden'> (" . count(${$temp}) . ")</span>";
     251                                preg_match(',[0-9. ]*(.*)$,', $c, $reg);
     252                                $titre = "<div class='titrem categorie'>$reg[1]$titre</div>";
     253                                $href  = generer_url_ecrire(_request('exec'), "cmd=descrip&outil=");
     254                                foreach (${$temp} as $j => $v)
     255                                        ${$temp}[$j] = preg_replace(',^(.*)\|(.*)\|(.*)$,', '<a class="cs_href" id="$3" href="' . $href . '$3">$1</a>', $v);
     256                                ${$temp} = '<ul><li>' . join("</li><li>\n", ${$temp}) . '</li></ul>';
     257                                if (strlen(${$temp}))
     258                                        ${'result' . $temp} .= $titre . "<div id='sous_liste_$id' class='sous_liste'>" . ${$temp} . '</div>';
     259                                $id++;
     260                        }
     261        }
     262       
    217263        $fieldset = '<fieldset style="width:92%; margin:0; padding:0.6em;" class="cadre-trait-couleur liste_outils"><legend style="font-weight:bold; color:';
    218         return array($nb_actifs, '<div id="cs_outils" class="cs_outils">'
    219         . '<div class="cs_liste cs_inactifs">' . $fieldset . 'red;">' . couteauprive_T('outils_inactifs') . '</legend>'
    220         . $results_inactifs . '</fieldset></div>'
    221         . '<form id="csform" name="csform" method="post" action="' . generer_url_ecrire(_request('exec'),"cmd=switch").'">'
    222         . '<input type="hidden" value="test" name="cs_selection" id="cs_selection" />'
    223         . '<div class="cs_toggle"><div style="display:none;">'
    224         . '<a id="cs_toggle_a" title="' . couteauprive_T('outils_permuter_gras1') . '" href="' . generer_url_ecrire(_request('exec'),"cmd=switch").'">'
    225         . '<img alt="<->" src="' . find_in_path('img/permute.gif').'"/></a>'
    226         . '<p id="cs_toggle_p">(0)</p>'
    227         . '<a id="cs_reset_a" title="'.couteauprive_T('outils_resetselection').'" href="#">'
    228         . '&nbsp;<img alt="X" class="class_png" src="'.find_in_path('img/nosel.gif').'"/>&nbsp;</a>'
    229         .       '</div></div></form>'
    230         . '<div class="cs_liste cs_actifs">' . $fieldset . '#22BB22;">' . couteauprive_T('outils_actifs') . '</legend>'
    231         . $results_actifs . '</fieldset>'
    232         . '<div style="float:left; width:60%"><form><input type="text" size="10" value="'._T('info_rechercher').'" name="cs_rech" id="cs_rech" class="recherche cs_rech" accesskey="r" onfocus="if(this.value==cs_init_recherche)this.value=\'\';" onkeyup="cs_Recherche(this.value);"><span id="results"></span></form></div>'
    233         . '<div style="text-align: right;"><a id="cs_tous_a" title="' . couteauprive_T('outils_selectionactifs') . '" href="#">'
    234         . couteauprive_T('outils_selectiontous') . '</a></div>'
    235         . '</div></div>');
     264        return array(
     265                $nb_actifs,
     266                '<div id="cs_outils" class="cs_outils">'
     267                        . '<div class="cs_liste cs_inactifs">' . $fieldset . 'red;">' . couteauprive_T('outils_inactifs') . '</legend>'
     268                        . $results_inactifs . '</fieldset></div>'
     269                        . '<form id="csform" name="csform" method="post" action="' . generer_url_ecrire(_request('exec'), "cmd=switch") . '">'
     270                . '<input type="hidden" value="test" name="cs_selection" id="cs_selection" />'
     271                . '<div class="cs_toggle"><div style="display:none;">'
     272                . '<a id="cs_toggle_a" title="' . couteauprive_T('outils_permuter_gras1') . '" href="' . generer_url_ecrire(_request('exec'), "cmd=switch") . '">'
     273                . '<img alt="<->" src="' . find_in_path('img/permute.gif') . '"/></a>'
     274                . '<p id="cs_toggle_p">(0)</p>'
     275                . '<a id="cs_reset_a" title="' . couteauprive_T('outils_resetselection') . '" href="#">'
     276                . '&nbsp;<img alt="X" class="class_png" src="' . find_in_path('img/nosel.gif') . '"/>&nbsp;</a>'
     277                . '</div></div></form>'
     278                . '<div class="cs_liste cs_actifs">' . $fieldset . '#22BB22;">' . couteauprive_T('outils_actifs') . '</legend>'
     279                . $results_actifs . '</fieldset>'
     280                . '<div style="float:left; width:60%"><form><input type="text" size="10" value="' . _T('info_rechercher') . '" name="cs_rech" id="cs_rech" class="recherche cs_rech" accesskey="r" onfocus="if(this.value==cs_init_recherche)this.value=\'\';" onkeyup="cs_Recherche(this.value);"><span id="results"></span></form></div>'
     281                . '<div style="text-align: right;"><a id="cs_tous_a" title="' . couteauprive_T('outils_selectionactifs') . '" href="#">'
     282                . couteauprive_T('outils_selectiontous') . '</a></div>'
     283                . '</div></div>'
     284        );
    236285}
    237286
     
    241290        $outil = &$outils[$outil_id];
    242291        $div = '<div class="cs_details_outil">';
    243         if(cs_version_erreur($outil)) return $div . couteauprive_T('erreur:version') . '</div>';
     292        if (cs_version_erreur($outil))
     293                return $div . couteauprive_T('erreur:version') . '</div>';
    244294        $details = $a = array();
    245         foreach(array('spip_options', 'options', 'fonctions', 'js', 'jq') as $in)
    246                 if(isset($outil['code:'.$in])) $a[] = couteauprive_T('code_'.$in);
    247         $serkeys = ':'.join(':',array_keys($outil));
    248         foreach(array('css', 'js', 'jq') as $in)
    249                 if(strpos($serkeys, ":code:$in")!==false) $a[] = couteauprive_T('code_'.$in);
    250         if(count($a)) $details[] = couteauprive_T('detail_inline') . ' ' . join(', ', $a);
     295        foreach (array(
     296                'spip_options',
     297                'options',
     298                'fonctions',
     299                'js',
     300                'jq'
     301        ) as $in)
     302                if (isset($outil['code:' . $in]))
     303                        $a[] = couteauprive_T('code_' . $in);
     304        $serkeys = ':' . join(':', array_keys($outil));
     305        foreach (array(
     306                'css',
     307                'js',
     308                'jq'
     309        ) as $in)
     310                if (strpos($serkeys, ":code:$in") !== false)
     311                        $a[] = couteauprive_T('code_' . $in);
     312        if (count($a))
     313                $details[] = couteauprive_T('detail_inline') . ' ' . join(', ', $a);
    251314        $a = array();
    252         foreach(array('.php', '_options.php', '_fonctions.php', '.js', '.js.html', '.css', '.css.html') as $ext)
    253                 if(find_in_path('outils/'.($temp=$outil_id.$ext))) $a[] = $temp;
    254         if(count($a)) $details[] = couteauprive_T('detail_fichiers') . ' ' . join(', ', $a);
    255         if($b=cs_balises_traitees($outil_id)) $details[] = couteauprive_T('detail_traitements') . $b;
    256         if(preg_match_all(',(pipeline|pipelinecode):([a-z_]+),', $serkeys, $regs, PREG_PATTERN_ORDER))
     315        foreach (array(
     316                '.php',
     317                '_options.php',
     318                '_fonctions.php',
     319                '.js',
     320                '.js.html',
     321                '.css',
     322                '.css.html'
     323        ) as $ext)
     324                if (find_in_path('outils/' . ($temp = $outil_id . $ext)))
     325                        $a[] = $temp;
     326        if (count($a))
     327                $details[] = couteauprive_T('detail_fichiers') . ' ' . join(', ', $a);
     328        if ($b = cs_balises_traitees($outil_id))
     329                $details[] = couteauprive_T('detail_traitements') . $b;
     330        if (preg_match_all(',(pipeline|pipelinecode):([a-z_]+),', $serkeys, $regs, PREG_PATTERN_ORDER))
    257331                $details[] = couteauprive_T('detail_pipelines') . ' ' . join(', ', array_unique($regs[2]));
    258         if($outil['nb_disabled']) $details[] = couteauprive_T('detail_disabled') . ' ' . $outil['nb_disabled'];
    259         if(isset($outil['fichiers_distants'])) {
     332        if ($outil['nb_disabled'])
     333                $details[] = couteauprive_T('detail_disabled') . ' ' . $outil['nb_disabled'];
     334        if (isset($outil['fichiers_distants'])) {
    260335                $a = array();
    261                 foreach($outil['fichiers_distants'] as $i) $a[] = cs_basename($outil[$i]);
     336                foreach ($outil['fichiers_distants'] as $i)
     337                        $a[] = cs_basename($outil[$i]);
    262338                $details[] = couteauprive_T('detail_fichiers_distant') . ' ' . join(', ', $a);
    263339        }
    264         if($outil['surcharge']) $details[] = '* ' . couteauprive_T('detail_surcharge') . ' ' . _T('item_oui');
    265         if(count($details)) return $div . join('<br />', $details) . '</div>';
     340        if ($outil['surcharge'])
     341                $details[] = '* ' . couteauprive_T('detail_surcharge') . ' ' . _T('item_oui');
     342        if (count($details))
     343                return $div . join('<br />', $details) . '</div>';
    266344        return '';
    267345}
    268346
    269347// liste les balises sur lesquelles l'outil applique un traitement
    270 function cs_balises_traitees($outil_id, $join=', #') {
     348function cs_balises_traitees($outil_id, $join = ', #') {
    271349        global $outils;
    272         if(preg_match_all(',traitement:([A-Z_]+),', serialize(array_keys($outils[$outil_id])), $regs, PREG_PATTERN_ORDER))
    273                 return  ' #' . join($join, array_unique($regs[1]));
     350        if (preg_match_all(',traitement:([A-Z_]+),', serialize(array_keys($outils[$outil_id])), $regs, PREG_PATTERN_ORDER))
     351                return ' #' . join($join, array_unique($regs[1]));
    274352        return '';
    275353}
     
    277355// formulaire simple d'action rapide : fieldset avec bouton, legend en option
    278356// valider ce formulaire implique l'appel ajax de la function {$outil}_{$id}_action()
    279 function ajax_action_rapide_simple($id, $corps, $button='bouton_valider', $legend='', $outil='') {
    280         $align = $legend?'text-align:right;':'text-align:center;';
     357function ajax_action_rapide_simple($id, $corps, $button = 'bouton_valider', $legend = '', $outil = '') {
     358        $align = $legend ? 'text-align:right;' : 'text-align:center;';
    281359        $corps .= "<div style='$align'><input class='fondo' type='submit' value=\""
    282                 . attribut_html(_T($button)).'" /></div>';
    283         $corps = $legend?"<fieldset><legend>"._T($legend)."</legend>$corps</fieldset>"
    284                 :"<div style='$align padding:0.4em;'>$corps</div>";
     360                        . attribut_html(_T($button)) . '" /></div>';
     361        $corps = $legend ? "<fieldset><legend>" . _T($legend) . "</legend>$corps</fieldset>" : "<div style='$align padding:0.4em;'>$corps</div>";
    285362        list($arg) = explode('|', _request('arg'), 2);
    286363        return ($outil || ($outil = _request('outil')) || ($outil = $arg))
    287                 // syntaxe : ajax_action_auteur($action, $id, $script, $args='', $corps=false, $args_ajax='', $fct_ajax='')
    288                 ?ajax_action_auteur('action_rapide', $id, 'admin_couteau_suisse', "arg=$outil|description_outil&cmd=descrip#cs_action_rapide",
    289                         "\n<div>$corps</div>")
    290                 :'ajax_action_rapide_simple() : outil??';
     364        // syntaxe : ajax_action_auteur($action, $id, $script, $args='', $corps=false, $args_ajax='', $fct_ajax='')
     365                ? ajax_action_auteur('action_rapide', $id, 'admin_couteau_suisse', "arg=$outil|description_outil&cmd=descrip#cs_action_rapide", "\n<div>$corps</div>")
     366                : 'ajax_action_rapide_simple() : outil??';
    291367}
    292368
    293369// bouton d'acualisation pour action_rapide
    294 function bouton_actualiser_action_rapide($outil='') {
     370function bouton_actualiser_action_rapide($outil = '') {
    295371        list($arg) = explode('|', _request('arg'), 2);
    296372        return ($outil || ($outil = _request('outil')) || ($outil = $arg))
    297                 ?ajax_action_auteur('action_rapide', 'actualise', 'admin_couteau_suisse', "arg=$outil|description_outil&cmd=descrip#cs_action_rapide",
    298                 "\n<div class='cs_sobre'><input class='cs_sobre' type='submit' value=\" ["
    299                 . attribut_html(_T('couteauprive:rss_actualiser')).']" /></div>')
    300                 :'bouton_actualiser_action_rapide() : outil??';
     373                ? ajax_action_auteur('action_rapide', 'actualise', 'admin_couteau_suisse', "arg=$outil|description_outil&cmd=descrip#cs_action_rapide",
     374                                "\n<div class='cs_sobre'><input class='cs_sobre' type='submit' value=\" [" . attribut_html(_T('couteauprive:rss_actualiser')) . ']" /></div>')
     375                : 'bouton_actualiser_action_rapide() : outil??';
    301376}
    302377
    303378// renvoie les boutons eventuels d'action rapide
    304 function cs_action_rapide($outil_id, $actif=true) {
     379function cs_action_rapide($outil_id, $actif = true) {
    305380        include_spip('inc/texte');
    306381        include_spip('inc/actions_compat');
    307382        $f = "{$outil_id}_action_rapide";
    308383        include_spip("outils/$f");
    309         if(!function_exists($f)) return '';
    310         if(strlen($f = trim($f($actif)))) {
     384        if (!function_exists($f))
     385                return '';
     386        if (strlen($f = trim($f($actif)))) {
    311387                // si inactif...
    312                 if(!$actif) {
    313                         if(preg_match_all(',<legend[^>]*>(.*?):?\s*</legend>,', $f, $regs)     
    314                                 || preg_match_all(',<p[^>]*>(.*?):?\s*</p>,', $f, $regs))
     388                if (!$actif) {
     389                        if (preg_match_all(',<legend[^>]*>(.*?):?\s*</legend>,', $f, $regs)
     390                                        || preg_match_all(',<p[^>]*>(.*?):?\s*</p>,', $f, $regs))
    315391                                // on ne conserve que les <legend> ou <p>
    316392                                $f = '<ul><li>' . join("</li><li>", $regs[1]) . '</li></ul>';
    317393                }
    318                 $info = '<strong>' . definir_puce() . '&nbsp;' . couteauprive_T('action_rapide'.($actif?'':'_non')) . "</strong>";
     394                $info = '<strong>' . definir_puce() . '&nbsp;' . couteauprive_T('action_rapide' . ($actif ? '' : '_non')) . "</strong>";
    319395                return "<div>$info</div><div>$f</div>";
    320396        }
     
    323399
    324400// gere les fichiers distants d'un outil
    325 function cs_action_fichiers_distants(&$outil, $forcer=false, $tester=false) {
    326         if(!isset($outil['fichiers_distants'])) return '';
    327         $lib = sous_repertoire(_DIR_RACINE, 'lib');
    328         $actif = $outil['actif'];
    329         $a = array(); $reload = false;
    330         foreach($outil['fichiers_distants'] as $i) {
    331                 $erreur = false;
     401function cs_action_fichiers_distants(&$outil, $forcer = false, $tester = false) {
     402        if (!isset($outil['fichiers_distants']))
     403                return '';
     404        $lib    = sous_repertoire(_DIR_RACINE, 'lib');
     405        $actif  = $outil['actif'];
     406        $a      = array();
     407        $reload = false;
     408        foreach ($outil['fichiers_distants'] as $i) {
     409                $erreur   = false;
    332410                $res_pipe = '';
    333                 $dir = sous_repertoire($lib, $outil['id']);
     411                $dir      = sous_repertoire($lib, $outil['id']);
    334412                // prefixe et basename sans arguments
    335                 preg_match('/[^:]*/', $i, $reg); 
    336                 $f = $reg[0] . '_' . cs_basename($outil[$i]);
     413                preg_match('/[^:]*/', $i, $reg);
     414                $f    = $reg[0] . '_' . cs_basename($outil[$i]);
    337415                // 1er appel : envoi du nom du fichier
    338                 $file = pipeline('fichier_distant', array('outil'=>$outil['id'], 'actif'=>$actif, 'fichier_local'=>$dir.$f));
     416                $file = pipeline('fichier_distant', array(
     417                        'outil' => $outil['id'],
     418                        'actif' => $actif,
     419                        'fichier_local' => $dir . $f
     420                ));
    339421                $file = $file['fichier_local'];
    340422                $size = ($forcer || @(!file_exists($file)) ? 0 : filesize($file));
    341                 if($size) $statut = couteauprive_T('distant_present', array('date'=>cs_date_long(date('Y-m-d H:i:s', filemtime($file)))));
    342                 elseif($actif || $forcer) {
     423                if ($size)
     424                        $statut = couteauprive_T('distant_present', array(
     425                                'date' => cs_date_long(date('Y-m-d H:i:s', filemtime($file)))
     426                        ));
     427                elseif ($actif || $forcer) {
    343428                        include_spip('inc/distant');
    344                         if($distant = recuperer_page($outil[$i])) {
     429                        if ($distant = recuperer_page($outil[$i])) {
    345430                                // 2e appel : envoi du texte
    346                                 $distant = pipeline('fichier_distant', array('outil'=>$outil['id'], 'fichier_local'=>$file,
    347                                                 'fichier_distant'=>$outil[$i], 'message'=>'', 'texte'=>$distant, 'actif'=>$actif));
    348                                 $dir = dirname($file = $distant['fichier_local']);
    349                                 $message = $distant['message'] . "\n_ " . couteauprive_T('copie_vers', array('dir'=>cs_root_canonicalize($dir.'/')));
     431                                $distant = pipeline('fichier_distant', array(
     432                                        'outil' => $outil['id'],
     433                                        'fichier_local' => $file,
     434                                        'fichier_distant' => $outil[$i],
     435                                        'message' => '',
     436                                        'texte' => $distant,
     437                                        'actif' => $actif
     438                                ));
     439                                $dir     = dirname($file = $distant['fichier_local']);
     440                                $message = $distant['message'] . "\n_ " . couteauprive_T('copie_vers', array(
     441                                        'dir' => cs_root_canonicalize($dir . '/')
     442                                ));
    350443                                $distant = $distant['texte'];
    351                                 if(preg_match(',\.php\d?$,', $file)) {
     444                                if (preg_match(',\.php\d?$,', $file)) {
    352445                                        $test = preg_replace(',^.*?\<\?php|\?\>.*?$,', '', $distant);
    353                                         if(!@eval("return true; ". preg_replace(',function\s+\w+,','\\0_zz',$test))) $distant = false;
    354                                         else $distant = cs_ecrire_fichier($file, '<'."?php\n\n".trim($test)."\n\n?".'>');
     446                                        if (!@eval("return true; " . preg_replace(',function\s+\w+,', '\\0_zz', $test)))
     447                                                $distant = false;
     448                                        else
     449                                                $distant = cs_ecrire_fichier($file, '<' . "?php\n\n" . trim($test) . "\n\n?" . '>');
    355450                                } else
    356451                                        $distant = cs_ecrire_fichier($file, $distant);
    357452                        }
    358                         if($distant) { $statut = '<span style="color:green">'.couteauprive_T('distant_charge').'</span>'; $reload = true; }
    359                         else $erreur = $statut = '<span style="color:red">'.couteauprive_T('distant_echoue').'</span>';
    360                 } else $erreur = $statut = couteauprive_T('distant_inactif');
    361                 if($erreur) {
     453                        if ($distant) {
     454                                $statut = '<span style="color:green">' . couteauprive_T('distant_charge') . '</span>';
     455                                $reload = true;
     456                        } else
     457                                $erreur = $statut = '<span style="color:red">' . couteauprive_T('distant_echoue') . '</span>';
     458                } else
     459                        $erreur = $statut = couteauprive_T('distant_inactif');
     460                if ($erreur) {
    362461                        $outil['erreurs']['fichiers_distants'][$outil[$i]] = -1;
    363                         $message .= "\n_ " . couteauprive_T('local_ko', array('file'=>cs_root_canonicalize($file)));
     462                        $message .= "\n_ " . couteauprive_T('local_ko', array(
     463                                'file' => cs_root_canonicalize($file)
     464                        ));
    364465                }
    365                 $a[] = '[{'.basename($file)."}->{$outil[$i]}]\n_ ".$statut.$message;
    366         }
    367         if($tester) return $a;
    368         if($reload) $reload = "<input class='cs_sobre' type='submit' value=\" ["
    369                 . attribut_html(couteauprive_T('outil_actualiser')).']" onclick="javascript:return cs_href_click(\'\', true);" />';
     466                $a[] = '[{' . basename($file) . "}->{$outil[$i]}]\n_ " . $statut . $message;
     467        }
     468        if ($tester)
     469                return $a;
     470        if ($reload)
     471                $reload = "<input class='cs_sobre' type='submit' value=\" ["
     472                        . attribut_html(couteauprive_T('outil_actualiser')) . ']" onclick="javascript:return cs_href_click(\'\', true);" />';
    370473        $a = '<ul style="margin:0.6em 0 0.6em 4em;"><li>' . join("</li><li style='margin-top:0.4em;'>", $a) . '</li></ul>';
    371         $b = ($actif || !$erreur)?'rss_actualiser':($erreur?'distant_charger':false);
    372 
    373 
    374         $b = $b?"\n<p class='cs_sobre'><input class='cs_sobre' type='submit' value=\" ["
    375                         . attribut_html(couteauprive_T(''.$b)).']" />' . $reload . '</p>':'';
    376 
     474        $b = ($actif || !$erreur) ? 'rss_actualiser' : ($erreur ? 'distant_charger' : false);