Changeset 96876 in spip-zone


Ignore:
Timestamp:
Apr 30, 2016, 10:40:44 AM (3 years ago)
Author:
bystrano@…
Message:

On passe l'ajout de traitements auto dans une fonction générique

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/massicot/trunk/base/massicot.php

    r96875 r96876  
    88 * @licence        GNU/GPL
    99 */
     10
     11/**
     12 * Ajouter un traitement automatique sur une balise
     13 *
     14 * On peut restreindre l'application du traitement au balises appelées dans un
     15 * type de boucle via le paramètre optionnel $table.
     16 *
     17 * @param array $interfaces
     18 *    Les interfaces du pipeline declarer_tables_interfaces
     19 * @param string $traitement
     20 *    Un format comme pour sprintf, dans lequel le compilateur passera la valeur de la balise
     21 * @param string $balise
     22 *    Le nom de la balise à laquelle on veut appliquer le traitement
     23 * @param string $table (optionnel)
     24 *    Un type de boucle auquel on veut restreindre le traitement.
     25 */
     26function ajouter_traitement_automatique($interfaces, $traitement, $balise, $table = 0) {
     27
     28        $table_traitements = $interfaces['table_des_traitements'];
     29
     30        if (! isset($table_traitements[$balise])) {
     31                $table_traitements[$balise] = array();
     32        }
     33
     34        /* On essaie d'être tolérant sur le nom de la table */
     35        if ($table) {
     36                include_spip('base/objets');
     37                $table = table_objet($table);
     38        }
     39
     40        if (isset($table_traitements[$balise][$table])) {
     41                $traitement_existant = $table_traitements[$balise][$table];
     42        }
     43
     44        if (! $traitement_existant) {
     45                $traitement_existant = '%s';
     46        }
     47
     48        $interfaces['table_des_traitements'][$balise][$table] = sprintf($traitement, $traitement_existant);
     49
     50        return $interfaces;
     51}
    1052
    1153/**
     
    2062function massicot_declarer_tables_interfaces($interfaces) {
    2163
    22         if ((! isset($interfaces['table_des_traitements']['FICHIER']['documents']))
    23                 or is_null($interfaces['table_des_traitements']['FICHIER']['documents'])) {
    24                 $interfaces['table_des_traitements']['FICHIER']['documents'] = '%s';
    25         }
     64        $interfaces = ajouter_traitement_automatique(
     65                $interfaces,
     66                'massicoter_document(%s)',
     67                'FICHIER',
     68                'documents'
     69        );
    2670
    27         $interfaces['table_des_traitements']['FICHIER']['documents'] =
    28           'massicoter_document(' . $interfaces['table_des_traitements']['FICHIER']['documents'] . ')';
     71        $interfaces = ajouter_traitement_automatique(
     72                $interfaces,
     73                'massicoter_logo_document(%s, $Pile[1])',
     74                'LOGO_DOCUMENT'
     75        );
    2976
    30         $interfaces['table_des_traitements']['LOGO_DOCUMENT'][] =
    31           'massicoter_logo_document(%s, $Pile[1])';
    32 
    33         if (! isset($interfaces['table_des_traitements']['URL_DOCUMENT'])) {
    34                 $interfaces['table_des_traitements']['URL_DOCUMENT'] = array();
    35         }
    36 
    37         if ((! isset($interfaces['table_des_traitements']['URL_DOCUMENT']['documents'])) or
    38                 is_null($interfaces['table_des_traitements']['URL_DOCUMENT']['documents'])) {
    39 
    40                 $interfaces['table_des_traitements']['URL_DOCUMENT']['documents'] = '%s';
    41         }
    42 
    43         $interfaces['table_des_traitements']['URL_DOCUMENT']['documents'] =
    44           'massicoter_document(' . $interfaces['table_des_traitements']['URL_DOCUMENT']['documents'] . ')';
     77        $interfaces = ajouter_traitement_automatique(
     78                $interfaces,
     79                'massicoter_document(%s)',
     80                'URL_DOCUMENT',
     81                'documents'
     82        );
    4583
    4684        /* On traîte aussi les balises #HAUTEUR et #LARGEUR des documents */
    47         $interfaces['table_des_traitements']['LARGEUR']['documents'] =
    48           'massicoter_largeur(%s, $Pile[1])';
    49         $interfaces['table_des_traitements']['HAUTEUR']['documents'] =
    50           'massicoter_hauteur(%s, $Pile[1])';
     85        $interfaces = ajouter_traitement_automatique(
     86                $interfaces,
     87                'massicoter_largeur(%s, $Pile[1])',
     88                'LARGEUR',
     89                'documents'
     90        );
     91        $interfaces = ajouter_traitement_automatique(
     92                $interfaces,
     93                'massicoter_largeur(%s, $Pile[1])',
     94                'HAUTEUR',
     95                'documents'
     96        );
    5197
    5298        /* Pour chaque objet éditorial existant, ajouter un traitement sur
     
    56102                if ($table !== 'spip_documents') {
    57103
    58                         $logo_type = strtoupper('LOGO_'.objet_type($table));
    59 
    60                         if (!empty($interfaces['table_des_traitements'][$logo_type])) {
    61                                 $interfaces['table_des_traitements'][$logo_type][0]
    62                                         = 'massicoter_logo('.$interfaces['table_des_traitements'][$logo_type][0]
    63                                         . ', '.objet_type($table)
    64                                         .', $Pile[1][\''.id_table_objet($table)
    65                                         .'\'])';
    66                         } else {
    67                                 $interfaces['table_des_traitements'][$logo_type][]
    68                                         = 'massicoter_logo(%s, '.objet_type($table)
    69                                         . ', $Pile[1][\''.id_table_objet($table).'\'])';
    70                         }
     104                        $interfaces = ajouter_traitement_automatique(
     105                                $interfaces,
     106                                'massicoter_logo(%s, '.objet_type($table).', $Pile[1][\''.id_table_objet($table).'\'])',
     107                                strtoupper('LOGO_'.objet_type($table))
     108                        );
    71109                }
    72110        }
    73111
    74112        /* sans oublier #LOGO_ARTICLE_RUBRIQUE… */
    75         if (!empty($interfaces['table_des_traitements']['LOGO_ARTICLE_RUBRIQUE'])) {
    76                 $interfaces['table_des_traitements']['LOGO_ARTICLE_RUBRIQUE'][0]
    77                         = 'massicoter_logo('.$interfaces['table_des_traitements']['LOGO_ARTICLE_RUBRIQUE'][0].')';
    78         } else {
    79                 $interfaces['table_des_traitements']['LOGO_ARTICLE_RUBRIQUE'][]
    80                         = 'massicoter_logo(%s)';
    81         }
     113        $interfaces = ajouter_traitement_automatique(
     114                $interfaces,
     115                'massicoter_logo(%s)',
     116                'LOGO_ARTICLE_RUBRIQUE'
     117        );
    82118
    83119        return $interfaces;
Note: See TracChangeset for help on using the changeset viewer.